[구성 환경]
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 값을 이용하는 것으로 코드 수정
6. 실제로 Aria Automation을 8.13.1로 업데이트 한 후 동일하게 Network Domains 메뉴를 확인하면 다음과 같이 기존에 보이지 않았던 전체 Transport Zone 확인 가능
'Management' 카테고리의 다른 글
Unable to deploy telegraf agent remotely (0) | 2023.10.27 |
---|---|
[vRA] Container 내부에서 Packet 수집 (0) | 2023.09.17 |
[LogInsight] Cassandara Database 접속 방법 및 기본 정보 조회 (0) | 2023.08.06 |
[Operations] Custom 인증서 생성 및 교체 방법 (0) | 2023.08.06 |
[Operations] SNMP on vROPS (0) | 2023.08.06 |