2013-08-20 21 views
1

我想從特定羣集獲取所有數據存儲。我將使用這個用於我的vapp部署。列出了來自Pysphere的特定esx主機中的所有數據存儲

我嘗試下面的代碼片段:

clusters = server.get_clusters() 
for c_mor, c_name in clusters.items(): 
    for ds_mor, name in server.get_datastores(from_mor=c_mor).items(): 
     props = VIProperty(server, ds_mor) 
     print props.name 

然而,這並沒有給我的名單。我究竟做錯了什麼?

回答

0

這個問題遲到了。這是我的代碼。

from pysphere import VIServer, VIProperty 

server = VIServer() 
server.connect(server, username, password) 

for ds_mor, name in server.get_hosts().items(): 
    props = VIProperty(server, ds_mor) 
    for item in props.datastore : 
     print item.info.name 

server.disconnect() 
+1

誰曾將此標記爲VLQ隊列:我認爲沒有理由刪除此答案。如果這個答案是錯誤的或者誤導性的,你可以倒計時並指出評論中的缺陷。 – Sumurai8

+0

嗨,歡迎來到堆棧溢出!你的解決方案看起來非常有趣......我對Python本身並不熟悉,所以我不能說出它是如何回答這個問題的。提供關於解決方案的一些解釋以及如何解決原始問題通常是一個好主意。這樣,網站上的新手(或像我這樣的python新手)都可以向你學習,並且你已經解決了這個問題。不要忘記,對於一個完整的初學者來說,這可能對你來說顯而易見,對你來說可能並不那麼明顯!如果你可以編輯你的答案來添加更多的解釋,我會很感激:) –

+1

這是正確的代碼,但真的很慢 –

0

老問題,但如果外部的任何人正在尋找一個解決方案(這是谷歌的第一個結果),這將直接從數據存儲收集的信息:

from pysphere import VIServer, VIProperty 
import ssl 

default_context = ssl._create_default_https_context 
server = VIServer() 
#user = the-user-to-connect-to-vsphere 
#password = the-password-from-the-user 
#host = the-vsphere-hostname-or-ip 
try: 
    ssl._create_default_https_context = ssl._create_unverified_context 
    server.connect(host, user, password) 
    for ds_mor, name in server.get_datastores().items(): 
     props = VIProperty(server, ds_mor) 
     print "Datastore name: ", name 
    server.disconnect() 

finally: 
    ssl._create_default_https_context = default_context 

這將連接到自簽名VSphere,就像內聯網中通常的情況一樣。

相關問題