在 VMware vSphere SOAP api 中使用 VLAN ID 创建分布式端口组

Create Distributed Portgroup with VLAN id in VMware vSphere SOAP api

我正在尝试使用 SOAP api 在 VMware vSphere 的 VDS 中创建一个带有 vlan ID 的分布式端口组。我可以用它来创建端口组,但它从不分配 vlan id。这是我作为规范发送给 CreateDVPortGroup_Task 方法的请求(在托管对象浏览器中):

<spec>
   <name>Test</name>
   <numPorts>10</numPorts>
   <defaultPortConfig type="VMwareDVSPortSetting">
     <vlan>
       <inherited>false</inherited>
       <vlanId>123</vlanId>
     </vlan>
   </defaultPortConfig>
   <type>earlyBinding</type>
   <autoExpand>false</autoExpand>
</spec>

这会创建一个端口组,但不会设置 vlanId。

我看到它需要 defaultPortConfig 的 DVPortSetting,但 vsphere 将其保留为 VMwareDVSPortSetting 对象。

我在网络上看到了一些通过 other means 执行此操作的示例,但我只需要 SOAP 消息的格式。有人可以向我提供一个示例 soap 请求,该请求将创建一个带有 vlan id 的分布式端口组吗?

如有任何帮助,我们将不胜感激。

通过查看 vijava 的实现终于弄明白了。您必须使用 'xsi:type' 而不是使用 type 属性。我要找的是:

<spec xsi:type="DVPortgroupConfigSpec">
   <name>Test</name>
   <numPorts>10</numPorts>
   <defaultPortConfig xsi:type="VMwareDVSPortSetting">
     <vlan xsi:type="VmwareDistributedVirtualSwitchVlanIdSpec">
       <inherited>false</inherited>
       <vlanId>123</vlanId>
     </vlan>
   </defaultPortConfig>
   <type>earlyBinding</type>
   <autoExpand>false</autoExpand>
</spec>

简单得令人沮丧!