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
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"])
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"])
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"])
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"]