pep8 fixes for subiquitycore.controllers.network

This commit is contained in:
Ryan Harper 2018-05-21 15:51:58 -05:00
parent b7e60f7b91
commit f2715a4735
1 changed files with 63 additions and 22 deletions

View File

@ -55,7 +55,8 @@ class DownNetworkDevices(BackgroundTask):
self.devs_to_down = devs_to_down self.devs_to_down = devs_to_down
def __repr__(self): def __repr__(self):
return 'DownNetworkDevices(%s)'%([dev.name for dev in self.devs_to_down],) return 'DownNetworkDevices(%s)' % ([dev.name for dev in
self.devs_to_down],)
def start(self): def start(self):
for dev in self.devs_to_down: for dev in self.devs_to_down:
@ -83,7 +84,7 @@ class WaitForDefaultRouteTask(CancelableTask):
self.event_receiver = event_receiver self.event_receiver = event_receiver
def __repr__(self): def __repr__(self):
return 'WaitForDefaultRouteTask(%r)'%(self.timeout,) return 'WaitForDefaultRouteTask(%r)' % (self.timeout,)
def got_route(self): def got_route(self):
os.write(self.success_w, b'x') os.write(self.success_w, b'x')
@ -95,7 +96,8 @@ class WaitForDefaultRouteTask(CancelableTask):
def _bg_run(self): def _bg_run(self):
try: try:
r, _, _ = select.select([self.fail_r, self.success_r], [], [], self.timeout) r, _, _ = select.select([self.fail_r, self.success_r], [], [],
self.timeout)
return self.success_r in r return self.success_r in r
finally: finally:
os.close(self.fail_r) os.close(self.fail_r)
@ -177,6 +179,7 @@ network:
password: password password: password
''' '''
class NetworkController(BaseController, TaskWatcher): class NetworkController(BaseController, TaskWatcher):
signals = [ signals = [
('menu:network:main:set-default-v4-route', 'set_default_v4_route'), ('menu:network:main:set-default-v4-route', 'set_default_v4_route'),
@ -203,7 +206,8 @@ class NetworkController(BaseController, TaskWatcher):
self.model.parse_netplan_configs(self.root) self.model.parse_netplan_configs(self.root)
self.network_event_receiver = SubiquityNetworkEventReceiver(self.model) self.network_event_receiver = SubiquityNetworkEventReceiver(self.model)
self.observer, fds = self.prober.probe_network(self.network_event_receiver) self.observer, fds = (
self.prober.probe_network(self.network_event_receiver))
for fd in fds: for fd in fds:
self.loop.watch_file(fd, partial(self._data_ready, fd)) self.loop.watch_file(fd, partial(self._data_ready, fd))
@ -211,7 +215,7 @@ class NetworkController(BaseController, TaskWatcher):
cp = run_command(['udevadm', 'settle', '-t', '0']) cp = run_command(['udevadm', 'settle', '-t', '0'])
if cp.returncode != 0: if cp.returncode != 0:
log.debug("waiting 0.1 to let udev event queue settle") log.debug("waiting 0.1 to let udev event queue settle")
self.loop.set_alarm_in(0.1, lambda loop, ud:self._data_ready(fd)) self.loop.set_alarm_in(0.1, lambda loop, ud: self._data_ready(fd))
return return
self.observer.data_ready(fd) self.observer.data_ready(fd)
v = self.ui.frame.body v = self.ui.frame.body
@ -225,6 +229,14 @@ class NetworkController(BaseController, TaskWatcher):
self.signal.emit_signal('prev-screen') self.signal.emit_signal('prev-screen')
def default(self): def default(self):
title = _("Network connections")
excerpt = _("Configure at least one interface this server can use to "
"talk to other machines, and which preferably provides "
"sufficient access for updates.")
footer = _("Select an interface to configure it or select Done to "
"continue")
self.ui.set_header(title, excerpt)
self.ui.set_footer(footer)
self.ui.set_body(NetworkView(self.model, self)) self.ui.set_body(NetworkView(self.model, self))
if self.answers.get('accept-default', False): if self.answers.get('accept-default', False):
self.network_finish(self.model.render()) self.network_finish(self.model.render())
@ -238,20 +250,23 @@ class NetworkController(BaseController, TaskWatcher):
return os.path.join(self.root, 'etc/netplan', netplan_config_file_name) return os.path.join(self.root, 'etc/netplan', netplan_config_file_name)
def network_finish(self, config): def network_finish(self, config):
log.debug("network config: \n%s", yaml.dump(sanitize_config(config), default_flow_style=False)) log.debug("network config: \n%s",
yaml.dump(sanitize_config(config), default_flow_style=False))
netplan_path = self.netplan_path netplan_path = self.netplan_path
while True: while True:
try: try:
tmppath = '%s.%s' % (netplan_path, random.randrange(0, 1000)) tmppath = '%s.%s' % (netplan_path, random.randrange(0, 1000))
fd = os.open(tmppath, os.O_WRONLY | os.O_EXCL | os.O_CREAT, 0o0600) fd = os.open(tmppath,
os.O_WRONLY | os.O_EXCL | os.O_CREAT, 0o0600)
except FileExistsError: except FileExistsError:
continue continue
else: else:
break break
w = os.fdopen(fd, 'w') w = os.fdopen(fd, 'w')
with w: with w:
w.write("# This is the network config written by '{}'\n".format(self.opts.project)) w.write("# This is the network config written by "
"'%s'\n" % (self.opts.project))
w.write(yaml.dump(config)) w.write(yaml.dump(config))
os.rename(tmppath, netplan_path) os.rename(tmppath, netplan_path)
self.model.parse_netplan_configs(self.root) self.model.parse_netplan_configs(self.root)
@ -264,25 +279,36 @@ class NetworkController(BaseController, TaskWatcher):
if os.path.exists('/lib/netplan/generate'): if os.path.exists('/lib/netplan/generate'):
# If netplan appears to be installed, run generate to at # If netplan appears to be installed, run generate to at
# least test that what we wrote is acceptable to netplan. # least test that what we wrote is acceptable to netplan.
tasks.append(('generate', BackgroundProcess(['netplan', 'generate', '--root', self.root]))) tasks.append(('generate',
BackgroundProcess(['netplan', 'generate',
'--root', self.root])))
if not self.tried_once: if not self.tried_once:
tasks.append(('timeout', WaitForDefaultRouteTask(3, self.network_event_receiver))) tasks.append(
('timeout',
WaitForDefaultRouteTask(3, self.network_event_receiver))
)
tasks.append(('fail', BackgroundProcess(['false']))) tasks.append(('fail', BackgroundProcess(['false'])))
self.tried_once = True self.tried_once = True
else: else:
devs_to_down = [] devs_to_down = []
for dev in self.model.get_all_netdevs(): for dev in self.model.get_all_netdevs():
if dev._configuration != self.model.config.config_for_device(dev._net_info): devcfg = self.model.config.config_for_device(dev._net_info)
if dev._configuration != devcfg:
devs_to_down.append(dev) devs_to_down.append(dev)
tasks = [] tasks = []
if devs_to_down: if devs_to_down:
tasks.extend([ tasks.extend([
('stop-networkd', BackgroundProcess(['systemctl', 'stop', 'systemd-networkd.service'])), ('stop-networkd',
('down', DownNetworkDevices(self.observer.rtlistener, devs_to_down)), BackgroundProcess(['systemctl',
'stop', 'systemd-networkd.service'])),
('down',
DownNetworkDevices(self.observer.rtlistener,
devs_to_down)),
]) ])
tasks.extend([ tasks.extend([
('apply', BackgroundProcess(['netplan', 'apply'])), ('apply', BackgroundProcess(['netplan', 'apply'])),
('timeout', WaitForDefaultRouteTask(30, self.network_event_receiver)), ('timeout',
WaitForDefaultRouteTask(30, self.network_event_receiver)),
]) ])
def cancel(): def cancel():
@ -308,29 +334,44 @@ class NetworkController(BaseController, TaskWatcher):
self.signal.emit_signal('next-screen') self.signal.emit_signal('next-screen')
def set_default_v4_route(self): def set_default_v4_route(self):
#self.ui.set_header("Default route") self.ui.set_header("Default route")
self.ui.set_body(NetworkSetDefaultRouteView(self.model, socket.AF_INET, self)) self.ui.set_body(
NetworkSetDefaultRouteView(self.model, socket.AF_INET, self))
def set_default_v6_route(self): def set_default_v6_route(self):
#self.ui.set_header("Default route") self.ui.set_header("Default route")
self.ui.set_body(NetworkSetDefaultRouteView(self.model, socket.AF_INET6, self)) self.ui.set_body(
NetworkSetDefaultRouteView(self.model, socket.AF_INET6, self))
def bond_interfaces(self): def bond_interfaces(self):
#self.ui.set_header("Bond interfaces") #self.ui.set_header("Bond interfaces")
self.ui.set_body(NetworkBondInterfacesView(self.model, self)) self.ui.set_body(NetworkBondInterfacesView(self.model, self))
def network_configure_interface(self, iface): def network_configure_interface(self, iface):
self.ui.set_body(NetworkConfigureInterfaceView(self.model, self, iface)) self.ui.set_header(_("Network interface {}").format(iface))
self.ui.set_footer("")
self.ui.set_body(
NetworkConfigureInterfaceView(self.model, self, iface))
def network_configure_ipv4_interface(self, iface): def network_configure_ipv4_interface(self, iface):
self.ui.set_body(NetworkConfigureIPv4InterfaceView(self.model, self, iface)) self.ui.set_header(_(
"Network interface {} manual IPv4 configuration").format(iface))
self.ui.set_footer("")
self.ui.set_body(
NetworkConfigureIPv4InterfaceView(self.model, self, iface))
def network_configure_wlan_interface(self, iface): def network_configure_wlan_interface(self, iface):
self.ui.set_header(_(
"Network interface {} WIFI configuration").format(iface))
self.ui.set_footer("")
self.ui.set_body(NetworkConfigureWLANView(self.model, self, iface)) self.ui.set_body(NetworkConfigureWLANView(self.model, self, iface))
def network_configure_ipv6_interface(self, iface): def network_configure_ipv6_interface(self, iface):
self.ui.set_body(NetworkConfigureIPv6InterfaceView(self.model, self, iface)) self.ui.set_header(_(
"Network interface {} manual IPv6 configuration").format(iface))
self.ui.set_footer("")
self.ui.set_body(
NetworkConfigureIPv6InterfaceView(self.model, self, iface))
def install_network_driver(self): def install_network_driver(self):
self.ui.set_body(DummyView(self)) self.ui.set_body(DummyView(self))