我正在研究一组应该操纵 ESX 虚拟机 vApp 属性的 Python 脚本。我找到了 pySphere,并且能够添加/编辑键/标签/值属性,但是,我似乎无法找到以任何方式检索这些属性的方法 - pySphere 项目上没有关于此的文档,以及 classess/方法缺少文档字符串,所以 iPython 不是很有帮助。
有谁知道列出这些属性的方法,或者可以指出我谈论使用 pySphere 这样做的来源?
S。
我正在研究一组应该操纵 ESX 虚拟机 vApp 属性的 Python 脚本。我找到了 pySphere,并且能够添加/编辑键/标签/值属性,但是,我似乎无法找到以任何方式检索这些属性的方法 - pySphere 项目上没有关于此的文档,以及 classess/方法缺少文档字符串,所以 iPython 不是很有帮助。
有谁知道列出这些属性的方法,或者可以指出我谈论使用 pySphere 这样做的来源?
S。
我使用此脚本获取 vApp 属性:
s = VIServer()
s.connect('vcenter.example.com', 'username', 'password')
vm = s.get_vm_by_name('vm01')
props = s._retrieve_properties_traversal(property_names=['config.vAppConfig.property'], obj_type="VirtualMachine", from_node=vm._mor)
for prop_set in props:
for prop in prop_set.PropSet:
for i in prop.Val.get_element_VAppPropertyInfo():
print i.get_element_label() + ' = ' + i.get_element_value()
不是很好,但工作。
编辑:问题是关于检索属性。以下内容没有回答,但如果您碰巧遇到此线程(就像我一样)希望添加/编辑/删除属性,您可能会发现此答案很有用。
谷歌搜索pysphere vApp properties
产生这个相关讨论作为第一个结果:访问和修改 VMs vApp 属性。
引用食谱的要点:
# ... import, connect to server etc. ...
request = VI.ReconfigVM_TaskRequestMsg()
_this = request.new__this(vm._mor)
_this.set_attribute_type(vm._mor.get_attribute_type())
request.set_element__this(_this)
spec = request.new_spec()
vappconfig = spec.new_vAppConfig()
# e.g.
prop = vappconfig.new_property()
prop.set_element_operation('add')
info = prop.new_info()
info.set_element_key(10)
info.set_element_id("10")
info.set_element_value("test")
info.set_element_category("testCat")
vappconfig.set_element_property([prop])
spec.set_element_vAppConfig(vappconfig)
request.set_element_spec(spec)
task = viserver._proxy.ReconfigVM_Task(request)._returnval
vi_task = VITask(task, viserver)
status = vi_task.wait_for_state([vi_task.STATE_SUCCESS,
vi_task.STATE_ERROR])
该链接本身提供了一个更好的包装器,用于进行字典定义的多个添加/编辑/删除修改。一探究竟。