diff --git a/ironic/conf/default.py b/ironic/conf/default.py
index bb5ec39180..b3a6943da1 100644
--- a/ironic/conf/default.py
+++ b/ironic/conf/default.py
@@ -424,6 +424,28 @@ webserver_opts = [
 ]
 
 
+def list_opts():
+    _default_opt_lists = [
+        api_opts,
+        driver_opts,
+        exc_log_opts,
+        hash_opts,
+        image_opts,
+        img_cache_opts,
+        netconf_opts,
+        notification_opts,
+        path_opts,
+        portgroup_opts,
+        service_opts,
+        utils_opts,
+        webserver_opts,
+    ]
+    full_opt_list = []
+    for options in _default_opt_lists:
+        full_opt_list.extend(options)
+    return full_opt_list
+
+
 def register_opts(conf):
     conf.register_opts(api_opts)
     conf.register_opts(driver_opts)
diff --git a/ironic/conf/opts.py b/ironic/conf/opts.py
index ecd804dd93..97b9c9d447 100644
--- a/ironic/conf/opts.py
+++ b/ironic/conf/opts.py
@@ -10,30 +10,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import itertools
-
 from oslo_log import log
 
 import ironic.conf
 
-_default_opt_lists = [
-    ironic.conf.default.api_opts,
-    ironic.conf.default.driver_opts,
-    ironic.conf.default.exc_log_opts,
-    ironic.conf.default.hash_opts,
-    ironic.conf.default.image_opts,
-    ironic.conf.default.img_cache_opts,
-    ironic.conf.default.netconf_opts,
-    ironic.conf.default.notification_opts,
-    ironic.conf.default.path_opts,
-    ironic.conf.default.portgroup_opts,
-    ironic.conf.default.service_opts,
-    ironic.conf.default.utils_opts,
-    ironic.conf.default.webserver_opts,
-]
 
 _opts = [
-    ('DEFAULT', itertools.chain(*_default_opt_lists)),
+    ('DEFAULT', ironic.conf.default.list_opts()),
     ('agent', ironic.conf.agent.opts),
     ('ansible', ironic.conf.ansible.opts),
     ('api', ironic.conf.api.opts),