2013-08-20 40 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,就像内联网中通常的情况一样。

相关问题