Merge pull request #162 from CanonicalLtd/mwhudson/link-status

Indicate if a wired interface is connected or not
This commit is contained in:
Michael Hudson-Doyle 2016-09-20 13:12:58 +12:00 committed by GitHub
commit f031e71162
3 changed files with 25 additions and 11 deletions

View File

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

View File

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

View File

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