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, и существует один центр данных.
Я создал SOAP-вызов в PHP следующим образом ($ 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 с ошибкой.
Есть ли способ получить кластеры центров обработки данных, используя мыльный вызов?
У меня была такая же проблема. Затем я внимательно посмотрел на эту страницу:
https://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.Datacenter.html
Цитата:
Каждый центр обработки данных имеет следующий набор выделенных папок. Эти папки пусты до тех пор, пока вы не создадите объекты для центра обработки данных.
Папка для объектов VirtualMachine, шаблона и VirtualApp.
Папка для иерархии ComputeResource.
Папка для объектов Network, DistributedVirtualSwitch и DistributedVirtualPortgroup.
Папка для объектов хранилища данных.
Вы используете ResourcePool в своем propSet, но он не существует для центра обработки данных.
[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
)
)
)
)
Не знаю, поможет ли это, просто надеюсь! Удачи.
Других решений пока нет …