summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGonéri Le Bouder <goneri@lebouder.net>2021-12-09 17:46:27 -0500
committerGitHub <noreply@github.com>2021-12-09 16:46:27 -0600
commit24739592217e5ba91e09e8c28b852d31a2c0cc77 (patch)
tree7532f470d01e580805a5c829986ae4949f3b5064
parentb591e9dba6c85f3934bc309032c3e436b8dcb3ac (diff)
downloadvyos-cloud-init-24739592217e5ba91e09e8c28b852d31a2c0cc77.tar.gz
vyos-cloud-init-24739592217e5ba91e09e8c28b852d31a2c0cc77.zip
find_devs/openbsd: accept ISO on disk (#1132)
When the metadata is an ISO image and is exposed through a disk, the device is called `/dev/sd?a` internally. For instance `/dev/sd1a`. It can then be mounted with `mount_cd9660 /dev/sd1a /mnt`. Metadata in the FAT32 format are exposed as `/dev/sd?i`. With this change, we try to mount `/dev/sd?a` in addition to `/dev/sd?i`. Closes: https://github.com/ContainerCraft/kmi/issues/12
-rw-r--r--cloudinit/util.py5
-rw-r--r--tests/unittests/test_util.py4
2 files changed, 5 insertions, 4 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py
index d7208f11..b9c584d1 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -1217,8 +1217,9 @@ def find_devs_with_openbsd(criteria=None, oformat='device',
continue
if entry == 'fd0:':
continue
- part_id = 'a' if entry.startswith('cd') else 'i'
- devlist.append(entry[:-1] + part_id)
+ devlist.append(entry[:-1] + 'a')
+ if not entry.startswith('cd'):
+ devlist.append(entry[:-1] + 'i')
if criteria == "TYPE=iso9660":
devlist = [i for i in devlist if i.startswith('cd')]
elif criteria in ["LABEL=CONFIG-2", "TYPE=vfat"]:
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py
index eab374bc..c551835f 100644
--- a/tests/unittests/test_util.py
+++ b/tests/unittests/test_util.py
@@ -2330,7 +2330,7 @@ class TestFindDevs:
def test_find_devs_with_openbsd(self, m_subp):
m_subp.return_value = ('cd0:,sd0:630d98d32b5d3759,sd1:,fd0:', '')
devlist = util.find_devs_with_openbsd()
- assert devlist == ['/dev/cd0a', '/dev/sd1i']
+ assert devlist == ['/dev/cd0a', '/dev/sd1a', '/dev/sd1i']
@mock.patch('cloudinit.subp.subp')
def test_find_devs_with_openbsd_with_criteria(self, m_subp):
@@ -2340,7 +2340,7 @@ class TestFindDevs:
# lp: #1841466
devlist = util.find_devs_with_openbsd(criteria="LABEL_FATBOOT=A_LABEL")
- assert devlist == ['/dev/cd0a', '/dev/sd1i']
+ assert devlist == ['/dev/cd0a', '/dev/sd1a', '/dev/sd1i']
@pytest.mark.parametrize(
'criteria,expected_devlist',