Merge "Update create_nested_snapshots_and_attach_volume"

This commit is contained in:
Jenkins 2016-06-07 16:58:09 +00:00 committed by Gerrit Code Review
commit d84f353329
2 changed files with 95 additions and 4 deletions

View File

@ -365,9 +365,14 @@ class CinderVolumes(cinder_utils.CinderScenario,
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.required_openstack(users=True)
@scenario.configure(context={"cleanup": ["cinder", "nova"]})
@logging.log_deprecated_args(
"Use 'create_snapshot_kwargs' for additional snapshot kwargs.",
"0.4.1", ["kwargs"], once=True)
def create_nested_snapshots_and_attach_volume(self,
size=None,
nested_level=1,
create_volume_kwargs=None,
create_snapshot_kwargs=None,
**kwargs):
"""Create a volume from snapshot and attach/detach the volume
@ -382,6 +387,8 @@ class CinderVolumes(cinder_utils.CinderScenario,
max - maximum size volumes will be created as.
default values: {"min": 1, "max": 5}
:param nested_level: amount of nested levels
:param create_volume_kwargs: optional args to create a volume
:param create_snapshot_kwargs: optional args to create a snapshot
:param kwargs: Optional parameters used during volume
snapshot creation.
"""
@ -394,16 +401,22 @@ class CinderVolumes(cinder_utils.CinderScenario,
# size in _create_volume method.
size = random.randint(size["min"], size["max"])
source_vol = self._create_volume(size)
create_volume_kwargs = create_volume_kwargs or {}
create_snapshot_kwargs = create_snapshot_kwargs or kwargs or {}
source_vol = self._create_volume(size, **create_volume_kwargs)
nes_objs = [(self.get_random_server(), source_vol,
self._create_snapshot(source_vol.id, False, **kwargs))]
self._create_snapshot(source_vol.id, False,
**create_snapshot_kwargs))]
self._attach_volume(nes_objs[0][0], nes_objs[0][1])
snapshot = nes_objs[0][2]
for i in range(nested_level - 1):
volume = self._create_volume(size, snapshot_id=snapshot.id)
snapshot = self._create_snapshot(volume.id, False, **kwargs)
snapshot = self._create_snapshot(volume.id, False,
**create_snapshot_kwargs)
server = self.get_random_server()
self._attach_volume(server, volume)

View File

@ -342,6 +342,84 @@ class CinderServersTestCase(test.ScenarioTestCase):
self.assertEqual(scenario._delete_snapshot.call_count, snapshots_count)
self.assertEqual(scenario._detach_volume.call_count, attached_count)
def test_create_nested_snapshots_and_attach_volume_kwargs(self):
fake_volume = mock.MagicMock()
fake_snapshot = mock.MagicMock()
scenario = volumes.CinderVolumes(context=self._get_context())
scenario._attach_volume = mock.MagicMock()
scenario._detach_volume = mock.MagicMock()
scenario._delete_server = mock.MagicMock()
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
scenario._delete_volume = mock.MagicMock()
scenario._create_snapshot = mock.MagicMock(return_value=fake_snapshot)
scenario._delete_snapshot = mock.MagicMock()
volume_kwargs = {"volume_type": "type1"}
scenario.create_nested_snapshots_and_attach_volume(
size={"min": 1, "max": 1},
create_volume_kwargs=volume_kwargs)
scenario._create_volume.assert_called_once_with(1, **volume_kwargs)
self.assertEqual(fake_volume, scenario._create_volume.return_value)
def test_create_nested_snapshots_and_attach_volume_snapshot_kwargs(self):
fake_volume = mock.MagicMock()
fake_volume.id = "FAKE_ID"
fake_snapshot = mock.MagicMock()
scenario = volumes.CinderVolumes(context=self._get_context())
scenario._attach_volume = mock.MagicMock()
scenario._detach_volume = mock.MagicMock()
scenario._delete_server = mock.MagicMock()
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
scenario._delete_volume = mock.MagicMock()
scenario._create_snapshot = mock.MagicMock(return_value=fake_snapshot)
scenario._delete_snapshot = mock.MagicMock()
volume_kwargs = {"volume_type": "type1"}
snapshot_kwargs = {"name": "snapshot1", "description": "snaphot one"}
scenario.create_nested_snapshots_and_attach_volume(
size={"min": 1, "max": 1},
create_volume_kwargs=volume_kwargs,
create_snapshot_kwargs=snapshot_kwargs
)
scenario._create_snapshot.assert_called_once_with(fake_volume.id,
False,
**snapshot_kwargs)
self.assertEqual(fake_snapshot, scenario._create_snapshot.return_value)
def test_create_nested_snapshots_and_attach_volume_deprecate_kwargs(self):
fake_volume = mock.MagicMock()
fake_volume.id = "FAKE_ID"
fake_snapshot = mock.MagicMock()
scenario = volumes.CinderVolumes(context=self._get_context())
scenario._attach_volume = mock.MagicMock()
scenario._detach_volume = mock.MagicMock()
scenario._delete_server = mock.MagicMock()
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
scenario._delete_volume = mock.MagicMock()
scenario._create_snapshot = mock.MagicMock(return_value=fake_snapshot)
scenario._delete_snapshot = mock.MagicMock()
volume_kwargs = {"volume_type": "type1"}
snapshot_kwargs = {"name": "snapshot1", "description": "snaphot one"}
scenario.create_nested_snapshots_and_attach_volume(
size={"min": 1, "max": 1},
create_volume_kwargs=volume_kwargs,
**snapshot_kwargs
)
scenario._create_snapshot.assert_called_once_with(fake_volume.id,
False,
**snapshot_kwargs)
self.assertEqual(fake_snapshot, scenario._create_snapshot.return_value)
def test_create_nested_snapshots_calls_order(self):
fake_volume1 = mock.MagicMock()
fake_volume2 = mock.MagicMock()
@ -558,4 +636,4 @@ class CinderServersTestCase(test.ScenarioTestCase):
scenario._create_volume.assert_called_once_with(
1, snapshot_id=fake_snapshot.id, fakearg="f")
self.assertFalse(scenario._delete_snapshot.called)
self.assertFalse(scenario._delete_volume.called)
self.assertFalse(scenario._delete_volume.called)