def __init__(self, username, password, project_id, project_name, auth_url, endpoint_type, region_name, scope, cert, key, cacert, domain_name, insecure, logger): self.logger = logger prj = project_id.replace('-', '') self._ks = KeystoneCommands(username=username, password=password, tenant=project_name, domain_name=domain_name, auth_url=auth_url, region_name=region_name, scope=scope, cert=cert, key=key, cacert=cacert, insecure=insecure, logger=logger) self._qh = neuc.Client( '2.0', session=self._ks.get_session(scope='project'), region_name=region_name) self._nh = novac.Client( '2', session=self._ks.get_session(scope='project'), region_name=region_name)
def delete_user(self, user): kc = KeystoneCommands(username=self.inputs.stack_user, password=self.inputs.stack_password, tenant=self.inputs.project_name, auth_url=self.auth_url, insecure=self.insecure) kc.delete_user(user)
def reauth(self): self.keystone = KeystoneCommands(username=self.user, password=self.passwd, tenant=self.project, auth_url=self.auth_url, insecure=self.insecure, region_name=self.region_name, logger=self.logger)
def add_user_to_project(self, user, project): kc = KeystoneCommands(username=self.inputs.stack_user, password=self.inputs.stack_password, tenant=self.inputs.project_name, auth_url=self.auth_url, insecure=self.insecure) try: kc.add_user_to_tenant(project, user, 'admin') except Exception as e: self.logger.info("%s user already added to project" % (user))
def reauth(self): self.keystone = KeystoneCommands(username=self.user, password=self.passwd, tenant=self.project, domain_name=self.domain_name, auth_url=self.auth_url, insecure=self.insecure, region_name=self.region_name, cert=self.keystone_certfile, key=self.keystone_keyfile, cacert=self.certbundle, logger=self.logger, scope=self.scope)
def create_user(self, user, password): kc = KeystoneCommands(username=self.inputs.stack_user, password=self.inputs.stack_password, tenant=self.inputs.project_name, auth_url=self.auth_url, insecure=self.insecure) try: kc.create_user(user, password, email='', tenant_name=self.inputs.stack_tenant, enabled=True) except: self.logger.info("%s user already created" % (self.user))
def setUpClass(cls): super(BaseMultitenancyTest, cls).setUpClass() cls.quantum_h= cls.connections.quantum_h cls.nova_h = cls.connections.nova_h cls.vnc_lib= cls.connections.vnc_lib cls.agent_inspect= cls.connections.agent_inspect cls.cn_inspect= cls.connections.cn_inspect auth_url = os.getenv('OS_AUTH_URL') or \ 'http://' + cls.inputs.auth_ip + ':5000/v2.0' insecure = bool(os.getenv('OS_INSECURE',True)) cls.key_stone_clients = KeystoneCommands( username=cls.inputs.admin_user, password = cls.inputs.admin_password, tenant = cls.inputs.admin_tenant, auth_url=auth_url, insecure=insecure)
def __init__(self, username, password, project_name, inputs, openstack_ip): self.inputs = inputs self.logger = self.inputs.logger auth_url = os.getenv('OS_AUTH_URL') or \ 'http://' + openstack_ip + ':5000/v2.0' insecure = bool(os.getenv('OS_INSECURE', True)) kc = KeystoneCommands(username=username, password=password, tenant=project_name, auth_url=auth_url, insecure=insecure) self.project_id = kc.get_id().replace('-', '') self.obj = client.Client('2.0', username=username, password=password, tenant_id=self.project_id, auth_url=auth_url, insecure=insecure)
def _create_prov_file(self): ''' Creates json data for a single node only. Optional Env variables: openstack creds: * OS_USERNAME (default: admin) * OS_PASSWORD (default: contrail123) * OS_TENANT_NAME (default: admin) * OS_DOMAIN_NAME (default: default-domain) * OS_AUTH_URL (default: http://127.0.0.1:5000/v2.0) * OS_INSECURE (default: True) login creds: * USERNAME (default: root) * PASSWORD (default: c0ntrail123) contrail service: * DISCOVERY_IP (default: neutron-server ip fetched from keystone endpoint) ''' pattern = 'http[s]?://(?P<ip>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}):(?P<port>\d+)' if self.orchestrator.lower() != 'openstack': raise Exception('Please specify testbed info in $PARAMS_FILE ' 'under "Basic" section, keyword "provFile"') if self.orchestrator.lower() == 'openstack': auth_url = os.getenv('OS_AUTH_URL', None) or \ 'http://127.0.0.1:5000/v2.0' insecure = bool(os.getenv('OS_INSECURE', True)) keystone = KeystoneCommands(self.stack_user, self.stack_password, self.stack_tenant, auth_url, region_name=self.region_name, insecure=insecure, logger=self.logger) match = re.match(pattern, keystone.get_endpoint('identity')[0]) self.auth_ip = match.group('ip') self.auth_port = match.group('port') # Assume contrail-config runs in the same node as neutron-server discovery = os.getenv('DISCOVERY_IP', None) or \ (keystone and re.match(pattern, keystone.get_endpoint('network')[0]).group('ip')) ds_client = VerificationDsSrv(discovery) services = ds_client.get_ds_services().info cfgm = database = services['config'] collector = services['analytics'] bgp = services['control-node'] openstack = [self.auth_ip] if self.auth_ip else [] computes = self.get_computes(cfgm[0]) data = {'hosts': list()} hosts = cfgm + database + collector + bgp + computes + openstack username = os.getenv('USERNAME', 'root') password = os.getenv('PASSWORD', 'c0ntrail123') for host in set(hosts): with settings(host_string='%s@%s' % (username, host), password=password, warn_only=True): hname = run('hostname') hdict = { 'ip': host, 'data-ip': host, 'control-ip': host, 'username': username, 'password': password, 'name': hname, 'roles': [], } if host in cfgm: hdict['roles'].append({'type': 'cfgm'}) if host in collector: hdict['roles'].append({'type': 'collector'}) if host in database: hdict['roles'].append({'type': 'database'}) if host in bgp: hdict['roles'].append({'type': 'bgp'}) if host in computes: hdict['roles'].append({'type': 'compute'}) if host in openstack: hdict['roles'].append({'type': 'openstack'}) data['hosts'].append(hdict) tempfile = NamedTemporaryFile(delete=False) with open(tempfile.name, 'w') as fd: json.dump(data, fd) return tempfile.name