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:
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)
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))
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
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': []})