add delete_rule to elbv2

This commit is contained in:
Toshiya Kawasaki 2017-08-17 00:35:45 +09:00
parent 05a2715f4b
commit 3ac10945c1
3 changed files with 29 additions and 0 deletions

View File

@ -357,6 +357,18 @@ class ELBv2Backend(BaseBackend):
def delete_load_balancer(self, arn):
self.load_balancers.pop(arn, None)
def delete_rule(self, arn):
for load_balancer_arn in self.load_balancers:
listeners = self.load_balancers.get(load_balancer_arn).listeners.values()
for listener in listeners:
for rule in listener.rules:
if rule.arn == arn:
listener.rules.remove(rule)
return
# should raise RuleNotFound Error according to the AWS API doc
# however, boto3 does't raise error even if rule is not found
def delete_target_group(self, target_group_arn):
target_group = self.target_groups.pop(target_group_arn)
if target_group:

View File

@ -157,6 +157,12 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DELETE_LOAD_BALANCER_TEMPLATE)
return template.render()
def delete_rule(self):
arn = self._get_param('RuleArn')
self.elbv2_backend.delete_rule(arn)
template = self.response_template(DELETE_RULE_TEMPLATE)
return template.render()
def delete_target_group(self):
arn = self._get_param('TargetGroupArn')
self.elbv2_backend.delete_target_group(arn)
@ -448,6 +454,13 @@ DELETE_LOAD_BALANCER_TEMPLATE = """<DeleteLoadBalancerResponse xmlns="http://ela
</ResponseMetadata>
</DeleteLoadBalancerResponse>"""
DELETE_RULE_TEMPLATE = """<DeleteRuleResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/">
<DeleteRuleResult/>
<ResponseMetadata>
<RequestId>1549581b-12b7-11e3-895e-1334aEXAMPLE</RequestId>
</ResponseMetadata>
</DeleteRuleResponse>"""
DELETE_TARGET_GROUP_TEMPLATE = """<DeleteTargetGroupResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/">
<DeleteTargetGroupResult/>
<ResponseMetadata>

View File

@ -614,6 +614,10 @@ def test_create_listener_rules():
priorities = [rule['Priority'] for rule in rules['Rules']]
priorities.should.equal(['50', '100', 'default'])
arn = rules['Rules'][0]['RuleArn']
conn.delete_rule(RuleArn=arn)
# TODO: describe rule and ensure rule is removed
# test for invalid action type
safe_priority = 2
with assert_raises(ClientError):