我正在处理一组Python脚本,这些脚本应该是用来操作ESX虚拟机vApp属性的。我已经找到了pySphere,并且我能够添加/编辑key/label/value属性,但是,我似乎找不到一种方法来检索这些属性--没有关于pySphere项目的文档,而且类/方法缺少文档字符串,所以iPython不是很好用。
有没有人知道列出这些属性的方法,或者可以告诉我关于使用pySphere来列出这些属性的源代码?
S.
发布于 2014-03-06 04:58:12
我用这个脚本获得了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()不是很好,但很管用。
发布于 2013-12-29 00:37:43
编辑:问题是关于检索属性的。下面的答案没有答案,但是如果你碰巧遇到这个线程(就像我一样)想要添加/编辑/删除属性,你可能会发现这个答案很有用。
在谷歌上搜索pysphere vApp properties,第一个结果是:Access to, and modify, a VMs vApp Properties。
引用食谱的要点:
# ... 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])链接本身提供了一个更好的包装器,用于进行字典定义的多个添加/编辑/删除修改。看看这个。
https://stackoverflow.com/questions/19275364
复制相似问题