Register GMR with config

As an operator, we want to set oslo_reports/file_event_handler because
when running behind a wsgi server, GMR cannot register the Signal to be
trigger.
The parameter file_event_handler has been designed for this specific use
case but it was not used correctly by neutron.

Closes-Bug: #2021814

Change-Id: Id13de1a3f9ea2eaaa7521eedf905aa0dd993ff89
Signed-off-by: Arnaud Morin <arnaud.morin@ovhcloud.com>
This commit is contained in:
Arnaud Morin 2023-05-30 16:54:28 +02:00 committed by Arnaud Morin
parent 878ea0dfd5
commit 56821b6aea
2 changed files with 19 additions and 28 deletions

View File

@ -1,28 +0,0 @@
# 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 logging as sys_logging
from oslo_reports import guru_meditation_report as gmr
from neutron import version
# During the call to gmr.TextGuruMeditation.setup_autorun(), Guru Meditation
# Report tries to start logging. Set a handler here to accommodate this.
logger = sys_logging.getLogger(None)
if not logger.handlers:
logger.addHandler(sys_logging.StreamHandler())
_version_string = version.version_info.release_string()
gmr.TextGuruMeditation.setup_autorun(version=_version_string)

View File

@ -16,13 +16,17 @@
# If ../neutron/__init__.py exists, add ../ to Python search path, so that
# it will override what happens to be installed in /usr/(local/)lib/python...
import logging as sys_logging
import os
import sys
from oslo_config import cfg
from oslo_reports import guru_meditation_report as gmr
from oslo_reports import opts as gmr_opts
from neutron._i18n import _
from neutron.common import config
from neutron import version
# NOTE(annp): These environment variables are required for deploying
# neutron-api under mod_wsgi. Currently, these variables are set as DevStack's
@ -62,7 +66,22 @@ def _init_configuration():
def boot_server(server_func):
# During the call to gmr.TextGuruMeditation.setup_autorun(), Guru
# Meditation Report tries to start logging.
# Set a handler here to accommodate this.
# NOTE(amorin) This was introduced to mitigate bug #1532053 which seems
# not triggered anymore.
# But, while fixing bug #2021814 we decided to be conservative and keep
# this to avoid any further side effect.
logger = sys_logging.getLogger(None)
if not logger.handlers:
logger.addHandler(sys_logging.StreamHandler())
_version_string = version.version_info.release_string()
_init_configuration()
gmr_opts.set_defaults(cfg.CONF)
gmr.TextGuruMeditation.setup_autorun(version=_version_string,
conf=cfg.CONF)
try:
return server_func()
except KeyboardInterrupt: