diff options
-rw-r--r-- | tests/unittests/test_ds_identify.py | 24 | ||||
-rwxr-xr-x | tools/ds-identify | 11 |
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py index 31cc6223..03942de0 100644 --- a/tests/unittests/test_ds_identify.py +++ b/tests/unittests/test_ds_identify.py @@ -359,6 +359,14 @@ class TestDsIdentify(CiTestCase): """NoCloud is found with iso9660 filesystem on non-cdrom disk.""" self._test_ds_found('NoCloud') + def test_nocloud_seed(self): + """Nocloud seed directory.""" + self._test_ds_found('NoCloud-seed') + + def test_nocloud_seed_ubuntu_core_writable(self): + """Nocloud seed directory ubuntu core writable""" + self._test_ds_found('NoCloud-seed-ubuntu-core') + def blkid_out(disks=None): """Convert a list of disk dictionaries into blkid content.""" @@ -454,6 +462,22 @@ VALID_CFG = { 'dev/vdb': 'pretend iso content for cidata\n', } }, + 'NoCloud-seed': { + 'ds': 'NoCloud', + 'files': { + os.path.join(P_SEED_DIR, 'nocloud', 'user-data'): 'ud\n', + os.path.join(P_SEED_DIR, 'nocloud', 'meta-data'): 'md\n', + } + }, + 'NoCloud-seed-ubuntu-core': { + 'ds': 'NoCloud', + 'files': { + os.path.join('writable/system-data', P_SEED_DIR, + 'nocloud-net', 'user-data'): 'ud\n', + os.path.join('writable/system-data', P_SEED_DIR, + 'nocloud-net', 'meta-data'): 'md\n', + } + }, 'OpenStack': { 'ds': 'OpenStack', 'files': {P_PRODUCT_NAME: 'OpenStack Nova\n'}, diff --git a/tools/ds-identify b/tools/ds-identify index cd268242..5f762438 100755 --- a/tools/ds-identify +++ b/tools/ds-identify @@ -470,6 +470,16 @@ check_seed_dir() { return 0 } +check_writable_seed_dir() { + # ubuntu core bind-mounts /writable/system-data/var/lib/cloud + # over the top of /var/lib/cloud, but the mount might not be done yet. + local wdir="/writable/system-data" + [ -d "${PATH_ROOT}$wdir" ] || return 1 + local sdir="${PATH_ROOT}$wdir${PATH_VAR_LIB_CLOUD#${PATH_ROOT}}" + local PATH_VAR_LIB_CLOUD="$sdir" + check_seed_dir "$@" +} + probe_floppy() { cached "${STATE_FLOPPY_PROBED}" && return "${STATE_FLOPPY_PROBED}" local fpath=/dev/floppy @@ -569,6 +579,7 @@ dscheck_NoCloud() { esac for d in nocloud nocloud-net; do check_seed_dir "$d" meta-data user-data && return ${DS_FOUND} + check_writable_seed_dir "$d" meta-data user-data && return ${DS_FOUND} done if has_fs_with_label "${fslabel}"; then return ${DS_FOUND} |