Example #1
0
    def create(cls, src, src_port, dst, dst_port, bandwidth=None, is_isl=True):
        link = cls(src, src_port, dst, dst_port, bandwidth, is_isl)

        run_cmd('ip link add {} type veth peer name {}'.format(
            link.src_name(), link.dst_name()))
        run_cmd('ip link set up {}'.format(link.src_name()))
        run_cmd('ip link set up {}'.format(link.dst_name()))

        return link
Example #2
0
    def create(cls, topo_def):
        switches = {}
        links = []
        traffgens = []
        a_mappings = []
        a_ports = set()

        for isl_def in topo_def['isls']:
            src = isl_def['src_switch']
            src_port = isl_def['src_port']
            dst = isl_def.get('dst_switch', None)
            dst_port = isl_def.get('dst_port', None)
            bandwidth = isl_def.get('max_bandwidth', None)
            a_def = isl_def.get('aswitch', None)

            if a_def:
                if a_def.get('in_port', None):
                    a_ports.add(a_def['in_port'])
                if a_def.get('out_port', None):
                    a_ports.add(a_def['out_port'])

                links.append(
                    Link.create(src, src_port, A_SW_NAME, a_def['in_port'],
                                bandwidth))
                if dst and dst_port:
                    links.append(
                        Link.create(A_SW_NAME, a_def['out_port'], dst,
                                    dst_port, bandwidth))
                    a_mappings.append({
                        'in_port': a_def['in_port'],
                        'out_port': a_def['out_port']
                    })
                    a_mappings.append({
                        'in_port': a_def['out_port'],
                        'out_port': a_def['in_port']
                    })
            else:
                links.append(
                    Link.create(src, src_port, dst, dst_port, bandwidth))

        for tgen_def in [
                active_tgen for active_tgen in topo_def.get('traff_gens', [])
                if active_tgen['status'].lower() == "active"
        ]:
            tg = Traffgen(tgen_def)
            traffgens.append(tg)
            links.append(tg.make_link())

        switches[A_SW_NAME] = ASwitch.create(A_SW_DEF)
        switches[A_SW_NAME].define_ports(a_ports)
        for sw_def in topo_def['switches']:
            sw = Switch.create_with_ports(sw_def)
            switches[sw.name] = sw

        for link in links:
            link.setup_switch_ports(switches)

        vsctl(['set Open_vSwitch . other_config:vlan-limit=0'])
        cls.batch_switch_cmd(switches)
        run_cmd('ovs-appctl revalidator/purge')

        switches[A_SW_NAME].add_route_flows(a_mappings)
        return cls(switches, links, traffgens)
Example #3
0
 def run(self):
     self.proc = run_cmd('kilda-traffexam {} {}'.format(
         pname(self.name, self.iface), self.endpoint),
                         sync=False)
Example #4
0
 def destroy(self):
     run_cmd('ip link delete {}'.format(self.src_name()))