def run(self): print('\n\n#### Example: Login to vCenter server with ' 'embedded Platform Services Controller') # Since the platform services controller is embedded, the sso server # is the same as the vCenter server. ssoUrl = 'https://{}/sts/STSService'.format(self.server) print('\nStep 1: Connect to the Single Sign-On URL and ' 'retrieve the SAML bearer token.') authenticator = sso.SsoAuthenticator(ssoUrl) context = None if self.skip_verification: context = get_unverified_context() bearer_token = authenticator.get_bearer_saml_assertion( self.username, self.password, delegatable=True, ssl_context=context) # Creating SAML Bearer Security Context sec_ctx = create_saml_bearer_security_context(bearer_token) print('\nStep 2. Login to vAPI services using the SAML bearer token.') # The URL for the stub requests are made against the /api HTTP endpoint # of the vCenter system. vapi_url = 'https://{}/api'.format(self.server) # Create an authenticated stub configuration object that can be used to # issue requests against vCenter. session = requests.Session() if self.skip_verification: session = create_unverified_session(session) connector = get_requests_connector(session=session, url=vapi_url) connector.set_security_context(sec_ctx) stub_config = StubConfigurationFactory.new_std_configuration( connector) self.session = Session(stub_config) # Login to VAPI endpoint and get the session_id self.session_id = self.session.create() # Update the VAPI connection with session_id session_sec_ctx = create_session_security_context(self.session_id) connector.set_security_context(session_sec_ctx) print('\nStep 3: List available datacenters using the vAPI services') datacenter_svc = Datacenter(stub_config) pprint(datacenter_svc.list()) self.session.delete() print('VAPI session disconnected successfully...')
def get_datacenter(stub_config, datacenter_name): """ Returns the identifier of a datacenter Note: The method assumes only one datacenter with the mentioned name. """ filter_spec = Datacenter.FilterSpec(names=set([datacenter_name])) datacenter_svc = Datacenter(stub_config) datacenter_summaries = datacenter_svc.list(filter_spec) if len(datacenter_summaries) > 0: datacenter = datacenter_summaries[0].datacenter return datacenter else: return None
def detect_datacenter(context, datacenter_name): """Find the datacenter with the given name""" datacenter_svc = Datacenter(context.stub_config) names = set([datacenter_name]) datacenter_summaries = datacenter_svc.list( Datacenter.FilterSpec(names=names)) if len(datacenter_summaries) > 0: datacenter = datacenter_summaries[0].datacenter print("Detected Datacenter '{}' as {}".format(datacenter_name, datacenter)) context.testbed.entities['DATACENTER_IDS'][ datacenter_name] = datacenter return True else: print("Datacenter '{}' missing".format(datacenter_name)) return False
def cleanup_datacenters(context): """Cleanup datacenters after sample run""" datacenter_svc = Datacenter(context.stub_config) # Look for the two datacenters datacenter1_name = context.testbed.config['DATACENTER1_NAME'] datacenter2_name = context.testbed.config['DATACENTER2_NAME'] names = set([datacenter1_name, datacenter2_name]) datacenter_summaries = datacenter_svc.list( Datacenter.FilterSpec(names=names)) print("Found {} Datacenters matching names {}".format( len(datacenter_summaries), ", ".join(["'{}'".format(n) for n in names]))) for datacenter_summary in datacenter_summaries: datacenter = datacenter_summary.datacenter print("Deleting Datacenter '{}' ({})".format(datacenter, datacenter_summary.name)) datacenter_svc.delete(datacenter, force=True)
def run(self): print('\n\n#### Example: Login to vCenter server with ' 'external Platform Services Controller') print('\nStep 1: Connect to the lookup service on the ' 'Platform Services Controller node: {0}'.format(self.lsurl)) # Convert wsdl path to url self.lswsdl = parse.urljoin('file:', request.pathname2url(self.lswsdl)) lookupservicehelper = LookupServiceHelper( wsdl_url=self.lswsdl, soap_url=self.lsurl, skip_verification=self.skip_verification) lookupservicehelper.connect() if self.mgmtinstancename is None: self.mgmtinstancename, self.mgmtnodeid = lookupservicehelper.get_default_mgmt_node( ) elif self.mgmtnodeid is None: self.mgmtnodeid = lookupservicehelper.get_mgmt_node_id( self.mgmtinstancename) assert self.mgmtnodeid is not None print('\nStep 2: Discover the Single Sign-On service URL' ' from lookup service.') sso_url = lookupservicehelper.find_sso_url() print('Sso URL: {0}'.format(sso_url)) print('\nStep 3: Connect to the Single Sign-On URL and ' 'retrieve the SAML bearer token.') authenticator = sso.SsoAuthenticator(sso_url) context = None if self.skip_verification: context = get_unverified_context() bearer_token = authenticator.get_bearer_saml_assertion( self.username, self.password, delegatable=True, ssl_context=context) # Creating SAML Bearer Security Context sec_ctx = create_saml_bearer_security_context(bearer_token) print('\nStep 4. Discover the vAPI service URL from lookup service.') vapi_url = lookupservicehelper.find_vapi_url(self.mgmtnodeid) print('vAPI URL: {0}'.format(vapi_url)) print('\nStep 5. Login to vAPI service using the SAML bearer token.') # Create an authenticated stub configuration object that can be used to # issue requests against vCenter. session = requests.Session() if self.skip_verification: session = create_unverified_session(session) connector = get_requests_connector(session=session, url=vapi_url) connector.set_security_context(sec_ctx) stub_config = StubConfigurationFactory.new_std_configuration(connector) self.session = Session(stub_config) # Login to VAPI endpoint and get the session_id self.session_id = self.session.create() # Update the VAPI connection with session_id session_sec_ctx = create_session_security_context(self.session_id) connector.set_security_context(session_sec_ctx) print('\nStep 6: List available datacenters using the vAPI service') datacenter_svc = Datacenter(stub_config) pprint(datacenter_svc.list()) self.session.delete() print('VAPI session disconnected successfully...')