From 5c3607cdb1aa3b87f9b9002fa566eeb0ea2fd958 Mon Sep 17 00:00:00 2001 From: zhufeng Date: Thu, 20 Aug 2015 13:58:10 +0800 Subject: [PATCH] Fix heat-api-cfn 500 error on an unknown action Add a default function in heat-api-cfn StackController, and raise an HeatActionNotSupported exception. Change-Id: I9023817792e949bde558dd22e818f38d6185f0fd Closes-Bug: #1473083 --- heat/api/cfn/v1/stacks.py | 3 +++ heat/tests/api/cfn/test_api_cfn_v1.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/heat/api/cfn/v1/stacks.py b/heat/api/cfn/v1/stacks.py index e0e1d2c105..820dd7be16 100644 --- a/heat/api/cfn/v1/stacks.py +++ b/heat/api/cfn/v1/stacks.py @@ -48,6 +48,9 @@ class StackController(object): self.rpc_client = rpc_client.EngineClient() self.policy = policy.Enforcer(scope='cloudformation') + def default(self, req, **args): + raise exception.HeatInvalidActionError() + def _enforce(self, req, action): """Authorize an action against the policy.json.""" try: diff --git a/heat/tests/api/cfn/test_api_cfn_v1.py b/heat/tests/api/cfn/test_api_cfn_v1.py index 17f9256cb1..25175fde88 100644 --- a/heat/tests/api/cfn/test_api_cfn_v1.py +++ b/heat/tests/api/cfn/test_api_cfn_v1.py @@ -62,6 +62,10 @@ class CfnStackControllerTest(common.HeatTestCase): 'deny_stack_user.json') self.addCleanup(self.m.VerifyAll) + def test_default(self): + self.assertRaises( + exception.HeatInvalidActionError, self.controller.default, None) + def tearDown(self): super(CfnStackControllerTest, self).tearDown() cfg.CONF.unregister_opts(self.opts)