Dan Bungert has proposed merging ~dbungert/curtin:lp-2004609-swap-size-dropped into curtin:master.
Commit message: block/v1: handle msdos+swap Requested reviews: curtin developers (curtin-dev) For more details, see: https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/436862 -- Your team curtin developers is requested to review the proposed merge of ~dbungert/curtin:lp-2004609-swap-size-dropped into curtin:master.
diff --git a/curtin/commands/block_meta.py b/curtin/commands/block_meta.py index 74c491c..9ea543a 100644 --- a/curtin/commands/block_meta.py +++ b/curtin/commands/block_meta.py @@ -1097,9 +1097,13 @@ def partition_handler(info, storage_config, context): partition_type = flag else: partition_type = "primary" - cmd = ["parted", disk, "--script", "mkpart", partition_type, - "%ss" % offset_sectors, "%ss" % str(offset_sectors + - length_sectors)] + cmd = ["parted", disk, "--script", "mkpart", partition_type] + if flag == 'swap': + cmd.append("linux-swap") + cmd.extend(( + "%ss" % offset_sectors, + "%ss" % str(offset_sectors + length_sectors), + )) if flag == 'boot': cmd.extend(['set', str(partnumber), 'boot', 'on']) diff --git a/tests/integration/test_block_meta.py b/tests/integration/test_block_meta.py index 38b188a..ead1698 100644 --- a/tests/integration/test_block_meta.py +++ b/tests/integration/test_block_meta.py @@ -1230,3 +1230,16 @@ table-length: 256'''.encode() self.run_bm(config.render()) self.assertPartitions( PartData(number=1, offset=1 << 20, size=1 << 20)) + + @parameterized.expand(((1,), (2,))) + def test_swap(self, sv): + self.img = self.tmp_path('image.img') + config = StorageConfigBuilder(version=sv) + config.add_image(path=self.img, create=True, size='20M', + ptable='msdos') + config.add_part(number=1, offset=1 << 20, size=1 << 20, flag='swap') + self.run_bm(config.render()) + + self.assertPartitions( + PartData(number=1, offset=1 << 20, size=1 << 20, boot=False, + partition_type='82')) diff --git a/tests/unittests/test_commands_block_meta.py b/tests/unittests/test_commands_block_meta.py index 7067bc0..0c198e6 100644 --- a/tests/unittests/test_commands_block_meta.py +++ b/tests/unittests/test_commands_block_meta.py @@ -654,6 +654,62 @@ class TestBlockMeta(CiTestCase): 'mkpart', 'primary', '2048s', '1001471s', 'set', '1', 'boot', 'on'], capture=True)]) + def test_partition_handler_creates_swap(self): + """ Create a swap partition if the flag has requested as much """ + self.config = { + 'storage': { + 'version': 1, + 'config': [ + {'grub_device': True, + 'id': 'sda', + 'name': 'sda', + 'path': '/wark/xxx', + 'ptable': 'msdos', + 'type': 'disk', + 'wipe': 'superblock'}, + {'device': 'sda', + 'flag': 'swap', + 'id': 'sda-part1', + 'name': 'sda-part1', + 'number': 1, + 'offset': '4194304B', + 'size': '511705088B', + 'type': 'partition', + 'wipe': 'superblock'}, + {'id': 'sda1-root', + 'type': 'format', + 'fstype': 'swap', + 'volume': 'sda-part1'}, + ], + } + } + self.storage_config = ( + block_meta.extract_storage_ordered_dict(self.config)) + + disk_info = self.storage_config.get('sda') + part_info = self.storage_config.get('sda-part1') + disk_kname = disk_info.get('path') + part_kname = disk_kname + '1' + self.mock_getpath.side_effect = iter([ + disk_kname, + part_kname, + ]) + self.mock_block_get_part_table_type.return_value = 'dos' + kname = 'xxx' + self.mock_block_path_to_kname.return_value = kname + self.mock_block_sys_block_path.return_value = '/sys/class/block/xxx' + self.mock_block_sector_size.return_value = (512, 512) + + block_meta.partition_handler( + part_info, self.storage_config, empty_context) + part_offset = 2048 * 512 + self.mock_block_zero_file.assert_called_with(disk_kname, [part_offset], + exclusive=False) + self.mock_subp.assert_has_calls( + [call(['parted', disk_kname, '--script', + 'mkpart', 'primary', 'linux-swap', '2048s', '1001471s', + ], capture=True)]) + @patch('curtin.util.write_file') def test_mount_handler_defaults(self, mock_write_file): """Test mount_handler has defaults to 'defaults' for mount options"""
-- 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