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