2013-10-09 53 views
1

我正在处理一组应用于ESX虚拟机vApp属性的Python脚本。我已经找到了pySphere,并且我能够添加/编辑键/标签/值属性,但是,我似乎找不到任何方式来检索这些属性 - 关于该项目没有关于pySphere项目的文档,并且classess /方法缺乏文档,因此iPython不是非常有用。使用python pysphere检索ESX vApp属性

有人会知道一种方式来列出这些属性,或者可以指向我谈论使用pySphere这样做的来源?

S.

回答

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

链接本身给出了用于制作多种添加/编辑/删除一个字典中定义修改一个更好的包装。一探究竟。

+0

这正是我能做的 - 添加,编辑和删除现有的属性,它不是问题的答案如何检索/检查当前存在的... – SpankMe

+0

你是绝对正确的!教你在上午4点回答问题。大脑当时一定已经离线了......真正的问题,祝你好运! – Yonatan

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

不怎么样,但作品。

+0

我想在这里做一些非常类似的事情。我需要提取guest,host或datastore的名称。我将如何检索对象(主机,来宾或数据存储)的名称并将其分配给一个变量(称为Name :)。这里是我的东西:对于结果中的项目: name = item.Name for p in item.PropSet: if p.Name ==“summary.capacity”: Metric =“Total_Capacity” data_host =(d,名称,公制,p.Val) print data_host – user1471980