Add SmartVimStub method to pyVim.connect
The SmartVimStub method is an equivalent of the SmartConnect method. The difference is that it returns a stub and it doesn't actually try to login. It accepts all the arguments the SoapStubAdapter constructor does.
This commit is contained in:
@@ -34,6 +34,7 @@ import requests
|
|||||||
from requests.auth import HTTPBasicAuth
|
from requests.auth import HTTPBasicAuth
|
||||||
|
|
||||||
from pyVmomi import vim, vmodl, SoapStubAdapter, SessionOrientedStub
|
from pyVmomi import vim, vmodl, SoapStubAdapter, SessionOrientedStub
|
||||||
|
from pyVmomi.SoapAdapter import CONNECTION_POOL_IDLE_TIMEOUT_SEC
|
||||||
from pyVmomi.VmomiSupport import nsMap, versionIdMap, versionMap, IsChildVersion
|
from pyVmomi.VmomiSupport import nsMap, versionIdMap, versionMap, IsChildVersion
|
||||||
from pyVmomi.VmomiSupport import GetServiceVersions
|
from pyVmomi.VmomiSupport import GetServiceVersions
|
||||||
|
|
||||||
@@ -560,6 +561,49 @@ def __FindSupportedVersion(protocol, server, port, path, preferredApiVersions, s
|
|||||||
return desiredVersion
|
return desiredVersion
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def SmartStubAdapter(host='localhost', port=443, path='/sdk',
|
||||||
|
url=None, sock=None, poolSize=5,
|
||||||
|
certFile=None, certKeyFile=None,
|
||||||
|
httpProxyHost=None, httpProxyPort=80, sslProxyPath=None,
|
||||||
|
thumbprint=None, cacertsFile=None, preferredApiVersions=None,
|
||||||
|
acceptCompressedResponses=True,
|
||||||
|
connectionPoolTimeout=CONNECTION_POOL_IDLE_TIMEOUT_SEC,
|
||||||
|
samlToken=None, sslContext=None):
|
||||||
|
"""
|
||||||
|
Determine the most preferred API version supported by the specified server,
|
||||||
|
then create a soap stub adapter using that version
|
||||||
|
|
||||||
|
The parameters are the same as for pyVmomi.SoapStubAdapter except for
|
||||||
|
version which is renamed to prefferedApiVersions
|
||||||
|
|
||||||
|
@param preferredApiVersions: Acceptable API version(s) (e.g. vim.version.version3)
|
||||||
|
If a list of versions is specified the versions should
|
||||||
|
be ordered from most to least preferred. If None is
|
||||||
|
specified, the list of versions support by pyVmomi will
|
||||||
|
be used.
|
||||||
|
@type preferredApiVersions: string or string list
|
||||||
|
"""
|
||||||
|
if preferredApiVersions is None:
|
||||||
|
preferredApiVersions = GetServiceVersions('vim25')
|
||||||
|
|
||||||
|
supportedVersion = __FindSupportedVersion('https' if port > 0 else 'http',
|
||||||
|
host,
|
||||||
|
port,
|
||||||
|
path,
|
||||||
|
preferredApiVersions,
|
||||||
|
sslContext)
|
||||||
|
if supportedVersion is None:
|
||||||
|
raise Exception("%s:%s is not a VIM server" % (host, port))
|
||||||
|
|
||||||
|
return SoapStubAdapter(host=host, port=port, path=path,
|
||||||
|
url=url, sock=sock, poolSize=poolSize,
|
||||||
|
certFile=certFile, certKeyFile=certKeyFile,
|
||||||
|
httpProxyHost=httpProxyHost, httpProxyPort=httpProxyPort,
|
||||||
|
sslProxyPath=sslProxyPath, thumbprint=thumbprint,
|
||||||
|
cacertsFile=cacertsFile, version=supportedVersion,
|
||||||
|
acceptCompressedResponses=acceptCompressedResponses,
|
||||||
|
connectionPoolTimeout=connectionPoolTimeout,
|
||||||
|
samlToken=samlToken, sslContext=sslContext)
|
||||||
|
|
||||||
def SmartConnect(protocol='https', host='localhost', port=443, user='root', pwd='',
|
def SmartConnect(protocol='https', host='localhost', port=443, user='root', pwd='',
|
||||||
service="hostd", path="/sdk",
|
service="hostd", path="/sdk",
|
||||||
|
Reference in New Issue
Block a user