Fix response data for API access-allow
API access-allow returns following redundant data:
- deleted
- deleted_at
- instance_mappings
So, remove them for create share api method and cover it with
unit and tempest tests.
Change-Id: I103380c3f0008d4879b39f339187e57eeec40456
Closes-Bug: #1499733
(cherry picked from commit beb9191c69
)
This commit is contained in:
parent
c4fdacf634
commit
4d9f87d6cc
|
@ -792,7 +792,14 @@ class API(base.Base):
|
|||
|
||||
for share_instance in share.instances:
|
||||
self.allow_access_to_instance(ctx, share_instance, access)
|
||||
return access
|
||||
return {
|
||||
'id': access['id'],
|
||||
'share_id': access['share_id'],
|
||||
'access_type': access['access_type'],
|
||||
'access_to': access['access_to'],
|
||||
'access_level': access['access_level'],
|
||||
'state': access['state'],
|
||||
}
|
||||
|
||||
def allow_access_to_instance(self, context, share_instance, access):
|
||||
policy.check_policy(context, 'share', 'allow_access')
|
||||
|
|
|
@ -1242,18 +1242,32 @@ class ShareAPITestCase(test.TestCase):
|
|||
share = db_utils.create_share(status=constants.STATUS_AVAILABLE)
|
||||
values = {
|
||||
'share_id': share['id'],
|
||||
'access_type': 'fakeacctype',
|
||||
'access_to': 'fakeaccto',
|
||||
'access_type': 'fake_access_type',
|
||||
'access_to': 'fake_access_to',
|
||||
'access_level': level,
|
||||
}
|
||||
fake_access_expected = copy.deepcopy(values)
|
||||
fake_access_expected.update({
|
||||
'id': 'fake_access_id',
|
||||
'state': 'fake_state',
|
||||
})
|
||||
fake_access = copy.deepcopy(fake_access_expected)
|
||||
fake_access.update({
|
||||
'deleted': 'fake_deleted',
|
||||
'deleted_at': 'fake_deleted_at',
|
||||
'instance_mappings': ['foo', 'bar'],
|
||||
})
|
||||
self.mock_object(db_api, 'share_access_create',
|
||||
mock.Mock(return_value='fakeacc'))
|
||||
access = self.api.allow_access(self.context, share,
|
||||
'fakeacctype', 'fakeaccto',
|
||||
level)
|
||||
self.assertEqual(access, 'fakeacc')
|
||||
mock.Mock(return_value=fake_access))
|
||||
|
||||
access = self.api.allow_access(
|
||||
self.context, share, fake_access['access_type'],
|
||||
fake_access['access_to'], level)
|
||||
|
||||
self.assertEqual(fake_access_expected, access)
|
||||
self.share_rpcapi.allow_access.assert_called_once_with(
|
||||
self.context, utils.IsAMatcher(models.ShareInstance), 'fakeacc')
|
||||
self.context, utils.IsAMatcher(models.ShareInstance),
|
||||
fake_access)
|
||||
db_api.share_access_create.assert_called_once_with(
|
||||
self.context, values)
|
||||
share_api.policy.check_policy.assert_called_with(
|
||||
|
|
|
@ -30,7 +30,10 @@ def _create_delete_ro_access_rule(self):
|
|||
"""
|
||||
rule = self.shares_client.create_access_rule(
|
||||
self.share["id"], self.access_type, self.access_to, 'ro')
|
||||
|
||||
self.assertEqual('ro', rule['access_level'])
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
self.assertNotIn(key, rule.keys())
|
||||
self.shares_client.wait_for_access_rule_status(
|
||||
self.share["id"], rule["id"], "active")
|
||||
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
|
||||
|
@ -61,7 +64,10 @@ class ShareIpRulesForNFSTest(base.BaseSharesTest):
|
|||
# create rule
|
||||
rule = self.shares_client.create_access_rule(
|
||||
self.share["id"], self.access_type, access_to)
|
||||
|
||||
self.assertEqual('rw', rule['access_level'])
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
self.assertNotIn(key, rule.keys())
|
||||
self.shares_client.wait_for_access_rule_status(
|
||||
self.share["id"], rule["id"], "active")
|
||||
|
||||
|
@ -79,6 +85,9 @@ class ShareIpRulesForNFSTest(base.BaseSharesTest):
|
|||
# create rule
|
||||
rule = self.shares_client.create_access_rule(
|
||||
self.share["id"], self.access_type, access_to)
|
||||
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
self.assertNotIn(key, rule.keys())
|
||||
self.assertEqual('rw', rule['access_level'])
|
||||
self.shares_client.wait_for_access_rule_status(
|
||||
self.share["id"], rule["id"], "active")
|
||||
|
@ -128,7 +137,10 @@ class ShareUserRulesForNFSTest(base.BaseSharesTest):
|
|||
# create rule
|
||||
rule = self.shares_client.create_access_rule(
|
||||
self.share["id"], self.access_type, self.access_to)
|
||||
|
||||
self.assertEqual('rw', rule['access_level'])
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
self.assertNotIn(key, rule.keys())
|
||||
self.shares_client.wait_for_access_rule_status(
|
||||
self.share["id"], rule["id"], "active")
|
||||
|
||||
|
@ -179,7 +191,10 @@ class ShareCertRulesForGLUSTERFSTest(base.BaseSharesTest):
|
|||
# create rule
|
||||
rule = self.shares_client.create_access_rule(
|
||||
self.share["id"], self.access_type, self.access_to)
|
||||
|
||||
self.assertEqual('rw', rule['access_level'])
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
self.assertNotIn(key, rule.keys())
|
||||
self.shares_client.wait_for_access_rule_status(
|
||||
self.share["id"], rule["id"], "active")
|
||||
|
||||
|
@ -193,7 +208,10 @@ class ShareCertRulesForGLUSTERFSTest(base.BaseSharesTest):
|
|||
def test_create_delete_cert_ro_access_rule(self):
|
||||
rule = self.shares_client.create_access_rule(
|
||||
self.share["id"], 'cert', 'client2.com', 'ro')
|
||||
|
||||
self.assertEqual('ro', rule['access_level'])
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
self.assertNotIn(key, rule.keys())
|
||||
self.shares_client.wait_for_access_rule_status(
|
||||
self.share["id"], rule["id"], "active")
|
||||
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
|
||||
|
@ -249,8 +267,10 @@ class ShareRulesTest(base.BaseSharesTest):
|
|||
rules = self.shares_client.list_access_rules(self.share["id"])
|
||||
|
||||
# verify keys
|
||||
keys = ["state", "id", "access_type", "access_to", "access_level"]
|
||||
[self.assertIn(key, r.keys()) for r in rules for key in keys]
|
||||
for key in ("state", "id", "access_type", "access_to", "access_level"):
|
||||
[self.assertIn(key, r.keys()) for r in rules]
|
||||
for key in ('deleted', 'deleted_at', 'instance_mappings'):
|
||||
[self.assertNotIn(key, r.keys()) for r in rules]
|
||||
|
||||
# verify values
|
||||
self.assertEqual("active", rules[0]["state"])
|
||||
|
|
Loading…
Reference in New Issue