Skip to content

Commit 65cce39

Browse files
committed
volume: Add v3-specific volume module
This makes testing easier. Change-Id: I6b31026ae3c9dc66d828744534b35bb0a0d2ffbe Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent ca91c82 commit 65cce39

7 files changed

Lines changed: 3189 additions & 564 deletions

File tree

openstackclient/tests/unit/volume/v2/fakes.py

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from openstack.block_storage.v3 import stats as _stats
2626
from openstack.block_storage.v3 import volume as _volume
2727
from openstack.image.v2 import _proxy as image_v2_proxy
28-
from osc_lib.cli import format_columns
2928

3029
from openstackclient.tests.unit import fakes
3130
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
@@ -472,43 +471,6 @@ def get_volumes(volumes=None, count=2):
472471
return mock.Mock(side_effect=volumes)
473472

474473

475-
def get_volume_columns(volume=None):
476-
"""Get the volume columns from a faked volume object.
477-
478-
:param volume:
479-
A FakeResource objects faking volume
480-
:return
481-
A tuple which may include the following keys:
482-
('id', 'name', 'description', 'status', 'size', 'volume_type',
483-
'metadata', 'snapshot', 'availability_zone', 'attachments')
484-
"""
485-
if volume is not None:
486-
return tuple(k for k in sorted(volume.keys()))
487-
return tuple([])
488-
489-
490-
def get_volume_data(volume=None):
491-
"""Get the volume data from a faked volume object.
492-
493-
:param volume:
494-
A FakeResource objects faking volume
495-
:return
496-
A tuple which may include the following values:
497-
('ce26708d', 'fake_volume', 'fake description', 'available',
498-
20, 'fake_lvmdriver-1', "Alpha='a', Beta='b', Gamma='g'",
499-
1, 'nova', [{'device': '/dev/ice', 'server_id': '1233'}])
500-
"""
501-
data_list = []
502-
if volume is not None:
503-
for x in sorted(volume.keys()):
504-
if x == 'tags':
505-
# The 'tags' should be format_list
506-
data_list.append(format_columns.ListColumn(volume.info.get(x)))
507-
else:
508-
data_list.append(volume.info.get(x))
509-
return tuple(data_list)
510-
511-
512474
def create_one_backup(attrs=None):
513475
"""Create a fake backup.
514476

openstackclient/tests/unit/volume/v2/test_volume.py

Lines changed: 16 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212
# under the License.
1313

1414
from unittest import mock
15-
from unittest.mock import call
1615

17-
from cinderclient import api_versions
1816
from osc_lib.cli import format_columns
1917
from osc_lib import exceptions
2018
from osc_lib import utils
@@ -42,9 +40,6 @@ def setUp(self):
4240
self.snapshots_mock = self.volume_client.volume_snapshots
4341
self.snapshots_mock.reset_mock()
4442

45-
self.backups_mock = self.volume_client.backups
46-
self.backups_mock.reset_mock()
47-
4843
self.types_mock = self.volume_client.volume_types
4944
self.types_mock.reset_mock()
5045

@@ -126,7 +121,6 @@ def test_volume_create_min_options(self):
126121
source_volid=None,
127122
consistencygroup_id=None,
128123
scheduler_hints=None,
129-
backup_id=None,
130124
)
131125

132126
self.assertEqual(self.columns, columns)
@@ -178,7 +172,6 @@ def test_volume_create_options(self):
178172
source_volid=None,
179173
consistencygroup_id=consistency_group.id,
180174
scheduler_hints={'k': 'v'},
181-
backup_id=None,
182175
)
183176

184177
self.assertEqual(self.columns, columns)
@@ -218,7 +211,6 @@ def test_volume_create_properties(self):
218211
source_volid=None,
219212
consistencygroup_id=None,
220213
scheduler_hints=None,
221-
backup_id=None,
222214
)
223215

224216
self.assertEqual(self.columns, columns)
@@ -259,7 +251,6 @@ def test_volume_create_image_id(self):
259251
source_volid=None,
260252
consistencygroup_id=None,
261253
scheduler_hints=None,
262-
backup_id=None,
263254
)
264255

265256
self.assertEqual(self.columns, columns)
@@ -300,7 +291,6 @@ def test_volume_create_image_name(self):
300291
source_volid=None,
301292
consistencygroup_id=None,
302293
scheduler_hints=None,
303-
backup_id=None,
304294
)
305295

306296
self.assertEqual(self.columns, columns)
@@ -339,74 +329,11 @@ def test_volume_create_with_snapshot(self):
339329
source_volid=None,
340330
consistencygroup_id=None,
341331
scheduler_hints=None,
342-
backup_id=None,
343-
)
344-
345-
self.assertEqual(self.columns, columns)
346-
self.assertCountEqual(self.datalist, data)
347-
348-
def test_volume_create_with_backup(self):
349-
backup = volume_fakes.create_one_backup()
350-
self.new_volume.backup_id = backup.id
351-
arglist = [
352-
'--backup',
353-
self.new_volume.backup_id,
354-
self.new_volume.name,
355-
]
356-
verifylist = [
357-
('backup', self.new_volume.backup_id),
358-
('name', self.new_volume.name),
359-
]
360-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
361-
362-
self.backups_mock.get.return_value = backup
363-
364-
self.volume_client.api_version = api_versions.APIVersion('3.47')
365-
366-
# In base command class ShowOne in cliff, abstract method take_action()
367-
# returns a two-part tuple with a tuple of column names and a tuple of
368-
# data to be shown.
369-
columns, data = self.cmd.take_action(parsed_args)
370-
371-
self.volumes_mock.create.assert_called_once_with(
372-
size=backup.size,
373-
snapshot_id=None,
374-
name=self.new_volume.name,
375-
description=None,
376-
volume_type=None,
377-
availability_zone=None,
378-
metadata=None,
379-
imageRef=None,
380-
source_volid=None,
381-
consistencygroup_id=None,
382-
scheduler_hints=None,
383-
backup_id=backup.id,
384332
)
385333

386334
self.assertEqual(self.columns, columns)
387335
self.assertCountEqual(self.datalist, data)
388336

389-
def test_volume_create_with_backup_pre_347(self):
390-
backup = volume_fakes.create_one_backup()
391-
self.new_volume.backup_id = backup.id
392-
arglist = [
393-
'--backup',
394-
self.new_volume.backup_id,
395-
self.new_volume.name,
396-
]
397-
verifylist = [
398-
('backup', self.new_volume.backup_id),
399-
('name', self.new_volume.name),
400-
]
401-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
402-
403-
self.backups_mock.get.return_value = backup
404-
405-
exc = self.assertRaises(
406-
exceptions.CommandError, self.cmd.take_action, parsed_args
407-
)
408-
self.assertIn("--os-volume-api-version 3.47 or greater", str(exc))
409-
410337
def test_volume_create_with_source_volume(self):
411338
source_vol = "source_vol"
412339
arglist = [
@@ -439,7 +366,6 @@ def test_volume_create_with_source_volume(self):
439366
source_volid=self.new_volume.id,
440367
consistencygroup_id=None,
441368
scheduler_hints=None,
442-
backup_id=None,
443369
)
444370

445371
self.assertEqual(self.columns, columns)
@@ -479,7 +405,6 @@ def test_volume_create_with_bootable_and_readonly(self, mock_wait):
479405
source_volid=None,
480406
consistencygroup_id=None,
481407
scheduler_hints=None,
482-
backup_id=None,
483408
)
484409

485410
self.assertEqual(self.columns, columns)
@@ -525,7 +450,6 @@ def test_volume_create_with_nonbootable_and_readwrite(self, mock_wait):
525450
source_volid=None,
526451
consistencygroup_id=None,
527452
scheduler_hints=None,
528-
backup_id=None,
529453
)
530454

531455
self.assertEqual(self.columns, columns)
@@ -580,7 +504,6 @@ def test_volume_create_with_bootable_and_readonly_fail(
580504
source_volid=None,
581505
consistencygroup_id=None,
582506
scheduler_hints=None,
583-
backup_id=None,
584507
)
585508

586509
self.assertEqual(2, mock_error.call_count)
@@ -632,7 +555,6 @@ def test_volume_create_non_available_with_readonly(
632555
source_volid=None,
633556
consistencygroup_id=None,
634557
scheduler_hints=None,
635-
backup_id=None,
636558
)
637559

638560
self.assertEqual(2, mock_error.call_count)
@@ -742,7 +664,6 @@ def test_volume_create_hints(self):
742664
'local_to_instance': 'v6',
743665
'different_host': ['v5', 'v7'],
744666
},
745-
backup_id=None,
746667
)
747668

748669
self.assertEqual(self.columns, columns)
@@ -789,7 +710,7 @@ def test_volume_delete_multi_volumes(self):
789710

790711
result = self.cmd.take_action(parsed_args)
791712

792-
calls = [call(v.id, cascade=False) for v in volumes]
713+
calls = [mock.call(v.id, cascade=False) for v in volumes]
793714
self.volumes_mock.delete.assert_has_calls(calls)
794715
self.assertIsNone(result)
795716

@@ -1721,11 +1642,23 @@ def test_volume_show(self):
17211642
self.volumes_mock.get.assert_called_with(self._volume.id)
17221643

17231644
self.assertEqual(
1724-
volume_fakes.get_volume_columns(self._volume),
1645+
tuple(sorted(self._volume.keys())),
17251646
columns,
17261647
)
1727-
self.assertCountEqual(
1728-
volume_fakes.get_volume_data(self._volume),
1648+
self.assertTupleEqual(
1649+
(
1650+
self._volume.attachments,
1651+
self._volume.availability_zone,
1652+
self._volume.bootable,
1653+
self._volume.description,
1654+
self._volume.id,
1655+
self._volume.name,
1656+
format_columns.DictColumn(self._volume.metadata),
1657+
self._volume.size,
1658+
self._volume.snapshot_id,
1659+
self._volume.status,
1660+
self._volume.volume_type,
1661+
),
17291662
data,
17301663
)
17311664

0 commit comments

Comments
 (0)