首页 > 解决方案 > 如何使用 pyvmomi python 脚本在 VMWare 中创建端口组

问题描述

我正在使用 pyvmomi 库来执行 vmware 操作。我想使用这个脚本创建端口组 -

import atexit
import os
import sys
import tools
import paramiko
import socket
from pyVmomi import vim, vmodl
from pyVim import connect
from pyVim.connect import Disconnect

def create_port_group(host_network_system, pg_name, vss_name):
    port_group_spec = vim.host.PortGroup.Specification()
    port_group_spec.name = pg_name
    port_group_spec.vlanId = 0 
    port_group_spec.vswitchName = vss_name 
    security_policy = vim.host.NetworkPolicy.SecurityPolicy()
    security_policy.allowPromiscuous = True
    security_policy.forgedTransmits = True 
    security_policy.macChanges = False
    port_group_spec.policy = vim.host.NetworkPolicy(security=security_policy)
    host_network_system.AddPortGroup(portgrp=port_group_spec) 

def main(): 
    try:
        si = connect.SmartConnectNoSSL(host=vcip, user=vc_user, pwd=vc_pass) 
    except Exception as e:
        print(e)
    atexit.register(Disconnect, si) 
    content = si.RetrieveContent() 
    host = get_obj(content, [vim.HostSystem], inputs['host_name']) 
    host_network_system = host.configManager.networkSystem 
    create_port_group(host_network_system, pg_name, switch_name) 

if __name__ == '__main__': 
       print(main()) 

我想用'vswitch'作为虚拟交换机的端口组。在执行此代码时,我收到此错误 -

host_network_system 'vim.host.NetworkSystem:networkSystem-62'
Traceback (most recent call last):
File "file.py", line 73, in <module>
    print(main())
File "file.py", line 60, in main
    create_port_group(host_network_system, pg_name, switch_name)
File "file.py", line 40, in create_port_group
    host_network_system.AddPortGroup(portgrp=port_group_spec)
File "/lib/python3.6/site-packages/pyVmomi/VmomiSupport.py", line 706, in <lambda>
    self.f(*(self.args + (obj,) + args), **kwargs)
File "/lib/python3.6/site-packages/pyVmomi/VmomiSupport.py", line 512, in _InvokeMethod
    return self._stub.InvokeMethod(self, info, args)
File "/lib/python3.6/site-packages/pyVmomi/SoapAdapter.py", line 1397, in InvokeMethod
    raise obj # pylint: disable-msg=E0702
pyVmomi.VmomiSupport.NotFound: (vim.fault.NotFound) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
msg = 'The object or item referred to could not be found.',
faultCause = <unset>,
faultMessage = (vmodl.LocalizableMessage) []
}

我该如何解决这个问题。还请建议我应该为 vlan 使用什么值,目前我指的是 pyvmomi,这里他们使用的是 port_group_spec.vlanId = 0 。

参考 - https://github.com/reubenur-rahman/vmware-pyvmomi-examples/blob/master/create_vswitch_and_portgroup.py

标签: automationvmwarevmware-tools

解决方案


推荐阅读