EC2: add GroupId to SecurityGroupRules (#6437)

This commit is contained in:
David 2023-06-29 11:07:52 +02:00 committed by GitHub
parent 8ba1a61424
commit 3f528f5428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 20 deletions

View File

@ -550,16 +550,19 @@ class SecurityGroupBackend:
def describe_security_group_rules(
self, group_ids: Optional[List[str]] = None, filters: Any = None
) -> List[SecurityRule]:
) -> Dict[str, List[SecurityRule]]:
matches = self.describe_security_groups(group_ids=group_ids, filters=filters)
if not matches:
raise InvalidSecurityGroupNotFoundError(
"No security groups found matching the filters provided."
)
rules = []
rules = {}
for group in matches:
rules.extend(group.ingress_rules)
rules.extend(group.egress_rules)
group_rules = []
group_rules.extend(group.ingress_rules)
group_rules.extend(group.egress_rules)
if group_rules:
rules[group.group_id] = group_rules
return rules

View File

@ -254,7 +254,8 @@ DESCRIBE_SECURITY_GROUP_RULES_RESPONSE = """
<DescribeSecurityGroupRulesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
<requestId>{{ request_id }}</requestId>
<securityGroupRuleSet>
{% for rule in rules %}
{% for group, rule_list in rules.items() %}
{% for rule in rule_list %}
<item>
{% if rule.from_port is not none %}
<fromPort>{{ rule.from_port }}</fromPort>
@ -266,11 +267,13 @@ DESCRIBE_SECURITY_GROUP_RULES_RESPONSE = """
<cidrIpv4>{{ rule.ip_ranges[0]['CidrIp'] }}</cidrIpv4>
{% endif %}
<ipProtocol>{{ rule.ip_protocol }}</ipProtocol>
<groupId>{{ group }}</groupId>
<groupOwnerId>{{ rule.owner_id }}</groupOwnerId>
<isEgress>{{ 'true' if rule.is_egress else 'false' }}</isEgress>
<securityGroupRuleId>{{ rule.id }}</securityGroupRuleId>
</item>
{% endfor %}
{% endfor %}
</securityGroupRuleSet>
</DescribeSecurityGroupRulesResponse>"""

View File

@ -586,6 +586,7 @@ def test_create_and_describe_security_grp_rule():
assert rules[0]["IsEgress"] is True
assert rules[0]["IpProtocol"] == "-1"
assert rules[0]["CidrIpv4"] == "0.0.0.0/0"
assert "GroupId" in rules[0]
@mock_ec2