2015-08-06 7 views
1

VMware VSphere 6,0 WSDL APIКак настроить вызовы SOAP vSphere 6 для отображения пулов ресурсов или центров обработки данных?

См документации по адресу: http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.wssdk.pg.doc/PG_Introduction_Inventory.6.4.html

Я пытаюсь получить список датацентров в инвентаризации VMware VCENTER, и есть один центр обработки данных присутствует.

Я создал вызов SOAP в PHP следующим образом ($ запрос print_r() ред):

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 
           ) 
         ) 
       ) 
     ) 
) 

Я считаю, что [путь] => datastoreFolder неверен, и VMware документация показывает datastoreFolder, hostFolder , networkFolder и vmFolder. В любом из них нет центров обработки данных, и любой другой объект, по-видимому, прерывает вызов SOAP с ошибкой.

Есть ли способ получить кластеры центров обработки данных с помощью мыльного вызова?

+0

У меня возникла аналогичная проблема с нашими центрами обработки данных. Фактически мы обнаружили, что VSphere 6 больше не поддерживает вызовы PHP SOAP, заставляя нас использовать что-то еще. К сожалению, мы еще не обнаружили нового решения. – JCoughlan

ответ

0

У меня была такая же проблема. Тогда я присмотрелся на этой странице:

https://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.Datacenter.html

Цитата:

Каждый Datacenter имеет следующий набор выделенных папок. Эти папки пустые, пока вы не создадите объекты для центра данных.

Папка для объектов VirtualMachine, template и VirtualApp. Папка для иерархии ComputeResource. Папка для объектов Network, DistributedVirtualSwitch и DistributedVirtualPortgroup. Папка для объектов Datastore.

Вы используете ResourcePool в своем propSet, но этого не существует для Datacenter.

[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 
        ) 

      ) 

    ) 

)

Я не знаю, если это поможет, я просто надеюсь, что так! Удачи.