2014-07-09 1 views
1

pysphere를 사용하여 ESXi 호스트에 새 포트 그룹을 추가하는 작업을 자동화하려고합니다.pysphere를 사용하여 VMware 가상 스위치에 새 포트 그룹 추가

>>> 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에 "다른 값에 교환을 시도했습니다 : 나는 다음과 같은 오류가 그것을 실행하려고 할 때, 그러나

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) 

: 나는 다음 코드를 사용하고 있습니다 "and"network_system "그러나 나는 어떤 성공도하지 못했습니다. 아무도 성공적으로 피 구체와 비슷한 것을 시도한 적이 있습니까?

나는 PowerShell을 통해 필요한 것을 성취 할 수 있는데, 이것은 VM웨어 문제는 아니지만 Powershell을이 특별한 경우에 사용하고 싶지 않음을 보여줍니다.

답변

0

Google vSpheres 중 하나에서 코드를 사용해 보았습니다. 이름이 아니라 set_element_vswitchName 개체를 전달하는 것 같습니다. 아마도 도움이 될 것입니다 :

vswitch = prop.configManager.networkSystem.networkInfo.vswitch[0].name