make get_all_security_groups filter AND match group ids, not OR them (#822)

This commit is contained in:
David Wilcox 2017-02-09 13:29:37 +11:00 committed by Steve Pulec
parent 1045dca7b2
commit 012dd497f2
2 changed files with 19 additions and 4 deletions

View File

@ -1309,10 +1309,12 @@ class SecurityGroupBackend(object):
if group_ids or groupnames or filters: if group_ids or groupnames or filters:
for group in all_groups: for group in all_groups:
if ((group_ids and group.id in group_ids) or if ((group_ids and not group.id in group_ids) or
(groupnames and group.name in groupnames) or (groupnames and not group.name in groupnames)):
(filters and group.matches_filters(filters))): continue
groups.append(group) if filters and not group.matches_filters(filters):
continue
groups.append(group)
else: else:
groups = all_groups groups = all_groups

View File

@ -610,3 +610,16 @@ def test_authorize_and_revoke_in_bulk():
sg01.ip_permissions_egress.should.have.length_of(1) sg01.ip_permissions_egress.should.have.length_of(1)
for ip_permission in expected_ip_permissions: for ip_permission in expected_ip_permissions:
sg01.ip_permissions_egress.shouldnt.contain(ip_permission) sg01.ip_permissions_egress.shouldnt.contain(ip_permission)
@mock_ec2
def test_get_all_security_groups_filter_with_same_vpc_id():
conn = boto.connect_ec2('the_key', 'the_secret')
vpc_id = 'vpc-5300000c'
security_group = conn.create_security_group('test1', 'test1', vpc_id=vpc_id)
security_group2 = conn.create_security_group('test2', 'test2', vpc_id=vpc_id)
security_group.vpc_id.should.equal(vpc_id)
security_group2.vpc_id.should.equal(vpc_id)
security_groups = conn.get_all_security_groups(group_ids=[security_group.id], filters={'vpc-id': [vpc_id]})
security_groups.should.have.length_of(1)