no way to delete valid/invalid security rule

Previously deleting valid/invalid security
group rules was throwing the error of
"AttributeError". With this fix, now both
types of security group rules can be deleted.

Change-Id: I253c2742efe69ee41976c88ca2775189bc5bde0d
Closes-Bug: #1163469
This commit is contained in:
Amandeep 2014-09-30 17:45:50 +05:30
parent f9ac34d9e8
commit 2d6047ffb4
3 changed files with 31 additions and 4 deletions

View File

@ -1279,11 +1279,27 @@ class FakeHTTPClient(base_client.HTTPClient):
"from_port": 222,
"to_port": 222,
"parent_group_id": 1,
"ip_range": {}},
{"id": 14,
"group": {
"tenant_id":
"272bee4c1e624cd4a72a6b0ea55b4582",
"name": "test4"},
"ip_protocol": "TCP",
"from_port": -1,
"to_port": -1,
"parent_group_id": 1,
"ip_range": {}}]},
{"name": "test2",
"description": "FAKE_SECURITY_GROUP2",
"tenant_id": "272bee4c1e624cd4a72a6b0ea55b4582",
"id": 2,
"rules": []},
{"name": "test4",
"description": "FAKE_SECURITY_GROUP4",
"tenant_id": "272bee4c1e624cd4a72a6b0ea55b4582",
"id": 4,
"rules": []}
]})
@ -1328,6 +1344,9 @@ class FakeHTTPClient(base_client.HTTPClient):
def delete_os_security_group_rules_12(self, **kw):
return (202, {}, None)
def delete_os_security_group_rules_14(self, **kw):
return (202, {}, None)
def post_os_security_group_rules(self, body, **kw):
assert list(body) == ['security_group_rule']
fakes.assert_has_keys(body['security_group_rule'],

View File

@ -1998,14 +1998,22 @@ class ShellTest(utils.TestCase):
'cidr': None,
'group_id': 2}})
def test_security_group_delete_group_rule(self):
def test_security_group_delete_valid_group_rule(self):
self.run_command('secgroup-delete-group-rule test test2 TCP 222 222')
self.assert_called('DELETE', '/os-security-group-rules/12')
def test_security_group_delete_group_rule_protocol_case(self):
def test_security_group_delete_valid_group_rule_protocol_case(self):
self.run_command('secgroup-delete-group-rule test test2 tcp 222 222')
self.assert_called('DELETE', '/os-security-group-rules/12')
def test_security_group_delete_invalid_group_rule(self):
self.run_command('secgroup-delete-group-rule test test4 TCP -1 -1')
self.assert_called('DELETE', '/os-security-group-rules/14')
def test_security_group_delete_invalid_group_rule_protocol_case(self):
self.run_command('secgroup-delete-group-rule test test4 tcp -1 -1')
self.assert_called('DELETE', '/os-security-group-rules/14')
def test_security_group_list_rules(self):
self.run_command('secgroup-list-rules test')
self.assert_called('GET', '/os-security-groups')

View File

@ -2562,8 +2562,8 @@ def do_secgroup_delete_group_rule(cs, args):
params['to_port'] = int(args.to_port)
for rule in secgroup.rules:
if (rule.get('ip_protocol').upper() == params.get(
'ip_protocol').upper() and
if (rule.get('ip_protocol') and rule['ip_protocol'].upper() ==
params.get('ip_protocol').upper() and
rule.get('from_port') == params.get('from_port') and
rule.get('to_port') == params.get('to_port') and
rule.get('group', {}).get('name') ==