Introduce a config for default image driver

This allows caller to load an image driver without specifying
a specific driver. If the image driver is not provided by caller,
the default image driver will be loaded.

Change-Id: Iab1fc6ffa8093d74354a541a9900201b24120456
This commit is contained in:
Hongbin Lu 2018-03-18 21:51:52 +00:00
parent 69d9ba2f69
commit 6a2d628d47
3 changed files with 15 additions and 2 deletions

View File

@ -27,7 +27,11 @@ Services which consume this:
* ``zun-compute``
Interdependencies to other options:
* None
""")
"""),
cfg.StrOpt(
'default_image_driver',
default='docker',
help='The default container image driver to use.'),
]
sandbox_opts = [

View File

@ -35,6 +35,8 @@ def load_image_driver(image_driver=None):
:param image_driver: container image driver name to override config opt
:returns: a ContainerImageDriver instance
"""
if not image_driver:
image_driver = CONF.default_image_driver
if not image_driver:
LOG.error("Container image driver option required, "
"but not specified")

View File

@ -13,7 +13,9 @@
# under the License.
import zun.conf
from zun.image.docker import driver as docker_driver
from zun.image import driver
from zun.image.glance import driver as glance_driver
from zun.tests import base
CONF = zun.conf.CONF
@ -24,10 +26,15 @@ class TestDriver(base.BaseTestCase):
super(TestDriver, self).setUp()
def test_load_image_driver_failure(self):
CONF.set_override('default_image_driver', None)
self.assertRaises(SystemExit, driver.load_image_driver)
self.assertRaises(SystemExit, driver.load_image_driver,
'UnknownDriver')
def test_load_image_driver(self):
image_driver = driver.load_image_driver()
self.assertIsInstance(image_driver, docker_driver.DockerDriver)
CONF.set_override('images_directory', None, group='glance')
self.assertTrue(driver.load_image_driver, 'glance.GlanceDriver')
image_driver = driver.load_image_driver('glance')
self.assertIsInstance(image_driver, glance_driver.GlanceDriver)