def gen_iface(self, node_id: int, name: str = None, mac: str = None): """ Creates interface data for linking nodes, using the nodes unique id for generation, along with a random mac address, unless provided. :param node_id: node id to create an interface for :param name: name to set for interface, default is eth{id} :param mac: mac address to use for this interface, default is random generation :return: new interface data for the provided node """ # generate ip4 data ip4 = None ip4_mask = None if self.ip4: ip4 = self.ip4_address(node_id) ip4_mask = self.ip4.prefixlen # generate ip6 data ip6 = None ip6_mask = None if self.ip6: ip6 = self.ip6_address(node_id) ip6_mask = self.ip6.prefixlen # random mac if not mac: mac = utils.random_mac() return InterfaceData( name=name, ip4=ip4, ip4_mask=ip4_mask, ip6=ip6, ip6_mask=ip6_mask, mac=mac )
def create_interface(self, node: CoreNode, name: str = None, mac: str = None) -> InterfaceData: """ Creates interface data for linking nodes, using the nodes unique id for generation, along with a random mac address, unless provided. :param node: node to create interface for :param name: name to set for interface, default is eth{id} :param mac: mac address to use for this interface, default is random generation :return: new interface data for the provided node """ # interface id inteface_id = node.newifindex() # generate ip4 data ip4 = None ip4_mask = None if self.ip4: ip4 = self.ip4_address(node) ip4_mask = self.ip4.prefixlen # generate ip6 data ip6 = None ip6_mask = None if self.ip6: ip6 = self.ip6_address(node) ip6_mask = self.ip6.prefixlen # random mac if not mac: mac = utils.random_mac() return InterfaceData( _id=inteface_id, name=name, ip4=ip4, ip4_mask=ip4_mask, ip6=ip6, ip6_mask=ip6_mask, mac=mac, )
def test_random_mac(self): value = utils.random_mac() assert netaddr.EUI(value) is not None