commit 4da09b9a713e8b155e94ad2b7d681564e0f38771 Author: songwenping Date: Fri Sep 25 11:32:56 2020 +0800 Refactor device_profile retrieve in ARQ post API Remove device_profile object None check as db has raised ResourceNotFound exception. Change-Id: I2b0914af4dee5abe95148cdcbc41f36e95785033 diff --git a/cyborg/api/controllers/v2/arqs.py b/cyborg/api/controllers/v2/arqs.py index c1c9871..0b92a45 100644 --- a/cyborg/api/controllers/v2/arqs.py +++ b/cyborg/api/controllers/v2/arqs.py @@ -103,18 +103,6 @@ class ARQsController(base.CyborgController): nova/nova/accelerator/cyborg.py. """ - def _get_devprof(self, context, devprof_name): - """Get the contents of a device profile. - Since this is just a read, it is ok for the API layer - to do this, instead of the conductor. - """ - try: - obj_devprof = objects.DeviceProfile.get_by_name(context, - devprof_name) - return obj_devprof - except Exception: - return None - @authorize_wsgi.authorize_wsgi("cyborg:arq", "create", False) @expose.expose(ARQCollection, body=types.jsontype, status_code=http_client.CREATED) @@ -134,11 +122,14 @@ class ARQsController(base.CyborgController): devprof = None dp_name = req.get('device_profile_name') if dp_name is not None: - devprof = self._get_devprof(context, dp_name) - if devprof is None: + try: + devprof = objects.DeviceProfile.get_by_name(context, dp_name) + except exception.ResourceNotFound: raise exception.ResourceNotFound( resource='Device Profile', msg='with name=%s' % dp_name) + except Exception as e: + raise e else: raise exception.DeviceProfileNameNeeded() LOG.info('[arqs] post. device profile name=%s', dp_name) diff --git a/cyborg/tests/unit/api/controllers/v2/test_arqs.py b/cyborg/tests/unit/api/controllers/v2/test_arqs.py index ea555db..de3a7cb 100644 --- a/cyborg/tests/unit/api/controllers/v2/test_arqs.py +++ b/cyborg/tests/unit/api/controllers/v2/test_arqs.py @@ -206,9 +206,11 @@ class TestARQsController(v2_test.APITestV2): @mock.patch('cyborg.objects.DeviceProfile.get_by_name') @mock.patch('cyborg.objects.ExtARQ.create') def test_create_with_wrong_dp(self, mock_obj_extarq, mock_obj_dp): - mock_obj_dp.side_effect = Exception - mock_obj_extarq.side_effect = self.fake_extarqs params = {'device_profile_name': 'wrong_device_profile_name'} + mock_obj_dp.side_effect = exception.ResourceNotFound( + resource='Device Profile', + msg='with name=%s' % params.get('device_profile_name')) + mock_obj_extarq.side_effect = self.fake_extarqs exc = None try: self.post_json(self.ARQ_URL, params, headers=self.headers)