automation - 如何使用 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 。
解决方案
推荐阅读
- javascript - 为什么我的代码在完成之前的代码之前跳到下一个 .then ?
- pymodbus - 具有多个从站的 Pymodbus 串行转发器
- python - 将文件作为元组的元组列表读取
- python - 数据框透视,排列新列值而不创建额外的 NaN 值
- git - 有没有办法设置一个后备 git commit 模板?
- reactjs - 如何修复此错误在现有状态转换期间无法更新
- java - 使用来自 Java 的用户输入运行 cmd-line 程序
- python - 使用 pandas 从 csv 文件保存和检索时丢失 numpy 数组维度
- java - 我不明白用于定义我的字符串的语法
- c# - Net Core 使用 Postal 和 Hangfire 发送邮件后台服务