generalize the way screens are skipped when installing desktop
Also skip identity screen when installing neither server nor desktop (i.e. core).
This commit is contained in:
parent
f82067c50e
commit
f838fcabb3
|
@ -43,9 +43,21 @@ class SubiquityController(BaseController):
|
|||
# deprecated in favor of autoinstall_key.
|
||||
autoinstall_key_alias: Optional[str] = None
|
||||
|
||||
interactive_for_variants = None
|
||||
_active = True
|
||||
|
||||
def __init__(self, app):
|
||||
super().__init__(app)
|
||||
self.context.set('controller', self)
|
||||
if self.interactive_for_variants is not None:
|
||||
self.app.hub.subscribe(
|
||||
InstallerChannels.INSTALL_CONFIRMED, self._confirmed)
|
||||
|
||||
async def _confirmed(self):
|
||||
variant = self.app.base_model.source.current.variant
|
||||
if variant not in self.interactive_for_variants:
|
||||
await self.configured()
|
||||
self._active = False
|
||||
|
||||
def setup_autoinstall(self):
|
||||
if not self.app.autoinstall_config:
|
||||
|
@ -89,18 +101,19 @@ class SubiquityController(BaseController):
|
|||
|
||||
def interactive(self):
|
||||
if not self.app.autoinstall_config:
|
||||
return True
|
||||
return self._active
|
||||
i_sections = self.app.autoinstall_config.get(
|
||||
'interactive-sections', [])
|
||||
|
||||
if "*" in i_sections:
|
||||
return True
|
||||
return self._active
|
||||
|
||||
if self.autoinstall_key in i_sections:
|
||||
return True
|
||||
return self._active
|
||||
|
||||
return (self.autoinstall_key_alias is not None
|
||||
and self.autoinstall_key_alias in i_sections)
|
||||
if self.autoinstall_key_alias is not None \
|
||||
and self.autoinstall_key_alias in i_sections:
|
||||
return self._active
|
||||
|
||||
async def configured(self):
|
||||
"""Let the world know that this controller's model is now configured.
|
||||
|
|
|
@ -62,6 +62,8 @@ class IdentityController(SubiquityController):
|
|||
'additionalProperties': False,
|
||||
}
|
||||
|
||||
interactive_for_variants = {'desktop', 'server'}
|
||||
|
||||
def __init__(self, app):
|
||||
super().__init__(app)
|
||||
core_reserved_path = resource_path("reserved-usernames")
|
||||
|
|
|
@ -160,6 +160,8 @@ class SnapListController(SubiquityController):
|
|||
}
|
||||
model_name = "snaplist"
|
||||
|
||||
interactive_for_variants = {'server'}
|
||||
|
||||
def _make_loader(self):
|
||||
return SnapdSnapInfoLoader(
|
||||
self.model, self.app.snapd, self.opts.snap_section,
|
||||
|
@ -170,20 +172,6 @@ class SnapListController(SubiquityController):
|
|||
self.loader = self._make_loader()
|
||||
self.app.hub.subscribe(
|
||||
InstallerChannels.SNAPD_NETWORK_CHANGE, self.snapd_network_changed)
|
||||
self.app.hub.subscribe(
|
||||
InstallerChannels.INSTALL_CONFIRMED, self._confirmed)
|
||||
self._active = True
|
||||
|
||||
async def _confirmed(self):
|
||||
if self.app.base_model.source.current.variant == 'desktop':
|
||||
await self.configured()
|
||||
self._active = False
|
||||
self.loader.stop()
|
||||
|
||||
def interactive(self):
|
||||
if super().interactive():
|
||||
return self._active
|
||||
return False
|
||||
|
||||
def load_autoinstall_data(self, ai_data):
|
||||
to_install = []
|
||||
|
|
|
@ -29,7 +29,6 @@ from subiquity.server.ssh import (
|
|||
SSHKeyFetcher,
|
||||
DryRunSSHKeyFetcher,
|
||||
)
|
||||
from subiquity.server.types import InstallerChannels
|
||||
|
||||
log = logging.getLogger('subiquity.server.controllers.ssh')
|
||||
|
||||
|
@ -51,26 +50,15 @@ class SSHController(SubiquityController):
|
|||
},
|
||||
}
|
||||
|
||||
interactive_for_variants = {'server'}
|
||||
|
||||
def __init__(self, app):
|
||||
super().__init__(app)
|
||||
self.app.hub.subscribe(
|
||||
InstallerChannels.INSTALL_CONFIRMED, self._confirmed)
|
||||
self._active = True
|
||||
if app.opts.dry_run:
|
||||
self.fetcher = DryRunSSHKeyFetcher(app)
|
||||
else:
|
||||
self.fetcher = SSHKeyFetcher(app)
|
||||
|
||||
async def _confirmed(self):
|
||||
if self.app.base_model.source.current.variant == 'desktop':
|
||||
await self.configured()
|
||||
self._active = False
|
||||
|
||||
def interactive(self):
|
||||
if super().interactive():
|
||||
return self._active
|
||||
return False
|
||||
|
||||
def load_autoinstall_data(self, data):
|
||||
if data is None:
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue