summaryrefslogtreecommitdiff
path: root/tests/topotests/lib/topojson.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/topotests/lib/topojson.py')
-rw-r--r--tests/topotests/lib/topojson.py191
1 files changed, 108 insertions, 83 deletions
diff --git a/tests/topotests/lib/topojson.py b/tests/topotests/lib/topojson.py
index fff5a1e82f..b25317ba7f 100644
--- a/tests/topotests/lib/topojson.py
+++ b/tests/topotests/lib/topojson.py
@@ -29,13 +29,14 @@ from lib.topolog import logger
# Required to instantiate the topology builder class.
from lib.common_config import (
- number_to_row, number_to_column,
+ number_to_row,
+ number_to_column,
load_config_to_router,
create_interfaces_cfg,
create_static_routes,
create_prefix_lists,
create_route_maps,
- create_bgp_community_lists
+ create_bgp_community_lists,
)
from lib.bgp import create_router_bgp
@@ -53,56 +54,69 @@ def build_topo_from_json(tgen, topo):
* `topo`: json file data
"""
- ROUTER_LIST = sorted(topo['routers'].keys(),
- key=lambda x: int(re_search('\d+', x).group(0)))
+ ROUTER_LIST = sorted(
+ topo["routers"].keys(), key=lambda x: int(re_search("\d+", x).group(0))
+ )
listRouters = ROUTER_LIST[:]
for routerN in ROUTER_LIST:
- logger.info('Topo: Add router {}'.format(routerN))
+ logger.info("Topo: Add router {}".format(routerN))
tgen.add_router(routerN)
listRouters.append(routerN)
- if 'ipv4base' in topo:
- ipv4Next = ipaddr.IPv4Address(topo['link_ip_start']['ipv4'])
- ipv4Step = 2 ** (32 - topo['link_ip_start']['v4mask'])
- if topo['link_ip_start']['v4mask'] < 32:
+ if "ipv4base" in topo:
+ ipv4Next = ipaddr.IPv4Address(topo["link_ip_start"]["ipv4"])
+ ipv4Step = 2 ** (32 - topo["link_ip_start"]["v4mask"])
+ if topo["link_ip_start"]["v4mask"] < 32:
ipv4Next += 1
- if 'ipv6base' in topo:
- ipv6Next = ipaddr.IPv6Address(topo['link_ip_start']['ipv6'])
- ipv6Step = 2 ** (128 - topo['link_ip_start']['v6mask'])
- if topo['link_ip_start']['v6mask'] < 127:
+ if "ipv6base" in topo:
+ ipv6Next = ipaddr.IPv6Address(topo["link_ip_start"]["ipv6"])
+ ipv6Step = 2 ** (128 - topo["link_ip_start"]["v6mask"])
+ if topo["link_ip_start"]["v6mask"] < 127:
ipv6Next += 1
for router in listRouters:
- topo['routers'][router]['nextIfname'] = 0
+ topo["routers"][router]["nextIfname"] = 0
while listRouters != []:
curRouter = listRouters.pop(0)
# Physical Interfaces
- if 'links' in topo['routers'][curRouter]:
+ if "links" in topo["routers"][curRouter]:
+
def link_sort(x):
- if x == 'lo':
+ if x == "lo":
return 0
- elif 'link' in x:
- return int(x.split('-link')[1])
+ elif "link" in x:
+ return int(x.split("-link")[1])
else:
- return int(re_search('\d+', x).group(0))
- for destRouterLink, data in sorted(topo['routers'][curRouter]['links']. \
- iteritems(),
- key=lambda x: link_sort(x[0])):
- currRouter_lo_json = \
- topo['routers'][curRouter]['links'][destRouterLink]
+ return int(re_search("\d+", x).group(0))
+
+ for destRouterLink, data in sorted(
+ topo["routers"][curRouter]["links"].iteritems(),
+ key=lambda x: link_sort(x[0]),
+ ):
+ currRouter_lo_json = topo["routers"][curRouter]["links"][destRouterLink]
# Loopback interfaces
- if 'type' in data and data['type'] == 'loopback':
- if 'ipv4' in currRouter_lo_json and \
- currRouter_lo_json['ipv4'] == 'auto':
- currRouter_lo_json['ipv4'] = '{}{}.{}/{}'. \
- format(topo['lo_prefix']['ipv4'], number_to_row(curRouter), \
- number_to_column(curRouter), topo['lo_prefix']['v4mask'])
- if 'ipv6' in currRouter_lo_json and \
- currRouter_lo_json['ipv6'] == 'auto':
- currRouter_lo_json['ipv6'] = '{}{}:{}/{}'. \
- format(topo['lo_prefix']['ipv6'], number_to_row(curRouter), \
- number_to_column(curRouter), topo['lo_prefix']['v6mask'])
+ if "type" in data and data["type"] == "loopback":
+ if (
+ "ipv4" in currRouter_lo_json
+ and currRouter_lo_json["ipv4"] == "auto"
+ ):
+ currRouter_lo_json["ipv4"] = "{}{}.{}/{}".format(
+ topo["lo_prefix"]["ipv4"],
+ number_to_row(curRouter),
+ number_to_column(curRouter),
+ topo["lo_prefix"]["v4mask"],
+ )
+ if (
+ "ipv6" in currRouter_lo_json
+ and currRouter_lo_json["ipv6"] == "auto"
+ ):
+ currRouter_lo_json["ipv6"] = "{}{}:{}/{}".format(
+ topo["lo_prefix"]["ipv6"],
+ number_to_row(curRouter),
+ number_to_column(curRouter),
+ topo["lo_prefix"]["v6mask"],
+ )
if "-" in destRouterLink:
# Spliting and storing destRouterLink data in tempList
@@ -119,52 +133,63 @@ def build_topo_from_json(tgen, topo):
curRouterLink = curRouter
if destRouter in listRouters:
- currRouter_link_json = \
- topo['routers'][curRouter]['links'][destRouterLink]
- destRouter_link_json = \
- topo['routers'][destRouter]['links'][curRouterLink]
+ currRouter_link_json = topo["routers"][curRouter]["links"][
+ destRouterLink
+ ]
+ destRouter_link_json = topo["routers"][destRouter]["links"][
+ curRouterLink
+ ]
# Assigning name to interfaces
- currRouter_link_json['interface'] = \
- '{}-{}-eth{}'.format(curRouter, destRouter, topo['routers'] \
- [curRouter]['nextIfname'])
- destRouter_link_json['interface'] = \
- '{}-{}-eth{}'.format(destRouter, curRouter, topo['routers'] \
- [destRouter]['nextIfname'])
+ currRouter_link_json["interface"] = "{}-{}-eth{}".format(
+ curRouter, destRouter, topo["routers"][curRouter]["nextIfname"]
+ )
+ destRouter_link_json["interface"] = "{}-{}-eth{}".format(
+ destRouter, curRouter, topo["routers"][destRouter]["nextIfname"]
+ )
- topo['routers'][curRouter]['nextIfname'] += 1
- topo['routers'][destRouter]['nextIfname'] += 1
+ topo["routers"][curRouter]["nextIfname"] += 1
+ topo["routers"][destRouter]["nextIfname"] += 1
# Linking routers to each other as defined in JSON file
- tgen.gears[curRouter].add_link(tgen.gears[destRouter],
- topo['routers'][curRouter]['links'][destRouterLink] \
- ['interface'], topo['routers'][destRouter]['links'] \
- [curRouterLink]['interface'])
+ tgen.gears[curRouter].add_link(
+ tgen.gears[destRouter],
+ topo["routers"][curRouter]["links"][destRouterLink][
+ "interface"
+ ],
+ topo["routers"][destRouter]["links"][curRouterLink][
+ "interface"
+ ],
+ )
# IPv4
- if 'ipv4' in currRouter_link_json:
- if currRouter_link_json['ipv4'] == 'auto':
- currRouter_link_json['ipv4'] = \
- '{}/{}'.format(ipv4Next, topo['link_ip_start'][ \
- 'v4mask'])
- destRouter_link_json['ipv4'] = \
- '{}/{}'.format(ipv4Next + 1, topo['link_ip_start'][ \
- 'v4mask'])
+ if "ipv4" in currRouter_link_json:
+ if currRouter_link_json["ipv4"] == "auto":
+ currRouter_link_json["ipv4"] = "{}/{}".format(
+ ipv4Next, topo["link_ip_start"]["v4mask"]
+ )
+ destRouter_link_json["ipv4"] = "{}/{}".format(
+ ipv4Next + 1, topo["link_ip_start"]["v4mask"]
+ )
ipv4Next += ipv4Step
# IPv6
- if 'ipv6' in currRouter_link_json:
- if currRouter_link_json['ipv6'] == 'auto':
- currRouter_link_json['ipv6'] = \
- '{}/{}'.format(ipv6Next, topo['link_ip_start'][ \
- 'v6mask'])
- destRouter_link_json['ipv6'] = \
- '{}/{}'.format(ipv6Next + 1, topo['link_ip_start'][ \
- 'v6mask'])
+ if "ipv6" in currRouter_link_json:
+ if currRouter_link_json["ipv6"] == "auto":
+ currRouter_link_json["ipv6"] = "{}/{}".format(
+ ipv6Next, topo["link_ip_start"]["v6mask"]
+ )
+ destRouter_link_json["ipv6"] = "{}/{}".format(
+ ipv6Next + 1, topo["link_ip_start"]["v6mask"]
+ )
ipv6Next = ipaddr.IPv6Address(int(ipv6Next) + ipv6Step)
- logger.debug("Generated link data for router: %s\n%s", curRouter,
- json_dumps(topo["routers"][curRouter]["links"],
- indent=4, sort_keys=True))
+ logger.debug(
+ "Generated link data for router: %s\n%s",
+ curRouter,
+ json_dumps(
+ topo["routers"][curRouter]["links"], indent=4, sort_keys=True
+ ),
+ )
def build_config_from_json(tgen, topo, save_bkup=True):
@@ -176,27 +201,27 @@ def build_config_from_json(tgen, topo, save_bkup=True):
* `topo`: json file data
"""
- func_dict = OrderedDict([
- ("links", create_interfaces_cfg),
- ("static_routes", create_static_routes),
- ("prefix_lists", create_prefix_lists),
- ("bgp_community_list", create_bgp_community_lists),
- ("route_maps", create_route_maps),
- ("bgp", create_router_bgp)
- ])
+ func_dict = OrderedDict(
+ [
+ ("links", create_interfaces_cfg),
+ ("static_routes", create_static_routes),
+ ("prefix_lists", create_prefix_lists),
+ ("bgp_community_list", create_bgp_community_lists),
+ ("route_maps", create_route_maps),
+ ("bgp", create_router_bgp),
+ ]
+ )
data = topo["routers"]
for func_type in func_dict.keys():
- logger.info('Checking for {} configuration in input data'.format(
- func_type))
+ logger.info("Checking for {} configuration in input data".format(func_type))
func_dict.get(func_type)(tgen, data, build=True)
- for router in sorted(topo['routers'].keys()):
- logger.debug('Configuring router {}...'.format(router))
+ for router in sorted(topo["routers"].keys()):
+ logger.debug("Configuring router {}...".format(router))
result = load_config_to_router(tgen, router, save_bkup)
if not result:
logger.info("Failed while configuring {}".format(router))
pytest.exit(1)
-