be more systematic about when to start postinstall configuration

This commit is contained in:
Michael Hudson-Doyle 2018-12-13 15:50:00 +13:00
parent 8cfca35e9c
commit ad1a0092f3
3 changed files with 21 additions and 16 deletions

View File

@ -49,4 +49,5 @@ class IdentityController(BaseController):
safe_spec['password'] = '<REDACTED>'
log.debug("User input: {}".format(safe_spec))
self.model.add_user(user_spec)
self.signal.emit_signal('installprogress:identity-config-done')
self.signal.emit_signal('next-screen')

View File

@ -102,6 +102,7 @@ class InstallProgressController(BaseController):
signals = [
('installprogress:filesystem-config-done', 'filesystem_config_done'),
('installprogress:identity-config-done', 'identity_config_done'),
('installprogress:ssh-config-done', 'ssh_config_done'),
('installprogress:snap-config-done', 'snap_config_done'),
]
@ -113,8 +114,12 @@ class InstallProgressController(BaseController):
self.progress_view_showing = False
self.install_state = InstallState.NOT_STARTED
self.journal_listener_handle = None
self._identity_config_done = False
self._snap_config_done = False
self._postinstall_prerequisites = {
'install': False,
'ssh': False,
'identity': False,
'snap': False,
}
self._event_indent = ""
self._event_syslog_identifier = 'curtin_event.%s' % (os.getpid(),)
self._log_syslog_identifier = 'curtin_log.%s' % (os.getpid(),)
@ -122,19 +127,19 @@ class InstallProgressController(BaseController):
def filesystem_config_done(self):
self.curtin_start_install()
def _step_done(self, step):
self._postinstall_prerequisites[step] = True
if all(self._postinstall_prerequisites.values()):
self.start_postinstall_configuration()
def identity_config_done(self):
if self.install_state == InstallState.DONE and \
self._snap_config_done:
self.postinstall_configuration()
else:
self._identity_config_done = True
self._step_done('identity')
def ssh_config_done(self):
self._step_done('ssh')
def snap_config_done(self):
if self.install_state == InstallState.DONE and \
self._identity_config_done:
self.postinstall_configuration()
else:
self._snap_config_done = True
self._step_done('snap')
def curtin_error(self):
log.debug('curtin_error')
@ -266,8 +271,7 @@ class InstallProgressController(BaseController):
else:
# Re-set footer so progress bar updates.
self.ui.set_footer(_("Thank you for using Ubuntu!"))
if self._identity_config_done:
self.postinstall_configuration()
self._step_done('install')
def cancel(self):
pass
@ -300,7 +304,7 @@ class InstallProgressController(BaseController):
]
self._bg_run_command_logged(cmd)
def postinstall_configuration(self):
def start_postinstall_configuration(self):
self.copy_logs_to_target()
class w(TaskWatcher):

View File

@ -124,5 +124,5 @@ class SSHController(BaseController):
self.model.authorized_keys = result.get('authorized_keys', [])
self.model.pwauth = result.get('pwauth', True)
self.model.ssh_import_id = result.get('ssh_import_id', None)
self.signal.emit_signal('installprogress:identity-config-done')
self.signal.emit_signal('installprogress:ssh-config-done')
self.signal.emit_signal('next-screen')