From 5ed762d1523c8008b07d28d82acb2e9c41675ddb Mon Sep 17 00:00:00 2001 From: Rusty Bird Date: Mon, 22 Jun 2020 14:03:21 +0000 Subject: [PATCH] storage: clean up __init__() of Pool() and subclasses - Remove **kwargs - Make all arguments keyword-only - Use required arguments instead of asserts QubesOS/qubes-issues#5895 --- qubes/storage/__init__.py | 4 +--- qubes/storage/file.py | 5 ++--- qubes/storage/kernels.py | 3 +-- qubes/storage/lvm.py | 4 ++-- qubes/storage/reflink.py | 6 +++--- qubes/tests/storage.py | 4 ++-- qubes/tests/vm/appvm.py | 2 +- qubes/tests/vm/dispvm.py | 2 +- 8 files changed, 13 insertions(+), 17 deletions(-) diff --git a/qubes/storage/__init__.py b/qubes/storage/__init__.py index 1062a4c7..8b79f16e 100644 --- a/qubes/storage/__init__.py +++ b/qubes/storage/__init__.py @@ -716,12 +716,10 @@ class Pool: private_img_size = qubes.config.defaults['private_img_size'] root_img_size = qubes.config.defaults['root_img_size'] - def __init__(self, name, revisions_to_keep=1, **kwargs): - super().__init__(**kwargs) + def __init__(self, *, name, revisions_to_keep=1): self._volumes_collection = VolumesCollection(self) self.name = name self.revisions_to_keep = revisions_to_keep - kwargs['name'] = self.name def __eq__(self, other): if isinstance(other, Pool): diff --git a/qubes/storage/file.py b/qubes/storage/file.py index 339edd89..ee1b2738 100644 --- a/qubes/storage/file.py +++ b/qubes/storage/file.py @@ -52,9 +52,8 @@ class FilePool(qubes.storage.Pool): ''' # pylint: disable=protected-access driver = 'file' - def __init__(self, revisions_to_keep=1, dir_path=None, **kwargs): - super().__init__(revisions_to_keep=revisions_to_keep, **kwargs) - assert dir_path, "No pool dir_path specified" + def __init__(self, *, name, revisions_to_keep=1, dir_path): + super().__init__(name=name, revisions_to_keep=revisions_to_keep) self.dir_path = os.path.normpath(dir_path) self._volumes = [] diff --git a/qubes/storage/kernels.py b/qubes/storage/kernels.py index f6a7595a..3e178009 100644 --- a/qubes/storage/kernels.py +++ b/qubes/storage/kernels.py @@ -154,8 +154,7 @@ class LinuxKernel(Pool): ''' Provides linux kernels ''' driver = 'linux-kernel' - def __init__(self, name=None, dir_path=None): - assert dir_path, 'Missing dir_path' + def __init__(self, *, name, dir_path): super().__init__(name=name, revisions_to_keep=0) self.dir_path = dir_path diff --git a/qubes/storage/lvm.py b/qubes/storage/lvm.py index 81952abf..f0c1874e 100644 --- a/qubes/storage/lvm.py +++ b/qubes/storage/lvm.py @@ -80,8 +80,8 @@ class ThinPool(qubes.storage.Pool): driver = 'lvm_thin' - def __init__(self, volume_group, thin_pool, revisions_to_keep=1, **kwargs): - super().__init__(revisions_to_keep=revisions_to_keep, **kwargs) + def __init__(self, *, name, revisions_to_keep=1, volume_group, thin_pool): + super().__init__(name=name, revisions_to_keep=revisions_to_keep) self.volume_group = volume_group self.thin_pool = thin_pool self._pool_id = "{!s}/{!s}".format(volume_group, thin_pool) diff --git a/qubes/storage/reflink.py b/qubes/storage/reflink.py index cf9ae071..52ea6787 100644 --- a/qubes/storage/reflink.py +++ b/qubes/storage/reflink.py @@ -58,9 +58,9 @@ class ReflinkPool(qubes.storage.Pool): driver = 'file-reflink' _known_dir_path_prefixes = ['appvms', 'vm-templates'] - def __init__(self, dir_path, setup_check=True, revisions_to_keep=1, - **kwargs): - super().__init__(revisions_to_keep=revisions_to_keep, **kwargs) + def __init__(self, *, name, revisions_to_keep=1, + dir_path, setup_check=True): + super().__init__(name=name, revisions_to_keep=revisions_to_keep) self._setup_check = qubes.property.bool(None, None, setup_check) self._volumes = {} self.dir_path = os.path.abspath(dir_path) diff --git a/qubes/tests/storage.py b/qubes/tests/storage.py index fd58ae59..eaa345be 100644 --- a/qubes/tests/storage.py +++ b/qubes/tests/storage.py @@ -30,8 +30,8 @@ from qubes.tests import SystemTestCase, QubesTestCase class TestPool(unittest.mock.Mock): - def __init__(self, *args, **kwargs): - super(TestPool, self).__init__(*args, spec=qubes.storage.Pool, **kwargs) + def __init__(self, **kwargs): + super(TestPool, self).__init__(spec=qubes.storage.Pool, **kwargs) try: self.name = kwargs['name'] except KeyError: diff --git a/qubes/tests/vm/appvm.py b/qubes/tests/vm/appvm.py index 88634fa8..956b3fc5 100644 --- a/qubes/tests/vm/appvm.py +++ b/qubes/tests/vm/appvm.py @@ -62,7 +62,7 @@ class TC_90_AppVM(qubes.tests.vm.qubesvm.QubesVMTestsMixin, qubes.tests.QubesTestCase): def setUp(self): super().setUp() - self.app.pools['default'] = TestPool('default') + self.app.pools['default'] = TestPool(name='default') self.app.pools['linux-kernel'] = mock.Mock(**{ 'init_volume.return_value.pool': 'linux-kernel'}) self.template = qubes.vm.templatevm.TemplateVM(self.app, None, diff --git a/qubes/tests/vm/dispvm.py b/qubes/tests/vm/dispvm.py index 1e562858..de3a7874 100644 --- a/qubes/tests/vm/dispvm.py +++ b/qubes/tests/vm/dispvm.py @@ -47,7 +47,7 @@ class TC_00_DispVM(qubes.tests.QubesTestCase): super(TC_00_DispVM, self).setUp() self.app = TestApp() self.app.save = mock.Mock() - self.app.pools['default'] = qubes.tests.vm.appvm.TestPool('default') + self.app.pools['default'] = qubes.tests.vm.appvm.TestPool(name='default') self.app.pools['linux-kernel'] = mock.Mock(**{ 'init_volume.return_value.pool': 'linux-kernel'}) self.app.vmm.offline_mode = True