Merge pull request #144 from CanonicalLtd/mwhudson/network-model-simplify
simplify network model code a bit
This commit is contained in:
commit
045f1e5159
|
@ -23,7 +23,8 @@ from subiquitycore.model import BaseModel
|
|||
from subiquitycore.utils import (read_sys_net,
|
||||
sys_dev_path)
|
||||
|
||||
NETDEV_IGNORED_IFACES = ['lo', 'bridge', 'tun', 'tap', 'dummy']
|
||||
NETDEV_IGNORED_IFACE_NAMES = ['lo']
|
||||
NETDEV_IGNORED_IFACE_TYPES = ['bridge', 'tun', 'tap', 'dummy']
|
||||
log = logging.getLogger('subiquitycore.models.network')
|
||||
|
||||
|
||||
|
@ -312,14 +313,7 @@ class NetworkModel(BaseModel):
|
|||
def __init__(self, prober, opts):
|
||||
self.opts = opts
|
||||
self.prober = prober
|
||||
self.info = {}
|
||||
self.devices = {}
|
||||
self.network_devices = {}
|
||||
self.network_routes = {}
|
||||
self.default_v4_gateway = None
|
||||
self.default_v6_gateway = None
|
||||
self.v4_gateway_dev = None
|
||||
self.v6_gateway_dev = None
|
||||
self.reset()
|
||||
|
||||
def reset(self):
|
||||
log.debug('resetting network model')
|
||||
|
@ -329,6 +323,7 @@ class NetworkModel(BaseModel):
|
|||
self.default_v6_gateway = None
|
||||
self.v4_gateway_dev = None
|
||||
self.v6_gateway_dev = None
|
||||
self.network_routes = {}
|
||||
|
||||
def get_signal_by_name(self, selection):
|
||||
for x, y, z in self.get_signals():
|
||||
|
@ -344,13 +339,23 @@ class NetworkModel(BaseModel):
|
|||
# --- Model Methods ----
|
||||
def probe_network(self):
|
||||
log.debug('model calling prober.get_network()')
|
||||
self.network_devices = self.prober.get_network_devices()
|
||||
network_devices = self.prober.get_network_devices()
|
||||
self.network_routes = self.prober.get_network_routes()
|
||||
|
||||
for iface in [iface for iface in self.network_devices.keys()
|
||||
if iface not in NETDEV_IGNORED_IFACES]:
|
||||
for iface in network_devices:
|
||||
if iface in NETDEV_IGNORED_IFACE_NAMES:
|
||||
continue
|
||||
ifinfo = self.prober.get_network_info(iface)
|
||||
if ifinfo.type in NETDEV_IGNORED_IFACE_TYPES:
|
||||
continue
|
||||
self.info[iface] = ifinfo
|
||||
netdev = Networkdev(iface, ifinfo.type)
|
||||
try:
|
||||
log.debug('configuring with: {}'.format(ifinfo))
|
||||
netdev.configure(probe_info=ifinfo)
|
||||
except Exception as e:
|
||||
log.error(e)
|
||||
self.devices[iface] = netdev
|
||||
|
||||
log.debug('probing network complete!')
|
||||
|
||||
|
@ -361,30 +366,15 @@ class NetworkModel(BaseModel):
|
|||
def get_interface(self, iface):
|
||||
'''get iface object given iface name '''
|
||||
log.debug('get_iface({})'.format(iface))
|
||||
if iface not in self.devices:
|
||||
ifinfo = self.info[iface]
|
||||
netdev = Networkdev(iface, ifinfo.type)
|
||||
|
||||
try:
|
||||
log.debug('configuring with: {}'.format(ifinfo))
|
||||
netdev.configure(probe_info=ifinfo)
|
||||
except Exception as e:
|
||||
log.error(e)
|
||||
self.devices[iface] = netdev
|
||||
|
||||
return self.devices[iface]
|
||||
|
||||
def get_all_interfaces(self):
|
||||
possible_devices = list(set(list(self.devices.keys()) +
|
||||
list(self.info.keys())))
|
||||
possible_ifaces = [self.get_interface(i) for i in
|
||||
sorted(possible_devices) if
|
||||
self.info[i].type not in NETDEV_IGNORED_IFACES]
|
||||
ifaces = [iface for _, iface in sorted(self.devices.items())]
|
||||
|
||||
log.debug('get_all_interfaces -> {}'.format(",".join(
|
||||
[i.ifname for i in
|
||||
possible_ifaces])))
|
||||
return possible_ifaces
|
||||
ifaces])))
|
||||
return ifaces
|
||||
|
||||
def get_all_interface_names(self):
|
||||
return [i.ifname for i in self.get_all_interfaces()]
|
||||
|
@ -417,7 +407,7 @@ class NetworkModel(BaseModel):
|
|||
and see if iface is included in a bridge '''
|
||||
bridges = self.get_bridges()
|
||||
for bridge in bridges:
|
||||
brinfo = self.network_devices[bridge].get('bridge', {})
|
||||
brinfo = self.info[bridge].bridge
|
||||
if brinfo:
|
||||
if iface in brinfo['interfaces']:
|
||||
return True
|
||||
|
@ -464,7 +454,7 @@ class NetworkModel(BaseModel):
|
|||
raise
|
||||
|
||||
def get_bridges(self):
|
||||
return [iface for iface in self.network_devices.keys()
|
||||
return [iface for iface in self.info
|
||||
if self.iface_is_bridge(iface)]
|
||||
|
||||
def get_hw_addr(self, iface):
|
||||
|
|
Loading…
Reference in New Issue