Fix regression with SG read API with empty ruleset
Used to be, we would return an empty list. Now, as of change
https://review.openstack.org/#/c/630401/, we don't return the
field at all. That's an API regression.
Go back to returning an empty list.
Change-Id: I295076155eea518152e2479f93f3cf1ea811a207
(cherry picked from commit cc4d5a2561
)
This commit is contained in:
parent
871b86390a
commit
f0a88de46f
|
@ -302,6 +302,8 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase):
|
|||
self._make_security_group_rule_dict(r.db_obj)
|
||||
for r in security_group.rules
|
||||
]
|
||||
else:
|
||||
res['security_group_rules'] = []
|
||||
resource_extend.apply_funcs(ext_sg.SECURITYGROUPS, res,
|
||||
security_group.db_obj)
|
||||
return db_utils.resource_fields(res, fields)
|
||||
|
|
|
@ -698,6 +698,43 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
|
|||
for k, v, in keys:
|
||||
self.assertEqual(sg_rule[0][k], v)
|
||||
|
||||
def test_get_security_group_empty_rules(self):
|
||||
name = 'webservers'
|
||||
description = 'my webservers'
|
||||
with self.security_group(name, description) as sg:
|
||||
remote_group_id = sg['security_group']['id']
|
||||
|
||||
self._delete_default_security_group_egress_rules(
|
||||
remote_group_id)
|
||||
|
||||
res = self.new_show_request('security-groups', remote_group_id)
|
||||
group = self.deserialize(
|
||||
self.fmt, res.get_response(self.ext_api))
|
||||
|
||||
sg_rule = group['security_group']['security_group_rules']
|
||||
self.assertEqual(group['security_group']['id'],
|
||||
remote_group_id)
|
||||
self.assertEqual(0, len(sg_rule))
|
||||
|
||||
def test_get_security_group_empty_rules_id_only(self):
|
||||
name = 'webservers'
|
||||
description = 'my webservers'
|
||||
with self.security_group(name, description) as sg:
|
||||
remote_group_id = sg['security_group']['id']
|
||||
|
||||
self._delete_default_security_group_egress_rules(
|
||||
remote_group_id)
|
||||
|
||||
res = self.new_show_request('security-groups', remote_group_id,
|
||||
fields=['id'])
|
||||
group = self.deserialize(
|
||||
self.fmt, res.get_response(self.ext_api))
|
||||
|
||||
secgroup = group['security_group']
|
||||
self.assertFalse('security_group_rules' in secgroup)
|
||||
self.assertEqual(group['security_group']['id'],
|
||||
remote_group_id)
|
||||
|
||||
# This test case checks that admins from a different tenant can add rules
|
||||
# as themselves. This is an odd behavior, with some weird GET semantics,
|
||||
# but this test is checking that we don't break that old behavior, at least
|
||||
|
|
Loading…
Reference in New Issue