Dan Bungert has proposed merging ~dbungert/curtin:partition-show-path into curtin:master.
Commit message: block: output partition device path reconstructing this later is non-trivial for some devices Requested reviews: curtin developers (curtin-dev) For more details, see: https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/412878 -- Your team curtin developers is requested to review the proposed merge of ~dbungert/curtin:partition-show-path into curtin:master.
diff --git a/curtin/block/schemas.py b/curtin/block/schemas.py index 84a5279..0a6e305 100644 --- a/curtin/block/schemas.py +++ b/curtin/block/schemas.py @@ -284,6 +284,10 @@ PARTITION = { 'properties': { 'id': {'$ref': '#/definitions/id'}, 'multipath': {'type': 'string'}, + # Permit path to device as output. + # This value is ignored for input. + 'path': {'type': 'string', + 'pattern': _path_dev}, 'name': {'$ref': '#/definitions/name'}, 'offset': {'$ref': '#/definitions/size'}, # XXX: This is not used 'preserve': {'$ref': '#/definitions/preserve'}, diff --git a/curtin/storage_config.py b/curtin/storage_config.py index 405a1e2..11735fa 100644 --- a/curtin/storage_config.py +++ b/curtin/storage_config.py @@ -753,6 +753,8 @@ class BlockdevParser(ProbertParser): return entry if entry['type'] == 'partition': + if devname: + entry['path'] = devname attrs = blockdev_data['attrs'] if self.is_mpath_partition(blockdev_data): entry['number'] = int(blockdev_data['DM_PART']) diff --git a/tests/unittests/test_storage_config.py b/tests/unittests/test_storage_config.py index a2308c4..b3f6473 100644 --- a/tests/unittests/test_storage_config.py +++ b/tests/unittests/test_storage_config.py @@ -285,7 +285,7 @@ class TestBlockdevParser(CiTestCase): """ BlockdevParser skips invalid ID_WWN_* values. """ self.bdevp.blockdev_data['/dev/sda'] = { 'DEVTYPE': 'disk', - 'DEVNAME': 'sda', + 'DEVNAME': '/dev/sda', 'ID_SERIAL': 'Corsair_Force_GS_1785234921906', 'ID_SERIAL_SHORT': '1785234921906', 'ID_WWN': '0x0000000000000000', @@ -300,7 +300,7 @@ class TestBlockdevParser(CiTestCase): """ BlockdevParser skips invalid ID_SERIAL_* values. """ self.bdevp.blockdev_data['/dev/sda'] = { 'DEVTYPE': 'disk', - 'DEVNAME': 'sda', + 'DEVNAME': '/dev/sda', 'ID_SERIAL': ' ', 'ID_SERIAL_SHORT': 'My Serial is My PassPort', } @@ -345,6 +345,7 @@ class TestBlockdevParser(CiTestCase): 'id': 'partition-sda1', 'type': 'partition', 'device': 'disk-sda', + 'path': '/dev/sda1', 'number': 1, 'offset': 1048576, 'size': 499122176, @@ -375,12 +376,12 @@ class TestBlockdevParser(CiTestCase): """ BlockdevParser ignores partition with zero start value.""" self.bdevp.blockdev_data['/dev/vda'] = { 'DEVTYPE': 'disk', - 'DEVNAME': 'vda', + 'DEVNAME': '/dev/vda', } test_value = { 'DEVTYPE': 'partition', 'MAJOR': "252", - 'DEVNAME': 'vda1', + 'DEVNAME': '/dev/vda1', "DEVPATH": "/devices/pci0000:00/0000:00:04.0/virtio0/block/vda/vda1", "ID_PART_ENTRY_TYPE": "0x0", @@ -390,6 +391,7 @@ class TestBlockdevParser(CiTestCase): 'id': 'partition-vda1', 'type': 'partition', 'device': 'disk-vda', + 'path': '/dev/vda1', 'number': 1, 'size': 784334848, } @@ -403,7 +405,8 @@ class TestBlockdevParser(CiTestCase): # XXX: Parameterize me def test_blockdev_to_id_raises_valueerror_on_empty_devtype(self): - test_value = {'DEVTYPE': '', 'DEVNAME': 'bar', 'DEVPATH': 'foobar'} + test_value = {'DEVTYPE': '', 'DEVNAME': '/dev/bar', + 'DEVPATH': 'foobar'} with self.assertRaises(ValueError): self.bdevp.blockdev_to_id(test_value) @@ -415,7 +418,7 @@ class TestBlockdevParser(CiTestCase): # XXX: Parameterize me def test_blockdev_to_id_raises_valueerror_on_missing_devtype(self): - test_value = {'DEVNAME': 'bar', 'DEVPATH': 'foobar'} + test_value = {'DEVNAME': '/dev/bar', 'DEVPATH': 'foobar'} with self.assertRaises(ValueError): self.bdevp.blockdev_to_id(test_value) @@ -427,6 +430,7 @@ class TestBlockdevParser(CiTestCase): expected_dict = { 'id': 'partition-vda2', 'type': 'partition', + 'path': '/dev/vda2', 'device': 'disk-vda', 'number': 2, 'offset': 3222274048, @@ -446,6 +450,7 @@ class TestBlockdevParser(CiTestCase): 'id': 'partition-vda5', 'type': 'partition', 'device': 'disk-vda', + 'path': '/dev/vda5', 'number': 5, 'offset': 3223322624, 'size': 2147483648, @@ -463,6 +468,7 @@ class TestBlockdevParser(CiTestCase): 'id': 'partition-vdb1', 'type': 'partition', 'device': 'disk-vdb', + 'path': '/dev/vdb1', 'number': 1, 'offset': 1048576, 'size': 536870912, @@ -480,6 +486,7 @@ class TestBlockdevParser(CiTestCase): 'id': 'partition-vda5', 'type': 'partition', 'device': 'disk-vda', + 'path': '/dev/vda5', 'number': 5, 'offset': 3223322624, 'size': 2147483648, @@ -536,6 +543,7 @@ class TestBlockdevParser(CiTestCase): blockdev = self.bdevp.blockdev_data['/dev/dm-2'] expected_dict = { 'device': 'mpath-disk-mpatha', + 'path': '/dev/dm-2', 'flag': 'linux', 'id': 'mpath-partition-mpatha-part2', 'multipath': 'mpatha', @@ -1011,6 +1019,7 @@ class TestExtractStorageConfig(CiTestCase): 'devices': ['partition-vdb1', 'partition-vdc1'], 'spare_devices': []}, raids[0]) self.assertEqual({'id': 'raid-md1p1', 'type': 'partition', + 'path': '/dev/md1p1', 'size': 4285530112, 'flag': 'linux', 'number': 1, 'device': 'raid-md1', 'offset': 1048576}, raid_partitions[0])
-- Mailing list: https://launchpad.net/~curtin-dev Post to : curtin-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~curtin-dev More help : https://help.launchpad.net/ListHelp