<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hi, Fellows,</div><div><br></div><div>Anyone familiar with VMWARE SDK?</div><div><br></div><div><div>I am now trying to cerate a network(or a dv port group) in vcenter via VMware SDK.</div><div><br></div><div>When I create a dvpg, I need to set vlan to config spec's defaultPortConfig(Type DO:DVPortSetting), but vlan is a dynamic property of DO:DVPortSetting.</div><div><br></div><div>I tried to directly assign a VmwareDistributedVirtualSwitchVlanIdSpec MOR to defaultPortConfig.vlan  property, but the task failed with error:</div><div><span style="color: rgb(255, 0, 0);">"oslo.vmware.exceptions.VimException: Exception in CreateDVPortgroup_Task.</span></div><div><span style="color: rgb(255, 0, 0);">Cause: Type not found: 'vlan'"</span></div><div><br></div><div>I thought this is not the right way.</div><div>Anybody has any clues?</div><div><br></div><div><strong>Here is sample code I tried:</strong></div><div>client_factory = self._session.vim.client.factory</div><div>config_spec = client_factory.create('ns0:DVPortgroupConfigSpec')</div><div>port_config_spec = client_factory.create('ns0:DVPortSetting')</div><div>vlan_spec = client_factory.create('ns0:VmwareDistributedVirtualSwitchVlanIdSpec')</div><div>vlan_spec.vlanId = 100</div><div>vlan_spec.inherited = 'True'</div><div>port_config_spec.vlan = vlan_spec</div><div>config_spec.name = 'test_21'</div><div>config_spec.description = 'test'</div><div>config_spec.numPorts = '100'</div><div>config_spec.autoExpand = 'True'</div><div>config_spec.type = 'earlyBinding'</div><div>config_spec.defaultPortConfig = port_config_spec</div><div>dvs = vmware_util.get_dvs(self._session, CONF.VMWARE.dvswitch)</div><div>pg_create_task = self._session.invoke_api(self._session.vim,</div><div>                                          "CreateDVPortgroup_Task",</div><div>                                          dvs, spec=config_spec)</div><div>result = self._session.wait_for_task(pg_create_task)</div><div>dvpg = result.result</div><div>print(dvpg)</div></div></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>