class ConfigScaleSetup: def __init__(self): self.ini_file= 'sanity_params.ini' self.log_name='tor-scale.log' Logger = logging.ContrailLogger(self.log_name) Logger.setUp() self.logger = Logger.logger def get_connection_handle(self): self.inputs = ContrailTestInit(self.ini_file,logger=self.logger) self.inputs.setUp() self.connections= ContrailConnections(self.inputs, self.logger) self.connections.get_vnc_lib_h() # will set self.vnc_lib in the object self.auth = self.connections.get_auth_h() def config_test(self): self.get_connection_handle() tenant_name = "tenant" + "".join([random.choice(string.ascii_uppercase + string.digits) for i in xrange(10)]) project_obj = Project(self.connections) project_obj.create(tenant_name)
class ConfigScaleSetup: def __init__(self): self.ini_file = "sanity_params.ini" self.log_name = "tor-scale.log" Logger = logging.ContrailLogger(self.log_name) Logger.setUp() self.logger = Logger.logger def get_connection_handle(self): self.inputs = ContrailTestInit(self.ini_file, logger=self.logger) self.inputs.setUp() self.connections = ContrailConnections(self.inputs, self.logger) self.connections.get_vnc_lib_h() # will set self.vnc_lib in the object self.auth = self.connections.get_auth_h() def config_test(self): self.get_connection_handle() tenant_name = "tenant" + "".join([random.choice(string.ascii_uppercase + string.digits) for i in xrange(10)]) project_obj = Project(self.connections) project_obj.create(tenant_name)
class IsolatedCreds(fixtures.Fixture): def __init__(self,project_name, inputs, ini_file=None, logger=None, username=None, password=None): self.inputs = inputs if (self.inputs.public_tenant == project_name): self.project_name = project_name else: self.project_name = get_random_name(project_name) if username: self.user = username else: self.user = project_name if password: self.password = password else: self.password = project_name self.ini_file = ini_file self.logger = logger if self.inputs.orchestrator == 'vcenter': self.project_name = self.inputs.stack_tenant self.user = self.inputs.stack_user self.password = self.inputs.stack_password def setUp(self): super(IsolatedCreds, self).setUp() self.connections= ContrailConnections(self.inputs, self.logger) self.auth = self.connections.get_auth_h() def create_tenant(self): self.project = None try: self.project = project_test.ProjectFixture(project_name = self.project_name, username= self.user, password= self.password, connections= self.connections) self.project.setUp() except Exception as e: self.logger.warn("got exception as %s"%(e)) finally: return self.project def delete_tenant(self): self.project.cleanUp() def delete_user(self,user=None): if self.inputs.orchestrator == 'vcenter': return if user: user = user else: user = self.user self.auth.delete_user(user) def create_and_attach_user_to_tenant(self,user = None , password=None): if self.inputs.orchestrator == 'vcenter': return user = user if user else self.user password = password if password else self.password self.auth.create_user(user,password) self.auth.add_user_to_project(user, self.project_name) self.auth.add_user_to_project('admin', self.project_name) time.sleep(4) def get_inputs(self): self.project_inputs= self.useFixture(ContrailTestInit(self.ini_file, stack_user=self.project.username, stack_password=self.project.password, project_fq_name=['default-domain',self.project_name],logger = self.logger)) return self.project_inputs def get_conections(self): self.project_connections= ContrailConnections(self.project_inputs, project_name= self.project_name, username=self.project.username, password= self.project.password, logger = self.logger) self.project_connections.get_all_handles() return self.project_connections def get_admin_inputs(self): admin = AdminCreds(self.inputs, self.ini_file, self.logger) return admin.get_inputs() def get_admin_connections(self): admin = AdminCreds(self.inputs, self.ini_file, self.logger) return admin.get_conections() def cleanUp(self): super(IsolatedCreds, self).cleanUp()
class Test(object): def __init__(self, global_conf, test_conf): self.global_conf = global_conf self.test_conf = test_conf self.connections = setup_test_infra(global_conf['ENV']['testbed_file']) self.uuid = dict() self.tenant_ids = list() self.vm_connections_map = dict() self.ostack_admin_obj = Openstack(OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_TENANT_NAME) self.mysql_passwd = get_mysql_token() @retry(delay=60, tries=30) def wait_until_vms_deleted(self, tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list( search_opts={'all_tenants': 1}) print "VM_list:", vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id if vm.tenant_id == re.sub("-", "", tenant_id): vm_to_be_deleted.append(vm) if len(vm_to_be_deleted) == 0: return True else: return False def delete_vms(self, tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list( search_opts={'all_tenants': 1}) print "VM_list:", vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id #print vm.tenant_id,tenant_id if vm.tenant_id == re.sub("-", "", tenant_id): vm_to_be_deleted.append(vm) for vm in vm_to_be_deleted: vm_id = vm.id print "deletingvm:%s" % str(vm_id) self.ostack_admin_obj.nova_client.servers.delete(vm_id) self.wait_until_vms_deleted(tenant_id) def cleanup(self, tenant_obj, tenant_id): net_list = self.ostack_admin_obj.neutron_client.list_networks( )['networks'] subnet_list = self.ostack_admin_obj.neutron_client.list_subnets( )['subnets'] port_list = self.ostack_admin_obj.neutron_client.list_ports()['ports'] self.delete_vms(tenant_id) for subnet in subnet_list: if subnet["tenant_id"] == re.sub("-", "", tenant_id): print "Name:", subnet['name'] subnet_id = subnet['id'] self.ostack_admin_obj.neutron_client.delete_subnet(subnet_id) for net in net_list: if net["tenant_id"] == re.sub("-", "", tenant_id): print "Name:", net['name'] net_id = net['id'] self.ostack_admin_obj.neutron_client.delete_network(net_id) tenant_obj.delete(tenant_id) def create_vm(self, tenant_name, vm_name, shared_vn_id, vn_id, image): self.connections.inputs.project_name = tenant_name self.connections.project_name = tenant_name self.connections.inputs.stack_tenant = tenant_name vm_obj = VM(self.connections) vm_obj.flavor = 5 vm_obj.zone = "nova" #vm_obj.sg_ids=["4dd30150-f3ff-43d9-afcc-102df8dc658a"] print "VM:", vm_name, vn_id, image, shared_vn_id, vn_id vm_id = vm_obj.create(vm_name, [shared_vn_id, vn_id], image) return vm_id def setUp(self): tenants = self.test_conf['tenants'][0] tenant_count = tenants['count'] vns_count = tenants['virtual_networks'][0]['count'] subnet_count = tenants['virtual_networks'][0]['subnets'][0]['count'] vm_count = tenants['virtual_networks'][0]['virtual_machines'][0][ 'count'] + tenants['virtual_networks'][0]['virtual_machines'][1][ 'count'] glance_image = self.global_conf['GLOBALS']['glance_image_name'] cidr_start = tenants['virtual_networks'][0]['subnets'][0]['cidr'] cidr_obj = CIDR(cidr_start) vm_obj_list = [] self.connections.project_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger) self.connections.vnc_lib = self.connections.get_vnc_lib_h() vdns_obj = vDNS(self.connections) vdns_id = vdns_obj.create('vDNS-test') vdns_fqname = vdns_obj.fq_name(vdns_id) print "vDNS:", vdns_fqname ipam_obj = IPAM(self.connections) ipam_id = ipam_obj.create('ipam-test', vdns_id) ipam_fqname = ipam_obj.fq_name(ipam_id) print "IPAM:", ipam_fqname vn_obj = VN(self.connections) cidr = "192.167.0.0/16" vn_name = "shared_net" subnets = [{'cidr': cidr, 'name': "shared_subnet"}] vn_obj.shared = True shared_vn_id = vn_obj.create(vn_name, subnets=subnets, ipam_id=ipam_id) tenant_obj = Project(self.connections) admin_tenant_id = self.connections.get_auth_h().get_project_id( 'default_domain', 'admin') for tenant_index in xrange(tenant_count): self.connections.project_id = admin_tenant_id self.connections.inputs.project_name = "admin" self.connections.project_name = "admin" self.connections.project_fq_name = "admin" self.connections.domain_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger, project_name="admin") self.connections.vnc_lib = self.connections.get_vnc_lib_h() self.tenant_name = "TC002_tenant_%d" % tenant_index tenant_id = self.connections.get_auth_h().get_project_id( 'default_domain', self.tenant_name) if not tenant_id: tenant_id = tenant_obj.create(self.tenant_name) self.connections = ContrailConnections( inputs=inputs, logger=mylogger, project_name=self.tenant_name) self.connections.vnc_lib = self.connections.get_vnc_lib_h() self.connections.inputs.project_name = self.tenant_name self.connections.project_name = self.tenant_name self.connections.project_fq_name = self.tenant_name self.connections.domain_name = self.tenant_name self.connections.project_id = tenant_id
class Test(object): def __init__(self,global_conf,test_conf): self.global_conf = global_conf self.test_conf = test_conf self.connections = setup_test_infra(global_conf['ENV']['testbed_file']) self.uuid = dict() self.tenant_ids = list() self.vm_connections_map = dict() self.ostack_admin_obj = Openstack(OS_AUTH_URL,OS_USERNAME,OS_PASSWORD,OS_TENANT_NAME) self.mysql_passwd = get_mysql_token() @retry(delay=60, tries=30) def wait_until_vms_deleted(self,tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list(search_opts={'all_tenants': 1}) print "VM_list:",vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id if vm.tenant_id == re.sub("-","",tenant_id) : vm_to_be_deleted.append(vm) if len(vm_to_be_deleted) == 0 : return True else: return False def delete_vms(self,tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list(search_opts={'all_tenants': 1}) print "VM_list:",vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id #print vm.tenant_id,tenant_id if vm.tenant_id == re.sub("-","",tenant_id) : vm_to_be_deleted.append(vm) for vm in vm_to_be_deleted: vm_id = vm.id print "deletingvm:%s"%str(vm_id) self.ostack_admin_obj.nova_client.servers.delete(vm_id) self.wait_until_vms_deleted(tenant_id) def cleanup(self,tenant_obj,tenant_id): net_list = self.ostack_admin_obj.neutron_client.list_networks()['networks'] subnet_list = self.ostack_admin_obj.neutron_client.list_subnets()['subnets'] port_list = self.ostack_admin_obj.neutron_client.list_ports()['ports'] self.delete_vms(tenant_id) for subnet in subnet_list : if subnet["tenant_id"] == re.sub("-","",tenant_id) : print "Name:",subnet['name'] subnet_id = subnet['id'] self.ostack_admin_obj.neutron_client.delete_subnet(subnet_id) for net in net_list : if net["tenant_id"] == re.sub("-","",tenant_id) : print "Name:",net['name'] net_id = net['id'] self.ostack_admin_obj.neutron_client.delete_network(net_id) tenant_obj.delete(tenant_id) def create_vm(self,tenant_name,vm_name,shared_vn_id,vn_id,image): self.connections.inputs.project_name = tenant_name self.connections.project_name = tenant_name self.connections.inputs.stack_tenant = tenant_name vm_obj = VM(self.connections) vm_obj.flavor=5 vm_obj.zone="nova" #vm_obj.sg_ids=["4dd30150-f3ff-43d9-afcc-102df8dc658a"] print "VM:",vm_name,vn_id,image,shared_vn_id,vn_id vm_id = vm_obj.create(vm_name,[shared_vn_id,vn_id],image) return vm_id def setUp(self): tenants = self.test_conf['tenants'][0] tenant_count = tenants['count'] vns_count = tenants['virtual_networks'][0]['count'] subnet_count = tenants['virtual_networks'][0]['subnets'][0]['count'] vm_count = tenants['virtual_networks'][0]['virtual_machines'][0]['count'] + tenants['virtual_networks'][0]['virtual_machines'][1]['count'] glance_image = self.global_conf['GLOBALS']['glance_image_name'] cidr_start = tenants['virtual_networks'][0]['subnets'][0]['cidr'] cidr_obj = CIDR(cidr_start) vm_obj_list = [] self.connections.project_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger) self.connections.vnc_lib = self.connections.get_vnc_lib_h() vdns_obj = vDNS(self.connections) vdns_id = vdns_obj.create('vDNS-test') vdns_fqname = vdns_obj.fq_name(vdns_id) print "vDNS:",vdns_fqname ipam_obj = IPAM(self.connections) ipam_id = ipam_obj.create('ipam-test', vdns_id) ipam_fqname = ipam_obj.fq_name(ipam_id) print "IPAM:",ipam_fqname vn_obj = VN(self.connections) cidr = "192.167.0.0/16" vn_name = "shared_net" subnets = [{'cidr':cidr,'name':"shared_subnet"}] vn_obj.shared=True shared_vn_id = vn_obj.create(vn_name,subnets=subnets,ipam_id=ipam_id) tenant_obj = Project(self.connections) admin_tenant_id = self.connections.get_auth_h().get_project_id('default_domain','admin') for tenant_index in xrange(tenant_count): self.connections.project_id = admin_tenant_id self.connections.inputs.project_name = "admin" self.connections.project_name = "admin" self.connections.project_fq_name = "admin" self.connections.domain_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger,project_name="admin") self.connections.vnc_lib = self.connections.get_vnc_lib_h() self.tenant_name = "TC002_tenant_%d"%tenant_index tenant_id = self.connections.get_auth_h().get_project_id('default_domain',self.tenant_name) if not tenant_id: tenant_id = tenant_obj.create(self.tenant_name) self.connections = ContrailConnections(inputs=inputs, logger=mylogger,project_name=self.tenant_name) self.connections.vnc_lib = self.connections.get_vnc_lib_h() self.connections.inputs.project_name = self.tenant_name self.connections.project_name = self.tenant_name self.connections.project_fq_name = self.tenant_name self.connections.domain_name = self.tenant_name self.connections.project_id = tenant_id
class Test(object): def __init__(self, global_yaml_conf, global_conf, test_conf): self.yaml_global_conf = global_yaml_conf self.global_conf = global_conf self.test_conf = test_conf self.connections = setup_test_infra(global_conf['ENV']['testbed_file']) self.uuid = dict() self.tenant_ids = list() self.vm_connections_map = dict() self.ostack_admin_obj = Openstack(OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_TENANT_NAME) self.mysql_passwd = get_mysql_token() @retry(delay=60, tries=30) def wait_until_vms_deleted(self, tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list( search_opts={'all_tenants': 1}) print "VM_list:", vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id if vm.tenant_id == re.sub("-", "", tenant_id): vm_to_be_deleted.append(vm) if len(vm_to_be_deleted) == 0: return True else: return False def check_virtual_dns(self, vnc_lib, domain_name): domain_name_list = [] domain_name_list.append(domain_name) domain_name_list_list = list(domain_name_list) try: domain_obj = vnc_lib.domain_read(fq_name=domain_name_list_list) print 'Domain ' + domain_name + 'found!' + domain_obj.uuid return domain_obj.uuid except NoIdError: print 'Domain ' + domain_name + ' not found!' return False def delete_vms(self, tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list( search_opts={'all_tenants': 1}) print "VM_list:", vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id #print vm.tenant_id,tenant_id if vm.tenant_id == re.sub("-", "", tenant_id): vm_to_be_deleted.append(vm) for vm in vm_to_be_deleted: vm_id = vm.id print "deletingvm:%s" % str(vm_id) self.ostack_admin_obj.nova_client.servers.delete(vm_id) self.wait_until_vms_deleted(tenant_id) def cleanup(self, tenant_obj, tenant_id): net_list = self.ostack_admin_obj.neutron_client.list_networks( )['networks'] subnet_list = self.ostack_admin_obj.neutron_client.list_subnets( )['subnets'] port_list = self.ostack_admin_obj.neutron_client.list_ports()['ports'] self.delete_vms(tenant_id) for subnet in subnet_list: if subnet["tenant_id"] == re.sub("-", "", tenant_id): print "Name:", subnet['name'] subnet_id = subnet['id'] self.ostack_admin_obj.neutron_client.delete_subnet(subnet_id) for net in net_list: if net["tenant_id"] == re.sub("-", "", tenant_id): print "Name:", net['name'] net_id = net['id'] self.ostack_admin_obj.neutron_client.delete_network(net_id) print dir(tenant_obj) tenant_obj.delete(tenant_id) def create_vm(self, tenant_name, vm_name, shared_vn_id, vn_id, image): self.connections.inputs.project_name = tenant_name self.connections.project_name = tenant_name self.connections.inputs.stack_tenant = tenant_name vm_obj = VM(self.connections) vm_obj.flavor = "m1.small" vm_obj.zone = "nova" #vm_obj.sg_ids=["4dd30150-f3ff-43d9-afcc-102df8dc658a"] print "VM:", vm_name, vn_id, image, shared_vn_id, vn_id vm_id = vm_obj.create(vm_name, [shared_vn_id, vn_id], image) return vm_id def setUp(self): tenants = self.test_conf['tenants'] tenant_count = tenants['count'] vns_count = tenants['virtual_networks']['count'] subnet_count = tenants['virtual_networks']['subnets'][0]['count'] vm_count = 1 tenant_name_prefix = tenants['name'] glance_image = self.global_conf['GLOBALS']['glance_image_name'] cidr_start = tenants['virtual_networks']['subnets'][0]['cidr'] cidr_obj = CIDR(cidr_start) vm_obj_list = [] self.connections.project_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger) auth_host = self.connections.inputs.get_auth_host() self.vnc_lib_fixture = VncLibHelper( username=self.connections.inputs.stack_user, password=self.connections.inputs.stack_password, domain=self.connections.inputs.domain_name, project=self.connections.project_name, inputs=self.connections.inputs, cfgm_ip=self.connections.inputs.cfgm_ip, api_port=self.connections.inputs.api_server_port, auth_host=auth_host) self.vnc_lib = self.vnc_lib_fixture.get_handle() admin_tenant_id = self.connections.get_auth_h().get_project_id( 'default_domain', 'admin') for tenant_index in xrange(tenant_count): self.connections.project_id = admin_tenant_id self.connections.inputs.project_name = "admin" self.connections.project_name = "admin" self.connections.project_fq_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger, project_name="admin") self.tenant_name = "%s_%d" % (tenant_name_prefix, tenant_index) tenant_obj = ConfigProject(self.connections) tenant_id = self.connections.get_auth_h().get_project_id( 'default_domain', self.tenant_name) if tenant_id: print "Tenant : %s available...cleaning it..." % self.tenant_name self.cleanup(tenant_obj, tenant_id) net_list = self.ostack_admin_obj.neutron_client.list_networks( )['networks'] subnet_list = self.ostack_admin_obj.neutron_client.list_subnets( )['subnets'] #shared_vnet_name = self.yaml_global_conf['virtual_network_shared']['name'] #shared_subnet_name = self.yaml_global_conf['virtual_network_shared']['subnets']['name'] #shared_subnet_cidr = self.yaml_global_conf['virtual_network_shared']['subnets']['cidr'] #shared_ipame_name = self.yaml_global_conf['IPAM']['name'] #for subnet in subnet_list: # if subnet["name"] == shared_subnet_name : # subnet_id = subnet['id'] # self.ostack_admin_obj.neutron_client.delete_subnet(subnet_id) #for net in net_list : # if net["name"] == shared_vnet_name : # net_id = net['id'] # self.ostack_admin_obj.neutron_client.delete_network(net_id) #ipam_list = self.vnc_lib.network_ipams_list()['network-ipams'] #print "Existing IPAM list:",ipam_list #ipam_delete_list = [shared_ipame_name] #for ipam in ipam_list: # domain,project,fq_name = ipam['fq_name'] # if fq_name in ipam_delete_list: # obj = IPAM(self.connections) # ipam_id = ipam['uuid'] # obj.delete(ipam_id) #self.shared_vn_id = global_configuration(self.yaml_global_conf,self.global_conf) for tenant_index in xrange(tenant_count): self.tenant_name = "%s_%d" % (tenant_name_prefix, tenant_index) tenant_id = tenant_obj.create(self.tenant_name) tenant_obj.update_default_sg() return self.connections = ContrailConnections( inputs=inputs, logger=mylogger, project_name=self.tenant_name) self.connections.inputs.project_name = self.tenant_name self.connections.project_name = self.tenant_name self.connections.project_fq_name = self.tenant_name self.connections.domain_name = self.tenant_name self.connections.project_id = tenant_id #self.vdns_name = "test1" #self.dns_domain = "test1" #self.domain_name = "default-domain" #self.vnc_lib_fixture = VncLibHelper( # username=self.connections.inputs.stack_user, password=self.connections.inputs.stack_password, # domain=self.domain_name, project=self.connections.project_name, # inputs=self.connections.inputs, cfgm_ip=self.connections.inputs.cfgm_ip, # api_port=self.connections.inputs.api_server_port, auth_host=auth_host) #self.vnc_lib = self.vnc_lib_fixture.get_handle() #tenant_vdns_id = self.add_virtual_dns(self.vdns_name,self.domain_name,self.dns_domain,self.dyn_updates,self.rec_order,\ # self.ttl,self.next_vdns,self.fip_record,self.external_visible,self.reverse_resolution) #ipam_obj = IPAM(self.connections) # #tenant_ipam_id = ipam_obj.create('T-%s-ipam'%self.tenant_name, tenant_vdns_id) #print "Tenant IPAM:",tenant_ipam_id tenant_ipam_id = None for vn_index in xrange(vns_count): vn_name = "%s_%d_VN_%d" % (tenant_name_prefix, tenant_index, vn_index) vn_obj = VN(self.connections) try: vn_id = self.connections.get_network_h().get_vn_id(vn_name) if vn_id: vn_obj.delete(vn_id) except: pass cidr = cidr_obj.get_next_cidr() subnets = [{'cidr': cidr, 'name': vn_name + "_subnet"}] vn_id = vn_obj.create(vn_name, subnets=subnets, ipam_id=tenant_ipam_id) for vm_index in xrange(vm_count): vm_name = "Tenant%dVN%dVM%d" % (tenant_index, vn_index, vm_index) vm_obj = self.create_vm(self.tenant_name, vm_name, self.shared_vn_id, vn_id, glance_image) for obj in vm_obj_list: obj.print_params()
class IsolatedCreds(fixtures.Fixture): def __init__(self, project_name, inputs, ini_file=None, logger=None, username=None, password=None): self.inputs = inputs if (self.inputs.public_tenant == project_name): self.project_name = project_name else: self.project_name = get_random_name(project_name) if username: self.user = username else: self.user = project_name if password: self.password = password else: self.password = project_name self.ini_file = ini_file self.logger = logger if self.inputs.orchestrator == 'vcenter': self.project_name = self.inputs.stack_tenant self.user = self.inputs.stack_user self.password = self.inputs.stack_password def setUp(self): super(IsolatedCreds, self).setUp() self.connections = ContrailConnections(self.inputs, self.logger) self.auth = self.connections.get_auth_h() def create_tenant(self): self.project = None try: self.project = project_test.ProjectFixture( project_name=self.project_name, username=self.user, password=self.password, connections=self.connections) self.project.setUp() except Exception as e: self.logger.warn("got exception as %s" % (e)) finally: return self.project def delete_tenant(self): self.project.cleanUp() def delete_user(self, user=None): if self.inputs.orchestrator == 'vcenter': return if user: user = user else: user = self.user self.auth.delete_user(user) def create_and_attach_user_to_tenant(self, user=None, password=None): if self.inputs.orchestrator == 'vcenter': return user = user if user else self.user password = password if password else self.password self.auth.create_user(user, password) self.auth.add_user_to_project(user, self.project_name) self.auth.add_user_to_project('admin', self.project_name) time.sleep(4) def get_inputs(self): self.project_inputs = self.useFixture( ContrailTestInit( self.ini_file, stack_user=self.project.username, stack_password=self.project.password, project_fq_name=['default-domain', self.project_name], logger=self.logger)) return self.project_inputs def get_conections(self): self.project_connections = ContrailConnections( self.project_inputs, project_name=self.project_name, username=self.project.username, password=self.project.password, logger=self.logger) self.project_connections.get_all_handles() return self.project_connections def get_admin_inputs(self): admin = AdminCreds(self.inputs, self.ini_file, self.logger) return admin.get_inputs() def get_admin_connections(self): admin = AdminCreds(self.inputs, self.ini_file, self.logger) return admin.get_conections() def cleanUp(self): super(IsolatedCreds, self).cleanUp()
class Test(object): def __init__(self,global_yaml_conf,global_conf,test_conf): self.yaml_global_conf = global_yaml_conf self.global_conf = global_conf self.test_conf = test_conf self.connections = setup_test_infra(global_conf['ENV']['testbed_file']) self.uuid = dict() self.tenant_ids = list() self.vm_connections_map = dict() self.ostack_admin_obj = Openstack(OS_AUTH_URL,OS_USERNAME,OS_PASSWORD,OS_TENANT_NAME) self.mysql_passwd = get_mysql_token() @retry(delay=60, tries=30) def wait_until_vms_deleted(self,tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list(search_opts={'all_tenants': 1}) print "VM_list:",vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id if vm.tenant_id == re.sub("-","",tenant_id) : vm_to_be_deleted.append(vm) if len(vm_to_be_deleted) == 0 : return True else: return False def check_virtual_dns(self,vnc_lib,domain_name): domain_name_list = [] domain_name_list.append(domain_name) domain_name_list_list = list(domain_name_list) try: domain_obj = vnc_lib.domain_read(fq_name=domain_name_list_list) print 'Domain ' + domain_name + 'found!' + domain_obj.uuid return domain_obj.uuid except NoIdError: print 'Domain ' + domain_name + ' not found!' return False def delete_vms(self,tenant_id): vm_list = self.ostack_admin_obj.nova_client.servers.list(search_opts={'all_tenants': 1}) print "VM_list:",vm_list vm_to_be_deleted = [] for vm in vm_list: vm_id = vm.id #print vm.tenant_id,tenant_id if vm.tenant_id == re.sub("-","",tenant_id) : vm_to_be_deleted.append(vm) for vm in vm_to_be_deleted: vm_id = vm.id print "deletingvm:%s"%str(vm_id) self.ostack_admin_obj.nova_client.servers.delete(vm_id) self.wait_until_vms_deleted(tenant_id) def cleanup(self,tenant_obj,tenant_id): net_list = self.ostack_admin_obj.neutron_client.list_networks()['networks'] subnet_list = self.ostack_admin_obj.neutron_client.list_subnets()['subnets'] port_list = self.ostack_admin_obj.neutron_client.list_ports()['ports'] self.delete_vms(tenant_id) for subnet in subnet_list : if subnet["tenant_id"] == re.sub("-","",tenant_id) : print "Name:",subnet['name'] subnet_id = subnet['id'] self.ostack_admin_obj.neutron_client.delete_subnet(subnet_id) for net in net_list : if net["tenant_id"] == re.sub("-","",tenant_id) : print "Name:",net['name'] net_id = net['id'] self.ostack_admin_obj.neutron_client.delete_network(net_id) print dir(tenant_obj) tenant_obj.delete(tenant_id) def create_vm(self,tenant_name,vm_name,shared_vn_id,vn_id,image): self.connections.inputs.project_name = tenant_name self.connections.project_name = tenant_name self.connections.inputs.stack_tenant = tenant_name vm_obj = VM(self.connections) vm_obj.flavor="m1.small" vm_obj.zone="nova" #vm_obj.sg_ids=["4dd30150-f3ff-43d9-afcc-102df8dc658a"] print "VM:",vm_name,vn_id,image,shared_vn_id,vn_id vm_id = vm_obj.create(vm_name,[shared_vn_id,vn_id],image) return vm_id def setUp(self): tenants = self.test_conf['tenants'] tenant_count = tenants['count'] vns_count = tenants['virtual_networks']['count'] subnet_count = tenants['virtual_networks']['subnets'][0]['count'] vm_count = 1 tenant_name_prefix = tenants['name'] glance_image = self.global_conf['GLOBALS']['glance_image_name'] cidr_start = tenants['virtual_networks']['subnets'][0]['cidr'] cidr_obj = CIDR(cidr_start) vm_obj_list = [] self.connections.project_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger) auth_host = self.connections.inputs.get_auth_host() self.vnc_lib_fixture = VncLibHelper( username=self.connections.inputs.stack_user, password=self.connections.inputs.stack_password, domain=self.connections.inputs.domain_name, project=self.connections.project_name, inputs=self.connections.inputs, cfgm_ip=self.connections.inputs.cfgm_ip, api_port=self.connections.inputs.api_server_port, auth_host=auth_host) self.vnc_lib = self.vnc_lib_fixture.get_handle() admin_tenant_id = self.connections.get_auth_h().get_project_id('default_domain','admin') for tenant_index in xrange(tenant_count): self.connections.project_id = admin_tenant_id self.connections.inputs.project_name = "admin" self.connections.project_name = "admin" self.connections.project_fq_name = "admin" self.connections = ContrailConnections(inputs=inputs, logger=mylogger,project_name="admin") self.tenant_name = "%s_%d"%(tenant_name_prefix,tenant_index) tenant_obj = ConfigProject(self.connections) tenant_id = self.connections.get_auth_h().get_project_id('default_domain',self.tenant_name) if tenant_id: print "Tenant : %s available...cleaning it..."%self.tenant_name self.cleanup(tenant_obj,tenant_id) net_list = self.ostack_admin_obj.neutron_client.list_networks()['networks'] subnet_list = self.ostack_admin_obj.neutron_client.list_subnets()['subnets'] #shared_vnet_name = self.yaml_global_conf['virtual_network_shared']['name'] #shared_subnet_name = self.yaml_global_conf['virtual_network_shared']['subnets']['name'] #shared_subnet_cidr = self.yaml_global_conf['virtual_network_shared']['subnets']['cidr'] #shared_ipame_name = self.yaml_global_conf['IPAM']['name'] #for subnet in subnet_list: # if subnet["name"] == shared_subnet_name : # subnet_id = subnet['id'] # self.ostack_admin_obj.neutron_client.delete_subnet(subnet_id) #for net in net_list : # if net["name"] == shared_vnet_name : # net_id = net['id'] # self.ostack_admin_obj.neutron_client.delete_network(net_id) #ipam_list = self.vnc_lib.network_ipams_list()['network-ipams'] #print "Existing IPAM list:",ipam_list #ipam_delete_list = [shared_ipame_name] #for ipam in ipam_list: # domain,project,fq_name = ipam['fq_name'] # if fq_name in ipam_delete_list: # obj = IPAM(self.connections) # ipam_id = ipam['uuid'] # obj.delete(ipam_id) #self.shared_vn_id = global_configuration(self.yaml_global_conf,self.global_conf) for tenant_index in xrange(tenant_count): self.tenant_name = "%s_%d"%(tenant_name_prefix,tenant_index) tenant_id = tenant_obj.create(self.tenant_name) tenant_obj.update_default_sg() return self.connections = ContrailConnections(inputs=inputs, logger=mylogger,project_name=self.tenant_name) self.connections.inputs.project_name = self.tenant_name self.connections.project_name = self.tenant_name self.connections.project_fq_name = self.tenant_name self.connections.domain_name = self.tenant_name self.connections.project_id = tenant_id #self.vdns_name = "test1" #self.dns_domain = "test1" #self.domain_name = "default-domain" #self.vnc_lib_fixture = VncLibHelper( # username=self.connections.inputs.stack_user, password=self.connections.inputs.stack_password, # domain=self.domain_name, project=self.connections.project_name, # inputs=self.connections.inputs, cfgm_ip=self.connections.inputs.cfgm_ip, # api_port=self.connections.inputs.api_server_port, auth_host=auth_host) #self.vnc_lib = self.vnc_lib_fixture.get_handle() #tenant_vdns_id = self.add_virtual_dns(self.vdns_name,self.domain_name,self.dns_domain,self.dyn_updates,self.rec_order,\ # self.ttl,self.next_vdns,self.fip_record,self.external_visible,self.reverse_resolution) #ipam_obj = IPAM(self.connections) # #tenant_ipam_id = ipam_obj.create('T-%s-ipam'%self.tenant_name, tenant_vdns_id) #print "Tenant IPAM:",tenant_ipam_id tenant_ipam_id = None for vn_index in xrange(vns_count): vn_name = "%s_%d_VN_%d"%(tenant_name_prefix,tenant_index,vn_index) vn_obj = VN(self.connections) try: vn_id = self.connections.get_network_h().get_vn_id(vn_name) if vn_id: vn_obj.delete(vn_id) except: pass cidr = cidr_obj.get_next_cidr() subnets = [{'cidr':cidr,'name':vn_name+"_subnet"}] vn_id = vn_obj.create(vn_name,subnets=subnets,ipam_id=tenant_ipam_id) for vm_index in xrange(vm_count): vm_name = "Tenant%dVN%dVM%d"%(tenant_index,vn_index,vm_index) vm_obj = self.create_vm(self.tenant_name,vm_name,self.shared_vn_id,vn_id,glance_image) for obj in vm_obj_list: obj.print_params()