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
This commit is contained in:
Dmitry Tantsur 2021-12-01 12:19:33 +01:00
parent 04c45f88a5
commit 3f990beb97
7 changed files with 39 additions and 39 deletions

View File

@ -29,7 +29,7 @@ LOG = log.getLogger(__name__)
def initialize_wsgi_app(argv=sys.argv): def initialize_wsgi_app(argv=sys.argv):
i18n.install('ironic') i18n.install('ironic')
service.prepare_service(argv) service.prepare_command(argv)
LOG.debug("Configuration:") LOG.debug("Configuration:")
CONF.log_opt_values(LOG, log.DEBUG) CONF.log_opt_values(LOG, log.DEBUG)

View File

@ -21,16 +21,9 @@ import sys
from oslo_config import cfg from oslo_config import cfg
from oslo_log import log 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 service as ironic_service
from ironic.common import wsgi_service from ironic.common import wsgi_service
from ironic import version
CONF = cfg.CONF CONF = cfg.CONF
@ -39,16 +32,7 @@ LOG = log.getLogger(__name__)
def main(): def main():
# Parse config file and command line options, then start logging # Parse config file and command line options, then start logging
ironic_service.prepare_service(sys.argv) ironic_service.prepare_service('ironic_api', 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)
# Build and start the WSGI app # Build and start the WSGI app
launcher = ironic_service.process_launcher() launcher = ironic_service.process_launcher()

View File

@ -23,17 +23,10 @@ import sys
from oslo_config import cfg from oslo_config import cfg
from oslo_log import log 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 oslo_service import service
from ironic.common import profiler
from ironic.common import rpc_service from ironic.common import rpc_service
from ironic.common import service as ironic_service from ironic.common import service as ironic_service
from ironic import version
CONF = cfg.CONF CONF = cfg.CONF
@ -64,14 +57,7 @@ def main():
assert 'ironic.conductor.manager' not in sys.modules assert 'ironic.conductor.manager' not in sys.modules
# Parse config file and command line options, then start logging # Parse config file and command line options, then start logging
ironic_service.prepare_service(sys.argv) ironic_service.prepare_service('ironic_conductor', 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')
mgr = rpc_service.RPCService(CONF.host, mgr = rpc_service.RPCService(CONF.host,
'ironic.conductor.manager', 'ironic.conductor.manager',
@ -79,8 +65,6 @@ def main():
issue_startup_warnings(CONF) issue_startup_warnings(CONF)
profiler.setup('ironic_conductor', CONF.host)
launcher = service.launch(CONF, mgr, restart_method='mutate') launcher = service.launch(CONF, mgr, restart_method='mutate')
launcher.wait() launcher.wait()

View File

@ -338,5 +338,5 @@ def main():
if not set(sys.argv) & valid_commands: if not set(sys.argv) & valid_commands:
sys.argv.append('upgrade') sys.argv.append('upgrade')
service.prepare_service(sys.argv) service.prepare_command(sys.argv)
CONF.command.func() CONF.command.func()

View File

@ -15,15 +15,29 @@
# under the License. # under the License.
from oslo_log import log 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 oslo_service import service
from ironic.common import config from ironic.common import config
from ironic.common import profiler
from ironic.conf import CONF from ironic.conf import CONF
from ironic.conf import opts from ironic.conf import opts
from ironic import objects 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 argv = [] if argv is None else argv
log.register_options(CONF) log.register_options(CONF)
opts.update_opt_defaults() opts.update_opt_defaults()
@ -35,5 +49,23 @@ def prepare_service(argv=None):
objects.register_all() 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(): def process_launcher():
return service.ProcessLauncher(CONF, restart_method='mutate') return service.ProcessLauncher(CONF, restart_method='mutate')

View File

@ -90,7 +90,7 @@ def _mix_up_nodes_data():
def main(): def main():
service.prepare_service() service.prepare_command()
CONF.set_override('debug', False) CONF.set_override('debug', False)
_create_test_nodes() _create_test_nodes()

View File

@ -183,7 +183,7 @@ def _report_conductors():
def main(): def main():
service.prepare_service() service.prepare_command()
CONF.set_override('debug', False) CONF.set_override('debug', False)
_assess_db_performance() _assess_db_performance()
_assess_db_and_object_performance() _assess_db_and_object_performance()