본문 바로가기

Management

[vRA] Missing Transport Zones in Aria Automation

 

[구성 환경]

NSX 4.1.1

Aria Automation 8.13

 

[문제 증상]

Aria Automation에서 NSX를 Policy mode를 이용하여 Integration한 후, Network Domains 메뉴 하에 Default Transport Zone을 제외한 기존에 생성되어 있던 Transport Zone이 보이지 않음

 

NSX Manager

Transport Zone 목록(Default 제외)

  • host-tn-vlan-tz
  • edge-tn-vlan-tz
  • overaly-tz

 

Aria Automation

Default Transport Zone만 확인 가능

정상이라면, NSX Manager에서 보이는 전체 Transport Zone이 표현되어야 함

 

[진행 내역]

1. Aria Automation에서 NSX Integration 시, provisionig service 쪽에 다음과 같은 오류 발생

/services-logs/prelude/provisioning-service-app/file-logs/provisioning-service-app.log

2023-09-06T16:50:47.573Z WARN provisioning [host='provisioning-service-app-747799ffc5-vvm78' thread='xn-index-queries-17' user='' org='' trace='' parent='' span=''] c.v. m.a.n.e.p.NsxTPolicyBaseEnumerationAdapterService.lambda$enumerate$0:112 - Exception caught, but enumeration will continue. Exception: java.util.concurrent.CompletionException: class ApiException {
            details: null
            detailMessage: [100] [General error has occurred.] java.lang.IllegalStateException: Identifier does not contain an UUID.
            errorCode: 100
            errorData: null
            errorMessage: null
            moduleName: null
            relatedErrors: null
        }
                at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
                at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
                at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632)
                at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
                at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
                at co m.vmware.xenon.common.DeferredResult.fail(DeferredResult.java:470) 
                at co m.vmware.mcp.adapter.nsxt.NsxTAsyncHandler.onFailure(NsxTAsyncHandler.java:50) 
                at co m.vmware.nsxt.handler.ApiClient$1.onResponse(ApiClient.java:894) 
                at co m.squareup.okhttp.Call$AsyncCall.execute(Call.java:177) 
                at co m.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33) 
                at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
                at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
                at java.base/java.lang.Thread.run(Thread.java:829)
        Caused by: class ApiException {
            details: null
            detailMessage: [100] [General error has occurred.] java.lang.IllegalStateException: Identifier does not contain an UUID.
            errorCode: 100
            errorData: null
            errorMessage: null
            moduleName: null
            relatedErrors: null
        }
                at co m.vmware.mcp.adapter.nsxt.NsxTAsyncHandler.onFailure(NsxTAsyncHandler.java:51) 
                ... 6 more
        Caused by: class ApiException {
            details: java.lang.IllegalStateException: Identifier does not contain an UUID.
            detailMessage: null
            errorCode: 100
            errorData: null
            errorMessage: General error has occurred.
            moduleName: common-services
            relatedErrors: null
        }

 

2. 이는 NSX Manager에 대해 API 호출 시 Transport Zone 정보를 이용하여 조회할 때, id 값을 UUID가 아닌 string으로 하는 경우 동일한 메시지 발생

GET ' https://nsx-mgr01.contoso.com/policy/api/v1/transport-nodes?transport_zone_id=edge-tn-vlan-tz

{
    "module_name": "common-services",
    "error_message": "General error has occurred.",
    "details": "java.lang.IllegalStateException: java.lang.IllegalStateException: Identifier does not contain an UUID.",
    "error_code": 100
}

 

3. NSX에 등록된 Transport Zone을 조회해보면, id 값으로 보이는 Field가 2가지가 있는데 하나는 nsx_id로 UUID 형태를 띄고 있고 다른 하나인 id는 string처럼 NSX Manager에서 육안으로 보이는 Transport Zone 이름 값이 들어가 있음

GET 'https://nsx-mgr01.contoso.com/policy/api/v1/infra/sites/default/enforcement-points/default/transport-zones'

{
    "results": [
        {
            "nsx_id": "f17fddce-b64e-4e45-9b11-01d4f9c42497",
            "tz_type": "VLAN_BACKED",
            "is_default": false,
            "uplink_teaming_policy_names": [
                "uplink-1-only",
                "uplink-2-only"
            ],
            "nested_nsx": false,
            "resource_type": "PolicyTransportZone",
            "id": "edge-tn-vlan-tz",
            "display_name": "edge-tn-vlan-tz",
            "path": "/infra/sites/default/enforcement-points/default/transport-zones/edge-tn-vlan-tz",
            "relative_path": "edge-tn-vlan-tz",
            "parent_path": "/infra/sites/default/enforcement-points/default",
            "remote_path": "",
            "unique_id": "f17fddce-b64e-4e45-9b11-01d4f9c42497",
            "realization_id": "f17fddce-b64e-4e45-9b11-01d4f9c42497",
            "owner_id": "70dbe878-fae0-46c7-9593-7c928ce7a012",
            "marked_for_delete": false,
            "overridden": false,
            "_create_time": 1693655064088,
            "_create_user": "admin",
            "_last_modified_time": 1693981933191,
            "_last_modified_user": "admin",
            "_system_owned": false,
            "_protection": "NOT_PROTECTED",
            "_revision": 2
        },

<snip>

 

4. 2번 단계에서 보셨겠지만 결국 문제가 되는 부분은 Aria Automation에서 Transport Zone 정보를 이용할 때, NSX Manager로부터 Return 받은 값중 nsx_id가 아닌, id 값을 이용하기 때문인 것으로 확인

 

5. Aria Automation은 본 문제를 개선하기 위해 8.13.1에서 Transport Zone에 대한 정보는 id 값 대신 nsx_id 값을 이용하는 것으로 코드 수정

https://docs.vmware.com/en/VMware-Aria-Automation/services/rn/vmware-aria-automation-release-notes/index.html

 

6. 실제로 Aria Automation을 8.13.1로 업데이트 한 후 동일하게 Network Domains 메뉴를 확인하면 다음과 같이 기존에 보이지 않았던 전체 Transport Zone 확인 가능