Merge "Follow-on for volume list - add tests, clean help"
This commit is contained in:
		| @@ -109,34 +109,44 @@ List volumes | |||||||
|         [--status <status>] |         [--status <status>] | ||||||
|         [--long] |         [--long] | ||||||
|  |  | ||||||
| .. option:: --all-projects |  | ||||||
|  |  | ||||||
| .. option:: --project <project> | .. option:: --project <project> | ||||||
|  |  | ||||||
|     Filter results by project (name or ID) (admin only) |     Filter results by project (name or ID) (admin only) | ||||||
|  |  | ||||||
|  |     *Volume version 2 only* | ||||||
|  |  | ||||||
| .. option:: --project-domain <project-domain> | .. option:: --project-domain <project-domain> | ||||||
|  |  | ||||||
|     Domain the project belongs to (name or ID). |     Domain the project belongs to (name or ID). | ||||||
|     This can be used in case collisions between project names exist. |     This can be used in case collisions between project names exist. | ||||||
|  |  | ||||||
|  |     *Volume version 2 only* | ||||||
|  |  | ||||||
| .. option:: --user <user> | .. option:: --user <user> | ||||||
|  |  | ||||||
|     Filter results by user (name or ID) (admin only) |     Filter results by user (name or ID) (admin only) | ||||||
|  |  | ||||||
|  |     *Volume version 2 only* | ||||||
|  |  | ||||||
| .. option:: --user-domain <user-domain> | .. option:: --user-domain <user-domain> | ||||||
|  |  | ||||||
|     Domain the user belongs to (name or ID). |     Domain the user belongs to (name or ID). | ||||||
|     This can be used in case collisions between user names exist. |     This can be used in case collisions between user names exist. | ||||||
|  |  | ||||||
|  |     *Volume version 2 only* | ||||||
|  |  | ||||||
| .. option:: --name <name> | .. option:: --name <name> | ||||||
|  |  | ||||||
|     Filter results by name |     Filter results by volume name | ||||||
|  |  | ||||||
| .. option:: --status <status> | .. option:: --status <status> | ||||||
|  |  | ||||||
|     Filter results by status |     Filter results by status | ||||||
|  |  | ||||||
|  | .. option:: --all-projects | ||||||
|  |  | ||||||
|  |     Include all projects (admin only) | ||||||
|  |  | ||||||
| .. option:: --long | .. option:: --long | ||||||
|  |  | ||||||
|     List additional fields in output |     List additional fields in output | ||||||
|   | |||||||
| @@ -527,6 +527,188 @@ class TestVolumeCreate(TestVolume): | |||||||
|         self.assertEqual(datalist, data) |         self.assertEqual(datalist, data) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestVolumeList(TestVolume): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(TestVolumeList, self).setUp() | ||||||
|  |  | ||||||
|  |         self.volumes_mock.list.return_value = [ | ||||||
|  |             fakes.FakeResource( | ||||||
|  |                 None, | ||||||
|  |                 copy.deepcopy(volume_fakes.VOLUME), | ||||||
|  |                 loaded=True, | ||||||
|  |             ), | ||||||
|  |         ] | ||||||
|  |  | ||||||
|  |         # Get the command object to test | ||||||
|  |         self.cmd = volume.ListVolume(self.app, None) | ||||||
|  |  | ||||||
|  |     def test_volume_list_no_options(self): | ||||||
|  |         arglist = [] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('name', None), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, columns) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             '', | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_name(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--name', volume_fakes.volume_name, | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('name', volume_fakes.volume_name), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, tuple(columns)) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             '', | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_status(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--status', volume_fakes.volume_status, | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('name', None), | ||||||
|  |             ('status', volume_fakes.volume_status), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, tuple(columns)) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             '', | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_all_projects(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--all-projects', | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', True), | ||||||
|  |             ('name', None), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, columns) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             '', | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_long(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--long', | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('long', True), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('name', None), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |  | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Type', | ||||||
|  |             'Bootable', | ||||||
|  |             'Attached to', | ||||||
|  |             'Properties', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, columns) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             volume_fakes.volume_type, | ||||||
|  |             '', | ||||||
|  |             '', | ||||||
|  |             "Alpha='a', Beta='b', Gamma='g'", | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestVolumeSet(TestVolume): | class TestVolumeSet(TestVolume): | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ import copy | |||||||
| import mock | import mock | ||||||
|  |  | ||||||
| from openstackclient.tests import fakes | from openstackclient.tests import fakes | ||||||
| from openstackclient.tests.identity.v2_0 import fakes as identity_fakes | from openstackclient.tests.identity.v3 import fakes as identity_fakes | ||||||
| from openstackclient.tests.image.v2 import fakes as image_fakes | from openstackclient.tests.image.v2 import fakes as image_fakes | ||||||
| from openstackclient.tests import utils | from openstackclient.tests import utils | ||||||
|  |  | ||||||
| @@ -212,7 +212,7 @@ class TestVolume(utils.TestCommand): | |||||||
|             endpoint=fakes.AUTH_URL, |             endpoint=fakes.AUTH_URL, | ||||||
|             token=fakes.AUTH_TOKEN |             token=fakes.AUTH_TOKEN | ||||||
|         ) |         ) | ||||||
|         self.app.client_manager.identity = identity_fakes.FakeIdentityv2Client( |         self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client( | ||||||
|             endpoint=fakes.AUTH_URL, |             endpoint=fakes.AUTH_URL, | ||||||
|             token=fakes.AUTH_TOKEN |             token=fakes.AUTH_TOKEN | ||||||
|         ) |         ) | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
| import copy | import copy | ||||||
|  |  | ||||||
| from openstackclient.tests import fakes | from openstackclient.tests import fakes | ||||||
| from openstackclient.tests.identity.v2_0 import fakes as identity_fakes | from openstackclient.tests.identity.v3 import fakes as identity_fakes | ||||||
| from openstackclient.tests.volume.v2 import fakes as volume_fakes | from openstackclient.tests.volume.v2 import fakes as volume_fakes | ||||||
| from openstackclient.volume.v2 import volume | from openstackclient.volume.v2 import volume | ||||||
|  |  | ||||||
| @@ -27,7 +27,7 @@ class TestVolume(volume_fakes.TestVolume): | |||||||
|         self.volumes_mock = self.app.client_manager.volume.volumes |         self.volumes_mock = self.app.client_manager.volume.volumes | ||||||
|         self.volumes_mock.reset_mock() |         self.volumes_mock.reset_mock() | ||||||
|  |  | ||||||
|         self.projects_mock = self.app.client_manager.identity.tenants |         self.projects_mock = self.app.client_manager.identity.projects | ||||||
|         self.projects_mock.reset_mock() |         self.projects_mock.reset_mock() | ||||||
|  |  | ||||||
|         self.users_mock = self.app.client_manager.identity.users |         self.users_mock = self.app.client_manager.identity.users | ||||||
| @@ -560,32 +560,145 @@ class TestVolumeList(TestVolume): | |||||||
|         ), ) |         ), ) | ||||||
|         self.assertEqual(datalist, tuple(data)) |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|     def test_volume_list_all_projects_option(self): |     def test_volume_list_project(self): | ||||||
|         arglist = [ |         arglist = [ | ||||||
|             '--all-projects', |             '--project', identity_fakes.project_name, | ||||||
|         ] |         ] | ||||||
|         verifylist = [ |         verifylist = [ | ||||||
|  |             ('project', identity_fakes.project_name), | ||||||
|             ('long', False), |             ('long', False), | ||||||
|             ('all_projects', True), |             ('all_projects', False), | ||||||
|             ('name', None), |  | ||||||
|             ('status', None), |             ('status', None), | ||||||
|         ] |         ] | ||||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|         columns, data = self.cmd.take_action(parsed_args) |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|         collist = [ |         collist = ( | ||||||
|             'ID', |             'ID', | ||||||
|             'Display Name', |             'Display Name', | ||||||
|             'Status', |             'Status', | ||||||
|             'Size', |             'Size', | ||||||
|             'Attached to', |             'Attached to', | ||||||
|         ] |         ) | ||||||
|         self.assertEqual(collist, columns) |         self.assertEqual(collist, tuple(columns)) | ||||||
|  |  | ||||||
|         server = volume_fakes.volume_attachment_server['server_id'] |         server = volume_fakes.volume_attachment_server['server_id'] | ||||||
|         device = volume_fakes.volume_attachment_server['device'] |         device = volume_fakes.volume_attachment_server['device'] | ||||||
|         msg = 'Attached to %s on %s ' % (server, device) |         msg = 'Attached to %s on %s ' % (server, device) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             msg, | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_project_domain(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--project', identity_fakes.project_name, | ||||||
|  |             '--project-domain', identity_fakes.domain_name, | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('project', identity_fakes.project_name), | ||||||
|  |             ('project_domain', identity_fakes.domain_name), | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, tuple(columns)) | ||||||
|  |  | ||||||
|  |         server = volume_fakes.volume_attachment_server['server_id'] | ||||||
|  |         device = volume_fakes.volume_attachment_server['device'] | ||||||
|  |         msg = 'Attached to %s on %s ' % (server, device) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             msg, | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_user(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--user', identity_fakes.user_name, | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('user', identity_fakes.user_name), | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, tuple(columns)) | ||||||
|  |  | ||||||
|  |         server = volume_fakes.volume_attachment_server['server_id'] | ||||||
|  |         device = volume_fakes.volume_attachment_server['device'] | ||||||
|  |         msg = 'Attached to %s on %s ' % (server, device) | ||||||
|  |  | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             msg, | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_user_domain(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--user', identity_fakes.user_name, | ||||||
|  |             '--user-domain', identity_fakes.domain_name, | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('user', identity_fakes.user_name), | ||||||
|  |             ('user_domain', identity_fakes.domain_name), | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = ( | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(collist, tuple(columns)) | ||||||
|  |  | ||||||
|  |         server = volume_fakes.volume_attachment_server['server_id'] | ||||||
|  |         device = volume_fakes.volume_attachment_server['device'] | ||||||
|  |         msg = 'Attached to %s on %s ' % (server, device) | ||||||
|  |  | ||||||
|         datalist = (( |         datalist = (( | ||||||
|             volume_fakes.volume_id, |             volume_fakes.volume_id, | ||||||
|             volume_fakes.volume_name, |             volume_fakes.volume_name, | ||||||
| @@ -666,6 +779,41 @@ class TestVolumeList(TestVolume): | |||||||
|         ), ) |         ), ) | ||||||
|         self.assertEqual(datalist, tuple(data)) |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_volume_list_all_projects(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--all-projects', | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('long', False), | ||||||
|  |             ('all_projects', True), | ||||||
|  |             ('name', None), | ||||||
|  |             ('status', None), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |  | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |  | ||||||
|  |         collist = [ | ||||||
|  |             'ID', | ||||||
|  |             'Display Name', | ||||||
|  |             'Status', | ||||||
|  |             'Size', | ||||||
|  |             'Attached to', | ||||||
|  |         ] | ||||||
|  |         self.assertEqual(collist, columns) | ||||||
|  |  | ||||||
|  |         server = volume_fakes.volume_attachment_server['server_id'] | ||||||
|  |         device = volume_fakes.volume_attachment_server['device'] | ||||||
|  |         msg = 'Attached to %s on %s ' % (server, device) | ||||||
|  |         datalist = (( | ||||||
|  |             volume_fakes.volume_id, | ||||||
|  |             volume_fakes.volume_name, | ||||||
|  |             volume_fakes.volume_status, | ||||||
|  |             volume_fakes.volume_size, | ||||||
|  |             msg, | ||||||
|  |         ), ) | ||||||
|  |         self.assertEqual(datalist, tuple(data)) | ||||||
|  |  | ||||||
|     def test_volume_list_long(self): |     def test_volume_list_long(self): | ||||||
|         arglist = [ |         arglist = [ | ||||||
|             '--long', |             '--long', | ||||||
|   | |||||||
| @@ -206,16 +206,16 @@ class ListVolume(lister.Lister): | |||||||
|  |  | ||||||
|     def get_parser(self, prog_name): |     def get_parser(self, prog_name): | ||||||
|         parser = super(ListVolume, self).get_parser(prog_name) |         parser = super(ListVolume, self).get_parser(prog_name) | ||||||
|  |         parser.add_argument( | ||||||
|  |             '--name', | ||||||
|  |             metavar='<name>', | ||||||
|  |             help='Filter results by volume name', | ||||||
|  |         ) | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--status', |             '--status', | ||||||
|             metavar='<status>', |             metavar='<status>', | ||||||
|             help='Filter results by status', |             help='Filter results by status', | ||||||
|         ) |         ) | ||||||
|         parser.add_argument( |  | ||||||
|             '--name', |  | ||||||
|             metavar='<name>', |  | ||||||
|             help='Filter results by name', |  | ||||||
|         ) |  | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--all-projects', |             '--all-projects', | ||||||
|             action='store_true', |             action='store_true', | ||||||
|   | |||||||
| @@ -16,7 +16,6 @@ | |||||||
|  |  | ||||||
| import copy | import copy | ||||||
| import logging | import logging | ||||||
| import os |  | ||||||
|  |  | ||||||
| from cliff import command | from cliff import command | ||||||
| from cliff import lister | from cliff import lister | ||||||
| @@ -200,12 +199,6 @@ class ListVolume(lister.Lister): | |||||||
|  |  | ||||||
|     def get_parser(self, prog_name): |     def get_parser(self, prog_name): | ||||||
|         parser = super(ListVolume, self).get_parser(prog_name) |         parser = super(ListVolume, self).get_parser(prog_name) | ||||||
|         parser.add_argument( |  | ||||||
|             '--all-projects', |  | ||||||
|             action='store_true', |  | ||||||
|             default=bool(int(os.environ.get("ALL_PROJECTS", 0))), |  | ||||||
|             help='Include all projects (admin only)', |  | ||||||
|         ) |  | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--project', |             '--project', | ||||||
|             metavar='<project-id>', |             metavar='<project-id>', | ||||||
| @@ -221,13 +214,19 @@ class ListVolume(lister.Lister): | |||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--name', |             '--name', | ||||||
|             metavar='<name>', |             metavar='<name>', | ||||||
|             help='Filter results by name', |             help='Filter results by volume name', | ||||||
|         ) |         ) | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--status', |             '--status', | ||||||
|             metavar='<status>', |             metavar='<status>', | ||||||
|             help='Filter results by status', |             help='Filter results by status', | ||||||
|         ) |         ) | ||||||
|  |         parser.add_argument( | ||||||
|  |             '--all-projects', | ||||||
|  |             action='store_true', | ||||||
|  |             default=False, | ||||||
|  |             help='Include all projects (admin only)', | ||||||
|  |         ) | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--long', |             '--long', | ||||||
|             action='store_true', |             action='store_true', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins