New releases of oslo.config support a 'mutable' parameter to Opts. oslo.service provides an option here Icec3e664f3fe72614e373b2938e8dee53cf8bc5e allows services to tell oslo.service they want mutate_config_files to be called by passing a parameter. This commit is to use the same. This allows trove to benefit from I1e7a69de169cc85f4c09954b2f46ce2da7106d90, where the 'debug' option (owned by oslo.log) is made mutable. we should be able to turn debug logging on and off by changing the config. tc goal: https://governance.openstack.org/tc/goals/rocky/enable-mutable-configuration.html Co-Authored-By: Anusree A <anusree.a04:@gmail.com> Change-Id: I02da8ce44d52b0f0dc67660c8ec76b5effb5f73c
71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
# Copyright 2011 OpenStack Foundation
|
|
# 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.
|
|
|
|
import sys
|
|
|
|
from oslo_config import cfg as openstack_cfg
|
|
from oslo_log import log as logging
|
|
from oslo_service import service as openstack_service
|
|
|
|
from trove.common import cfg
|
|
from trove.common import debug_utils
|
|
from trove.common.i18n import _
|
|
from trove.guestagent import api as guest_api
|
|
|
|
CONF = cfg.CONF
|
|
# The guest_id opt definition must match the one in common/cfg.py
|
|
CONF.register_opts([openstack_cfg.StrOpt('guest_id', default=None,
|
|
help="ID of the Guest Instance."),
|
|
openstack_cfg.StrOpt('instance_rpc_encr_key',
|
|
help=('Key (OpenSSL aes_cbc) for '
|
|
'instance RPC encryption.'))])
|
|
|
|
|
|
def main():
|
|
cfg.parse_args(sys.argv)
|
|
logging.setup(CONF, None)
|
|
debug_utils.setup()
|
|
|
|
from trove.guestagent import dbaas
|
|
manager = dbaas.datastore_registry().get(CONF.datastore_manager)
|
|
if not manager:
|
|
msg = (_("Manager class not registered for datastore manager %s") %
|
|
CONF.datastore_manager)
|
|
raise RuntimeError(msg)
|
|
|
|
if not CONF.guest_id:
|
|
msg = (_("The guest_id parameter is not set. guest_info.conf "
|
|
"was not injected into the guest or not read by guestagent"))
|
|
raise RuntimeError(msg)
|
|
|
|
# BUG(1650518): Cleanup in the Pike release
|
|
# make it fatal if CONF.instance_rpc_encr_key is None
|
|
|
|
# rpc module must be loaded after decision about thread monkeypatching
|
|
# because if thread module is not monkeypatched we can't use eventlet
|
|
# executor from oslo_messaging library.
|
|
from trove import rpc
|
|
rpc.init(CONF)
|
|
|
|
from trove.common.rpc import service as rpc_service
|
|
server = rpc_service.RpcService(
|
|
key=CONF.instance_rpc_encr_key,
|
|
topic="guestagent.%s" % CONF.guest_id,
|
|
manager=manager, host=CONF.guest_id,
|
|
rpc_api_version=guest_api.API.API_LATEST_VERSION)
|
|
|
|
launcher = openstack_service.launch(CONF, server, restart_method='mutate')
|
|
launcher.wait()
|