diff --git a/manilaclient/api_versions.py b/manilaclient/api_versions.py index 410cf76..7681778 100644 --- a/manilaclient/api_versions.py +++ b/manilaclient/api_versions.py @@ -27,7 +27,7 @@ from manilaclient import utils LOG = logging.getLogger(__name__) -MAX_VERSION = '2.32' +MAX_VERSION = '2.33' MIN_VERSION = '2.0' DEPRECATED_VERSION = '1.0' _VERSIONED_METHOD_MAP = {} diff --git a/manilaclient/tests/functional/test_share_access.py b/manilaclient/tests/functional/test_share_access.py index 10d3ef6..cf6e22b 100644 --- a/manilaclient/tests/functional/test_share_access.py +++ b/manilaclient/tests/functional/test_share_access.py @@ -76,7 +76,7 @@ class ShareAccessReadWriteBase(base.BaseTestCase): return access - @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21") + @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21", "2.33") def test_create_list_access_rule_for_share(self, microversion): self.skip_if_microversion_not_supported(microversion) access = self._test_create_list_access_rule_for_share( @@ -92,6 +92,11 @@ class ShareAccessReadWriteBase(base.BaseTestCase): self.assertTrue(any(a['access_level'] is not None for a in access_list)) if (api_versions.APIVersion(microversion) >= + api_versions.APIVersion("2.33")): + self.assertTrue( + all(('access_key' and 'created_at' and 'updated_at') + in a for a in access_list)) + elif (api_versions.APIVersion(microversion) >= api_versions.APIVersion("2.21")): self.assertTrue(all('access_key' in a for a in access_list)) else: @@ -133,6 +138,11 @@ class ShareAccessReadWriteBase(base.BaseTestCase): access.get('access_to')) self.assertEqual(self.access_level, access.get('access_level')) if (api_versions.APIVersion(microversion) >= + api_versions.APIVersion("2.33")): + self.assertIn('access_key', access) + self.assertIn('created_at', access) + self.assertIn('updated_at', access) + elif (api_versions.APIVersion(microversion) >= api_versions.APIVersion("2.21")): self.assertIn('access_key', access) else: @@ -145,17 +155,17 @@ class ShareAccessReadWriteBase(base.BaseTestCase): self.assertRaises(tempest_lib_exc.NotFound, self.user_client.get_access, share_id, access['id']) - @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21") + @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21", "2.33") def test_create_delete_ip_access_rule(self, microversion): self._create_delete_access_rule( self.share_id, 'ip', self.access_to['ip'].pop(), microversion) - @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21") + @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21", "2.33") def test_create_delete_user_access_rule(self, microversion): self._create_delete_access_rule( self.share_id, 'user', CONF.username_for_user_rules, microversion) - @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21") + @ddt.data("1.0", "2.0", "2.6", "2.7", "2.21", "2.33") def test_create_delete_cert_access_rule(self, microversion): self._create_delete_access_rule( self.share_id, 'cert', self.access_to['cert'].pop(), microversion) diff --git a/manilaclient/tests/unit/v2/test_shell.py b/manilaclient/tests/unit/v2/test_shell.py index a974e96..9f0dc12 100644 --- a/manilaclient/tests/unit/v2/test_shell.py +++ b/manilaclient/tests/unit/v2/test_shell.py @@ -1546,7 +1546,7 @@ class ShellTest(test_utils.TestCase): cliutils.print_list.assert_called_with( mock.ANY, ['id', 'access_type', 'access_to', 'access_level', 'state', - 'access_key']) + 'access_key', 'created_at', 'updated_at']) @mock.patch.object(cliutils, 'print_list', mock.Mock()) def test_access_list_select_column(self): diff --git a/manilaclient/v2/shell.py b/manilaclient/v2/shell.py index ced777e..a25b069 100644 --- a/manilaclient/v2/shell.py +++ b/manilaclient/v2/shell.py @@ -1320,6 +1320,33 @@ def do_access_list(cs, args): cliutils.print_list(access_list, list_of_keys) +@api_versions.wraps("2.33") # noqa +@cliutils.arg( + 'share', + metavar='', + help='Name or ID of the share.') +@cliutils.arg( + '--columns', + metavar='', + type=str, + default=None, + help='Comma separated list of columns to be displayed ' + 'example --columns "access_type,access_to".') +def do_access_list(cs, args): + """Show access list for share.""" + list_of_keys = [ + 'id', 'access_type', 'access_to', 'access_level', 'state', + 'access_key', 'created_at', 'updated_at', + ] + + if args.columns is not None: + list_of_keys = _split_columns(columns=args.columns) + + share = _find_share(cs, args.share) + access_list = share.access_list() + cliutils.print_list(access_list, list_of_keys) + + @api_versions.wraps("2.32") @cliutils.arg( 'snapshot', diff --git a/releasenotes/notes/bug-share-access-list-3cf3114doe40k599.yaml b/releasenotes/notes/bug-share-access-list-3cf3114doe40k599.yaml new file mode 100644 index 0000000..6ee5dc9 --- /dev/null +++ b/releasenotes/notes/bug-share-access-list-3cf3114doe40k599.yaml @@ -0,0 +1,5 @@ +--- +features: + - Beginning in version 2.33, share access list API returns + "created_at" and "updated_at" for each access rule as part + of the JSON response.