Example #1
0
    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)
Example #2
0
 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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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
Example #7
0
    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)
Example #8
0
 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
Example #9
0
 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
Example #10
0
 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
Example #11
0
 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
Example #12
0
 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,
                 )))
Example #13
0
    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)
Example #14
0
 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)
Example #15
0
 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))