首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pysphere向vmware虚拟交换机添加新端口组

使用pysphere向vmware虚拟交换机添加新端口组
EN

Stack Overflow用户
提问于 2014-07-10 02:14:44
回答 1查看 1K关注 0票数 2

我正在尝试使用pysphere自动向ESXi主机添加新的端口组。我使用了以下代码片段:

代码语言:javascript
复制
from pysphere import MORTypes
from pysphere import VIServer, VIProperty
from pysphere.resources import VimService_services as VI 

s = VIServer()
s.connect(vcenter, user, password)

host_system = s.get_hosts().keys()[17]
prop = VIProperty(s, host_system)
propname = prop.configManager._obj.get_element_networkSystem()
vswitch = prop.configManager.networkSystem.networkInfo.vswitch[0]
network_system = VIMor(propname, MORTypes.HostServiceSystem)

def add_port_group(name, vlan_id, vswitch, network_system):
    request = VI.AddPortGroupRequestMsg()
    _this = request.new__this(network_system)
    _this.set_attribute_type(network_system.get_attribute_type())
    request.set_element__this(_this)
    portgrp = request.new_portgrp()
    portgrp.set_element_name(name)
    portgrp.set_element_vlanId(vlan_id)
    portgrp.set_element_vswitchName(vswitch)
    portgrp.set_element_policy(portgrp.new_policy())
    request.set_element_portgrp(portgrp)
    s._proxy.AddPortGroup(request) 

但是,当我尝试运行它时,我得到了以下错误:

代码语言:javascript
复制
>>> add_port_group(name, vlan_id, vswitch, network_system)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 12, in add_port_group
  File "/usr/lib/python2.6/site-packages/pysphere-0.1.8-    py2.6.egg/pysphere/resources/VimService_services.py", line 4344, in AddPortGroup
    response = self.binding.Receive(AddPortGroupResponseMsg.typecode)
  File "/usr/lib/python2.6/site-packages/pysphere-0.1.8-    py2.6.egg/pysphere/ZSI/client.py", line 545, in Receive
    return _Binding.Receive(self, replytype, **kw)
  File "/usr/lib/python2.6/site-packages/pysphere-0.1.8-    py2.6.egg/pysphere/ZSI/client.py", line 464, in Receive
    raise FaultException(msg)
pysphere.ZSI.FaultException: The object has already been deleted or has not been completely created

我尝试将"vswitch“和"network_system”换成不同的值,但没有成功。有没有人尝试过用pysphere成功地做类似的事情?

我可以通过Powershell完成所需的任务,这表明这不是vmware的问题,但在这种情况下,我不想使用Powershell。

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 08:45:57

我在我们的vSpheres上试过你的代码。您似乎将对象传递给了set_element_vswitchName,而不是名称。也许这会有所帮助:

代码语言:javascript
复制
vswitch = prop.configManager.networkSystem.networkInfo.vswitch[0].name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24661015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档