【VMware Cloud Director】API実行方法

①VCDバージョンによって、利用できるAPIバージョンがことなるため、利用できるAPIバージョンを確認

適当なAPIを発行

curl -k   --request GET https://172.16.23.20/api
【出力】
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Error xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:common="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:ovfenv="http://schemas.dmtf.org/ovf/environment/1" xmlns:ns9="http://www.vmware.com/vcloud/versions" message="The request has invalid accept header: Invalid API version requested. Supported API versions are: [38.0.0-alpha, 37.2, 37.1, 37.0, 36.3, 36.2, 36.1, 36.0, 35.2 [D], 35.0 [D], 34.0 [D], 33.0 [D]] ([D] indicates deprecated versions)" majorErrorCode="406" minorErrorCode="NOT_ACCEPTABLE"/>

この環境だと、33から38.0.0-alphaまでが利用可能

②パスワードハッシュ作成

ユーザー名(administrator@system)、パスワード(VMware1!)をbase64エンコード

echo -n administrator@system:VMware1! |base64
【出力】
YWRtaW5pc3RyYXRvckBzeXN0ZW06Vk13YXJlMSE=

③セッション作成

①で確認したAPIバージョンをセット

 Accept: application/*;version=37.0

また、②の出力をセット

 Authorization: Basic YWRtaW5pc3RyYXRvckBzeXN0ZW06Vk13YXJlMSE=

curl -k -I --header "Accept: application/*;version=37.0" --header "Authorization: Basic YWRtaW5pc3RyYXRvckBzeXN0ZW06Vk13YXJlMSE=" --request POST https://172.16.23.20/api/sessions
【出力】
HTTP/1.1 200 OK
Date: Wed, 31 May 2023 07:25:50 GMT
X-VMWARE-VCLOUD-REQUEST-ID: ea970a9e-e79b-432f-ac71-f9bb5ca182f0
X-VMWARE-VCLOUD-CEIP-ID: 0d5d6cd1-013f-4110-bd08-c08e6ab42f30
X-VMWARE-VCLOUD-ACCESS-TOKEN: eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhOTNjOWRiOS03NDcxLTMxOTItOGQwOS1hOGY3ZWVkYTg1ZjlANjgzMjE5ZWUtYmNhMi00ZGVmLTljYjgtZDhkYjY1MmM2MWE1Iiwic3ViIjoiYWRtaW5pc3RyYXRvciIsImV4cCI6MTY4NTYwNDM1MCwidmVyc2lvbiI6InZjbG91ZF8xLjAiLCJqdGkiOiI4MjNmNzEyNmE2YzU0MTBiOWE0MTYxZTkwNjFjZTY3ZiJ9.LgJNk5bxBLDXTzRkTgzZmS31T0hUpal9ZSt_NJPXJbwxQnP1tF4swSDEz8a81gGwnNVmrCT9gnjX6k5wItZmKc_F1ZIyC5rKoetTF31XNQwTfPiiMIhwim0abtW4LbQVPfUN9nMo09Y9eIJunKUWdWOPaOGRHjgxKAUrrF7v999dfH6nDPIcq3xDn-0wxz0Ev9BDMbDcGy-TtuvMA49hRWejpanCouokENOasbiU4FOFrBuucYf03bJSuY0OX-H6yG4QlfBw7fZSNUjCSvhqnhT7rg8CfuQH2dbEr8E1MF-lQbZOAY7o6DMl_0QmmPFAxkD3E_SZr9NYG3JWOMNbrg
X-VMWARE-VCLOUD-TOKEN-TYPE: Bearer
x-vcloud-authorization: 823f7126a6c5410b9a4161e9061ce67f
Content-Type: application/vnd.vmware.vcloud.session+xml;version=37.0
Cache-Control: no-store, must-revalidate
X-VMWARE-VCLOUD-REQUEST-EXECUTION-TIME: 174
Vary: Accept-Encoding
Content-Length: 3514

APIバージョン38.0(VCD10.5)からは/api/sessionsが削除され、/cloudapi/1.0.0/sessions(テナント)又は/cloudapi/1.0.0/sessions/provider(プロバイダー)となった。

以下のように単純に書き換えるだけでOK

curl -k -I --header "Accept: application/*;version=37.0" --header "Authorization: Basic YWRtaW5pc3RyYXRvckBzeXN0ZW06Vk13YXJlMSE=" --request POST https://172.16.20.20/cloudapi/1.0.0/sessions/provider

APIにてデータ取得

Authorization: Bearerに③の出力における「X-VMWARE-VCLOUD-ACCESS-TOKEN」をセット

curl -k --header "Accept: application/*;version=37.0" --header "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhOTNjOWRiOS03NDcxLTMxOTItOGQwOS1hOGY3ZWVkYTg1ZjlANjgzMjE5ZWUtYmNhMi00ZGVmLTljYjgtZDhkYjY1MmM2MWE1Iiwic3ViIjoiYWRtaW5pc3RyYXRvciIsImV4cCI6MTY4NTYwNDM1MCwidmVyc2lvbiI6InZjbG91ZF8xLjAiLCJqdGkiOiI4MjNmNzEyNmE2YzU0MTBiOWE0MTYxZTkwNjFjZTY3ZiJ9.LgJNk5bxBLDXTzRkTgzZmS31T0hUpal9ZSt_NJPXJbwxQnP1tF4swSDEz8a81gGwnNVmrCT9gnjX6k5wItZmKc_F1ZIyC5rKoetTF31XNQwTfPiiMIhwim0abtW4LbQVPfUN9nMo09Y9eIJunKUWdWOPaOGRHjgxKAUrrF7v999dfH6nDPIcq3xDn-0wxz0Ev9BDMbDcGy-TtuvMA49hRWejpanCouokENOasbiU4FOFrBuucYf03bJSuY0OX-H6yG4QlfBw7fZSNUjCSvhqnhT7rg8CfuQH2dbEr8E1MF-lQbZOAY7o6DMl_0QmmPFAxkD3E_SZr9NYG3JWOMNbrg" --request GET https://172.16.23.20/cloudapi/1.0.0/orgs
【出力】
{"resultTotal":2,"pageCount":1,"page":1,"pageSize":25,"associations":null,"values":[{"id":"urn:vcloud:org:dfe3944b-0c2e-41f3-8541-defac306d373","name":"ORG01","displayName":"ORG01","description":"","isEnabled":true,"orgVdcCount":1,"catalogCount":0,"vappCount":0,"runningVMCount":0,"userCount":1,"diskCount":0,"canPublish":false},{"id":"urn:vcloud:org:8929a3d8-33e2-4709-9eb2-ad70a6c8b3d5","name":"ORG02","displayName":"ORG02","description":"","isEnabled":true,"orgVdcCount":0,"catalogCount":0,"vappCount":0,"runningVMCount":0,"userCount":0,"diskCount":0,"canPublish":false}]}

・参考

https://kb.vmware.com/s/article/56948?lang=ja

docs.vmware.com