Centralize config option: cluster_template section

Centralize config option of Cluster Template section.
Replace oslo_conf cfg to magnum.conf.

Change-Id: Ia120c8cb43c71977f69ac520cbd76563f4a8b655
Implements: blueprint centralize-config-magnum
This commit is contained in:
Hieu LE 2016-08-17 14:04:02 +07:00
parent 4f8b26f822
commit e891d0a20b
6 changed files with 90 additions and 60 deletions

View File

@ -14,56 +14,17 @@
# limitations under the License. # limitations under the License.
import decorator import decorator
from oslo_config import cfg
from oslo_utils import uuidutils from oslo_utils import uuidutils
import pecan import pecan
from magnum.api import utils as api_utils from magnum.api import utils as api_utils
from magnum.common import exception from magnum.common import exception
import magnum.conf
from magnum.i18n import _ from magnum.i18n import _
from magnum import objects from magnum import objects
CONF = magnum.conf.CONF
cluster_template_opts = [
cfg.ListOpt('kubernetes_allowed_network_drivers',
default=['all'],
help=_("Allowed network drivers for kubernetes "
"cluster-templates. Use 'all' keyword to allow all "
"drivers supported for kubernetes cluster-templates. "
"Supported network drivers include flannel."),
deprecated_group='baymodel'),
cfg.StrOpt('kubernetes_default_network_driver',
default='flannel',
help=_("Default network driver for kubernetes "
"cluster-templates."),
deprecated_group='baymodel'),
cfg.ListOpt('swarm_allowed_network_drivers',
default=['all'],
help=_("Allowed network drivers for docker swarm "
"cluster-templates. Use 'all' keyword to allow all "
"drivers supported for swarm cluster-templates. "
"Supported network drivers include docker and flannel."
),
deprecated_group='baymodel'),
cfg.StrOpt('swarm_default_network_driver',
default='docker',
help=_("Default network driver for docker swarm "
"cluster-templates."),
deprecated_group='baymodel'),
cfg.ListOpt('mesos_allowed_network_drivers',
default=['all'],
help=_("Allowed network drivers for mesos cluster-templates. "
"Use 'all' keyword to allow all drivers supported "
"for mesos cluster-templates. Supported network "
"drivers include docker."),
deprecated_group='baymodel'),
cfg.StrOpt('mesos_default_network_driver',
default='docker',
help=_("Default network driver for mesos cluster-templates."),
deprecated_group='baymodel'),
]
cfg.CONF.register_opts(cluster_template_opts, group='cluster_template')
cluster_update_allowed_properties = set(['node_count']) cluster_update_allowed_properties = set(['node_count'])
@ -297,9 +258,9 @@ class K8sValidator(Validator):
supported_network_drivers = ['flannel'] supported_network_drivers = ['flannel']
supported_server_types = ['vm', 'bm'] supported_server_types = ['vm', 'bm']
allowed_network_drivers = ( allowed_network_drivers = (
cfg.CONF.cluster_template.kubernetes_allowed_network_drivers) CONF.cluster_template.kubernetes_allowed_network_drivers)
default_network_driver = ( default_network_driver = (
cfg.CONF.cluster_template.kubernetes_default_network_driver) CONF.cluster_template.kubernetes_default_network_driver)
supported_volume_driver = ['cinder'] supported_volume_driver = ['cinder']
@ -308,9 +269,9 @@ class SwarmValidator(Validator):
supported_network_drivers = ['docker', 'flannel'] supported_network_drivers = ['docker', 'flannel']
supported_server_types = ['vm', 'bm'] supported_server_types = ['vm', 'bm']
allowed_network_drivers = (cfg.CONF.cluster_template. allowed_network_drivers = (CONF.cluster_template.
swarm_allowed_network_drivers) swarm_allowed_network_drivers)
default_network_driver = (cfg.CONF.cluster_template. default_network_driver = (CONF.cluster_template.
swarm_default_network_driver) swarm_default_network_driver)
supported_volume_driver = ['rexray'] supported_volume_driver = ['rexray']
@ -320,9 +281,9 @@ class MesosValidator(Validator):
supported_network_drivers = ['docker'] supported_network_drivers = ['docker']
supported_server_types = ['vm', 'bm'] supported_server_types = ['vm', 'bm']
allowed_network_drivers = (cfg.CONF.cluster_template. allowed_network_drivers = (CONF.cluster_template.
mesos_allowed_network_drivers) mesos_allowed_network_drivers)
default_network_driver = (cfg.CONF.cluster_template. default_network_driver = (CONF.cluster_template.
mesos_default_network_driver) mesos_default_network_driver)
supported_volume_driver = ['rexray'] supported_volume_driver = ['rexray']

View File

@ -20,7 +20,7 @@ from magnum.conf import barbican
# from magnum.conf import certificates # from magnum.conf import certificates
from magnum.conf import cinder from magnum.conf import cinder
from magnum.conf import cluster from magnum.conf import cluster
# from magnum.conf import cluster_templates from magnum.conf import cluster_templates
from magnum.conf import conductor from magnum.conf import conductor
# from magnum.conf import database # from magnum.conf import database
# from magnum.conf import docker # from magnum.conf import docker
@ -37,7 +37,7 @@ CONF = cfg.CONF
api.register_opts(CONF) api.register_opts(CONF)
barbican.register_opts(CONF) barbican.register_opts(CONF)
cluster.register_opts(CONF) cluster.register_opts(CONF)
# cluster_templates.register_opts(CONF) cluster_templates.register_opts(CONF)
# certificates.register_opts(CONF) # certificates.register_opts(CONF)
cinder.register_opts(CONF) cinder.register_opts(CONF)
conductor.register_opts(CONF) conductor.register_opts(CONF)

View File

@ -0,0 +1,68 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy
# of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from oslo_config import cfg
from magnum.i18n import _
cluster_template_group = cfg.OptGroup(name='cluster_template',
title='Options for cluster_template')
cluster_template_opts = [
cfg.ListOpt('kubernetes_allowed_network_drivers',
default=['all'],
help=_("Allowed network drivers for kubernetes "
"cluster-templates. Use 'all' keyword to allow all "
"drivers supported for kubernetes cluster-templates. "
"Supported network drivers include flannel."),
deprecated_group='baymodel'),
cfg.StrOpt('kubernetes_default_network_driver',
default='flannel',
help=_("Default network driver for kubernetes "
"cluster-templates."),
deprecated_group='baymodel'),
cfg.ListOpt('swarm_allowed_network_drivers',
default=['all'],
help=_("Allowed network drivers for docker swarm "
"cluster-templates. Use 'all' keyword to allow all "
"drivers supported for swarm cluster-templates. "
"Supported network drivers include docker and flannel."
),
deprecated_group='baymodel'),
cfg.StrOpt('swarm_default_network_driver',
default='docker',
help=_("Default network driver for docker swarm "
"cluster-templates."),
deprecated_group='baymodel'),
cfg.ListOpt('mesos_allowed_network_drivers',
default=['all'],
help=_("Allowed network drivers for mesos cluster-templates. "
"Use 'all' keyword to allow all drivers supported "
"for mesos cluster-templates. Supported network "
"drivers include docker."),
deprecated_group='baymodel'),
cfg.StrOpt('mesos_default_network_driver',
default='docker',
help=_("Default network driver for mesos cluster-templates."),
deprecated_group='baymodel'),
]
def register_opts(conf):
conf.register_group(cluster_template_group)
conf.register_opts(cluster_template_opts, group=cluster_template_group)
def list_opts():
return {
cluster_template_group: cluster_template_opts
}

View File

@ -15,7 +15,6 @@
import itertools import itertools
import magnum.api.validation
import magnum.common.cert_manager import magnum.common.cert_manager
from magnum.common.cert_manager import local_cert_manager from magnum.common.cert_manager import local_cert_manager
import magnum.common.exception import magnum.common.exception
@ -44,7 +43,6 @@ def list_opts():
itertools.chain(magnum.common.cert_manager.cert_manager_opts, itertools.chain(magnum.common.cert_manager.cert_manager_opts,
local_cert_manager.local_cert_manager_opts, local_cert_manager.local_cert_manager_opts,
)), )),
('cluster_template', magnum.api.validation.cluster_template_opts),
('keystone_auth', magnum.common.keystone.keystone_auth_opts), ('keystone_auth', magnum.common.keystone.keystone_auth_opts),
('docker_registry', ('docker_registry',
magnum.drivers.common.template_def.docker_registry_opts) magnum.drivers.common.template_def.docker_registry_opts)

View File

@ -13,7 +13,6 @@
import datetime import datetime
import mock import mock
from oslo_config import cfg
from oslo_utils import timeutils from oslo_utils import timeutils
from oslo_utils import uuidutils from oslo_utils import uuidutils
from six.moves.urllib import parse as urlparse from six.moves.urllib import parse as urlparse
@ -24,11 +23,14 @@ from magnum.api import attr_validator
from magnum.api.controllers.v1 import baymodel as api_baymodel from magnum.api.controllers.v1 import baymodel as api_baymodel
from magnum.common import exception from magnum.common import exception
from magnum.common import policy as magnum_policy from magnum.common import policy as magnum_policy
import magnum.conf
from magnum.tests import base from magnum.tests import base
from magnum.tests.unit.api import base as api_base from magnum.tests.unit.api import base as api_base
from magnum.tests.unit.api import utils as apiutils from magnum.tests.unit.api import utils as apiutils
from magnum.tests.unit.objects import utils as obj_utils from magnum.tests.unit.objects import utils as obj_utils
CONF = magnum.conf.CONF
class TestBayModelObject(base.TestCase): class TestBayModelObject(base.TestCase):
@ -171,7 +173,7 @@ class TestListBayModel(api_base.FunctionalTest):
self.assertIn(next_marker, response['next']) self.assertIn(next_marker, response['next'])
def test_collection_links_default_limit(self): def test_collection_links_default_limit(self):
cfg.CONF.set_override('max_limit', 3, 'api') CONF.set_override('max_limit', 3, 'api')
for id_ in range(5): for id_ in range(5):
obj_utils.create_test_cluster_template( obj_utils.create_test_cluster_template(
self.context, id=id_, uuid=uuidutils.generate_uuid()) self.context, id=id_, uuid=uuidutils.generate_uuid())
@ -625,11 +627,10 @@ class TestPost(api_base.FunctionalTest):
mock_image_data.return_value = {'name': 'mock_name', mock_image_data.return_value = {'name': 'mock_name',
'os_distro': 'fedora-atomic'} 'os_distro': 'fedora-atomic'}
for k, v in baymodel_config_dict.items(): for k, v in baymodel_config_dict.items():
cfg.CONF.set_override(k, v, 'cluster_template') CONF.set_override(k, v, 'cluster_template')
with mock.patch.object( with mock.patch.object(
self.dbapi, 'create_cluster_template', self.dbapi, 'create_cluster_template',
wraps=self.dbapi.create_cluster_template) as cc_mock: wraps=self.dbapi.create_cluster_template) as cc_mock:
bdict = apiutils.baymodel_post_data(**baymodel_dict) bdict = apiutils.baymodel_post_data(**baymodel_dict)
response = self.post_json('/baymodels', bdict, response = self.post_json('/baymodels', bdict,
expect_errors=expect_errors) expect_errors=expect_errors)
@ -639,7 +640,7 @@ class TestPost(api_base.FunctionalTest):
expected_driver = bdict.get('network_driver') expected_driver = bdict.get('network_driver')
if not expected_driver: if not expected_driver:
expected_driver = ( expected_driver = (
cfg.CONF.cluster_template.swarm_default_network_driver) CONF.cluster_template.swarm_default_network_driver)
self.assertEqual(expected_driver, self.assertEqual(expected_driver,
response.json['network_driver']) response.json['network_driver'])
self.assertEqual(bdict['image_id'], self.assertEqual(bdict['image_id'],

View File

@ -14,15 +14,17 @@
# limitations under the License. # limitations under the License.
import mock import mock
from oslo_config import cfg
from six.moves import reload_module from six.moves import reload_module
from magnum.api import validation as v from magnum.api import validation as v
from magnum.common import exception from magnum.common import exception
import magnum.conf
from magnum import objects from magnum import objects
from magnum.tests import base from magnum.tests import base
from magnum.tests.unit.objects import utils as obj_utils from magnum.tests.unit.objects import utils as obj_utils
CONF = magnum.conf.CONF
class TestValidation(base.BaseTestCase): class TestValidation(base.BaseTestCase):
@ -181,7 +183,7 @@ class TestValidation(base.BaseTestCase):
pass pass
for key, val in network_driver_config_dict.items(): for key, val in network_driver_config_dict.items():
cfg.CONF.set_override(key, val, 'cluster_template') CONF.set_override(key, val, 'cluster_template')
cluster_template = mock.MagicMock() cluster_template = mock.MagicMock()
cluster_template.name = 'test_cluster_template' cluster_template.name = 'test_cluster_template'
@ -269,7 +271,7 @@ class TestValidation(base.BaseTestCase):
pass pass
for key, val in network_driver_config_dict.items(): for key, val in network_driver_config_dict.items():
cfg.CONF.set_override(key, val, 'cluster_template') CONF.set_override(key, val, 'cluster_template')
cluster_template_ident = 'test_uuid_or_name' cluster_template_ident = 'test_uuid_or_name'