回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>如何通过某种形式的库或sud与vSphere(或VMWare)form Python联系以获取vCPU或特定主机/来宾/虚拟机的数量?</p>
<p>目前我正在尝试:</p>
<pre><code>from suds.client import Client
from suds.sudsobject import Property
client = Client("https://<server>/sdk/vimService?wsdl")
queryCon = client.wsdl.services[0].ports[0].methods['QueryConnectionInfo']
print queryCon
</code></pre>
<p>这很有效,它给了我某种形式的输出:</p>
<pre><code>(Method){
name = "QueryConnectionInfo"
location = "https://localhost/sdk/vimService"
binding =
(binding){
input = <suds.bindings.document.Document instance at 0x0775C080>
output = <suds.bindings.document.Document instance at 0x0775C080>
}
soap =
(soap){
action = ""urn:vim25/4.1""
style = "document"
input =
(Input){
body =
(Body){
parts[] =
(Part){
root = <part name="parameters" element="vim25:QueryConnectionInfo"/>
name = "parameters"
qname[] =
"parameters",
"urn:vim25",
element = "(u'QueryConnectionInfo', u'urn:vim25')"
type = "None"
},
use = "literal"
namespace[] =
"vim25",
"urn:vim25",
wrapped = True
}
headers[] = <empty>
}
output =
(Output){
body =
(Body){
parts[] =
(Part){
root = <part name="parameters" element="vim25:QueryConnectionInfoResponse"/>
name = "parameters"
qname[] =
"parameters",
"urn:vim25",
element = "(u'QueryConnectionInfoResponse', u'urn:vim25')"
type = "None"
},
use = "literal"
namespace[] =
"vim25",
"urn:vim25",
wrapped = True
}
headers[] = <empty>
}
faults[] =
(Fault){
name = "InvalidLoginFault"
use = "literal"
parts[] =
(Part){
root = <part name="fault" element="vim25:InvalidLoginFault"/>
name = "fault"
qname[] =
"fault",
"urn:vim25",
element = "(u'InvalidLoginFault', u'urn:vim25')"
type = "None"
},
},
(Fault){
name = "HostConnectFaultFault"
use = "literal"
parts[] =
(Part){
root = <part name="fault" element="vim25:HostConnectFaultFault"/>
name = "fault"
qname[] =
"fault",
"urn:vim25",
element = "(u'HostConnectFaultFault', u'urn:vim25')"
type = "None"
},
},
(Fault){
name = "RuntimeFault"
use = "literal"
parts[] =
(Part){
root = <part name="fault" element="vim25:RuntimeFaultFault"/>
name = "fault"
qname[] =
"fault",
"urn:vim25",
element = "(u'RuntimeFaultFault', u'urn:vim25')"
type = "None"
},
},
}
}
</code></pre>
<p>我试着遵循以下“指南”:</p>
<p><a href="https://stackoverflow.com/questions/241892/suds-programmatic-access-to-methods-and-types">SUDS - programmatic access to methods and types</a></p>
<p><a href="http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.VirtualMachine.html#field_detail" rel="nofollow noreferrer">http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.VirtualMachine.html#field_detail</a></p>
<p><a href="http://communities.vmware.com/thread/273616" rel="nofollow noreferrer">http://communities.vmware.com/thread/273616</a></p>
<p>我知道所有的信息可能都在这里,我只是看不到整个画面:/</p>
<p>在尝试了一段时间之后,我陷入了困境:</p>
<pre><code>client = Client("https://<server>/sdk/vimService?wsdl")
#queryCon = client.wsdl.services[0].ports[0].methods['QueryConnectionInfo']
print client.service.QueryConnectionInfo("https://<server>/sdk", None, r'domain\user', 'Password')
</code></pre>
<p>结果是:</p>
<pre><code>urllib2.URLError: <urlopen error [Errno 1] _ssl.c:490: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol>
</code></pre>