From 2de6e17cf202b01e7134ffd94a16d0ed4a69745b Mon Sep 17 00:00:00 2001
From: Ramamani Yeleswarapu <ramamani.yeleswarapu@intel.com>
Date: Thu, 21 Apr 2016 14:33:26 -0700
Subject: [PATCH] Centralize config options - [api]

Nova style refactor of config options in Ironic.

Change-Id: I67ebeca9a4efb6065d2b4f0a7bcf5830b0cc5e3f
Partial-Bug: #1561100
---
 ironic/api/__init__.py  | 57 ---------------------------------------
 ironic/conf/__init__.py |  2 ++
 ironic/conf/api.py      | 60 +++++++++++++++++++++++++++++++++++++++++
 ironic/conf/opts.py     |  3 +--
 4 files changed, 63 insertions(+), 59 deletions(-)
 create mode 100644 ironic/conf/api.py

diff --git a/ironic/api/__init__.py b/ironic/api/__init__.py
index eba90ad5b5..e69de29bb2 100644
--- a/ironic/api/__init__.py
+++ b/ironic/api/__init__.py
@@ -1,57 +0,0 @@
-# Copyright 2013 Hewlett-Packard Development Company, L.P.
-# All Rights Reserved.
-#
-#    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 _
-
-API_SERVICE_OPTS = [
-    cfg.StrOpt('host_ip',
-               default='0.0.0.0',
-               help=_('The IP address on which ironic-api listens.')),
-    cfg.PortOpt('port',
-                default=6385,
-                help=_('The TCP port on which ironic-api listens.')),
-    cfg.IntOpt('max_limit',
-               default=1000,
-               help=_('The maximum number of items returned in a single '
-                      'response from a collection resource.')),
-    cfg.StrOpt('public_endpoint',
-               help=_("Public URL to use when building the links to the API "
-                      "resources (for example, \"https://ironic.rocks:6384\")."
-                      " If None the links will be built using the request's "
-                      "host URL. If the API is operating behind a proxy, you "
-                      "will want to change this to represent the proxy's URL. "
-                      "Defaults to None.")),
-    cfg.IntOpt('api_workers',
-               help=_('Number of workers for OpenStack Ironic API service. '
-                      'The default is equal to the number of CPUs available '
-                      'if that can be determined, else a default worker '
-                      'count of 1 is returned.')),
-    cfg.BoolOpt('enable_ssl_api',
-                default=False,
-                help=_("Enable the integrated stand-alone API to service "
-                       "requests via HTTPS instead of HTTP. If there is a "
-                       "front-end service performing HTTPS offloading from "
-                       "the service, this option should be False; note, you "
-                       "will want to change public API endpoint to represent "
-                       "SSL termination URL with 'public_endpoint' option.")),
-]
-
-CONF = cfg.CONF
-opt_group = cfg.OptGroup(name='api',
-                         title='Options for the ironic-api service')
-CONF.register_group(opt_group)
-CONF.register_opts(API_SERVICE_OPTS, opt_group)
diff --git a/ironic/conf/__init__.py b/ironic/conf/__init__.py
index d172c92054..df6a81ac9f 100644
--- a/ironic/conf/__init__.py
+++ b/ironic/conf/__init__.py
@@ -15,6 +15,7 @@
 
 from oslo_config import cfg
 
+from ironic.conf import api
 from ironic.conf import cimc
 from ironic.conf import cisco_ucs
 from ironic.conf import conductor
@@ -39,6 +40,7 @@ from ironic.conf import virtualbox
 
 CONF = cfg.CONF
 
+api.register_opts(CONF)
 cimc.register_opts(CONF)
 cisco_ucs.register_opts(CONF)
 conductor.register_opts(CONF)
diff --git a/ironic/conf/api.py b/ironic/conf/api.py
new file mode 100644
index 0000000000..7ec6f36c27
--- /dev/null
+++ b/ironic/conf/api.py
@@ -0,0 +1,60 @@
+# Copyright 2016 Intel Corporation
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+#    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('host_ip',
+               default='0.0.0.0',
+               help=_('The IP address on which ironic-api listens.')),
+    cfg.PortOpt('port',
+                default=6385,
+                help=_('The TCP port on which ironic-api listens.')),
+    cfg.IntOpt('max_limit',
+               default=1000,
+               help=_('The maximum number of items returned in a single '
+                      'response from a collection resource.')),
+    cfg.StrOpt('public_endpoint',
+               help=_("Public URL to use when building the links to the API "
+                      "resources (for example, \"https://ironic.rocks:6384\")."
+                      " If None the links will be built using the request's "
+                      "host URL. If the API is operating behind a proxy, you "
+                      "will want to change this to represent the proxy's URL. "
+                      "Defaults to None.")),
+    cfg.IntOpt('api_workers',
+               help=_('Number of workers for OpenStack Ironic API service. '
+                      'The default is equal to the number of CPUs available '
+                      'if that can be determined, else a default worker '
+                      'count of 1 is returned.')),
+    cfg.BoolOpt('enable_ssl_api',
+                default=False,
+                help=_("Enable the integrated stand-alone API to service "
+                       "requests via HTTPS instead of HTTP. If there is a "
+                       "front-end service performing HTTPS offloading from "
+                       "the service, this option should be False; note, you "
+                       "will want to change public API endpoint to represent "
+                       "SSL termination URL with 'public_endpoint' option.")),
+]
+
+opt_group = cfg.OptGroup(name='api',
+                         title='Options for the ironic-api service')
+
+
+def register_opts(conf):
+    conf.register_group(opt_group)
+    conf.register_opts(opts, group=opt_group)
diff --git a/ironic/conf/opts.py b/ironic/conf/opts.py
index 1be7cd349f..9458a2bfe5 100644
--- a/ironic/conf/opts.py
+++ b/ironic/conf/opts.py
@@ -12,7 +12,6 @@
 
 import itertools
 
-import ironic.api
 import ironic.drivers.modules.agent
 import ironic.drivers.modules.agent_base_vendor
 import ironic.drivers.modules.agent_client
@@ -44,7 +43,7 @@ _opts = [
     ('amt', itertools.chain(
         ironic.drivers.modules.amt.common.opts,
         ironic.drivers.modules.amt.power.opts)),
-    ('api', ironic.api.API_SERVICE_OPTS),
+    ('api', ironic.conf.api.opts),
     ('cimc', ironic.conf.cimc.opts),
     ('cisco_ucs', ironic.conf.cisco_ucs.opts),
     ('conductor', ironic.conf.conductor.opts),