
This patch fixes a problem which prevented Ironic from honoring the interval values configuration for the periodic tasks. Since the interval values are passed to a decorator, the configuration options should be evaluated prior to importing the module which contains the periodic tasks. In our case this was not happening due to the chain of imports going from ironic.cmd.conductor -> ironic.common.service -> ironic.api.app -> ... -> ironic.conductor.manager. This caused the @periodic decorators to be evaluated before the configuration options were loaded. This patch breaks that chain of imports by separating the WSGIService and RPCService classes into two separate files. The conductor uses the RPCService, and since it is now in a separate file from WSGIService, it no longer pulls in ironic.api.app, ..., and ironic.conductor.manager. (ironic.api.app was being imported because WSGIService needed it.) Change-Id: Ie318e7bb2d2c2d971a796ab8960be33fccbd88f3 Closes-Bug: #1562258 Co-Authored-By: Lucas Alvares Gomes <lucasagomes@gmail.com>
53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
# -*- encoding: utf-8 -*-
|
|
#
|
|
# Copyright © 2012 eNovance <licensing@enovance.com>
|
|
#
|
|
# 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.
|
|
|
|
from oslo_log import log
|
|
from oslo_service import service
|
|
|
|
from ironic.common import config
|
|
from ironic.conf import CONF
|
|
from ironic import objects
|
|
|
|
LOG = log.getLogger(__name__)
|
|
|
|
|
|
def prepare_service(argv=None):
|
|
argv = [] if argv is None else argv
|
|
log.register_options(CONF)
|
|
log.set_defaults(default_log_levels=['amqp=WARNING',
|
|
'amqplib=WARNING',
|
|
'qpid.messaging=INFO',
|
|
'oslo_messaging=INFO',
|
|
'sqlalchemy=WARNING',
|
|
'stevedore=INFO',
|
|
'eventlet.wsgi.server=INFO',
|
|
'iso8601=WARNING',
|
|
'paramiko=WARNING',
|
|
'requests=WARNING',
|
|
'neutronclient=WARNING',
|
|
'glanceclient=WARNING',
|
|
'urllib3.connectionpool=WARNING',
|
|
'keystonemiddleware.auth_token=INFO',
|
|
'keystoneauth.session=INFO',
|
|
])
|
|
config.parse_args(argv)
|
|
log.setup(CONF, 'ironic')
|
|
objects.register_all()
|
|
|
|
|
|
def process_launcher():
|
|
return service.ProcessLauncher(CONF)
|