From 3ac10945c12f3b7ca8fa7bed4015c4d49ca28798 Mon Sep 17 00:00:00 2001 From: Toshiya Kawasaki Date: Thu, 17 Aug 2017 00:35:45 +0900 Subject: [PATCH] add delete_rule to elbv2 --- moto/elbv2/models.py | 12 ++++++++++++ moto/elbv2/responses.py | 13 +++++++++++++ tests/test_elbv2/test_elbv2.py | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/moto/elbv2/models.py b/moto/elbv2/models.py index a31e07927..9182c28d5 100644 --- a/moto/elbv2/models.py +++ b/moto/elbv2/models.py @@ -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: diff --git a/moto/elbv2/responses.py b/moto/elbv2/responses.py index fe4518b25..05e21effe 100644 --- a/moto/elbv2/responses.py +++ b/moto/elbv2/responses.py @@ -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 = """ + + + 1549581b-12b7-11e3-895e-1334aEXAMPLE + +""" + DELETE_TARGET_GROUP_TEMPLATE = """ diff --git a/tests/test_elbv2/test_elbv2.py b/tests/test_elbv2/test_elbv2.py index 580cb6308..81fda21b4 100644 --- a/tests/test_elbv2/test_elbv2.py +++ b/tests/test_elbv2/test_elbv2.py @@ -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):