diff --git a/subiquitycore/models/network.py b/subiquitycore/models/network.py index 0eb9b3d9..f9e0bec1 100644 --- a/subiquitycore/models/network.py +++ b/subiquitycore/models/network.py @@ -17,7 +17,9 @@ import errno import ipaddress import logging import os + import netifaces + from subiquitycore.prober import make_network_info from subiquitycore.model import BaseModel from subiquitycore.utils import (read_sys_net, @@ -228,6 +230,9 @@ class Networkdev(): ip_info = self._get_ip_info() return ip_info['ip6_providers'] + def is_connected(self): + return self.probe_info.is_connected + def remove_networks(self): self.remove_ipv4_networks() self.remove_ipv6_networks() @@ -360,6 +365,7 @@ class NetworkModel(BaseModel): # --- Model Methods ---- def probe_network(self): log.debug('model calling prober.get_network()') + self.prober.probe() network_devices = self.prober.get_network_devices() self.network_routes = self.prober.get_network_routes() diff --git a/subiquitycore/prober.py b/subiquitycore/prober.py index 70f5c1e6..c59ea631 100644 --- a/subiquitycore/prober.py +++ b/subiquitycore/prober.py @@ -53,21 +53,23 @@ class Prober(): return data - def _probe_network(self): - if 'network' not in self.probe_data: - log.debug('get_network: no network in probe_data, fetching') - network = Network() - results = network.probe() - self.probe_data['network'] = {} - self.probe_data['network']['devices'] = results - self.probe_data['network']['routes'] = network.get_routes() + def probe(self): + network = Network() + results = network.probe() + self.probe_data['network'] = {} + self.probe_data['network']['devices'] = results + self.probe_data['network']['routes'] = network.get_routes() def get_network_devices(self): - self._probe_network() + if 'network' not in self.probe_data: + log.debug('get_network_devices: no network in probe_data, fetching') + self.probe() return self.probe_data['network']['devices'] def get_network_routes(self): - self._probe_network() + if 'network' not in self.probe_data: + log.debug('get_network_routes: no network in probe_data, fetching') + self.probe() return self.probe_data['network']['routes'] def get_network_info(self, device): diff --git a/subiquitycore/ui/views/network.py b/subiquitycore/ui/views/network.py index 84b7d24c..78b1c296 100644 --- a/subiquitycore/ui/views/network.py +++ b/subiquitycore/ui/views/network.py @@ -156,7 +156,13 @@ class NetworkView(BaseView): if ( not ip_status['dhcp4'] and not ip_status['dhcp6'] ) \ and len(ip_status['ipv4_addresses']) == 0 and \ len(ip_status['ipv6_addresses']) == 0: - template = "Not configured" + if interface.type == 'eth': + if interface.is_connected(): + template = "Not configured" + else: + template = "Not connected" + else: + template = "Not configured" if ip_status['dhcp4'] and ip_status['dhcp6'] and \ len(ip_status['ipv4_addresses']) == 0 and \