From 038d600b8e8286500dadcbaa07d2f7116433b063 Mon Sep 17 00:00:00 2001 From: Ramamani Yeleswarapu Date: Wed, 6 Apr 2016 16:33:33 -0700 Subject: [PATCH] Centralize config options - [irmc] Nova style refactor of config options in Ironic. Change-Id: Ia5d4e49c0a8d2de47d34ef9f0b4dfa740c500efa Partial-Bug: #1561100 --- ironic/conf/__init__.py | 2 + ironic/conf/irmc.py | 73 +++++++++++++++++++++++++++ ironic/conf/opts.py | 6 +-- ironic/drivers/modules/irmc/boot.py | 29 +---------- ironic/drivers/modules/irmc/common.py | 37 +------------- 5 files changed, 78 insertions(+), 69 deletions(-) create mode 100644 ironic/conf/irmc.py diff --git a/ironic/conf/__init__.py b/ironic/conf/__init__.py index fa62be1d9c..6345b24933 100644 --- a/ironic/conf/__init__.py +++ b/ironic/conf/__init__.py @@ -25,6 +25,7 @@ from ironic.conf import iboot from ironic.conf import ilo from ironic.conf import inspector from ironic.conf import ipmi +from ironic.conf import irmc CONF = cfg.CONF @@ -38,3 +39,4 @@ iboot.register_opts(CONF) ilo.register_opts(CONF) inspector.register_opts(CONF) ipmi.register_opts(CONF) +irmc.register_opts(CONF) diff --git a/ironic/conf/irmc.py b/ironic/conf/irmc.py new file mode 100644 index 0000000000..59f8c91445 --- /dev/null +++ b/ironic/conf/irmc.py @@ -0,0 +1,73 @@ +# Copyright 2016 Intel Corporation +# Copyright 2015 FUJITSU LIMITED +# +# 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 ironic.common.i18n import _ + +opts = [ + cfg.StrOpt('remote_image_share_root', + default='/remote_image_share_root', + help=_('Ironic conductor node\'s "NFS" or "CIFS" root path')), + cfg.StrOpt('remote_image_server', + help=_('IP of remote image server')), + cfg.StrOpt('remote_image_share_type', + default='CIFS', + choices=['CIFS', 'NFS'], + ignore_case=True, + help=_('Share type of virtual media')), + cfg.StrOpt('remote_image_share_name', + default='share', + help=_('share name of remote_image_server')), + cfg.StrOpt('remote_image_user_name', + help=_('User name of remote_image_server')), + cfg.StrOpt('remote_image_user_password', secret=True, + help=_('Password of remote_image_user_name')), + cfg.StrOpt('remote_image_user_domain', + default='', + help=_('Domain name of remote_image_user_name')), + cfg.PortOpt('port', + default=443, + choices=[443, 80], + help=_('Port to be used for iRMC operations')), + cfg.StrOpt('auth_method', + default='basic', + choices=['basic', 'digest'], + help=_('Authentication method to be used for iRMC ' + 'operations')), + cfg.IntOpt('client_timeout', + default=60, + help=_('Timeout (in seconds) for iRMC operations')), + cfg.StrOpt('sensor_method', + default='ipmitool', + choices=['ipmitool', 'scci'], + help=_('Sensor data retrieval method.')), + cfg.StrOpt('snmp_version', + default='v2c', + choices=['v1', 'v2c', 'v3'], + help=_('SNMP protocol version')), + cfg.PortOpt('snmp_port', + default=161, + help=_('SNMP port')), + cfg.StrOpt('snmp_community', + default='public', + help=_('SNMP community. Required for versions "v1" and "v2c"')), + cfg.StrOpt('snmp_security', + help=_('SNMP security name. Required for version "v3"')), +] + + +def register_opts(conf): + conf.register_opts(opts, group='irmc') diff --git a/ironic/conf/opts.py b/ironic/conf/opts.py index ab1c961295..068064a560 100644 --- a/ironic/conf/opts.py +++ b/ironic/conf/opts.py @@ -33,8 +33,6 @@ import ironic.drivers.modules.amt.common import ironic.drivers.modules.amt.power import ironic.drivers.modules.deploy_utils import ironic.drivers.modules.image_cache -import ironic.drivers.modules.irmc.boot -import ironic.drivers.modules.irmc.common import ironic.drivers.modules.iscsi_deploy import ironic.drivers.modules.oneview.common import ironic.drivers.modules.pxe @@ -81,9 +79,7 @@ _opts = [ ('ilo', ironic.conf.ilo.opts), ('inspector', ironic.conf.inspector.opts), ('ipmi', ironic.conf.ipmi.opts), - ('irmc', itertools.chain( - ironic.drivers.modules.irmc.boot.opts, - ironic.drivers.modules.irmc.common.opts)), + ('irmc', ironic.conf.irmc.opts), ('iscsi', ironic.drivers.modules.iscsi_deploy.iscsi_opts), ('keystone', ironic.common.keystone.keystone_opts), ('neutron', ironic.common.neutron.neutron_opts), diff --git a/ironic/drivers/modules/irmc/boot.py b/ironic/drivers/modules/irmc/boot.py index 0c39d7bb61..c4bc594733 100644 --- a/ironic/drivers/modules/irmc/boot.py +++ b/ironic/drivers/modules/irmc/boot.py @@ -21,7 +21,6 @@ import shutil import tempfile from ironic_lib import utils as ironic_utils -from oslo_config import cfg from oslo_log import log as logging from oslo_utils import importutils @@ -34,6 +33,7 @@ from ironic.common.i18n import _LI from ironic.common import images from ironic.common import states from ironic.conductor import utils as manager_utils +from ironic.conf import CONF from ironic.drivers import base from ironic.drivers.modules import deploy_utils from ironic.drivers.modules.irmc import common as irmc_common @@ -41,39 +41,12 @@ from ironic.drivers.modules.irmc import common as irmc_common scci = importutils.try_import('scciclient.irmc.scci') -CONF = cfg.CONF - try: if CONF.debug: scci.DEBUG = True except Exception: pass -opts = [ - cfg.StrOpt('remote_image_share_root', - default='/remote_image_share_root', - help=_('Ironic conductor node\'s "NFS" or "CIFS" root path')), - cfg.StrOpt('remote_image_server', - help=_('IP of remote image server')), - cfg.StrOpt('remote_image_share_type', - default='CIFS', - choices=['CIFS', 'NFS'], - ignore_case=True, - help=_('Share type of virtual media')), - cfg.StrOpt('remote_image_share_name', - default='share', - help=_('share name of remote_image_server')), - cfg.StrOpt('remote_image_user_name', - help=_('User name of remote_image_server')), - cfg.StrOpt('remote_image_user_password', secret=True, - help=_('Password of remote_image_user_name')), - cfg.StrOpt('remote_image_user_domain', - default='', - help=_('Domain name of remote_image_user_name')), -] - -CONF.register_opts(opts, group='irmc') - LOG = logging.getLogger(__name__) REQUIRED_PROPERTIES = { diff --git a/ironic/drivers/modules/irmc/common.py b/ironic/drivers/modules/irmc/common.py index 252a6a24ac..ba735299c1 100644 --- a/ironic/drivers/modules/irmc/common.py +++ b/ironic/drivers/modules/irmc/common.py @@ -17,49 +17,14 @@ Common functionalities shared between different iRMC modules. """ import six -from oslo_config import cfg from oslo_utils import importutils from ironic.common import exception from ironic.common.i18n import _ +from ironic.conf import CONF scci = importutils.try_import('scciclient.irmc.scci') -opts = [ - cfg.PortOpt('port', - default=443, - choices=[443, 80], - help=_('Port to be used for iRMC operations')), - cfg.StrOpt('auth_method', - default='basic', - choices=['basic', 'digest'], - help=_('Authentication method to be used for iRMC ' - 'operations')), - cfg.IntOpt('client_timeout', - default=60, - help=_('Timeout (in seconds) for iRMC operations')), - cfg.StrOpt('sensor_method', - default='ipmitool', - choices=['ipmitool', 'scci'], - help=_('Sensor data retrieval method.')), - cfg.StrOpt('snmp_version', - default='v2c', - choices=['v1', 'v2c', 'v3'], - help=_('SNMP protocol version')), - cfg.PortOpt('snmp_port', - default=161, - help=_('SNMP port')), - cfg.StrOpt('snmp_community', - default='public', - help=_('SNMP community. Required for versions "v1" and "v2c"')), - cfg.StrOpt('snmp_security', - help=_('SNMP security name. Required for version "v3"')), -] - -CONF = cfg.CONF -CONF.register_opts(opts, group='irmc') - - REQUIRED_PROPERTIES = { 'irmc_address': _("IP address or hostname of the iRMC. Required."), 'irmc_username': _("Username for the iRMC with administrator privileges. "