summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-12-08 17:44:58 +0000
committerGerrit Code Review <review@openstack.org>2016-12-08 17:44:58 +0000
commit6bd1135036a640e7c1b2a4f86ab46ac58d570e5d (patch)
tree9279e932bfe962317665a3e9539ef9dd7884b7bd /openstackclient
parentb22af88a1923315737924142a6e9df0ed615407b (diff)
parent6ca4dc3533d009866f82515c34cb3881f993c750 (diff)
downloadpython-openstackclient-6bd1135036a640e7c1b2a4f86ab46ac58d570e5d.tar.gz
Merge "Add options to "volume snapshot list" command"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/tests/unit/volume/v1/test_snapshot.py96
-rw-r--r--openstackclient/tests/unit/volume/v2/test_snapshot.py103
-rw-r--r--openstackclient/volume/v1/volume_snapshot.py34
-rw-r--r--openstackclient/volume/v2/volume_snapshot.py34
4 files changed, 256 insertions, 11 deletions
diff --git a/openstackclient/tests/unit/volume/v1/test_snapshot.py b/openstackclient/tests/unit/volume/v1/test_snapshot.py
index 8e30d6a9..fd878f45 100644
--- a/openstackclient/tests/unit/volume/v1/test_snapshot.py
+++ b/openstackclient/tests/unit/volume/v1/test_snapshot.py
@@ -268,6 +268,7 @@ class TestSnapshotList(TestSnapshot):
super(TestSnapshotList, self).setUp()
self.volumes_mock.list.return_value = [self.volume]
+ self.volumes_mock.get.return_value = self.volume
self.snapshots_mock.list.return_value = self.snapshots
# Get the command to test
self.cmd = volume_snapshot.ListVolumeSnapshot(self.app, None)
@@ -283,7 +284,13 @@ class TestSnapshotList(TestSnapshot):
columns, data = self.cmd.take_action(parsed_args)
self.snapshots_mock.list.assert_called_once_with(
- search_opts={'all_tenants': False})
+ search_opts={
+ 'all_tenants': False,
+ 'display_name': None,
+ 'status': None,
+ 'volume_id': None
+ }
+ )
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -300,11 +307,88 @@ class TestSnapshotList(TestSnapshot):
columns, data = self.cmd.take_action(parsed_args)
self.snapshots_mock.list.assert_called_once_with(
- search_opts={'all_tenants': False}
+ search_opts={
+ 'all_tenants': False,
+ 'display_name': None,
+ 'status': None,
+ 'volume_id': None
+ }
)
self.assertEqual(self.columns_long, columns)
self.assertEqual(self.data_long, list(data))
+ def test_snapshot_list_name_option(self):
+ arglist = [
+ '--name', self.snapshots[0].display_name,
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', False),
+ ('name', self.snapshots[0].display_name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.list.assert_called_once_with(
+ search_opts={
+ 'all_tenants': False,
+ 'display_name': self.snapshots[0].display_name,
+ 'status': None,
+ 'volume_id': None
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_snapshot_list_status_option(self):
+ arglist = [
+ '--status', self.snapshots[0].status,
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', False),
+ ('status', self.snapshots[0].status),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.list.assert_called_once_with(
+ search_opts={
+ 'all_tenants': False,
+ 'display_name': None,
+ 'status': self.snapshots[0].status,
+ 'volume_id': None
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_snapshot_list_volumeid_option(self):
+ arglist = [
+ '--volume', self.volume.id,
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', False),
+ ('volume', self.volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.list.assert_called_once_with(
+ search_opts={
+ 'all_tenants': False,
+ 'display_name': None,
+ 'status': None,
+ 'volume_id': self.volume.id
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
def test_snapshot_list_all_projects(self):
arglist = [
'--all-projects',
@@ -318,7 +402,13 @@ class TestSnapshotList(TestSnapshot):
columns, data = self.cmd.take_action(parsed_args)
self.snapshots_mock.list.assert_called_once_with(
- search_opts={'all_tenants': True})
+ search_opts={
+ 'all_tenants': True,
+ 'display_name': None,
+ 'status': None,
+ 'volume_id': None
+ }
+ )
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
diff --git a/openstackclient/tests/unit/volume/v2/test_snapshot.py b/openstackclient/tests/unit/volume/v2/test_snapshot.py
index b67dd6eb..bb238135 100644
--- a/openstackclient/tests/unit/volume/v2/test_snapshot.py
+++ b/openstackclient/tests/unit/volume/v2/test_snapshot.py
@@ -275,6 +275,7 @@ class TestSnapshotList(TestSnapshot):
super(TestSnapshotList, self).setUp()
self.volumes_mock.list.return_value = [self.volume]
+ self.volumes_mock.get.return_value = self.volume
self.snapshots_mock.list.return_value = self.snapshots
# Get the command to test
self.cmd = volume_snapshot.ListVolumeSnapshot(self.app, None)
@@ -283,14 +284,21 @@ class TestSnapshotList(TestSnapshot):
arglist = []
verifylist = [
('all_projects', False),
- ("long", False)
+ ('long', False)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.snapshots_mock.list.assert_called_once_with(
- limit=None, marker=None, search_opts={'all_tenants': False})
+ limit=None, marker=None,
+ search_opts={
+ 'all_tenants': False,
+ 'name': None,
+ 'status': None,
+ 'volume_id': None
+ }
+ )
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -313,7 +321,12 @@ class TestSnapshotList(TestSnapshot):
self.snapshots_mock.list.assert_called_once_with(
limit=2,
marker=self.snapshots[0].id,
- search_opts={'all_tenants': False}
+ search_opts={
+ 'all_tenants': False,
+ 'name': None,
+ 'status': None,
+ 'volume_id': None
+ }
)
self.assertEqual(self.columns_long, columns)
self.assertEqual(self.data_long, list(data))
@@ -331,7 +344,89 @@ class TestSnapshotList(TestSnapshot):
columns, data = self.cmd.take_action(parsed_args)
self.snapshots_mock.list.assert_called_once_with(
- limit=None, marker=None, search_opts={'all_tenants': True})
+ limit=None, marker=None,
+ search_opts={
+ 'all_tenants': True,
+ 'name': None,
+ 'status': None,
+ 'volume_id': None
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_snapshot_list_name_option(self):
+ arglist = [
+ '--name', self.snapshots[0].name,
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', False),
+ ('name', self.snapshots[0].name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.list.assert_called_once_with(
+ limit=None, marker=None,
+ search_opts={
+ 'all_tenants': False,
+ 'name': self.snapshots[0].name,
+ 'status': None,
+ 'volume_id': None
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_snapshot_list_status_option(self):
+ arglist = [
+ '--status', self.snapshots[0].status,
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', False),
+ ('status', self.snapshots[0].status),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.list.assert_called_once_with(
+ limit=None, marker=None,
+ search_opts={
+ 'all_tenants': False,
+ 'name': None,
+ 'status': self.snapshots[0].status,
+ 'volume_id': None
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_snapshot_list_volumeid_option(self):
+ arglist = [
+ '--volume', self.volume.id,
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', False),
+ ('volume', self.volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.list.assert_called_once_with(
+ limit=None, marker=None,
+ search_opts={
+ 'all_tenants': False,
+ 'name': None,
+ 'status': None,
+ 'volume_id': self.volume.id
+ }
+ )
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
diff --git a/openstackclient/volume/v1/volume_snapshot.py b/openstackclient/volume/v1/volume_snapshot.py
index c2ecf75b..77c93ad4 100644
--- a/openstackclient/volume/v1/volume_snapshot.py
+++ b/openstackclient/volume/v1/volume_snapshot.py
@@ -135,9 +135,31 @@ class ListVolumeSnapshot(command.Lister):
default=False,
help=_('List additional fields in output'),
)
+ parser.add_argument(
+ '--name',
+ metavar='<name>',
+ default=None,
+ help=_('Filters results by a name.')
+ )
+ parser.add_argument(
+ '--status',
+ metavar='<status>',
+ choices=['available', 'error', 'creating', 'deleting',
+ 'error-deleting'],
+ help=_("Filters results by a status. "
+ "('available', 'error', 'creating', 'deleting'"
+ " or 'error-deleting')")
+ )
+ parser.add_argument(
+ '--volume',
+ metavar='<volume>',
+ default=None,
+ help=_('Filters results by a volume (name or ID).')
+ )
return parser
def take_action(self, parsed_args):
+ volume_client = self.app.client_manager.volume
def _format_volume_id(volume_id):
"""Return a volume name if available
@@ -169,17 +191,25 @@ class ListVolumeSnapshot(command.Lister):
# Cache the volume list
volume_cache = {}
try:
- for s in self.app.client_manager.volume.volumes.list():
+ for s in volume_client.volumes.list():
volume_cache[s.id] = s
except Exception:
# Just forget it if there's any trouble
pass
+ volume_id = None
+ if parsed_args.volume:
+ volume_id = utils.find_resource(
+ volume_client.volumes, parsed_args.volume).id
+
search_opts = {
'all_tenants': parsed_args.all_projects,
+ 'display_name': parsed_args.name,
+ 'status': parsed_args.status,
+ 'volume_id': volume_id,
}
- data = self.app.client_manager.volume.volume_snapshots.list(
+ data = volume_client.volume_snapshots.list(
search_opts=search_opts)
return (column_headers,
(utils.get_item_properties(
diff --git a/openstackclient/volume/v2/volume_snapshot.py b/openstackclient/volume/v2/volume_snapshot.py
index 43f30326..86af6d8c 100644
--- a/openstackclient/volume/v2/volume_snapshot.py
+++ b/openstackclient/volume/v2/volume_snapshot.py
@@ -151,9 +151,31 @@ class ListVolumeSnapshot(command.Lister):
metavar='<limit>',
help=_('Maximum number of snapshots to display'),
)
+ parser.add_argument(
+ '--name',
+ metavar='<name>',
+ default=None,
+ help=_('Filters results by a name.')
+ )
+ parser.add_argument(
+ '--status',
+ metavar='<status>',
+ choices=['available', 'error', 'creating', 'deleting',
+ 'error-deleting'],
+ help=_("Filters results by a status. "
+ "('available', 'error', 'creating', 'deleting'"
+ " or 'error-deleting')")
+ )
+ parser.add_argument(
+ '--volume',
+ metavar='<volume>',
+ default=None,
+ help=_('Filters results by a volume (name or ID).')
+ )
return parser
def take_action(self, parsed_args):
+ volume_client = self.app.client_manager.volume
def _format_volume_id(volume_id):
"""Return a volume name if available
@@ -180,17 +202,25 @@ class ListVolumeSnapshot(command.Lister):
# Cache the volume list
volume_cache = {}
try:
- for s in self.app.client_manager.volume.volumes.list():
+ for s in volume_client.volumes.list():
volume_cache[s.id] = s
except Exception:
# Just forget it if there's any trouble
pass
+ volume_id = None
+ if parsed_args.volume:
+ volume_id = utils.find_resource(
+ volume_client.volumes, parsed_args.volume).id
+
search_opts = {
'all_tenants': parsed_args.all_projects,
+ 'name': parsed_args.name,
+ 'status': parsed_args.status,
+ 'volume_id': volume_id,
}
- data = self.app.client_manager.volume.volume_snapshots.list(
+ data = volume_client.volume_snapshots.list(
search_opts=search_opts,
marker=parsed_args.marker,
limit=parsed_args.limit,