def pbm_connect(stub_adapter, disable_ssl_verification=False): """Connect to the VMware Storage Policy Server :param stub_adapter: The ServiceInstance stub adapter :type stub_adapter: SoapStubAdapter :param disable_ssl_verification: A flag used to skip ssl certificate verification (default is False) :type disable_ssl_verification: bool :returns: A VMware Storage Policy Service content object :rtype: ServiceContent """ if disable_ssl_verification: import ssl if hasattr(ssl, '_create_unverified_context'): ssl_context = ssl._create_unverified_context() else: ssl_context = None else: ssl_context = None VmomiSupport.GetRequestContext()["vcSessionCookie"] = \ stub_adapter.cookie.split('"')[1] hostname = stub_adapter.host.split(":")[0] pbm_stub = SoapStubAdapter(host=hostname, version="pbm.version.version1", path="/pbm/sdk", poolSize=0, sslContext=ssl_context) pbm_si = pbm.ServiceInstance("ServiceInstance", pbm_stub) pbm_content = pbm_si.RetrieveContent() return pbm_content
def get_profile_manager(service_instance): """ Returns a profile manager service_instance Service instance to the host or vCenter """ stub = salt.utils.vmware.get_new_service_instance_stub(service_instance, ns="pbm/2.0", path="/pbm/sdk") pbm_si = pbm.ServiceInstance("ServiceInstance", stub) try: profile_manager = pbm_si.RetrieveContent().profileManager except vim.fault.NoPermission as exc: log.exception(exc) raise VMwareApiError( "Not enough permissions. Required privilege: {}".format( exc.privilegeId)) except vim.fault.VimFault as exc: log.exception(exc) raise VMwareApiError(exc.msg) except vmodl.RuntimeFault as exc: log.exception(exc) raise VMwareRuntimeError(exc.msg) return profile_manager
def create_pbm_session(stub): """ Creates a session with the VMware Storage Policy API Sample Usage: create_pbm_session(service_instance._stub) """ import pyVmomi import ssl # Make compatible with both Python2/3 try: from http import cookies except ImportError: import Cookie as cookies session_cookie = stub.cookie.split('"')[1] http_context = VmomiSupport.GetHttpContext() cookie = cookies.SimpleCookie() cookie["vmware_soap_session"] = session_cookie http_context["cookies"] = cookie VmomiSupport.GetRequestContext()["vcSessionCookie"] = session_cookie hostname = stub.host.split(":")[0] context = None if hasattr(ssl, "_create_unverified_context"): context = ssl._create_unverified_context() pbm_stub = pyVmomi.SoapStubAdapter(host=hostname, version="pbm.version.version1", path="/pbm/sdk", poolSize=0, sslContext=context) pbm_si = pbm.ServiceInstance("ServiceInstance", pbm_stub) return pbm_si
def get_spbm_connection(self): """ Creates a Service instance for VMware SPBM """ client_stub = self.si._GetStub() try: session_cookie = client_stub.cookie.split('"')[1] except IndexError: self.module.fail_json(msg="Failed to get session cookie") ssl_context = client_stub.schemeArgs.get("context") additional_headers = {"vcSessionCookie": session_cookie} hostname = self.module.params["hostname"] if not hostname: self.module.fail_json( msg="Please specify required parameter - hostname" ) stub = SoapStubAdapter( host=hostname, path="/pbm/sdk", version=self.version, sslContext=ssl_context, requestContext=additional_headers, ) self.spbm_si = pbm.ServiceInstance("ServiceInstance", stub) self.spbm_content = self.spbm_si.PbmRetrieveServiceContent()
def get_pbm_connection(self, vpxd_stub): VmomiSupport.GetRequestContext()["vcSessionCookie"] = \ vpxd_stub.cookie.split('"')[1] hostname = vpxd_stub.host.split(":")[0] pbm_stub = SoapStubAdapter( host=hostname, version="pbm.version.version11", path="/pbm/sdk", poolSize=0, sslContext=ssl._create_unverified_context()) pbm_si = pbm.ServiceInstance("ServiceInstance", pbm_stub) pbm_content = pbm_si.RetrieveContent() return pbm_content
def connectToSpbm(stub, context): hostname = stub.host.split(":")[0] sessionCookie = stub.cookie.split('"')[1] VmomiSupport.GetRequestContext()["vcSessionCookie"] = sessionCookie pbmStub = SoapStubAdapter( host=hostname, path="/pbm/sdk", version="pbm.version.version2", sslContext=context, ) pbmStub.cookie = stub.cookie pbmSi = pbm.ServiceInstance("ServiceInstance", pbmStub) return pbmSi
def GetPbmConnection(stub, context=None): sessionCookie = stub.cookie.split('"')[1] httpContext = VmomiSupport.GetHttpContext() cookie = Cookie.SimpleCookie() cookie["vmware_soap_session"] = sessionCookie httpContext["cookies"] = cookie VmomiSupport.GetRequestContext()["vcSessionCookie"] = sessionCookie hostname = stub.host.split(":")[0] pbmStub = pyVmomi.SoapStubAdapter( host=hostname, version="pbm.version.version1", path="/pbm/sdk", poolSize=0, sslContext=context) pbmSi = pbm.ServiceInstance("ServiceInstance", pbmStub) pbmContent = pbmSi.RetrieveContent() return (pbmSi, pbmContent)
def __init__(self, vc_si, hostname, version="version2"): """ Creates a Service Instance for VMware Profile Based Management :param vc_si: vCenter Service Instance :param version: PBM Version """ option_manager = vc_si.RetrieveContent().setting hostname_option = option_manager.QueryOptions( "config.vpxd.hostnameUrl") client_stub = vc_si._GetStub() session_cookie = client_stub.cookie.split('"')[1] ssl_context = client_stub.schemeArgs.get('context') additional_headers = {'vcSessionCookie': session_cookie} stub = SoapStubAdapter(host=hostname, path="/pbm/sdk", version="pbm.version.version2", sslContext=ssl_context, requestContext=additional_headers) self.vc_si = vc_si self.pbm_si = pbm.ServiceInstance("ServiceInstance", stub) self.pbm_content = self.pbm_si.PbmRetrieveServiceContent()
def GetPbmConnection(vpxdStub): import Cookie import pyVmomi sessionCookie = vpxdStub.cookie.split('"')[1] httpContext = VmomiSupport.GetHttpContext() cookie = Cookie.SimpleCookie() cookie["vmware_soap_session"] = sessionCookie httpContext["cookies"] = cookie VmomiSupport.GetRequestContext()["vcSessionCookie"] = sessionCookie hostname = vpxdStub.host.split(":")[0] context = None if hasattr(ssl, "_create_unverified_context"): context = ssl._create_unverified_context() pbmStub = pyVmomi.SoapStubAdapter(host=hostname, version="pbm.version.version1", path="/pbm/sdk", poolSize=0, sslContext=context) pbmSi = pbm.ServiceInstance("ServiceInstance", pbmStub) pbmContent = pbmSi.RetrieveContent() return (pbmSi, pbmContent)
def get_placement_solver(service_instance): ''' Returns a placement solver service_instance Service instance to the host or vCenter ''' stub = salt.utils.vmware.get_new_service_instance_stub( service_instance, ns='pbm/2.0', path='/pbm/sdk') pbm_si = pbm.ServiceInstance('ServiceInstance', stub) try: profile_manager = pbm_si.RetrieveContent().placementSolver except vim.fault.NoPermission as exc: log.exception(exc) raise VMwareApiError('Not enough permissions. Required privilege: ' '{0}'.format(exc.privilegeId)) except vim.fault.VimFault as exc: log.exception(exc) raise VMwareApiError(exc.msg) except vmodl.RuntimeFault as exc: log.exception(exc) raise VMwareRuntimeError(exc.msg) return profile_manager