reloads mutable config values on SIGHUP

This changes the ironic (ironic-api and ironic-conductor)
services so that when a SIGHUP signal is issued, the
service reloads (and uses) the values of mutable configuration
options.

The mutable configuration options (set by oslo.config Opts' mutable=True)
are:
- [DEFAULT]/pin_release_version
- [DEFAULT]/debug
- [DEFAULT]/log_config_append
and are indicated as such in ironic's sample config
(https://docs.openstack.org/ironic/latest/configuration/sample-config.html)
by "# Note: This option can be changed without restarting.".

Configuration options are mutable if their oslo.config Opt's mutable=True
is set. This mutable setting is respected when the oslo method
mutate_config_files is called instead of reload_config_files.
Icec3e664f3fe72614e373b2938e8dee53cf8bc5e allows services to tell
oslo.service they want mutate_config_files to be called by specifying the
'restart_method=mutate' parameter, which this patch does.

Change-Id: I0df46bb21dda035b25daad17737dbfedb861e868
Closes-Bug: #1585595
This commit is contained in:
Ruby Loo 2017-06-14 15:40:47 -04:00
parent 46ee76aa46
commit 398462021b
4 changed files with 20 additions and 3 deletions

View File

@ -81,7 +81,7 @@ def main():
profiler.setup('ironic_conductor', CONF.host)
launcher = service.launch(CONF, mgr)
launcher = service.launch(CONF, mgr, restart_method='mutate')
launcher.wait()

View File

@ -36,4 +36,4 @@ def prepare_service(argv=None):
def process_launcher():
return service.ProcessLauncher(CONF)
return service.ProcessLauncher(CONF, restart_method='mutate')

View File

@ -282,7 +282,7 @@ service_opts = [
'hostname, FQDN, or IP address.')),
cfg.StrOpt('pin_release_version',
choices=versions.RELEASE_VERSIONS,
# TODO(xek): mutable=True,
mutable=True,
help=_('Used for rolling upgrades. Setting this option '
'downgrades (or pins) the Bare Metal API, '
'the internal ironic RPC communication, and '

View File

@ -0,0 +1,17 @@
---
features:
- |
Issuing a SIGHUP (e.g. ``pkill -HUP ironic``) to an ironic-api or
ironic-conductor service will cause the service to reload and use any
changed values for *mutable* configuration options. The mutable
configuration options are:
* [DEFAULT]/debug
* [DEFAULT]/log_config_append
* [DEFAULT]/pin_release_version
Mutable configuration options are indicated as such in the `sample configuration
file <https://docs.openstack.org/ironic/latest/configuration/sample-config.html>`_
by ``Note: This option can be changed without restarting``.
A warning is logged for any changes to immutable configuration options.