def lab_topology(self): #TODO: replace name/label and use attribute from subgraph lab_topology = self.nidb.topology[self.host] lab_topology.render_template = "templates/netkit_lab_conf.mako" lab_topology.render_dst_folder = "rendered/%s/%s" % (self.host, "netkit") lab_topology.render_dst_file = "lab.conf" lab_topology.description = "AutoNetkit Lab" lab_topology.author = "AutoNetkit" lab_topology.web = "www.autonetkit.org" host_nodes = list(self.nidb.nodes(host=self.host, platform="netkit")) if not len(host_nodes): log.debug("No Netkit hosts for %s" % self.host) #TODO: make so can return here #return # also need collision domains for this host cd_nodes = self.nidb.nodes( "collision_domain", host=self.host ) # add in collision domains for this host (don't have platform) #TODO: need to allocate cds to a platform host_nodes += cd_nodes subgraph = self.nidb.subgraph(host_nodes, self.host) #TODO: sort this numerically, not just by string lab_topology.machines = " ".join( alpha_sort( naming.network_hostname(phy_node) for phy_node in subgraph.nodes("is_l3device"))) G_ip = self.anm['ip'] lab_topology.config_items = [] for node in sorted(subgraph.nodes("is_l3device")): for edge in node.edges(): collision_domain = str(G_ip.edge(edge).dst.subnet).replace( "/", ".") numeric_id = edge.id.replace( "eth", "") # netkit lab.conf uses 1 instead of eth1 lab_topology.config_items.append( device=naming.network_hostname(node), key=numeric_id, value=collision_domain, ) lab_topology.tap_ips = [] for node in subgraph: if node.tap: lab_topology.tap_ips.append( #TODO: merge the following and previous into a single function device=naming.network_hostname(node), id=node.tap.id.replace("eth", ""), # strip ethx -> x ip=node.tap.ip, ) lab_topology.tap_ips.sort("ip") lab_topology.config_items.sort("device")
def lab_topology(self): # TODO: replace name/label and use attribute from subgraph lab_topology = self.nidb.topology[self.host] lab_topology.render_template = "templates/netkit_lab_conf.mako" lab_topology.render_dst_folder = "rendered/%s/%s" % ( self.host, "netkit") lab_topology.render_dst_file = "lab.conf" lab_topology.description = "AutoNetkit Lab" lab_topology.author = "AutoNetkit" lab_topology.web = "www.autonetkit.org" host_nodes = list( self.nidb.nodes(host=self.host, platform="netkit")) if not len(host_nodes): log.debug("No Netkit hosts for %s" % self.host) # TODO: make so can return here # return # also need collision domains for this host cd_nodes = self.nidb.nodes("collision_domain", host=self.host) host_nodes += cd_nodes subgraph = self.nidb.subgraph(host_nodes, self.host) # TODO: sort this numerically, not just by string lab_topology.machines = " ".join(alpha_sort(naming.network_hostname(phy_node) for phy_node in subgraph.nodes("is_l3device"))) g_ipv4 = self.anm['ipv4'] lab_topology.config_items = [] for node in sorted(subgraph.nodes("is_l3device")): for edge in node.edges(): collision_domain = str( g_ipv4.edge(edge).dst.subnet).replace("/", ".") numeric_id = edge.id.replace( "eth", "") # netkit lab.conf uses 1 instead of eth1 lab_topology.config_items.append( device=naming.network_hostname(node), key=numeric_id, value=collision_domain, ) lab_topology.tap_ips = [] for node in subgraph: if node.tap: lab_topology.tap_ips.append( # TODO: merge the following and previous into a single # function device=naming.network_hostname(node), id=node.tap.id.replace("eth", ""), # strip ethx -> x ip=node.tap.ip, ) lab_topology.tap_ips.sort("ip") lab_topology.config_items.sort("device")
def lab_topology(self): # TODO: replace name/label and use attribute from subgraph lab_topology = self.nidb.topology(self.host) lab_topology.render_template = os.path.join("templates", "netkit_lab_conf.mako") lab_topology.render_dst_folder = os.path.join("rendered", self.host, "netkit") lab_topology.render_dst_file = "lab.conf" lab_topology.description = "AutoNetkit Lab" lab_topology.author = "AutoNetkit" lab_topology.web = "www.autonetkit.org" host_nodes = list(self.nidb.nodes(host=self.host, platform="netkit")) if not len(host_nodes): log.debug("No Netkit hosts for %s" % self.host) # also need collision domains for this host cd_nodes = self.nidb.nodes("broadcast_domain", host=self.host) host_nodes += cd_nodes subgraph = self.nidb.subgraph(host_nodes, self.host) lab_topology.machines = " ".join( alpha_sort( naming.network_hostname(phy_node) for phy_node in subgraph.l3devices())) lab_topology.config_items = [] for node in sorted(subgraph.l3devices()): for interface in node.physical_interfaces(): broadcast_domain = str(interface.ipv4_subnet).replace("/", ".") #netkit lab.conf uses 1 instead of eth1 numeric_id = interface.numeric_id stanza = ConfigStanza( device=naming.network_hostname(node), key=numeric_id, value=broadcast_domain, ) lab_topology.config_items.append(stanza) lab_topology.tap_ips = [] for node in subgraph: if node.tap: stanza = ConfigStanza( device=naming.network_hostname(node), id=node.tap.id.replace("eth", ""), # strip ethx -> x ip=node.tap.ip, ) lab_topology.tap_ips.append(stanza) lab_topology.tap_ips = sorted(lab_topology.tap_ips, key=lambda x: x.ip) lab_topology.config_items = sorted(lab_topology.config_items, key=lambda x: x.device)
def lab_topology(self): # TODO: replace name/label and use attribute from subgraph lab_topology = self.nidb.topology(self.host) lab_topology.render_template = os.path.join("templates", "netkit_lab_conf.mako") lab_topology.render_dst_folder = os.path.join("rendered", self.host, "netkit") lab_topology.render_dst_file = "lab.conf" lab_topology.description = "AutoNetkit Lab" lab_topology.author = "AutoNetkit" lab_topology.web = "www.autonetkit.org" host_nodes = list( self.nidb.nodes(host=self.host, platform="netkit")) if not len(host_nodes): log.debug("No Netkit hosts for %s" % self.host) # also need collision domains for this host cd_nodes = self.nidb.nodes("broadcast_domain", host=self.host) host_nodes += cd_nodes subgraph = self.nidb.subgraph(host_nodes, self.host) lab_topology.machines = " ".join(alpha_sort(naming.network_hostname(phy_node) for phy_node in subgraph.l3devices())) lab_topology.config_items = [] for node in sorted(subgraph.l3devices()): for interface in node.physical_interfaces: broadcast_domain = str(interface.ipv4_subnet).replace("/", ".") #netkit lab.conf uses 1 instead of eth1 numeric_id = interface.numeric_id stanza = ConfigStanza( device=naming.network_hostname(node), key=numeric_id, value=broadcast_domain, ) lab_topology.config_items.append(stanza) lab_topology.tap_ips = [] for node in subgraph: if node.tap: stanza = ConfigStanza( device=naming.network_hostname(node), id=node.tap.id.replace("eth", ""), # strip ethx -> x ip=node.tap.ip, ) lab_topology.tap_ips.append(stanza) lab_topology.tap_ips = sorted(lab_topology.tap_ips, key = lambda x: x.ip) lab_topology.config_items = sorted(lab_topology.config_items, key = lambda x: x.device)