show error message from netplan generate when it fails

This commit is contained in:
Michael Hudson-Doyle 2016-11-08 10:39:54 +13:00
parent 8a44befe2a
commit a7bfef3646
3 changed files with 9 additions and 10 deletions

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
subiquity (0.0.24) UNRELEASED; urgency=medium
subiquity (0.0.24~ppa2) xenial; urgency=medium
* Rework network model and UI significantly.

View File

@ -70,7 +70,7 @@ class BackgroundProcess(BackgroundTask):
if result['status'] == 0:
observer.task_succeeded()
else:
observer.task_failed()
observer.task_failed(result['err'])
def cancel(self):
if self.proc is None:
@ -188,10 +188,10 @@ class TaskSequence:
else:
self._run1()
def task_failed(self):
def task_failed(self, info=None):
if self.canceled:
return
self.call_from_thread(self.watcher.task_error, self.stage)
self.call_from_thread(self.watcher.task_error, self.stage, info)
def view(func):
@ -390,7 +390,7 @@ class NetworkController(BaseController):
if os.path.exists('/lib/netplan/generate'):
# If netplan appears to be installed, run generate to at
# least test that what we wrote is acceptable to netplan.
tasks.append(('gen', BackgroundProcess(['netplan', 'generate', '--root', self.root])))
tasks.append(('generate', BackgroundProcess(['netplan', 'generate', '--root', self.root])))
if not self.tried_once:
tasks.append(('fail', WaitForDefaultRouteTask(30, self.observer)))
tasks.append(('fail', BackgroundProcess(['false'])))
@ -414,9 +414,9 @@ class NetworkController(BaseController):
def task_complete(self, stage):
self.acw.advance()
def task_error(self, stage):
def task_error(self, stage, info=None):
self.ui.frame.body.remove_overlay(self.acw)
self.ui.frame.body.show_network_error(stage)
self.ui.frame.body.show_network_error(stage, info)
def tasks_finished(self):
self.signal.emit_signal('next-screen')

View File

@ -272,10 +272,9 @@ class NetworkView(BaseView):
log.debug("Selected network dev: {}".format(result.label))
self.controller.network_configure_interface(result.label)
def show_network_error(self, action):
def show_network_error(self, action, info=None):
if action == 'generate':
self.error.set_text("Network configuration failed; " + \
"please verify your settings.")
self.error.set_text("Network configuration failed: %r" % (info,))
elif action == 'apply':
self.error.set_text("Network configuration could not be applied; " + \
"please verify your settings.")