Merge pull request #790 from mwhudson/datasource-None

use the "None" datasource for on-first-boot configuration
This commit is contained in:
Michael Hudson-Doyle 2020-06-16 14:14:45 +12:00 committed by GitHub
commit 34acb8e7da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 7 deletions

View File

@ -10,11 +10,18 @@ config = yaml.safe_load(open(sys.argv[1]))
def main():
for arg in sys.argv[2:]:
k, expected = arg.split('=', 1)
expected = yaml.safe_load(expected)
if '=' in arg:
k, expected = arg.split('=', 1)
expected = yaml.safe_load(expected)
else:
k, expected = arg, None
v = config
for part in k.split('.'):
v = v[part]
assert v == expected, "{!r} != {!r}".format(v, expected)
if expected is None:
print(v)
else:
assert v == expected, "{!r} != {!r}".format(v, expected)
main()

View File

@ -41,7 +41,7 @@ timeout --foreground 60 sh -c "LANG=C.UTF-8 python3 -m subiquity.cmd.tui --autoi
validate
python3 scripts/check-yaml-fields.py .subiquity/subiquity-curtin-install.conf \
debconf_selections.subiquity='"eek"'
python3 scripts/check-yaml-fields.py .subiquity/var/lib/cloud/seed/nocloud-net/user-data \
python3 scripts/check-yaml-fields.py <(python3 scripts/check-yaml-fields.py .subiquity/etc/cloud/cloud.cfg.d/99-installer.cfg datasource.None.userdata_raw) \
locale='"en_GB.UTF-8"'
grep -q 'finish: subiquity/InstallProgress/install/postinstall/install_package1: SUCCESS: installing package1' \
.subiquity/subiquity-debug.log

View File

@ -203,10 +203,18 @@ class SubiquityModel:
# for subsequent boots.
# (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())})
metadata = {'instance-id': str(uuid.uuid4())}
config = yaml.dump({
'datasource_list': ["None"],
'datasource': {
"None": {
'userdata_raw': userdata,
'metadata': metadata,
},
},
})
files = [
('var/lib/cloud/seed/nocloud-net/meta-data', metadata, 0o644),
('var/lib/cloud/seed/nocloud-net/user-data', userdata, 0o600),
('etc/cloud/cloud.cfg.d/99-installer.cfg', config, 0o600),
('etc/cloud/ds-identify.cfg', 'policy: enabled\n', 0o644),
]
if self.identity.hostname is not None: