Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
    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
Exemple #6
0
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
Exemple #7
0
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)
Exemple #8
0
 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)
Exemple #10
0
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