summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2021-12-01 12:19:33 +0100
committerDmitry Tantsur <dtantsur@protonmail.com>2021-12-01 12:19:33 +0100
commit3f990beb97c2f72a6af28dd24f70b016606acc61 (patch)
tree8354ac8ba8203d0807199f5c89a393835a9c1132
parent04c45f88a58f92c12cbade0ea761f535849b3bb8 (diff)
downloadironic-3f990beb97c2f72a6af28dd24f70b016606acc61.tar.gz
Refactor common configuration bits from service commands
The prepare_service call from ironic.common.service is changed to also configure guru meditation and profiler. A new call prepare_command is provided for the cases it's not required. Change-Id: I5b9b7b7bc827c8bcda06e9a967deae8577ad87f4
-rw-r--r--ironic/api/wsgi.py2
-rw-r--r--ironic/cmd/api.py18
-rw-r--r--ironic/cmd/conductor.py18
-rw-r--r--ironic/cmd/dbsync.py2
-rw-r--r--ironic/common/service.py34
-rw-r--r--tools/benchmark/do_not_run_create_benchmark_data.py2
-rw-r--r--tools/benchmark/generate-statistics.py2
7 files changed, 39 insertions, 39 deletions
diff --git a/ironic/api/wsgi.py b/ironic/api/wsgi.py
index c46473139..467389701 100644
--- a/ironic/api/wsgi.py
+++ b/ironic/api/wsgi.py
@@ -29,7 +29,7 @@ LOG = log.getLogger(__name__)
def initialize_wsgi_app(argv=sys.argv):
i18n.install('ironic')
- service.prepare_service(argv)
+ service.prepare_command(argv)
LOG.debug("Configuration:")
CONF.log_opt_values(LOG, log.DEBUG)
diff --git a/ironic/cmd/api.py b/ironic/cmd/api.py
index 38ec7bd1f..4a4b381c8 100644
--- a/ironic/cmd/api.py
+++ b/ironic/cmd/api.py
@@ -21,16 +21,9 @@ import sys
from oslo_config import cfg
from oslo_log import log
-try:
- from oslo_reports import guru_meditation_report as gmr
- from oslo_reports import opts as gmr_opts
-except ImportError:
- gmr = None
-from ironic.common import profiler
from ironic.common import service as ironic_service
from ironic.common import wsgi_service
-from ironic import version
CONF = cfg.CONF
@@ -39,16 +32,7 @@ LOG = log.getLogger(__name__)
def main():
# Parse config file and command line options, then start logging
- ironic_service.prepare_service(sys.argv)
-
- if gmr is not None:
- gmr_opts.set_defaults(CONF)
- gmr.TextGuruMeditation.setup_autorun(version)
- else:
- LOG.debug('Guru meditation reporting is disabled '
- 'because oslo.reports is not installed')
-
- profiler.setup('ironic_api', CONF.host)
+ ironic_service.prepare_service('ironic_api', sys.argv)
# Build and start the WSGI app
launcher = ironic_service.process_launcher()
diff --git a/ironic/cmd/conductor.py b/ironic/cmd/conductor.py
index d2ee20f5f..19fb05cb4 100644
--- a/ironic/cmd/conductor.py
+++ b/ironic/cmd/conductor.py
@@ -23,17 +23,10 @@ import sys
from oslo_config import cfg
from oslo_log import log
-try:
- from oslo_reports import guru_meditation_report as gmr
- from oslo_reports import opts as gmr_opts
-except ImportError:
- gmr = None
from oslo_service import service
-from ironic.common import profiler
from ironic.common import rpc_service
from ironic.common import service as ironic_service
-from ironic import version
CONF = cfg.CONF
@@ -64,14 +57,7 @@ def main():
assert 'ironic.conductor.manager' not in sys.modules
# Parse config file and command line options, then start logging
- ironic_service.prepare_service(sys.argv)
-
- if gmr is not None:
- gmr_opts.set_defaults(CONF)
- gmr.TextGuruMeditation.setup_autorun(version, conf=CONF)
- else:
- LOG.debug('Guru meditation reporting is disabled '
- 'because oslo.reports is not installed')
+ ironic_service.prepare_service('ironic_conductor', sys.argv)
mgr = rpc_service.RPCService(CONF.host,
'ironic.conductor.manager',
@@ -79,8 +65,6 @@ def main():
issue_startup_warnings(CONF)
- profiler.setup('ironic_conductor', CONF.host)
-
launcher = service.launch(CONF, mgr, restart_method='mutate')
launcher.wait()
diff --git a/ironic/cmd/dbsync.py b/ironic/cmd/dbsync.py
index 484e8096c..9cdfa2f4f 100644
--- a/ironic/cmd/dbsync.py
+++ b/ironic/cmd/dbsync.py
@@ -338,5 +338,5 @@ def main():
if not set(sys.argv) & valid_commands:
sys.argv.append('upgrade')
- service.prepare_service(sys.argv)
+ service.prepare_command(sys.argv)
CONF.command.func()
diff --git a/ironic/common/service.py b/ironic/common/service.py
index e0a8f1852..db83c147a 100644
--- a/ironic/common/service.py
+++ b/ironic/common/service.py
@@ -15,15 +15,29 @@
# under the License.
from oslo_log import log
+try:
+ from oslo_reports import guru_meditation_report as gmr
+ from oslo_reports import opts as gmr_opts
+except ImportError:
+ gmr = None
from oslo_service import service
from ironic.common import config
+from ironic.common import profiler
from ironic.conf import CONF
from ironic.conf import opts
from ironic import objects
+from ironic import version
-def prepare_service(argv=None):
+LOG = log.getLogger(__name__)
+
+
+def prepare_command(argv=None):
+ """Prepare any Ironic command for execution.
+
+ Sets up configuration and logging, registers objects.
+ """
argv = [] if argv is None else argv
log.register_options(CONF)
opts.update_opt_defaults()
@@ -35,5 +49,23 @@ def prepare_service(argv=None):
objects.register_all()
+def prepare_service(name, argv=None, conf=CONF):
+ """Prepare an Ironic service executable.
+
+ In addition to what `prepare_command` does, set up guru meditation
+ reporting and profiling.
+ """
+ prepare_command(argv)
+
+ if gmr is not None:
+ gmr_opts.set_defaults(CONF)
+ gmr.TextGuruMeditation.setup_autorun(version, conf=CONF)
+ else:
+ LOG.debug('Guru meditation reporting is disabled '
+ 'because oslo.reports is not installed')
+
+ profiler.setup(name, CONF.host)
+
+
def process_launcher():
return service.ProcessLauncher(CONF, restart_method='mutate')
diff --git a/tools/benchmark/do_not_run_create_benchmark_data.py b/tools/benchmark/do_not_run_create_benchmark_data.py
index 1e050a0f1..afdb3c7f2 100644
--- a/tools/benchmark/do_not_run_create_benchmark_data.py
+++ b/tools/benchmark/do_not_run_create_benchmark_data.py
@@ -90,7 +90,7 @@ def _mix_up_nodes_data():
def main():
- service.prepare_service()
+ service.prepare_command()
CONF.set_override('debug', False)
_create_test_nodes()
diff --git a/tools/benchmark/generate-statistics.py b/tools/benchmark/generate-statistics.py
index 65e8d664f..c6a7197c5 100644
--- a/tools/benchmark/generate-statistics.py
+++ b/tools/benchmark/generate-statistics.py
@@ -183,7 +183,7 @@ def _report_conductors():
def main():
- service.prepare_service()
+ service.prepare_command()
CONF.set_override('debug', False)
_assess_db_performance()
_assess_db_and_object_performance()