From e91f8bbf89d1fcb797ce050a3caefe8aa115ee7e Mon Sep 17 00:00:00 2001 From: Michael Hudson-Doyle Date: Sun, 19 Apr 2020 21:44:09 +1200 Subject: [PATCH] fix for omitting identity section when passing user-data --- examples/autoinstall-user-data.yaml | 19 +++++++++++++++++++ scripts/runtests.sh | 5 +++++ subiquity/controllers/identity.py | 2 ++ subiquity/models/subiquity.py | 12 ++++++++---- 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 examples/autoinstall-user-data.yaml diff --git a/examples/autoinstall-user-data.yaml b/examples/autoinstall-user-data.yaml new file mode 100644 index 00000000..961aad37 --- /dev/null +++ b/examples/autoinstall-user-data.yaml @@ -0,0 +1,19 @@ +version: 1 +early-commands: + - echo a + - sleep 1 + - echo a +debconf-selections: eek +packages: + - package1 + - package2 +late-commands: + - echo a + - sleep 1 + - echo a +keyboard: + layout: gb +user-data: + users: + - username: ubuntu + password: '$6$wdAcoXrU039hKYPd$508Qvbe7ObUnxoj15DRCkzC3qO7edjH0VV7BPNRDYK4QR8ofJaEEF2heacn0QgD.f8pO8SNp83XNdWG6tocBM1' diff --git a/scripts/runtests.sh b/scripts/runtests.sh index 6004f10c..b1cc28fd 100755 --- a/scripts/runtests.sh +++ b/scripts/runtests.sh @@ -32,3 +32,8 @@ grep 'finish: subiquity/InstallProgress/postinstall/install_package1: SUCCESS: i .subiquity/subiquity-debug.log grep 'finish: subiquity/InstallProgress/postinstall/install_package2: SUCCESS: installing package2' \ .subiquity/subiquity-debug.log + +timeout --foreground 60 sh -c "LANG=C.UTF-8 python3 -m subiquity.cmd.tui --autoinstall examples/autoinstall-user-data.yaml \ + --dry-run --machine-config examples/simple.json \ + --kernel-cmdline 'autoinstall console=\"${TTY#/dev/}\"'" +python3 scripts/validate-yaml.py .subiquity/subiquity-curtin-install.conf diff --git a/subiquity/controllers/identity.py b/subiquity/controllers/identity.py index 8490c0be..64bd8d1a 100644 --- a/subiquity/controllers/identity.py +++ b/subiquity/controllers/identity.py @@ -73,6 +73,8 @@ class IdentityController(SubiquityController): self.app.next_screen() def make_autoinstall(self): + if self.model.user is None: + return {} r = attr.asdict(self.model.user) r['hostname'] = self.model.hostname return r diff --git a/subiquity/models/subiquity.py b/subiquity/models/subiquity.py index f8f3bf17..d3769b5e 100644 --- a/subiquity/models/subiquity.py +++ b/subiquity/models/subiquity.py @@ -202,14 +202,18 @@ class SubiquityModel: # (mwhudson does not entirely know what the above means!) userdata = '#cloud-config\n' + yaml.dump(self._cloud_init_config()) metadata = yaml.dump({'instance-id': str(uuid.uuid4())}) - hostname = self.identity.hostname.strip() - return [ + files = [ ('var/lib/cloud/seed/nocloud-net/meta-data', metadata, 0o644), ('var/lib/cloud/seed/nocloud-net/user-data', userdata, 0o600), ('etc/cloud/ds-identify.cfg', 'policy: enabled\n', 0o644), - ('etc/hostname', hostname + "\n", 0o644), - ('etc/hosts', HOSTS_CONTENT.format(hostname=hostname), 0o644), ] + if self.identity.hostname is not None: + hostname = self.identity.hostname.strip() + files.extend([ + ('etc/hostname', hostname + "\n", 0o644), + ('etc/hosts', HOSTS_CONTENT.format(hostname=hostname), 0o644), + ]) + return files def configure_cloud_init(self): for path, content, mode in self._cloud_init_files():