VMware vSphere 6.0 WSDL API
参见文档:http://pubs.vmware.com/vsphere-60/index.jsp com.vmware.wssdk.pg.doc/PG_Introduction_Inventory.6.4.html
我正在尝试检索VMware vCenter库存中的数据中心列表,并且存在一个数据中心。
我在PHP中创建了一个SOAP调用,如下所示($request is print_r()ed):stdClass Object(
[_this] => stdClass Object(
[_] => propertyCollector
[type] => PropertyCollector
)
[specSet] => Array(
[propSet] => Array(
[0] => Array(
[type] => ResourcePool
[all] => 1
)
)
[objectSet] => Array(
[obj] => stdClass Object(
[_] => group-d1
[type] => Folder
)
[skip] =>
[selectSet] => Array(
[0] => SoapVar Object(
[enc_type] => 301
[enc_value] => Array(
[name] => FolderTraversalSpec
[type] => Folder
[path] => childEntity
[skip] =>
[0] => SoapVar Object(
[enc_type] => 301
[enc_value] => Array(
[name] => FolderTraversalSpec
)
[enc_name] => selectSet
)
[1] => SoapVar Object(
[enc_type] => 301
[enc_value] => Array(
[name] => DataCenterVMTraversalSpec
)
[enc_name] => selectSet
)
)
[enc_stype] => TraversalSpec
)
[1] => SoapVar Object(
[enc_type] => 301
[enc_value] => Array(
[name] => DataCenterVMTraversalSpec
[type] => Datacenter
[path] => datastoreFolder
[skip] =>
[0] => SoapVar Object(
[enc_type] => 301
[enc_value] => Array(
[name] => FolderTraversalSpec
)
[enc_name] => selectSet
)
)
[enc_stype] => TraversalSpec
)
)
)
)
)
我认为[path] => datastoreFolder是不正确的,VMware文档显示datastoreFolder, hostFolder, networkFolder和vmFolder。其中任何一个都没有数据中心,并且任何其他对象似乎都以错误中断SOAP调用。
是否有一种使用soap调用检索数据中心集群的方法?
我一直有同样的问题。然后我仔细看了看这一页:
https://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.Datacenter.html:
每个数据中心都有以下一组专用文件夹。在为数据中心创建实体之前,这些文件夹是空的。
存放VirtualMachine、template和VirtualApp对象的文件夹。计算机资源层次结构的文件夹。用于存放Network、DistributedVirtualSwitch和DistributedVirtualPortgroup对象的文件夹。数据存储对象的文件夹。
你在你的propSet中使用了ResourcePool,但是对于一个数据中心不存在。
[propSet] => Array(
[0] => Array(
[type] => ResourcePool
[all] => 1
)
)
这是我用来读取所有主机的:
[propSet] => Array
(
[0] => Array
(
[type] => ComputeResource
[all] => 1
)
)
[objectSet] => Array
(
[obj] => stdClass Object
(
[_] => group-d1
[type] => Folder
)
[skip] =>
[selectSet] => Array
(
[0] => SoapVar Object
(
[enc_type] => 301
[enc_value] => Array
(
[name] => FolderTraversalSpec
[type] => Folder
[path] => childEntity
[skip] =>
[0] => SoapVar Object
(
[enc_type] => 301
[enc_value] => Array
(
[name] => FolderTraversalSpec
)
[enc_name] => selectSet
)
[1] => SoapVar Object
(
[enc_type] => 301
[enc_value] => Array
(
[name] => DataCenterVMTraversalSpec
)
[enc_name] => selectSet
)
)
[enc_stype] => TraversalSpec
)
[1] => SoapVar Object
(
[enc_type] => 301
[enc_value] => Array
(
[name] => DataCenterVMTraversalSpec
[type] => Datacenter
[path] => hostFolder
[skip] =>
[0] => SoapVar Object
(
[enc_type] => 301
[enc_value] => Array
(
[name] => FolderTraversalSpec
)
[enc_name] => selectSet
)
)
[enc_stype] => TraversalSpec
)
)
)
)
我不知道它是否有帮助,我只是希望如此!好运。