Пример #1
0
def generate_ip_through_default_route(host):
    # Generate an IP address routed through default routes
    for leading in range(11, 255):
        ip_addr = generate_ips(1, "{}.0.0.1/24".format(leading), [])[0]
        if route_through_default_routes(host, ip_addr):
            return ip_addr
    return None
Пример #2
0
    def _setup_interfaces_t0(mg_facts, peer_count):
        try:
            connections = []
            is_backend_topo = "backend" in tbinfo["topo"]["name"]
            vlan_intf = _find_vlan_intferface(mg_facts)
            vlan_intf_name = vlan_intf["attachto"]
            vlan_intf_addr = "%s/%s" % (vlan_intf["addr"],
                                        vlan_intf["prefixlen"])
            vlan_members = mg_facts["minigraph_vlans"][vlan_intf_name][
                "members"]
            is_vlan_tagged = mg_facts["minigraph_vlans"][vlan_intf_name].get(
                "type", "").lower() == "tagged"
            vlan_id = mg_facts["minigraph_vlans"][vlan_intf_name]["vlanid"]
            local_interfaces = random.sample(vlan_members, peer_count)
            neighbor_addresses = generate_ips(
                peer_count, vlan_intf["subnet"],
                [netaddr.IPAddress(vlan_intf["addr"])])

            loopback_ip = None
            for intf in mg_facts["minigraph_lo_interfaces"]:
                if netaddr.IPAddress(intf["addr"]).version == 4:
                    loopback_ip = intf["addr"]
                    break
            if not loopback_ip:
                pytest.fail("ipv4 lo interface not found")

            for local_intf, neighbor_addr in zip(local_interfaces,
                                                 neighbor_addresses):
                conn = {}
                conn["local_intf"] = vlan_intf_name
                conn["local_addr"] = vlan_intf_addr
                conn["neighbor_addr"] = neighbor_addr
                conn["neighbor_intf"] = "eth%s" % mg_facts[
                    "minigraph_port_indices"][local_intf]
                if is_backend_topo and is_vlan_tagged:
                    conn["neighbor_intf"] += (
                        constants.VLAN_SUB_INTERFACE_SEPARATOR + vlan_id)
                conn["loopback_ip"] = loopback_ip
                connections.append(conn)

            ptfhost.remove_ip_addresses(
            )  # In case other case did not cleanup IP address configured on PTF interface

            for conn in connections:
                ptfhost.shell("ifconfig %s %s" %
                              (conn["neighbor_intf"], conn["neighbor_addr"]))

            yield connections

        finally:
            for conn in connections:
                ptfhost.shell("ifconfig %s 0.0.0.0" % conn["neighbor_intf"])
Пример #3
0
    def _setup_interfaces_t0(mg_facts, peer_count):
        try:
            connections = []
            vlan_intf = None
            for vlan_intf in mg_facts["minigraph_vlan_interfaces"]:
                if _is_ipv4_address(vlan_intf["addr"]):
                    break
            if vlan_intf is None:
                raise ValueError("No Vlan interface defined in T0.")
            vlan_intf_name = vlan_intf["attachto"]
            vlan_intf_addr = "%s/%s" % (vlan_intf["addr"],
                                        vlan_intf["prefixlen"])
            vlan_members = mg_facts["minigraph_vlans"][vlan_intf_name][
                "members"]
            local_interfaces = random.sample(vlan_members, peer_count)
            neighbor_addresses = generate_ips(
                peer_count, vlan_intf["subnet"],
                [netaddr.IPAddress(vlan_intf["addr"])])

            loopback_ip = None
            for intf in mg_facts["minigraph_lo_interfaces"]:
                if netaddr.IPAddress(intf["addr"]).version == 4:
                    loopback_ip = intf["addr"]
                    break
            if not loopback_ip:
                pytest.fail("ipv4 lo interface not found")

            for local_intf, neighbor_addr in zip(local_interfaces,
                                                 neighbor_addresses):
                conn = {}
                conn["local_intf"] = vlan_intf_name
                conn["local_addr"] = vlan_intf_addr
                conn["neighbor_addr"] = neighbor_addr
                conn["neighbor_intf"] = "eth%s" % mg_facts[
                    "minigraph_port_indices"][local_intf]
                conn["loopback_ip"] = loopback_ip
                connections.append(conn)

            ptfhost.remove_ip_addresses(
            )  # In case other case did not cleanup IP address configured on PTF interface

            for conn in connections:
                ptfhost.shell("ifconfig %s %s" %
                              (conn["neighbor_intf"], conn["neighbor_addr"]))

            yield connections

        finally:
            for conn in connections:
                ptfhost.shell("ifconfig %s 0.0.0.0" % conn["neighbor_intf"])
Пример #4
0
    def _setup_interfaces_t0(mg_facts, peer_count):
        try:
            connections = []
            vlan_intf = None
            for vlan_intf in mg_facts["minigraph_vlan_interfaces"]:
                if _is_ipv4_address(vlan_intf["addr"]):
                    break
            if vlan_intf is None:
                raise ValueError("No Vlan interface defined in T0.")
            vlan_intf_name = vlan_intf["attachto"]
            vlan_intf_addr = "%s/%s" % (vlan_intf["addr"],
                                        vlan_intf["prefixlen"])
            vlan_members = mg_facts["minigraph_vlans"][vlan_intf_name][
                "members"]
            local_interfaces = random.sample(vlan_members, peer_count)
            neighbor_addresses = generate_ips(
                peer_count, vlan_intf["subnet"],
                [netaddr.IPAddress(vlan_intf["addr"])])

            for local_intf, neighbor_addr in zip(local_interfaces,
                                                 neighbor_addresses):
                conn = {}
                conn["local_intf"] = vlan_intf_name
                conn["local_addr"] = vlan_intf_addr
                conn["neighbor_addr"] = neighbor_addr
                conn["neighbor_intf"] = "eth%s" % mg_facts[
                    "minigraph_port_indices"][local_intf]
                connections.append(conn)

            for conn in connections:
                ptfhost.shell("ifconfig %s %s" %
                              (conn["neighbor_intf"], conn["neighbor_addr"]))

            yield connections

        finally:
            for conn in connections:
                ptfhost.shell("ifconfig %s 0.0.0.0" % conn["neighbor_intf"])
Пример #5
0
    def generate_server_ports(self):
        """ Generate list of port parameters which are connected to servers """
        generated_ips = generate_ips(
            len(self.vlan_members), "{}/{}".format(
                self.mg_facts['minigraph_vlan_interfaces'][0]['addr'],
                self.mg_facts['minigraph_vlan_interfaces'][0]['prefixlen']),
            [IPAddress(self.mg_facts['minigraph_vlan_interfaces'][0]['addr'])])

        self.vars["ptf_test_params"]["server_ports"] = []
        for index, item in enumerate(self.vlan_members):
            port_info = {
                "dut_name":
                item,
                "ptf_name":
                "eth{}".format(self.mg_facts["minigraph_port_indices"][item]),
                "index":
                self.mg_facts["minigraph_port_indices"][item],
                "ptf_ip":
                generated_ips[index],
                "oid":
                None
            }

            redis_oid = self.duthost.command(
                "docker exec -i database redis-cli --raw -n 2 HMGET \
                        COUNTERS_PORT_NAME_MAP {}".format(item))["stdout"]
            self.vars["server_ports_oids"].append(redis_oid)

            sai_redis_oid = int(
                self.duthost.command(
                    "docker exec -i database redis-cli -n 1 hget VIDTORID {}".
                    format(redis_oid))["stdout"].replace("oid:", ""), 16)
            port_info["oid"] = sai_redis_oid
            self.vars["ptf_test_params"]["server_ports"].append(port_info)

        self.vars["ptf_test_params"]["server"] = self.ansible_facts[
            "ansible_hostname"]