1

我正在研究一组应该操纵 ESX 虚拟机 vApp 属性的 Python 脚本。我找到了 pySphere,并且能够添加/编辑键/标签/值属性,但是,我似乎无法找到以任何方式检索这些属性的方法 - pySphere 项目上没有关于此的文档,以及 classess/方法缺少文档字符串,所以 iPython 不是很有帮助。

有谁知道列出这些属性的方法,或者可以指出我谈论使用 pySphere 这样做的来源?

S。

4

2 回答 2

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()

不是很好,但工作。

于 2014-03-05T20:58:12.457 回答
-1

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


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

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

于 2013-12-28T16:37:42.693 回答