diff --git a/config/common/generic.yaml b/config/common/generic.yaml index 3004197..38f3806 100644 --- a/config/common/generic.yaml +++ b/config/common/generic.yaml @@ -19,4 +19,5 @@ lab: gw6: 2001:678:d78:50b::1 nameserver: search: [ "lab.ipng.ch", "net.ipng.ch", "ipng.ch" ] - nodes: 4 + nodes: + vpp: 4 diff --git a/generate b/generate index 93c6892..6030a47 100755 --- a/generate +++ b/generate @@ -145,23 +145,27 @@ def prune(output, outdir): os.rmdir(dn) -def create_node(lab, node_id): +def create_node(lab, node_id, node_type): v4_base, v4_plen = lab["mgmt"]["ipv4"].split("/") v6_base, v6_plen = lab["mgmt"]["ipv6"].split("/") lo4_base = lab["ipv4"].split("/")[0] lo6_base = lab["ipv6"].split("/")[0] + total_nodes = 0 + for node_type, ncount in lab["nodes"].items(): + total_nodes += ncount + ret = { - "hostname": "vpp%d-%d" % (lab["id"], node_id), + "hostname": "%s%d-%d" % (node_type, lab["id"], node_id), "id": node_id, "mgmt": { "ipv4": "%s/%s" % ( - ipaddress.IPv4Address(v4_base) + lab["nodes"] * lab["id"] + node_id, + ipaddress.IPv4Address(v4_base) + total_nodes * lab["id"] + node_id, v4_plen, ), "ipv6": "%s/%s" % ( - ipaddress.IPv6Address(v6_base) + lab["nodes"] * lab["id"] + node_id, + ipaddress.IPv6Address(v6_base) + total_nodes * lab["id"] + node_id, v6_plen, ), "gw4": lab["mgmt"]["gw4"], @@ -240,17 +244,18 @@ def main(): log.error("Overlay not defined, bailing.") return - - for node_id in range(data["lab"]["nodes"]): - log.info("Generating for node %d" % node_id) - data["node"] = create_node(data["lab"], node_id) + for node_type, ncount in data["lab"]["nodes"].items(): + for node_id in range(ncount): + log.info("Generating for VPP node %d" % node_id) + data["node"] = create_node(data["lab"], node_id, node_type) log.debug("node: %s" % data["node"]) # Assemble a dictionary of tpl=>fn overlay = data["overlays"][args.overlay] common_root = overlay["path"] + "common/" + type_root = overlay["path"] + node_type + "/" hostname_root = overlay["path"] + "hostname/" + data["node"]["hostname"] + "/" - files = find([common_root, hostname_root]) + files = find([common_root, type_root, hostname_root]) # Assemble a dictionary of fn=>output build = generate(files, data, args.debug) diff --git a/overlays/bird/common/etc/bird/bird.conf.j2 b/overlays/bird/vpp/etc/bird/bird.conf.j2 similarity index 100% rename from overlays/bird/common/etc/bird/bird.conf.j2 rename to overlays/bird/vpp/etc/bird/bird.conf.j2 diff --git a/overlays/bird/common/etc/bird/core/bfd.conf.j2 b/overlays/bird/vpp/etc/bird/core/bfd.conf.j2 similarity index 100% rename from overlays/bird/common/etc/bird/core/bfd.conf.j2 rename to overlays/bird/vpp/etc/bird/core/bfd.conf.j2 diff --git a/overlays/bird/common/etc/bird/core/ospf.conf.j2 b/overlays/bird/vpp/etc/bird/core/ospf.conf.j2 similarity index 100% rename from overlays/bird/common/etc/bird/core/ospf.conf.j2 rename to overlays/bird/vpp/etc/bird/core/ospf.conf.j2 diff --git a/overlays/bird/common/etc/bird/core/static.conf.j2 b/overlays/bird/vpp/etc/bird/core/static.conf.j2 similarity index 100% rename from overlays/bird/common/etc/bird/core/static.conf.j2 rename to overlays/bird/vpp/etc/bird/core/static.conf.j2 diff --git a/overlays/bird/common/etc/bird/manual.conf.j2 b/overlays/bird/vpp/etc/bird/manual.conf.j2 similarity index 100% rename from overlays/bird/common/etc/bird/manual.conf.j2 rename to overlays/bird/vpp/etc/bird/manual.conf.j2 diff --git a/overlays/bird/common/etc/vpp/bootstrap.vpp.j2 b/overlays/bird/vpp/etc/vpp/bootstrap.vpp.j2 similarity index 100% rename from overlays/bird/common/etc/vpp/bootstrap.vpp.j2 rename to overlays/bird/vpp/etc/vpp/bootstrap.vpp.j2 diff --git a/overlays/bird/common/etc/vpp/config/defaults.vpp b/overlays/bird/vpp/etc/vpp/config/defaults.vpp similarity index 100% rename from overlays/bird/common/etc/vpp/config/defaults.vpp rename to overlays/bird/vpp/etc/vpp/config/defaults.vpp diff --git a/overlays/bird/common/etc/vpp/config/flowprobe.vpp.j2 b/overlays/bird/vpp/etc/vpp/config/flowprobe.vpp.j2 similarity index 100% rename from overlays/bird/common/etc/vpp/config/flowprobe.vpp.j2 rename to overlays/bird/vpp/etc/vpp/config/flowprobe.vpp.j2 diff --git a/overlays/bird/common/etc/vpp/config/interface.vpp.j2 b/overlays/bird/vpp/etc/vpp/config/interface.vpp.j2 similarity index 100% rename from overlays/bird/common/etc/vpp/config/interface.vpp.j2 rename to overlays/bird/vpp/etc/vpp/config/interface.vpp.j2 diff --git a/overlays/bird/common/etc/vpp/config/lcp.vpp b/overlays/bird/vpp/etc/vpp/config/lcp.vpp similarity index 100% rename from overlays/bird/common/etc/vpp/config/lcp.vpp rename to overlays/bird/vpp/etc/vpp/config/lcp.vpp diff --git a/overlays/bird/common/etc/vpp/config/loopback.vpp.j2 b/overlays/bird/vpp/etc/vpp/config/loopback.vpp.j2 similarity index 100% rename from overlays/bird/common/etc/vpp/config/loopback.vpp.j2 rename to overlays/bird/vpp/etc/vpp/config/loopback.vpp.j2 diff --git a/overlays/bird/common/etc/vpp/config/manual.vpp.j2 b/overlays/bird/vpp/etc/vpp/config/manual.vpp.j2 similarity index 100% rename from overlays/bird/common/etc/vpp/config/manual.vpp.j2 rename to overlays/bird/vpp/etc/vpp/config/manual.vpp.j2