def login(self): """ Finds the SSO URL from the lookup service and retrieves the SAML token from STS URL """ print('Connecting to lookup service url: {0}'.format(self.lssoapurl)) self.lookupservicehelper = LookupServiceHelper( wsdl_url=self.lswsdlurl, soap_url=self.lssoapurl, skip_verification=self.skip_verification) self.lookupservicehelper.connect() self.stsurl = self.lookupservicehelper.find_sso_url() assert self.stsurl is not None print('Retrieving a SAML bearer token from STS url : {0}'.format( self.stsurl)) au = sso.SsoAuthenticator(self.stsurl) context = None if self.skip_verification: context = get_unverified_context() self.bearer_token = au.get_bearer_saml_assertion(self.ssousername, self.ssopassword, delegatable=True, ssl_context=context) self.sec_ctx = create_saml_bearer_security_context(self.bearer_token)
def setup(context=None): global vm_name, client, service_instance, cleardata if context: # Run sample suite via setup script client = context.client vm_name = testbed.config['VM_NAME_DEFAULT'] service_instance = context.service_instance else: # Run sample in standalone mode server, username, password, cleardata, skip_verification, vm_name = \ parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT']) session = get_unverified_session() if skip_verification else None # Connect to vSphere client client = create_vsphere_client(server=server, username=username, password=password, session=session) context = None if skip_verification: context = get_unverified_context() service_instance = SmartConnect(host=server, user=username, pwd=password, sslContext=context) atexit.register(Disconnect, service_instance)
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 setup(context=None): global client, service_instance, cleardata if context: # Run sample suite via setup script vm_name = testbed.config['VM_NAME_DEFAULT'] client = context.client service_instance = context.service_instance else: # Run sample in standalone mode server, username, password, cleardata, skip_verification, vm_name = \ parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT']) session = get_unverified_session() if skip_verification else None # Connect to vSphere client client = create_vsphere_client(server=server, username=username, password=password, session=session) # Connect to VIM API Endpoint on vCenter system context = None if skip_verification: context = get_unverified_context() service_instance = SmartConnect(host=server, user=username, pwd=password, sslContext=context) atexit.register(Disconnect, service_instance) global vm, datacenter_name, datastore_name global datastore_mo, datacenter_mo, datastore_root_path vm = get_vm(client, vm_name) if not vm: raise Exception('Sample requires an existing vm with name ({}). ' 'Please create the vm first.'.format(vm_name)) print("Using VM '{}' ({}) for Disk Sample".format(vm_name, vm)) # Get the datacenter and datastore managed objects to be able to create and # delete VMDKs, which are backings for a VM Disk. datacenter_name = testbed.config['VM_DATACENTER_NAME'] datastore_name = testbed.config['VM_DATASTORE_NAME'] datastore_mo = get_datastore_mo(client, service_instance._stub, datacenter_name, datastore_name) datacenter_mo = get_datacenter_for_datastore(datastore_mo) # The datastore_root_path is path in the datastore where the additional # VMDK files will be created for this sample. datastore_root_path = testbed.config['DISK_DATASTORE_ROOT_PATH']
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. sso_url = 'https://{}/sts/STSService'.format(self.args.server) print('\nStep 1: Connect to the Single Sign-On URL and ' 'retrieve the SAML bearer token.') authenticator = sso.SsoAuthenticator(sso_url) context = None if self.args.skipverification: context = get_unverified_context() bearer_token = authenticator.get_bearer_saml_assertion( self.args.username, self.args.password, delegatable=True, ssl_context=context) session = get_unverified_session( ) if self.args.skipverification else None # Connect to vSphere client client = create_vsphere_client(server=self.args.server, bearer_token=bearer_token, session=session) # Create and Delete TagCategory to Verify connection is successful print('\nStep 3: Creating and Deleting Tag Category...\n') create_spec = client.tagging.Category.CreateSpec() create_spec.name = 'TestTag_embeded_psc_sso_workflow' create_spec.description = 'TestTagDesc' create_spec.cardinality = CategoryModel.Cardinality.MULTIPLE create_spec.associable_types = set() category_id = client.tagging.Category.create(create_spec) assert category_id is not None print('Tag category created; Id: {0}\n'.format(category_id)) # Delete TagCategory client.tagging.Category.delete(category_id)
def connect(self): # Connect to vAPI Endpoint on vCenter Server system self.stub_config = vapiconnect.connect( host=self.server_url, user=self.username, pwd=self.password, skip_verification=self.skip_verification) # Connect to VIM API Endpoint on vCenter Server system context = None if self.skip_verification: context = get_unverified_context() self.si = SmartConnect(host=self.server_url, user=self.username, pwd=self.password, sslContext=context) assert self.si is not None # Retrieve the service content self.content = self.si.RetrieveContent() assert self.content is not None self.vim_uuid = self.content.about.instanceUuid
def setup(context=None): global vm_name, stub_config, service_instance, cleardata if context: # Run sample suite via setup script stub_config = context.stub_config vm_name = testbed.config['VM_NAME_DEFAULT'] service_instance = context.service_instance else: # Run sample in standalone mode server, username, password, cleardata, skip_verification, vm_name = \ parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT']) stub_config = vapiconnect.connect(server, username, password, skip_verification) atexit.register(vapiconnect.logout, stub_config) context = None if skip_verification: context = get_unverified_context() service_instance = SmartConnect(host=server, user=username, pwd=password, sslContext=context) atexit.register(Disconnect, service_instance)
if (args.esxhost1): _testbed.config['ESX_HOST1'] = args.esxhost1 if (args.esxhost2): _testbed.config['ESX_HOST2'] = args.esxhost2 if (args.esxpassword): _testbed.config['ESX_PASS'] = args.esxpassword if (args.nfsserver): _testbed.config['NFS_HOST'] = args.nfsserver print(_testbed.to_config_string()) # Connect to VIM API Endpoint on vCenter system context = None if args.skipverification: context = get_unverified_context() service_instance = pyVim.connect.SmartConnect(host=_testbed.config['SERVER'], user=_testbed.config['USERNAME'], pwd=_testbed.config['PASSWORD'], sslContext=context) # Connect to vAPI Endpoint on vCenter system stub_config = vapiconnect.connect(host=_testbed.config['SERVER'], user=_testbed.config['USERNAME'], pwd=_testbed.config['PASSWORD'], skip_verification=args.skipverification) context = sample_util.Context(_testbed, service_instance, stub_config) context.option['DO_TESTBED_SETUP'] = args.testbed_setup context.option['DO_TESTBED_VALIDATE'] = args.testbed_validate
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) 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.') session = get_unverified_session() if self.skip_verification else None client = create_vsphere_client( server=parse.urlparse(vapi_url).hostname, bearer_token=bearer_token, session=session) # Create and Delete TagCategory to Verify connection is successful print('\nStep 3: Creating and Deleting Tag Category...\n') create_spec = client.tagging.Category.CreateSpec() create_spec.name = 'TestTag_embeded_psc_sso_workflow' create_spec.description = 'TestTagDesc' create_spec.cardinality = CategoryModel.Cardinality.MULTIPLE create_spec.associable_types = set() category_id = client.tagging.Category.create(create_spec) assert category_id is not None print('Tag category created; Id: {0}\n'.format(category_id)) # Delete TagCategory client.tagging.Category.delete(category_id)
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.args.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.args.skipverification: context = get_unverified_context() bearer_token = authenticator.get_bearer_saml_assertion( self.args.username, self.args.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.args.server) # Create an authenticated stub configuration object that can be used to # issue requests against vCenter. session = requests.Session() if self.args.skipverification: 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) # Create and Delete TagCategory to Verify connection is successful print('\nStep 3: Creating and Deleting Tag Category...\n') self.category_svc = Category(stub_config) self.category_id = self.create_tag_category( 'TestTagCat', 'TestTagDesc', CategoryModel.Cardinality.MULTIPLE) assert self.category_id is not None print('Tag category created; Id: {0}\n'.format(self.category_id)) # Delete TagCategory self.category_svc.delete(self.category_id) self.session.delete() print('VAPI session disconnected successfully...')
def __init__(self): parser = sample_cli.build_arg_parser() parser.add_argument('--clustername', action='store', required=True, help='Name of the cluster to be tagged') parser.add_argument('--categoryname', action='store', required=True, help='Name of the Category to be created') parser.add_argument('--categorydesc', action='store', default='Sample category description', help='Description of the Category to be created') parser.add_argument('--tagname', action='store', required=True, help='Name of the tag to be created') parser.add_argument('--tagdesc', action='store', default='Sample tag description', help='Description of the tag to be created') args = sample_util.process_cli_args(parser.parse_args()) self.cleardata = args.cleardata self.cluster_name = args.clustername self.category_name = args.categoryname self.category_desc = args.categorydesc self.tag_name = args.tagname self.tag_desc = args.tagdesc self.skip_verification = args.skipverification session = get_unverified_session() if args.skipverification else None # Connect to vSphere client self.client = create_vsphere_client(server=args.server, username=args.username, password=args.password, session=session) # For vSphere 6.0 users, use pyVmomi to get the cluster ID context = get_unverified_context() if self.skip_verification else None si = SmartConnect(host=args.server, user=args.username, pwd=args.password, sslContext=context) cluster_obj = vim_utils.get_obj(content=si.RetrieveContent(), vimtype=[vim.ClusterComputeResource], name=args.clustername) if cluster_obj: self.cluster_moid = cluster_obj._GetMoId() print('Found cluster:{} mo_id:{}'.format(self.cluster_name, self.cluster_moid)) else: raise ValueError('Cluster with name "{}" not found'.format( self.cluster_name))
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) # Create and Delete TagCategory to Verify connection is successful print('\nStep 6: Creating and Deleting Tag Category...\n') self.category_svc = Category(stub_config) self.category_id = self.create_tag_category( 'TestTagCat', 'TestTagDesc', CategoryModel.Cardinality.MULTIPLE) assert self.category_id is not None print('Tag category created; Id: {0}\n'.format(self.category_id)) # Delete TagCategory self.category_svc.delete(self.category_id) self.session.delete() print('VAPI session disconnected successfully...')