From: Zane Bitter Date: Wed, 19 Dec 2012 17:48:25 +0000 (+0100) Subject: RPC API: Pass a stack identifier to metadata_update X-Git-Tag: 2014.1~1058 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=f0d3c6e8466d3376cd81fff97efa7e12c6d5b571;p=openstack-build%2Fheat-build.git RPC API: Pass a stack identifier to metadata_update This brings it into line with all of the other RPC functions. bug 1088937 Change-Id: Ia45a12d652e96fb6bb03ce90d0b5a5e2ddeeb510 Signed-off-by: Zane Bitter --- diff --git a/heat/api/cfn/v1/waitcondition.py b/heat/api/cfn/v1/waitcondition.py index 66260224..c08924da 100644 --- a/heat/api/cfn/v1/waitcondition.py +++ b/heat/api/cfn/v1/waitcondition.py @@ -31,7 +31,7 @@ class WaitConditionController: identity = identifier.ResourceIdentifier.from_arn(arn) try: md = self.engine.metadata_update(con, - stack_id=identity.stack_id, + stack_id=dict(identity.stack()), resource_name=identity.resource_name, metadata=body) except rpc_common.RemoteError as ex: diff --git a/heat/engine/service.py b/heat/engine/service.py index 565258a2..5a324e88 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -413,15 +413,14 @@ class EngineService(service.Service): for resource in stack if resource.id is not None] @request_context - def metadata_update(self, context, stack_id, resource_name, metadata): + def metadata_update(self, context, stack_identity, + resource_name, metadata): """ Update the metadata for the given resource. """ - s = db_api.stack_get(None, stack_id) - if s is None: - raise AttributeError("Stack %s not found" % stack_id) + s = self._get_stack(context, stack_identity) - stack = parser.Stack.load(None, stack=s) + stack = parser.Stack.load(context, stack=s) if resource_name not in stack: raise AttributeError("Resource not found %s" % resource_name) diff --git a/heat/rpc/client.py b/heat/rpc/client.py index 5fa83747..839fad1e 100644 --- a/heat/rpc/client.py +++ b/heat/rpc/client.py @@ -205,12 +205,12 @@ class EngineClient(heat.openstack.common.rpc.proxy.RpcProxy): stack_identity=stack_identity), topic=_engine_topic(self.topic, ctxt, None)) - def metadata_update(self, ctxt, stack_id, resource_name, metadata): + def metadata_update(self, ctxt, stack_identity, resource_name, metadata): """ Update the metadata for the given resource. """ return self.call(ctxt, self.make_msg('metadata_update', - stack_id=stack_id, + stack_identity=stack_identity, resource_name=resource_name, metadata=metadata), topic=_engine_topic(self.topic, ctxt, None)) diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index d94d6b51..e945c6ae 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -613,21 +613,26 @@ class stackServiceTest(unittest.TestCase): def test_metadata(self): test_metadata = {'foo': 'bar', 'baz': 'quux', 'blarg': 'wibble'} - result = self.man.metadata_update(None, self.stack.id, 'WebServer', - test_metadata) + result = self.man.metadata_update(self.ctx, + dict(self.stack_identity), + 'WebServer', test_metadata) self.assertEqual(result, test_metadata) def test_metadata_err_stack(self): test_metadata = {'foo': 'bar', 'baz': 'quux', 'blarg': 'wibble'} + nonexist = dict(self.stack_identity) + nonexist['stack_name'] = 'foo' self.assertRaises(AttributeError, self.man.metadata_update, - None, 'noexistid', 'WebServer', test_metadata) + self.ctx, nonexist, + 'WebServer', test_metadata) def test_metadata_err_resource(self): test_metadata = {'foo': 'bar', 'baz': 'quux', 'blarg': 'wibble'} self.assertRaises(AttributeError, self.man.metadata_update, - None, self.stack.id, 'NooServer', test_metadata) + self.ctx, dict(self.stack_identity), + 'NooServer', test_metadata) def test_show_watch(self): # Insert two dummy watch rules into the DB diff --git a/heat/tests/test_rpc_client.py b/heat/tests/test_rpc_client.py index 61abfc7c..e794d8dd 100644 --- a/heat/tests/test_rpc_client.py +++ b/heat/tests/test_rpc_client.py @@ -141,7 +141,7 @@ class EngineRpcAPITestCase(unittest.TestCase): def test_metadata_update(self): self._test_engine_api('metadata_update', 'call', - stack_id=6, + stack_identity=self.identity, resource_name='LogicalResourceId', metadata={u'wordpress': []})