moved common variables up and localname to CoreInterface, they were being created in all subclasses and avoids type hinting errors
This commit is contained in:
parent
37ff989aa4
commit
c580e15f8e
6 changed files with 14 additions and 25 deletions
|
@ -48,7 +48,6 @@ class EmaneNet(CoreNetworkBase):
|
|||
) -> None:
|
||||
super().__init__(session, _id, name, start, server)
|
||||
self.conf = ""
|
||||
self.up = False
|
||||
self.nemidmap = {}
|
||||
self.model = None
|
||||
self.mobility = None
|
||||
|
|
|
@ -65,17 +65,15 @@ class NodeBase:
|
|||
name = f"o{self.id}"
|
||||
self.name = name
|
||||
self.server = server
|
||||
|
||||
self.type = None
|
||||
self.services = None
|
||||
# ifindex is key, CoreInterface instance is value
|
||||
self._netif = {}
|
||||
self.ifindex = 0
|
||||
self.canvas = None
|
||||
self.icon = None
|
||||
self.opaque = None
|
||||
self.position = Position()
|
||||
|
||||
self.up = False
|
||||
use_ovs = session.options.get_config("ovs") == "True"
|
||||
self.net_client = get_net_client(use_ovs, self.host_cmd)
|
||||
|
||||
|
@ -272,7 +270,6 @@ class CoreNodeBase(NodeBase):
|
|||
self.config_services = {}
|
||||
self.nodedir = None
|
||||
self.tmpnodedir = False
|
||||
self.up = False
|
||||
|
||||
def add_config_service(self, service_class: "ConfigServiceType") -> None:
|
||||
"""
|
||||
|
@ -1008,6 +1005,7 @@ class CoreNetworkBase(NodeBase):
|
|||
will run on, default is None for localhost
|
||||
"""
|
||||
super().__init__(session, _id, name, start, server)
|
||||
self.brname = None
|
||||
self._linked = {}
|
||||
self._linked_lock = threading.Lock()
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ class CoreInterface:
|
|||
session: "Session",
|
||||
node: "CoreNode",
|
||||
name: str,
|
||||
localname: str,
|
||||
mtu: int,
|
||||
server: "DistributedServer" = None,
|
||||
) -> None:
|
||||
|
@ -36,6 +37,7 @@ class CoreInterface:
|
|||
:param session: core session instance
|
||||
:param node: node for interface
|
||||
:param name: interface name
|
||||
:param localname: interface local name
|
||||
:param mtu: mtu value
|
||||
:param server: remote server node
|
||||
will run on, default is None for localhost
|
||||
|
@ -43,6 +45,8 @@ class CoreInterface:
|
|||
self.session = session
|
||||
self.node = node
|
||||
self.name = name
|
||||
self.localname = localname
|
||||
self.up = False
|
||||
if not isinstance(mtu, int):
|
||||
raise ValueError
|
||||
self.mtu = mtu
|
||||
|
@ -258,9 +262,7 @@ class Veth(CoreInterface):
|
|||
:raises CoreCommandError: when there is a command exception
|
||||
"""
|
||||
# note that net arg is ignored
|
||||
super().__init__(session, node, name, mtu, server)
|
||||
self.localname = localname
|
||||
self.up = False
|
||||
super().__init__(session, node, name, localname, mtu, server)
|
||||
if start:
|
||||
self.startup()
|
||||
|
||||
|
@ -326,9 +328,7 @@ class TunTap(CoreInterface):
|
|||
will run on, default is None for localhost
|
||||
:param start: start flag
|
||||
"""
|
||||
super().__init__(session, node, name, mtu, server)
|
||||
self.localname = localname
|
||||
self.up = False
|
||||
super().__init__(session, node, name, localname, mtu, server)
|
||||
self.transport_type = "virtual"
|
||||
if start:
|
||||
self.startup()
|
||||
|
@ -509,22 +509,17 @@ class GreTap(CoreInterface):
|
|||
will run on, default is None for localhost
|
||||
:raises CoreCommandError: when there is a command exception
|
||||
"""
|
||||
super().__init__(session, node, name, mtu, server)
|
||||
if _id is None:
|
||||
# from PyCoreObj
|
||||
_id = ((id(self) >> 16) ^ (id(self) & 0xFFFF)) & 0xFFFF
|
||||
self.id = _id
|
||||
sessionid = self.session.short_session_id()
|
||||
# interface name on the local host machine
|
||||
self.localname = f"gt.{self.id}.{sessionid}"
|
||||
sessionid = session.short_session_id()
|
||||
localname = f"gt.{self.id}.{sessionid}"
|
||||
super().__init__(session, node, name, localname, mtu, server)
|
||||
self.transport_type = "raw"
|
||||
if not start:
|
||||
self.up = False
|
||||
return
|
||||
|
||||
if remoteip is None:
|
||||
raise ValueError("missing remote IP required for GRE TAP device")
|
||||
|
||||
self.net_client.create_gretap(self.localname, remoteip, localip, ttl, key)
|
||||
self.net_client.device_up(self.localname)
|
||||
self.up = True
|
||||
|
|
|
@ -243,7 +243,7 @@ class LinuxNetClient:
|
|||
|
||||
def create_interface(self, bridge_name: str, interface_name: str) -> None:
|
||||
"""
|
||||
Create an interface associated with a Linux bridge.
|
||||
Assign interface master to a Linux bridge.
|
||||
|
||||
:param bridge_name: bridge name
|
||||
:param interface_name: interface name
|
||||
|
|
|
@ -284,7 +284,6 @@ class CoreNetwork(CoreNetworkBase):
|
|||
self.name = name
|
||||
sessionid = self.session.short_session_id()
|
||||
self.brname = f"b.{self.id}.{sessionid}"
|
||||
self.up = False
|
||||
self.has_ebtables_chain = False
|
||||
if start:
|
||||
self.startup()
|
||||
|
@ -561,7 +560,7 @@ class CoreNetwork(CoreNetworkBase):
|
|||
|
||||
netif = Veth(self.session, None, name, localname, start=self.up)
|
||||
self.attach(netif)
|
||||
if net.up:
|
||||
if net.up and net.brname:
|
||||
# this is similar to net.attach() but uses netif.name instead of localname
|
||||
netif.net_client.create_interface(net.brname, netif.name)
|
||||
i = net.newifindex()
|
||||
|
|
|
@ -280,12 +280,10 @@ class Rj45Node(CoreNodeBase, CoreInterface):
|
|||
will run on, default is None for localhost
|
||||
"""
|
||||
CoreNodeBase.__init__(self, session, _id, name, start, server)
|
||||
CoreInterface.__init__(self, session, self, name, mtu, server)
|
||||
CoreInterface.__init__(self, session, self, name, name, mtu, server)
|
||||
self.lock = threading.RLock()
|
||||
self.ifindex = None
|
||||
# the following are PyCoreNetIf attributes
|
||||
self.transport_type = "raw"
|
||||
self.localname = name
|
||||
self.old_up = False
|
||||
self.old_addrs = []
|
||||
if start:
|
||||
|
|
Loading…
Reference in a new issue