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:
Blake Harnden 2020-05-23 01:05:46 -07:00
parent 37ff989aa4
commit c580e15f8e
6 changed files with 14 additions and 25 deletions

View file

@ -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

View file

@ -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()

View file

@ -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

View file

@ -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

View file

@ -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()

View file

@ -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: