2013-10-09 56 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