def setup_tor_port(self, tor_fixture, port_index=0, vlan_id=0, vmi_objs=[], cleanup=True): device_id = tor_fixture.phy_device.uuid tor_ip = tor_fixture.mgmt_ip pif_name = self.inputs.tor_hosts_data[tor_ip][port_index]['tor_port'] lif_name = pif_name + '.' + str(vlan_id) pif_fixture = PhysicalInterfaceFixture(name=pif_name, device_id=device_id, connections=self.connections) pif_fixture.setUp() if cleanup: self.addCleanup(pif_fixture.cleanUp) lif_fixture = LogicalInterfaceFixture( name=lif_name, pif_id=pif_fixture.uuid, vlan_id=vlan_id, vmi_ids=[x.uuid for x in vmi_objs], connections=self.connections) lif_fixture.setUp() if cleanup: self.addCleanup(lif_fixture.cleanUp) return (pif_fixture, lif_fixture)
def _create_lif(self, vm, name, vlan, pif_id, vmi_ids=[]): lif_obj = LogicalInterfaceFixture(name, pif_id=pif_id, vlan_id=vlan, vmi_ids=vmi_ids) lif_obj.setUp() vm.lifs.append(lif_obj)
def _create_lif(self, name, vlan, pif_id, vmi_ids=[], vm=None): lif_obj = LogicalInterfaceFixture(name, pif_id=pif_id, vlan_id=vlan, vmi_ids=vmi_ids, inputs=self._inputs) lif_obj.setUp() if vm: vm.lifs.append(lif_obj)
def onboard_existing_fabric(self, fabric_dict, wait_for_finish=True, name=None, cleanup=False): interfaces = {'physical': [], 'logical': []} devices = list() name = get_random_name(name) if name else get_random_name('fabric') fq_name = [ 'default-global-system-config', 'existing_fabric_onboard_template' ] payload = {'fabric_fq_name': ["default-global-system-config", name], 'node_profiles': [{"node_profile_name": profile} for profile in fabric_dict.get('node_profiles')\ or NODE_PROFILES], 'device_auth': [{"username": cred['username'], "password": cred['password']} for cred in fabric_dict['credentials']], 'overlay_ibgp_asn': fabric_dict['namespaces']['asn'][0]['min'], 'management_subnets': [{"cidr": mgmt["cidr"]} for mgmt in fabric_dict['namespaces']['management']] } self.logger.info('Onboarding existing fabric %s %s' % (name, payload)) execution_id = self.vnc_h.execute_job(fq_name, payload) status, fabric = self._get_fabric_fixture(name) assert fabric, 'Create fabric seems to have failed' if cleanup: self.addCleanup(self.cleanup_fabric, fabric, devices, interfaces) if wait_for_finish: try: status = self.wait_for_job_to_finish(':'.join(fq_name), execution_id) except AssertionError: self.cleanup_fabric(fabric, verify=False) raise assert status, 'job %s to create fabric failed' % execution_id for device in fabric.fetch_associated_devices() or []: device_fixture = PhysicalDeviceFixture( connections=self.connections, name=device) device_fixture.read() device_fixture.add_csn() devices.append(device_fixture) for device in devices: for port in device.get_physical_ports(): pif = PhysicalInterfaceFixture( uuid=port, connections=self.connections) pif.read() interfaces['physical'].append(pif) for pif in interfaces['physical']: for port in pif.get_logical_ports(): lif = LogicalInterfaceFixture(uuid=port, connections=self.connections) lif.read() interfaces['logical'].append(lif) return (fabric, devices, interfaces)
def onboard_existing_fabric(self, fabric_dict, wait_for_finish=True, name=None, cleanup=False): interfaces = {'physical': [], 'logical': []} devices = list() name = get_random_name(name) if name else get_random_name('fabric') fq_name = ['default-global-system-config', 'existing_fabric_onboard_template'] payload = {'fabric_fq_name': ["default-global-system-config", name], 'node_profiles': [{"node_profile_name": profile} for profile in fabric_dict.get('node_profiles')\ or NODE_PROFILES], 'device_auth': [{"username": cred['username'], "password": cred['password']} for cred in fabric_dict['credentials']], 'overlay_ibgp_asn': fabric_dict['namespaces']['asn'][0]['min'], 'management_subnets': [{"cidr": mgmt["cidr"]} for mgmt in fabric_dict['namespaces']['management']] } self.logger.info('Onboarding existing fabric %s %s'%(name, payload)) execution_id = self.vnc_h.execute_job(fq_name, payload) status, fabric = self._get_fabric_fixture(name) assert fabric, 'Create fabric seems to have failed' if cleanup: self.addCleanup(self.cleanup_fabric, fabric, devices, interfaces) if wait_for_finish: try: status = self.wait_for_job_to_finish(':'.join(fq_name), execution_id) except AssertionError: self.cleanup_fabric(fabric, verify=False) raise assert status, 'job %s to create fabric failed'%execution_id for device in fabric.fetch_associated_devices() or []: device_fixture = PhysicalDeviceFixture(connections=self.connections, name=device) device_fixture.read() device_fixture.add_csn() devices.append(device_fixture) for device in devices: for port in device.get_physical_ports(): pif = PhysicalInterfaceFixture(uuid=port, connections=self.connections) pif.read() interfaces['physical'].append(pif) for pif in interfaces['physical']: for port in pif.get_logical_ports(): lif = LogicalInterfaceFixture(uuid=port, connections=self.connections) lif.read() interfaces['logical'].append(lif) return (fabric, devices, interfaces)
def test_mx_connected_to_bms(self): """ Description: Verify VN config is pushed to mx """ assert self.check_bgp_status(is_mx_present=True) assert self.check_tcp_status() new_port = self.create_port(net_id=self.vn1_fixture.vn_id, mac_address='00:e0:81:cf:5c:00') for dev_fixture in self.phy_router_fixture.values(): phy_new_port = dev_fixture.add_physical_port('ge-0/0/6') logical_new_port = self.useFixture(LogicalInterfaceFixture(name='ge-0/0/6.0', pif_id=phy_new_port.uuid, vlan_id=100,vmi_ids=[new_port['id']], vn_obj=self.vn1_fixture.obj)) cmd = 'show configuration groups __contrail__ interfaces ge-0/0/6 unit 0 vlan-id' self.does_mx_have_config(cmd) self.is_dm_going_through() for i in range(len(self.output_from_mx)): if not '100' in self.output_from_mx[i]: return False, str(self.phy_router_fixture[i].name) cmd = 'show configuration groups __contrail__ routing-instances _contrail_%s-l2-%s bridge-domains bd-%s' % (self.vn1_name, self.vn_index, self.vn_index) self.does_mx_have_config(cmd) self.is_dm_going_through() for i in range(len(self.output_from_mx)): if not 'ge-0/0/6.0' in self.output_from_mx[i]: return False, str(self.phy_router_fixture[i].name) return True
def setup_tor_port(self, tor_fixture, port_index=0, vlan_id=0, vmi_objs=[], cleanup=True): device_id = tor_fixture.phy_device.uuid tor_ip = tor_fixture.mgmt_ip pif_name = self.inputs.tor_hosts_data[tor_ip][port_index]["tor_port"] lif_name = pif_name + "." + str(vlan_id) pif_fixture = PhysicalInterfaceFixture(pif_name, device_id=device_id, connections=self.connections) pif_fixture.setUp() if cleanup: self.addCleanup(pif_fixture.cleanUp) lif_fixture = LogicalInterfaceFixture( lif_name, pif_id=pif_fixture.uuid, vlan_id=vlan_id, vmi_ids=[x.uuid for x in vmi_objs], connections=self.connections, ) lif_fixture.setUp() if cleanup: self.addCleanup(lif_fixture.cleanUp) return (pif_fixture, lif_fixture)
def onboard(self, devices, filters=None, wait_for_finish=True): interfaces = {'physical': [], 'logical': []} fq_name = ['default-global-system-config', 'device_import_template'] payload = self.get_filters(filters) device_list = [device.uuid for device in devices] execution_id = self.vnc_h.execute_job(fq_name, payload, device_list) self.logger.info('Started onboarding devices %s' % devices) if wait_for_finish: status = self.wait_for_job_to_finish(':'.join(fq_name), execution_id)[0] assert status, 'job %s to onboard devices failed' % execution_id for device in devices: for port in device.get_physical_ports(): pif = PhysicalInterfaceFixture( uuid=port, connections=self.connections) pif._clear_cleanups() pif.read() interfaces['physical'].append(pif) for pif in interfaces['physical']: for port in pif.get_logical_ports(): lif = LogicalInterfaceFixture(uuid=port, connections=self.connections) lif._clear_cleanups() lif.read() interfaces['logical'].append(lif) return execution_id, interfaces return execution_id, None
def create_lif(self, pif_fixture, unit=0, vlan_id=None, interface_type=None): lif_name = pif_fixture.name + '.' + str(unit) lif = self.useFixture( LogicalInterfaceFixture(name=lif_name, pif_fqname=pif_fixture.fq_name, connections=self.connections, vlan_id=vlan_id, interface_type=interface_type)) self.interfaces['logical'].append(lif) return lif
def onboard(self, devices, filters=None, wait_for_finish=True): interfaces = {'physical': [], 'logical': []} fq_name = ['default-global-system-config', 'device_import_template'] payload = self.get_filters(filters) device_list = [device.uuid for device in devices] execution_id = self.vnc_h.execute_job(fq_name, payload, device_list) self.logger.info('Started onboarding devices %s'%devices) if wait_for_finish: status = self.wait_for_job_to_finish(':'.join(fq_name), execution_id) assert status, 'job %s to onboard devices failed'%execution_id for device in devices: for port in device.get_physical_ports(): pif = PhysicalInterfaceFixture(uuid=port, connections=self.connections) pif._clear_cleanups() pif.read() interfaces['physical'].append(pif) for pif in interfaces['physical']: for port in pif.get_logical_ports(): lif = LogicalInterfaceFixture(uuid=port, connections=self.connections) lif._clear_cleanups() lif.read() interfaces['logical'].append(lif) return execution_id, interfaces return execution_id, None
def create_lif(self, bms_name, vlan_id=None): bms_dict = self.inputs.bms_data[bms_name] lif_fixtures = [] for interface in bms_dict['interfaces']: tor = interface['tor'] tor_port = interface['tor_port'] lif_name = tor_port+'.'+str(vlan_id) pif_fqname = ['default-global-system-config', tor, tor_port.replace(':', '__')] lif_fixtures.append(self.useFixture( LogicalInterfaceFixture(name=lif_name, pif_fqname=pif_fqname, connections=self.connections, vlan_id=vlan_id))) self.interfaces['logical'].extend(lif_fixtures) return lif_fixtures
def create_lif(self): for interface in self.interfaces: tor = interface['tor'] tor_port = interface['tor_port'] lif = tor_port + '.' + str(self.unit) pif_fqname = [ 'default-global-system-config', tor, tor_port.replace(':', '__') ] self.lif_fixtures.append( self.useFixture( LogicalInterfaceFixture( name=lif, pif_fqname=pif_fqname, connections=self.connections, vlan_id=self.vlan_id, interface_type=None, )))
def onboard_fabric(self, fabric_dict, wait_for_finish=True, name=None, cleanup=False, enterprise_style=True, dc_asn=None, serList=None): interfaces = {'physical': [], 'logical': []} devices = list() name = name if name else get_random_name('fabric') fq_name = ['default-global-system-config', 'fabric_onboard_template'] if 'image_upgrade_os_version' in list( fabric_dict['namespaces'].keys()): self.logger.info("ZTP with image upgrade") os_version = fabric_dict['namespaces']['image_upgrade_os_version'] else: self.logger.info("ZTP without image upgrade") os_version = '' payload = {'fabric_fq_name': ["default-global-system-config", name], 'fabric_display_name': name, "supplemental_day_0_cfg":[{"name": dct["supplemental_day_0_cfg"]["name"],\ "cfg": dct["supplemental_day_0_cfg"]["cfg"]} for dct in list(self.inputs.physical_routers_data.values()) \ if dct.get('supplemental_day_0_cfg') \ if serList is None or dct["serial_number"] in serList], 'device_to_ztp': [{"serial_number": dct['serial_number'], \ "hostname": dct['name'], \ "supplemental_day_0_cfg": dct.get("supplemental_day_0_cfg",{}).get('name','')} \ for dct in list(self.inputs.physical_routers_data.values()) \ if dct.get('serial_number') \ if serList is None or dct["serial_number"] in serList], 'node_profiles': [{"node_profile_name": profile} for profile in fabric_dict.get('node_profiles')\ or NODE_PROFILES], 'device_auth': {"root_password": fabric_dict['credentials'][0]['password']}, 'loopback_subnets': fabric_dict['namespaces']['loopback_subnets'], 'management_subnets': fabric_dict['namespaces']['management_subnets'], 'fabric_subnets': fabric_dict['namespaces']['fabric_subnets'], 'overlay_ibgp_asn': dc_asn or fabric_dict['namespaces']['overlay_ibgp_asn'], 'fabric_asn_pool': [{"asn_max": fabric_dict['namespaces']['asn'][0]['max'], "asn_min": fabric_dict['namespaces']['asn'][0]['min']}] } if os_version: payload['os_version'] = os_version self.logger.info('Onboarding new fabric %s %s' % (name, payload)) execution_id = self.vnc_h.execute_job(fq_name, payload) status, fabric = self._get_fabric_fixture(name) assert fabric, 'Create fabric seems to have failed' if cleanup: self.addCleanup(self.cleanup_fabric, fabric, devices, interfaces) if wait_for_finish: try: status = self.wait_for_job_to_finish(':'.join(fq_name), execution_id)[0] except AssertionError: self.cleanup_fabric(fabric, verify=False) raise assert status, 'job %s to create fabric failed' % execution_id for device in fabric.fetch_associated_devices() or []: device_dict = self.get_prouter_dict(device) device_fixture = PhysicalDeviceFixture( connections=self.connections, name=device) device_fixture.read() device_fixture.add_csn() devices.append(device_fixture) for device in devices: for port in device.get_physical_ports(): pif = PhysicalInterfaceFixture( uuid=port, connections=self.connections) pif.read() interfaces['physical'].append(pif) for pif in interfaces['physical']: for port in pif.get_logical_ports(): lif = LogicalInterfaceFixture(uuid=port, connections=self.connections) lif.read() interfaces['logical'].append(lif) return (fabric, devices, interfaces)
def _create_lif(self,name,vlan,pif_id,vmi_ids=[],vm=None): lif_obj = LogicalInterfaceFixture( name, pif_id=pif_id, vlan_id=vlan,vmi_ids=vmi_ids,inputs=self._inputs) lif_obj.setUp() if vm: vm.lifs.append(lif_obj)
def create_logical_interface(self, connections=None, **kwargs): ''' Refer LogicalInterfaceFixture for params info ''' connections = connections or self.connections return self.useFixture( LogicalInterfaceFixture(connections=connections, **kwargs))