From c1e770d776d9dc429d62b8265fc2c7df45f9040a Mon Sep 17 00:00:00 2001 From: Julien Vey Date: Fri, 28 Feb 2014 17:33:15 +0100 Subject: [PATCH] Add UUID in API model The only way we have currently to find the id of a ressource when querying the API (for instance GET /v1/plans) is to parse the uri field of the json object we get as a result This patch simply add the uuid field to the api model. It also disable the possibility for someone to specify its own uuid when creating an object and fix a bug in fakes.py (comma at the end of line) that was causing tests failures in this patch Change-Id: Ie38fc2646b2d7e2cc146dc34382c2c841af0fa33 --- solum/api/controllers/v1/datamodel/types.py | 3 +++ solum/api/handlers/assembly_handler.py | 2 +- solum/api/handlers/extension_handler.py | 2 +- solum/api/handlers/plan_handler.py | 2 +- solum/api/handlers/sensor_handler.py | 2 +- solum/api/handlers/service_handler.py | 2 +- solum/tests/api/handlers/test_assembly.py | 4 +++- solum/tests/api/handlers/test_extension.py | 4 +++- solum/tests/api/handlers/test_plan.py | 4 +++- solum/tests/api/handlers/test_sensor.py | 4 +++- solum/tests/api/handlers/test_service.py | 4 +++- solum/tests/fakes.py | 2 +- 12 files changed, 24 insertions(+), 11 deletions(-) diff --git a/solum/api/controllers/v1/datamodel/types.py b/solum/api/controllers/v1/datamodel/types.py index ff72c9a23..7a36523b0 100644 --- a/solum/api/controllers/v1/datamodel/types.py +++ b/solum/api/controllers/v1/datamodel/types.py @@ -24,6 +24,9 @@ class Base(wtypes.Base): uri = common_types.Uri "URI to the resource." + uuid = wtypes.text + "Unique Identifier of the resource" + name = wtypes.text "Name of the resource." diff --git a/solum/api/handlers/assembly_handler.py b/solum/api/handlers/assembly_handler.py index cb7f47cb1..c14e1718f 100644 --- a/solum/api/handlers/assembly_handler.py +++ b/solum/api/handlers/assembly_handler.py @@ -47,8 +47,8 @@ class AssemblyHandler(handler.Handler): def create(self, data): """Create a new resource.""" db_obj = objects.registry.Assembly() - db_obj.uuid = str(uuid.uuid4()) self._update_db_object(db_obj, data) + db_obj.uuid = str(uuid.uuid4()) db_obj.create(None) return db_obj diff --git a/solum/api/handlers/extension_handler.py b/solum/api/handlers/extension_handler.py index 9cdc655e4..8d1963dcf 100644 --- a/solum/api/handlers/extension_handler.py +++ b/solum/api/handlers/extension_handler.py @@ -48,8 +48,8 @@ class ExtensionHandler(handler.Handler): def create(self, data): """Create a new extension.""" db_obj = objects.registry.Extension() - db_obj.uuid = str(uuid.uuid4()) self._update_db_object(db_obj, data) + db_obj.uuid = str(uuid.uuid4()) db_obj.create() return db_obj diff --git a/solum/api/handlers/plan_handler.py b/solum/api/handlers/plan_handler.py index fed6639e5..79a67bce1 100644 --- a/solum/api/handlers/plan_handler.py +++ b/solum/api/handlers/plan_handler.py @@ -52,8 +52,8 @@ class PlanHandler(handler.Handler): def create(self, data): """Create a new resource.""" db_obj = objects.registry.Plan() - db_obj.uuid = str(uuid.uuid4()) self._update_db_object(db_obj, data) + db_obj.uuid = str(uuid.uuid4()) db_obj.create(None) return db_obj diff --git a/solum/api/handlers/sensor_handler.py b/solum/api/handlers/sensor_handler.py index f80542496..19212257f 100644 --- a/solum/api/handlers/sensor_handler.py +++ b/solum/api/handlers/sensor_handler.py @@ -48,8 +48,8 @@ class SensorHandler(handler.Handler): def create(self, data): """Create a new sensor.""" db_obj = objects.registry.Sensor() - db_obj.uuid = str(uuid.uuid4()) self._update_db_object(db_obj, data) + db_obj.uuid = str(uuid.uuid4()) db_obj.create() return db_obj diff --git a/solum/api/handlers/service_handler.py b/solum/api/handlers/service_handler.py index d5f2fb870..cb74bfaed 100644 --- a/solum/api/handlers/service_handler.py +++ b/solum/api/handlers/service_handler.py @@ -47,8 +47,8 @@ class ServiceHandler(handler.Handler): def create(self, data): """Create a new resource.""" db_obj = objects.registry.Service() - db_obj.uuid = str(uuid.uuid4()) self._update_db_object(db_obj, data) + db_obj.uuid = str(uuid.uuid4()) db_obj.create(None) return db_obj diff --git a/solum/tests/api/handlers/test_assembly.py b/solum/tests/api/handlers/test_assembly.py index 39c686f58..4734aa358 100644 --- a/solum/tests/api/handlers/test_assembly.py +++ b/solum/tests/api/handlers/test_assembly.py @@ -48,10 +48,12 @@ class TestAssemblyHandler(base.BaseTestCase): 'test_id') def test_create(self, mock_registry): - data = {'user_id': 'new_user_id'} + data = {'user_id': 'new_user_id', + 'uuid': 'input_uuid'} handler = assembly_handler.AssemblyHandler() res = handler.create(data) self.assertEqual('new_user_id', res.user_id) + self.assertNotEqual('uuid', res.uuid) def test_delete(self, mock_registry): db_obj = fakes.FakeAssembly() diff --git a/solum/tests/api/handlers/test_extension.py b/solum/tests/api/handlers/test_extension.py index 370970e8a..f39ae71bd 100644 --- a/solum/tests/api/handlers/test_extension.py +++ b/solum/tests/api/handlers/test_extension.py @@ -55,10 +55,12 @@ class TestExtensionHandler(base.BaseTestCase): 'test_id') def test_extension_create(self, mock_registry): - data = {'user_id': 'new_user_id'} + data = {'user_id': 'new_user_id', + 'uuid': 'input_uuid'} handler = extension.ExtensionHandler() res = handler.create(data) self.assertEqual('new_user_id', res.user_id) + self.assertNotEqual('uuid', res.uuid) def test_extension_delete(self, mock_registry): db_obj = fakes.FakeExtension() diff --git a/solum/tests/api/handlers/test_plan.py b/solum/tests/api/handlers/test_plan.py index 288c4d753..1912caa1b 100644 --- a/solum/tests/api/handlers/test_plan.py +++ b/solum/tests/api/handlers/test_plan.py @@ -48,10 +48,12 @@ class TestPlanHandler(base.BaseTestCase): 'test_id') def test_plan_create(self, mock_registry): - data = {'user_id': 'new_user_id'} + data = {'user_id': 'new_user_id', + 'uuid': 'input_uuid'} handler = plan_handler.PlanHandler() res = handler.create(data) self.assertEqual('new_user_id', res.user_id) + self.assertNotEqual('uuid', res.uuid) def test_plan_delete(self, mock_registry): db_obj = fakes.FakePlan() diff --git a/solum/tests/api/handlers/test_sensor.py b/solum/tests/api/handlers/test_sensor.py index aa250f317..cda9fad50 100644 --- a/solum/tests/api/handlers/test_sensor.py +++ b/solum/tests/api/handlers/test_sensor.py @@ -56,10 +56,12 @@ class TestSensorHandler(base.BaseTestCase): 'test_id') def test_sensor_create(self, mock_registry): - data = {'user_id': 'new_user_id'} + data = {'user_id': 'new_user_id', + 'uuid': 'input_uuid'} handler = sensor.SensorHandler() res = handler.create(data) self.assertEqual('new_user_id', res.user_id) + self.assertNotEqual('uuid', res.uuid) def test_sensor_delete(self, mock_registry): db_obj = fakes.FakeSensor() diff --git a/solum/tests/api/handlers/test_service.py b/solum/tests/api/handlers/test_service.py index 95f88701c..3a69ea4e3 100644 --- a/solum/tests/api/handlers/test_service.py +++ b/solum/tests/api/handlers/test_service.py @@ -48,10 +48,12 @@ class TestServiceHandler(base.BaseTestCase): 'test_id') def test_create(self, mock_registry): - data = {'user_id': 'new_user_id'} + data = {'user_id': 'new_user_id', + 'uuid': 'input_uuid'} handler = service_handler.ServiceHandler() res = handler.create(data) self.assertEqual('new_user_id', res.user_id) + self.assertNotEqual('uuid', res.uuid) def test_delete(self, mock_registry): db_obj = fakes.FakeService() diff --git a/solum/tests/fakes.py b/solum/tests/fakes.py index c59192f75..9048155d0 100644 --- a/solum/tests/fakes.py +++ b/solum/tests/fakes.py @@ -111,7 +111,7 @@ class FakeExtension(mock.Mock): self.__resource__ = 'extension' self.user_id = 'user_id' self.project_id = 'test_id' - self.uuid = '44du3dx', + self.uuid = '44du3dx' self.documentation = 'http://test_documentation.com' self.description = 'test_desc' self.id = 'test_id'