使用python pysphere检索ESX vApp属性

时间:2013-10-09 14:48:39

标签: python properties virtual-machine esx

我正在研究一组应该操作ESX虚拟机vApp属性的Python脚本。我发现了pySphere,我能够添加/编辑key / label / value属性,但是,我似乎找不到以任何方式检索它们的方法 - 没有关于pySphere项目的文档,而classess /方法缺乏文档,因此iPython不是很有帮助。

有人知道列出这些属性的方法,还是可以指向我讨论使用pySphere这样做的来源?​​

S上。

2 个答案:

答案 0 :(得分:0)

我使用此脚本获取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()

不是很好,但有效。

答案 1 :(得分:-1)

编辑:问题是关于检索属性。以下内容没有回答,但是如果您遇到这个线程(就像我一样)想要添加/编辑/删除属性,您可能会发现这个答案很有用。


谷歌搜索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])

链接本身提供了一个更好的包装器,用于进行由字典定义的多个添加/编辑/删除修改。看看吧。