diff options
| author | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-10-24 15:18:06 -0400 |
|---|---|---|
| committer | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-10-24 15:18:06 -0400 |
| commit | 86b10119ca3649411c50ac3700a934efe40a09e5 (patch) | |
| tree | 3770433c992d689d67eb8ddbfad2a8a0e5152ac1 | |
| parent | 022afb9b0686f9d7af128f1a19927867cf08a180 (diff) | |
| download | nova-86b10119ca3649411c50ac3700a934efe40a09e5.tar.gz nova-86b10119ca3649411c50ac3700a934efe40a09e5.tar.xz nova-86b10119ca3649411c50ac3700a934efe40a09e5.zip | |
Server metadata must support server uuids.
Change-Id: I933e8aebce94867e4d23c13d978032b0ae99b896
| -rw-r--r-- | nova/compute/api.py | 10 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_server_metadata.py | 12 |
2 files changed, 20 insertions, 2 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index 2305c09ab..57e0d9edd 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1528,13 +1528,21 @@ class API(base.Base): floating_address=address, fixed_address=fixed_ip_addrs[0]) + def _get_native_instance_id(self, context, instance_id): + """If an instance id is a UUID, convert it to a native ID.""" + if utils.is_uuid_like(instance_id): + instance_id = self.get(context, instance_id)['id'] + return instance_id + def get_instance_metadata(self, context, instance_id): """Get all metadata associated with an instance.""" + instance_id = self._get_native_instance_id(context, instance_id) rv = self.db.instance_metadata_get(context, instance_id) return dict(rv.iteritems()) def delete_instance_metadata(self, context, instance_id, key): """Delete the given metadata item from an instance.""" + instance_id = self._get_native_instance_id(context, instance_id) self.db.instance_metadata_delete(context, instance_id, key) def update_instance_metadata(self, context, instance_id, @@ -1545,6 +1553,8 @@ class API(base.Base): `metadata` argument will be deleted. """ + instance_id = self._get_native_instance_id(context, instance_id) + if delete: _metadata = metadata else: diff --git a/nova/tests/api/openstack/test_server_metadata.py b/nova/tests/api/openstack/test_server_metadata.py index bcacc2388..109a73dc3 100644 --- a/nova/tests/api/openstack/test_server_metadata.py +++ b/nova/tests/api/openstack/test_server_metadata.py @@ -39,6 +39,9 @@ def return_create_instance_metadata(context, server_id, metadata, delete): def return_server_metadata(context, server_id): + if not isinstance(server_id, int): + msg = 'id %s must be int in return server metadata' % server_id + raise Exception(msg) return stub_server_metadata() @@ -70,6 +73,10 @@ def return_server(context, server_id): return {'id': server_id} +def return_server_by_uuid(context, server_uuid): + return {'id': 1} + + def return_server_nonexistant(context, server_id): raise exception.InstanceNotFound() @@ -80,13 +87,14 @@ class ServerMetaDataTest(test.TestCase): super(ServerMetaDataTest, self).setUp() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(nova.db.api, 'instance_get', return_server) - self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server) + self.stubs.Set(nova.db.api, 'instance_get_by_uuid', + return_server_by_uuid) self.stubs.Set(nova.db.api, 'instance_metadata_get', return_server_metadata) self.controller = server_metadata.Controller() - self.uuid = utils.gen_uuid() + self.uuid = str(utils.gen_uuid()) self.url = '/v1.1/fake/servers/%s/metadata' % self.uuid def test_index(self): |
