From 344a6210da53e53f9d4900e48b76423ebd7d9375 Mon Sep 17 00:00:00 2001 From: Hongbin Lu Date: Tue, 18 Dec 2018 02:59:03 +0000 Subject: [PATCH] Populate default image driver in API layer This ensure we always have the image_driver ready in compute layer. Change-Id: Ic0b991107b06cab0af48a88719942e1edd14cfa2 --- zun/api/controllers/v1/containers.py | 7 ++++--- zun/api/controllers/v1/images.py | 7 +++++-- zun/tests/unit/api/controllers/v1/test_images.py | 10 +++++++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/zun/api/controllers/v1/containers.py b/zun/api/controllers/v1/containers.py index 8b8b8deb0..856a5959a 100644 --- a/zun/api/controllers/v1/containers.py +++ b/zun/api/controllers/v1/containers.py @@ -393,9 +393,10 @@ class ContainersController(base.Controller): 'are: %s') % bools) # Valiadtion accepts 'None' so need to convert it to None - if container_dict.get('image_driver'): - container_dict['image_driver'] = api_utils.string_or_none( - container_dict.get('image_driver')) + container_dict['image_driver'] = api_utils.string_or_none( + container_dict.get('image_driver')) + if not container_dict['image_driver']: + container_dict['image_driver'] = CONF.default_image_driver container_dict['project_id'] = context.project_id container_dict['user_id'] = context.user_id diff --git a/zun/api/controllers/v1/images.py b/zun/api/controllers/v1/images.py index 0127049d4..51e66602e 100644 --- a/zun/api/controllers/v1/images.py +++ b/zun/api/controllers/v1/images.py @@ -25,8 +25,10 @@ from zun.common import exception from zun.common.i18n import _ from zun.common import policy from zun.common import utils +import zun.conf from zun import objects +CONF = zun.conf.CONF LOG = logging.getLogger(__name__) @@ -173,8 +175,9 @@ class ImagesController(base.Controller): raise exception.InvalidValue(_('Valid exact_match values are: %s') % bools) # Valiadtion accepts 'None' so need to convert it to None - if image_driver: - image_driver = api_utils.string_or_none(image_driver) + image_driver = api_utils.string_or_none(image_driver) + if not image_driver: + image_driver = CONF.default_image_driver return pecan.request.compute_api.image_search(context, image, image_driver, diff --git a/zun/tests/unit/api/controllers/v1/test_images.py b/zun/tests/unit/api/controllers/v1/test_images.py index a7ff4f515..50f9f0b0c 100644 --- a/zun/tests/unit/api/controllers/v1/test_images.py +++ b/zun/tests/unit/api/controllers/v1/test_images.py @@ -17,11 +17,15 @@ from webtest.app import AppError from oslo_utils import uuidutils from zun.common import exception +import zun.conf from zun import objects from zun.tests.unit.api import base as api_base from zun.tests.unit.db import utils +CONF = zun.conf.CONF + + class TestImageController(api_base.FunctionalTest): @mock.patch('zun.common.policy.enforce', return_value=True) @patch('zun.compute.api.API.image_pull') @@ -174,7 +178,7 @@ class TestImageController(api_base.FunctionalTest): response = self.get('/v1/images/redis/search/') self.assertEqual(200, response.status_int) mock_image_search.assert_called_once_with( - mock.ANY, 'redis', None, False) + mock.ANY, 'redis', CONF.default_image_driver, False) @patch('zun.compute.api.API.image_search') def test_search_image_with_tag(self, mock_image_search): @@ -182,14 +186,14 @@ class TestImageController(api_base.FunctionalTest): response = self.get('/v1/images/redis:test/search/') self.assertEqual(200, response.status_int) mock_image_search.assert_called_once_with( - mock.ANY, 'redis:test', None, False) + mock.ANY, 'redis:test', CONF.default_image_driver, False) @patch('zun.compute.api.API.image_search') def test_search_image_not_found(self, mock_image_search): mock_image_search.side_effect = exception.ImageNotFound self.assertRaises(AppError, self.get, '/v1/images/redis/search/') mock_image_search.assert_called_once_with( - mock.ANY, 'redis', None, False) + mock.ANY, 'redis', CONF.default_image_driver, False) @patch('zun.compute.rpcapi.API.image_search') def test_search_image_with_exact_match_true(self, mock_image_search):