示例#1
0
 def __init__(self, tests, instance = 0, num_instances = 1, ctlr_ip = None, image = IMAGE, tag = 'latest',
              env = None, rm = False, update = False):
     self.tests = tests
     self.ctlr_ip = ctlr_ip
     self.rm = rm
     self.name = self.get_name()
     super(CordTester, self).__init__(self.name, image = image, tag = tag)
     host_config = self.create_host_config(host_guest_map = self.host_guest_map, privileged = True)
     volumes = []
     for _, g in self.host_guest_map:
         volumes.append(g)
     if update is True or not self.img_exists():
         self.build_image(image)
     ##Remove test container if any
     self.remove_container(self.name, force=True)
     if env is not None and env.has_key('OLT_CONFIG'):
         self.olt = True
         olt_conf_file = os.path.join(self.tester_base, 'olt_config.json')
         olt_config = OltConfig(olt_conf_file)
         self.port_map, _ = olt_config.olt_port_map()
     else:
         self.olt = False
         self.port_map = None
     if env is not None:
         env['TEST_HOST'] = self.name
         env['TEST_INSTANCE'] = instance
         env['TEST_INSTANCES'] = num_instances
     print('Starting test container %s, image %s, tag %s' %(self.name, self.image, self.tag))
     self.start(rm = False, volumes = volumes, environment = env,
                host_config = host_config, tty = True)
示例#2
0
 def __restart_radius(self, olt_conf_file = ''):
     olt_conf = os.path.join(Onos.setup_dir, os.path.basename(olt_conf_file))
     olt = OltConfig(olt_conf_file = olt_conf)
     port_map, _ = olt.olt_port_map()
     Radius(prefix = Container.IMAGE_PREFIX, restart = True)
     radius_macs = get_radius_macs(len(port_map['radius_ports']))
     radius_networks = get_radius_networks(len(port_map['switch_radius_port_list']))
     radius_intf_index = 0
     index = 0
     for host_intf, ports in port_map['switch_radius_port_list']:
         prefix, subnet, _ = radius_networks[index]
         mask = subnet.split('/')[-1]
         index += 1
         for port in ports:
             guest_if = 'eth{}'.format(radius_intf_index + 2)
             port_index = port_map[port]
             local_if = 'r{}'.format(port_index)
             guest_ip = '{}.{}/{}'.format(prefix, port_index, mask)
             mac = radius_macs[radius_intf_index]
             radius_intf_index += 1
             pipework_cmd = 'pipework {0} -i {1} -l {2} {3} {4} {5}'.format(host_intf, guest_if,
                                                                            local_if, Radius.NAME,
                                                                            guest_ip, mac)
             print('Configuring Radius port %s on OVS bridge %s' %(guest_if, host_intf))
             print('Running pipework command: %s' %(pipework_cmd))
             res = os.system(pipework_cmd)
示例#3
0
    def get_ovs_switch_map(cls, controller=None, olt_conf_file=''):
        port_map = None
        #build ovs switch map
        if olt_conf_file:
            olt = OltConfig(olt_conf_file=olt_conf_file)
            port_map, _ = olt.olt_port_map()

        devices = cls.get_devices(controller=controller, mfr='Nicira')
        switch_map = {}
        for dev in devices:
            device_id = dev['id']
            serial = dev['serial']
            ports = cls.get_ports_device(dev['id'], controller=controller)
            ports = filter(lambda p: p['isEnabled'] and 'annotations' in p,
                           ports)
            #just create dummy ctag/uni port numbers
            onu_ports = [1] * len(ports)
            onu_names = map(lambda p: p['annotations']['portName'], ports)
            onu_macs = map(lambda p: p['annotations']['portMac'], ports)
            switch_map[device_id] = dict(uplink_vlan=1,
                                         serial=serial,
                                         ports=onu_ports,
                                         names=onu_names,
                                         macs=onu_macs)
        return switch_map
示例#4
0
    def cleanup_intfs(cls):
        olt_conf_file = os.path.join(cls.tester_base, 'olt_config.json')
        olt_config = OltConfig(olt_conf_file)
        port_map, _ = olt_config.olt_port_map()
        port_num = 0
        intf_host = port_map['host']
        start_vlan = port_map['start_vlan']
        intf_type = 0
        if os.path.isdir('/sys/class/net/{}/bridge'.format(intf_host)):
            intf_type = 1 ##linux bridge
        else:
            cmd = 'ovs-vsctl list-br | grep -q "^{0}$"'.format(intf_host)
            res = os.system(cmd)
            if res == 0: ##ovs bridge
                intf_type = 2
        cmds = ()
        res = 0
        for port in port_map['ports']:
            local_if = '{0}_{1}'.format(port, port_num+1)
            if intf_type == 0:
                if start_vlan != 0:
                    cmds = ('ip link del {}.{}'.format(intf_host, start_vlan + port_num),)
            else:
                if intf_type == 1:
                    cmds = ('brctl delif {} {}'.format(intf_host, local_if),
                            'ip link del {}'.format(local_if))
                else:
                    cmds = ('ovs-vsctl del-port {} {}'.format(intf_host, local_if),)

            for cmd in cmds:
                res += os.system(cmd)

            port_num += 1
示例#5
0
    def aaa_load_config(cls,
                        controller=None,
                        olt_conf_file='',
                        conn_type='socket'):
        ovs_devices = cls.get_devices(controller=controller, mfr='Nicira')
        if not ovs_devices and conn_type != 'socket':
            log_test.info(
                'No OVS devices found to configure AAA connect points')
            return
        olt = OltConfig(olt_conf_file=olt_conf_file)
        port_map, _ = olt.olt_port_map()
        app = 'org.opencord.aaa'
        cfg = {'apps': {app: {'AAA': {}}}}
        if conn_type == 'socket':
            customizer = 'default'
        else:
            customizer = 'sample'
        aaa_cfg = dict(radiusConnectionType=conn_type,
                       radiusSecret='radius_password',
                       radiusServerPort='1812',
                       packetCustomizer=customizer,
                       vlanId=-1)
        radius_networks = get_radius_networks(
            len(port_map['switch_radius_port_list']))
        index = 0
        for switch, ports in port_map['switch_radius_port_list']:
            radius_macs = get_radius_macs(len(ports))
            prefix, _, _ = radius_networks[index]
            index += 1
            aaa_cfg['nasIp'] = controller or cls.controller
            aaa_cfg['nasMac'] = radius_macs[0]
            aaa_cfg['radiusMac'] = radius_macs[0]
            connect_points = []
            radius_port = port_map[ports[0]]
            radius_ip = '{}.{}'.format(prefix, radius_port)
            if conn_type == 'socket':
                radius_ip = os.getenv('ONOS_AAA_IP')
            aaa_cfg['radiusIp'] = radius_ip
            for dev in ovs_devices:
                device_id = dev['id']
                ports = OnosCtrl.get_ports_device(device_id,
                                                  controller=controller)
                radius_ports = filter(lambda p: p['isEnabled'] and 'annotations' in p and \
                                      p['annotations']['portName'].startswith('r'),
                                      ports)
                if not radius_ports:
                    continue
                radius_port = radius_ports[0]['port']
                connect_point = '{}/{}'.format(device_id, radius_port)
                connect_points.append(connect_point)
            aaa_cfg['radiusServerConnectPoints'] = connect_points
            break

        cfg['apps'][app]['AAA'] = aaa_cfg
        cls.config(cfg, controller=controller)
示例#6
0
    def get_device_ids(cls, controller=None, olt_conf_file=''):
        '''If running under olt, we get the first switch connected to onos'''
        olt = OltConfig(olt_conf_file=olt_conf_file)
        did = 'of:' + get_mac()
        device_ids = []
        if olt.on_olt():
            devices = cls.get_devices(controller=controller)
            if devices:
                device_ids = map(lambda d: d['id'], devices)
        else:
            device_ids.append(did)

        return device_ids
示例#7
0
    def get_device_id(cls, controller=None, mfr=None, olt_conf_file=''):
        '''If running under olt, we get the first switch connected to onos'''
        olt = OltConfig(olt_conf_file=olt_conf_file)
        did = 'of:' + get_mac()
        if olt.on_olt():
            devices = cls.get_devices(controller=controller, mfr=mfr)
            if devices:
                dids = map(lambda d: d['id'], devices)
                if len(dids) == 1:
                    did = dids[0]
                else:
                    ###If we have more than 1, then check for env before using first one
                    did = os.getenv('OLT_DEVICE_ID', dids[0])

        return did
示例#8
0
    def get_device_id(cls):
        '''If running under olt, we get the first switch connected to onos'''
        olt = OltConfig()
        did = 'of:' + get_mac()
        if olt.on_olt():
            devices = cls.get_devices()
            if devices:
                dids = map(lambda d: d['id'], devices)
                if len(dids) == 1:
                    did = dids[0]
                else:
                    ###If we have more than 1, then check for env before using first one
                    did = os.getenv('OLT_DEVICE_ID', dids[0])

        return did
示例#9
0
 def setUpClass(cls):
     cls.olt = OltConfig()
     cls.port_map, _ = cls.olt.olt_port_map()
     if not cls.port_map:
         cls.port_map = g_subscriber_port_map
     time.sleep(3)
     cls.load_device_id()
示例#10
0
 def setUpClass(cls):
     ''' Activate the vrouter apps'''
     cls.olt = OltConfig()
     cls.port_map, _ = cls.olt.olt_port_map()
     if not cls.port_map:
         cls.port_map = g_subscriber_port_map
     time.sleep(3)
     cls.load_device_id()
示例#11
0
    def config_olt_access(cls,
                          uplink_vlan,
                          controller=None,
                          defaultVlan='0',
                          olt_conf_file=''):
        olt = OltConfig(olt_conf_file=olt_conf_file)
        port_map, _ = olt.olt_port_map()
        uplink = str(port_map['uplink'])
        device_config = {'devices': {}}
        ovs_devices = cls.get_devices(controller=controller, mfr='Nicira')
        for dev in ovs_devices:
            device_id = dev['id']
            device_config['devices'][device_id] = {}
            device_config['devices'][device_id]['basic'] = dict(
                driver='default')
            device_config['devices'][device_id]['accessDevice'] = dict(
                uplink=uplink, vlan=uplink_vlan, defaultVlan=defaultVlan)

        cls.config(device_config, controller=controller)