From edb8e04082199a54c8ca088c0946852fd06a0cc2 Mon Sep 17 00:00:00 2001 From: Yuriy Nesenenko Date: Mon, 3 Aug 2015 12:15:54 +0300 Subject: [PATCH] Refactoring cinder create_volume_backup scenario It improves code readability and gets cinder volume backups scenarios standardized. Change-Id: I910876a74231b661cdaa69fa2e76bcf2fc7f8fe8 --- .../openstack/scenarios/cinder/volumes.py | 21 ++++++------ .../create-and-list-volume-backups.json | 4 ++- .../create-and-list-volume-backups.yaml | 2 ++ .../create-and-restore-volume-backup.json | 4 ++- .../create-and-restore-volume-backup.yaml | 2 ++ .../cinder/create-volume-backup.json | 4 ++- .../cinder/create-volume-backup.yaml | 2 ++ .../scenarios/cinder/test_volumes.py | 32 +++++++------------ 8 files changed, 39 insertions(+), 32 deletions(-) diff --git a/rally/plugins/openstack/scenarios/cinder/volumes.py b/rally/plugins/openstack/scenarios/cinder/volumes.py index 1894744f38..5a76ef4a75 100644 --- a/rally/plugins/openstack/scenarios/cinder/volumes.py +++ b/rally/plugins/openstack/scenarios/cinder/volumes.py @@ -437,16 +437,22 @@ class CinderVolumes(utils.CinderScenario, @validation.required_services(consts.Service.CINDER) @validation.required_openstack(users=True) @base.scenario(context={"cleanup": ["cinder"]}) - def create_volume_backup(self, size, do_delete=True, **kwargs): + def create_volume_backup(self, size, do_delete=True, + create_volume_kwargs=None, + create_backup_kwargs=None): """Create a volume backup. :param size: volume size in GB :param do_delete: if True, a volume and a volume backup will be deleted after creation. - :param kwargs: optional args to create a volume backup + :param create_volume_kwargs: optional args to create a volume + :param create_backup_kwargs: optional args to create a volume backup """ - volume = self._create_volume(size, **kwargs) - backup = self._create_backup(volume.id, **kwargs) + create_volume_kwargs = create_volume_kwargs or {} + create_backup_kwargs = create_backup_kwargs or {} + + volume = self._create_volume(size, **create_volume_kwargs) + backup = self._create_backup(volume.id, **create_backup_kwargs) if do_delete: self._delete_volume(volume) @@ -467,10 +473,8 @@ class CinderVolumes(utils.CinderScenario, :param create_volume_kwargs: optional args to create a volume :param create_backup_kwargs: optional args to create a volume backup """ - if create_volume_kwargs is None: - create_volume_kwargs = {} - if create_backup_kwargs is None: - create_backup_kwargs = {} + create_volume_kwargs = create_volume_kwargs or {} + create_backup_kwargs = create_backup_kwargs or {} volume = self._create_volume(size, **create_volume_kwargs) backup = self._create_backup(volume.id, **create_backup_kwargs) @@ -490,7 +494,6 @@ class CinderVolumes(utils.CinderScenario, create_backup_kwargs=None): """Create and then list a volume backup. - :param size: volume size in GB :param detailed: True if detailed information about backup should be listed diff --git a/samples/tasks/scenarios/cinder/create-and-list-volume-backups.json b/samples/tasks/scenarios/cinder/create-and-list-volume-backups.json index 1ca04bcae2..e41680ef6b 100644 --- a/samples/tasks/scenarios/cinder/create-and-list-volume-backups.json +++ b/samples/tasks/scenarios/cinder/create-and-list-volume-backups.json @@ -4,7 +4,9 @@ "args": { "size": 1, "detailed": true, - "do_delete": true + "do_delete": true, + "create_volume_kwargs": {}, + "create_backup_kwargs": {} }, "runner": { "type": "constant", diff --git a/samples/tasks/scenarios/cinder/create-and-list-volume-backups.yaml b/samples/tasks/scenarios/cinder/create-and-list-volume-backups.yaml index 293af8af3a..40370dffbf 100644 --- a/samples/tasks/scenarios/cinder/create-and-list-volume-backups.yaml +++ b/samples/tasks/scenarios/cinder/create-and-list-volume-backups.yaml @@ -5,6 +5,8 @@ size: 1 detailed: True do_delete: True + create_volume_kwargs: {} + create_backup_kwargs: {} runner: type: "constant" times: 2 diff --git a/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.json b/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.json index fc0f334a43..80c6596e28 100644 --- a/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.json +++ b/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.json @@ -3,7 +3,9 @@ { "args": { "size": 1, - "do_delete": true + "do_delete": true, + "create_volume_kwargs": {}, + "create_backup_kwargs": {} }, "runner": { "type": "constant", diff --git a/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.yaml b/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.yaml index d51ff534d0..b5e0fa2bd3 100644 --- a/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.yaml +++ b/samples/tasks/scenarios/cinder/create-and-restore-volume-backup.yaml @@ -4,6 +4,8 @@ args: size: 1 do_delete: True + create_volume_kwargs: {} + create_backup_kwargs: {} runner: type: "constant" times: 2 diff --git a/samples/tasks/scenarios/cinder/create-volume-backup.json b/samples/tasks/scenarios/cinder/create-volume-backup.json index ca031e7a54..eae48a8f51 100644 --- a/samples/tasks/scenarios/cinder/create-volume-backup.json +++ b/samples/tasks/scenarios/cinder/create-volume-backup.json @@ -3,7 +3,9 @@ { "args": { "size": 1, - "do_delete": true + "do_delete": true, + "create_volume_kwargs": {}, + "create_backup_kwargs": {} }, "runner": { "type": "constant", diff --git a/samples/tasks/scenarios/cinder/create-volume-backup.yaml b/samples/tasks/scenarios/cinder/create-volume-backup.yaml index 3d92e4010a..f42b808743 100644 --- a/samples/tasks/scenarios/cinder/create-volume-backup.yaml +++ b/samples/tasks/scenarios/cinder/create-volume-backup.yaml @@ -4,6 +4,8 @@ args: size: 1 do_delete: True + create_volume_kwargs: {} + create_backup_kwargs: {} runner: type: "constant" times: 2 diff --git a/tests/unit/plugins/openstack/scenarios/cinder/test_volumes.py b/tests/unit/plugins/openstack/scenarios/cinder/test_volumes.py index a106698476..e99225e129 100644 --- a/tests/unit/plugins/openstack/scenarios/cinder/test_volumes.py +++ b/tests/unit/plugins/openstack/scenarios/cinder/test_volumes.py @@ -377,34 +377,26 @@ class CinderServersTestCase(test.ScenarioTestCase): def test_create_volume_backup(self): fake_volume = mock.MagicMock() fake_backup = mock.MagicMock() - scenario = volumes.CinderVolumes() + scenario = self._get_scenario(fake_volume, fake_backup) - scenario._create_volume = mock.MagicMock(return_value=fake_volume) - scenario._create_backup = mock.MagicMock(return_value=fake_backup) - scenario._delete_volume = mock.MagicMock() - scenario._delete_backup = mock.MagicMock() - - scenario.create_volume_backup(1, do_delete=True, fakearg="f") - scenario._create_volume.assert_called_once_with(1, fakearg="f") - scenario._create_backup.assert_called_once_with(fake_volume.id, - fakearg="f") + volume_kwargs = {"some_var": "zaq"} + scenario.create_volume_backup( + 1, do_delete=True, create_volume_kwargs=volume_kwargs) + scenario._create_volume.assert_called_once_with(1, **volume_kwargs) + scenario._create_backup.assert_called_once_with(fake_volume.id) scenario._delete_volume.assert_called_once_with(fake_volume) scenario._delete_backup.assert_called_once_with(fake_backup) def test_create_volume_backup_no_delete(self): fake_volume = mock.MagicMock() fake_backup = mock.MagicMock() - scenario = volumes.CinderVolumes() + scenario = self._get_scenario(fake_volume, fake_backup) - scenario._create_volume = mock.MagicMock(return_value=fake_volume) - scenario._create_backup = mock.MagicMock(return_value=fake_backup) - scenario._delete_volume = mock.MagicMock() - scenario._delete_backup = mock.MagicMock() - - scenario.create_volume_backup(1, do_delete=False, fakearg="f") - scenario._create_volume.assert_called_once_with(1, fakearg="f") - scenario._create_backup.assert_called_once_with(fake_volume.id, - fakearg="f") + volume_kwargs = {"some_var": "zaq"} + scenario.create_volume_backup( + 1, do_delete=False, create_volume_kwargs=volume_kwargs) + scenario._create_volume.assert_called_once_with(1, **volume_kwargs) + scenario._create_backup.assert_called_once_with(fake_volume.id) self.assertFalse(scenario._delete_volume.called) self.assertFalse(scenario._delete_backup.called)