Update oslo.notifier and always register options

This avoids registering multiple times the option if the registering
functions are called multiple path by different code paths. It's
necessary for the default configuration sample generator to have options
only registered once.

The update of oslo.notifier is needed to avoid it using the inexistant
$host option.

Change-Id: If31974d7ef7fdbf85a88e950ff06c60ccbd6c31d
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2013-07-10 17:27:52 +02:00
parent 535c44108b
commit f2ef092d8c
15 changed files with 33 additions and 60 deletions

View File

@ -43,7 +43,6 @@ from oslo.config import cfg
from heat.openstack.common import log as logging
from heat.openstack.common import service
from heat.common import config
from heat.db import api as db_api
from heat.rpc import api as rpc_api
@ -64,7 +63,6 @@ if __name__ == '__main__':
from heat.engine import service as engine
db_api.configure()
config.register_engine_opts()
srv = engine.EngineService(cfg.CONF.host, rpc_api.ENGINE_TOPIC)
launcher = service.launch(srv)
launcher.wait()

View File

@ -12,7 +12,3 @@
# 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 heat.common import config
config.register_api_opts()

View File

@ -38,10 +38,6 @@ paste_deploy_opts = [
help="The API paste config file to use")]
bind_opts = [
cfg.IntOpt('bind_port', default=8000),
cfg.StrOpt('bind_host', default='127.0.0.1')]
service_opts = [
cfg.IntOpt('report_interval',
default=10,
@ -113,38 +109,23 @@ rpc_opts = [
'This can be an opaque identifier.'
'It is not necessarily a hostname, FQDN, or IP address.')]
cfg.CONF.register_opts(db_opts)
cfg.CONF.register_opts(engine_opts)
cfg.CONF.register_opts(service_opts)
cfg.CONF.register_opts(rpc_opts)
cfg.CONF.register_group(paste_deploy_group)
cfg.CONF.register_opts(paste_deploy_opts, group=paste_deploy_group)
def register_api_opts():
cfg.CONF.register_opts(bind_opts)
cfg.CONF.register_opts(rpc_opts)
def rpc_set_default():
rpc.set_defaults(control_exchange='heat')
def register_db_opts():
cfg.CONF.register_opts(db_opts)
def register_engine_opts():
cfg.CONF.register_opts(engine_opts)
cfg.CONF.register_opts(service_opts)
cfg.CONF.register_opts(rpc_opts)
rpc.set_defaults(control_exchange='heat')
def _register_paste_deploy_opts():
"""
Idempotent registration of paste_deploy option group
"""
cfg.CONF.register_group(paste_deploy_group)
cfg.CONF.register_opts(paste_deploy_opts, group=paste_deploy_group)
def _get_deployment_flavor():
"""
Retrieve the paste_deploy.flavor config item, formatted appropriately
for appending to the application name.
"""
_register_paste_deploy_opts()
flavor = cfg.CONF.paste_deploy.flavor
return '' if not flavor else ('-' + flavor)
@ -154,7 +135,6 @@ def _get_deployment_config_file():
Retrieve the deployment_config_file config item, formatted as an
absolute pathname.
"""
_register_paste_deploy_opts()
config_path = cfg.CONF.find_file(
cfg.CONF.paste_deploy['api_paste_config'])
if config_path is None:

View File

@ -58,13 +58,19 @@ bind_opts = [
cfg.IntOpt('bind_port'),
]
cfg.CONF.register_opts(bind_opts)
socket_opts = [
cfg.IntOpt('backlog', default=4096),
cfg.StrOpt('cert_file'),
cfg.StrOpt('key_file'),
]
workers_opt = cfg.IntOpt('workers', default=0)
cfg.CONF.register_opts(socket_opts)
workers_opts = cfg.IntOpt('workers', default=0)
cfg.CONF.register_opt(workers_opts)
class WritableLogger(object):
@ -178,7 +184,6 @@ class Server(object):
self.application = application
self.sock = get_socket(conf, default_port)
conf.register_opt(workers_opt)
self.logger = logging.getLogger('eventlet.wsgi.server')

View File

@ -28,7 +28,6 @@ supported backend.
from oslo.config import cfg
from heat.common import config
from heat.db import utils
SQL_CONNECTION = 'sqlite://'
@ -38,14 +37,19 @@ db_opts = [
default='sqlalchemy',
help='The backend to use for db')]
cfg.CONF.register_opts(db_opts)
IMPL = utils.LazyPluggable('db_backend',
sqlalchemy='heat.db.sqlalchemy.api')
cfg.CONF.import_opt('sql_connection', 'heat.common.config')
cfg.CONF.import_opt('sql_idle_timeout', 'heat.common.config')
def configure():
global SQL_CONNECTION
global SQL_IDLE_TIMEOUT
config.register_db_opts()
SQL_CONNECTION = cfg.CONF.sql_connection
SQL_IDLE_TIMEOUT = cfg.CONF.sql_idle_timeout

View File

@ -51,15 +51,14 @@ def initialise():
if _initialized:
return
import sys
from heat.common import config
from heat.common import plugin_loader
config.register_engine_opts()
_register_modules(plugin_loader.load_modules(sys.modules[__name__]))
from oslo.config import cfg
cfg.CONF.import_opt('plugin_dirs', 'heat.common.config')
plugin_pkg = plugin_loader.create_subpackage(cfg.CONF.plugin_dirs,
'heat.engine')
_register_modules(plugin_loader.load_modules(plugin_pkg, True))

View File

@ -13,12 +13,13 @@
# License for the specific language governing permissions and limitations
# under the License.
import socket
import uuid
from oslo.config import cfg
from heat.openstack.common import context
from heat.openstack.common.gettextutils import _
from heat.openstack.common.gettextutils import _ # noqa
from heat.openstack.common import importutils
from heat.openstack.common import jsonutils
from heat.openstack.common import log as logging
@ -35,7 +36,7 @@ notifier_opts = [
default='INFO',
help='Default notification level for outgoing notifications'),
cfg.StrOpt('default_publisher_id',
default='$host',
default=None,
help='Default publisher_id for outgoing notifications'),
]
@ -74,7 +75,7 @@ def notify_decorator(name, fn):
ctxt = context.get_context_from_function_and_args(fn, args, kwarg)
notify(ctxt,
CONF.default_publisher_id,
CONF.default_publisher_id or socket.gethostname(),
name,
CONF.default_notification_level,
body)
@ -84,7 +85,10 @@ def notify_decorator(name, fn):
def publisher_id(service, host=None):
if not host:
host = CONF.host
try:
host = CONF.host
except AttributeError:
host = CONF.default_publisher_id or socket.gethostname()
return "%s.%s" % (service, host)

View File

@ -16,7 +16,7 @@
from oslo.config import cfg
from heat.openstack.common import context as req_context
from heat.openstack.common.gettextutils import _
from heat.openstack.common.gettextutils import _ # noqa
from heat.openstack.common import log as logging
from heat.openstack.common import rpc

View File

@ -18,7 +18,7 @@
from oslo.config import cfg
from heat.openstack.common import context as req_context
from heat.openstack.common.gettextutils import _
from heat.openstack.common.gettextutils import _ # noqa
from heat.openstack.common import log as logging
from heat.openstack.common import rpc

View File

@ -20,7 +20,6 @@ import sys
import mox
from oslo.config import cfg
from heat.common import config
from heat.common import context
from heat.engine import environment
from heat.common import exception
@ -574,7 +573,6 @@ class stackServiceTest(HeatTestCase):
def setUp(self):
super(stackServiceTest, self).setUp()
config.register_engine_opts()
self.username = 'stack_service_test_user'
self.tenant = 'stack_service_test_tenant'

View File

@ -14,7 +14,6 @@
import mox
from heat.common import config
from heat.common import context
from heat.common import heat_keystoneclient
from heat.tests.common import HeatTestCase
@ -26,7 +25,6 @@ class KeystoneClientTest(HeatTestCase):
def setUp(self):
super(KeystoneClientTest, self).setUp()
# load config so role checking doesn't barf
config.register_engine_opts()
# mock the internal keystone client and its authentication
self.m.StubOutClassWithMocks(heat_keystoneclient.kc, "Client")
self.mock_ks_client = heat_keystoneclient.kc.Client(

View File

@ -18,7 +18,6 @@ import re
from oslo.config import cfg
from heat.common import exception
from heat.common import config
from heat.common import template_format
from heat.engine import clients
from heat.engine import scheduler
@ -76,7 +75,6 @@ lb_template = '''
class LoadBalancerTest(HeatTestCase):
def setUp(self):
super(LoadBalancerTest, self).setUp()
config.register_engine_opts()
self.fc = fakes.FakeClient()
self.m.StubOutWithMock(clients.OpenStackClients, 'nova')
self.m.StubOutWithMock(self.fc.servers, 'create')

View File

@ -23,7 +23,6 @@ from oslo.config import cfg
import stubout
import testtools
from heat.common import config
from heat.common import context
from heat.common import identifier
from heat.rpc import api as rpc_api
@ -34,7 +33,6 @@ from heat.openstack.common import rpc
class EngineRpcAPITestCase(testtools.TestCase):
def setUp(self):
config.register_engine_opts()
self.context = context.get_admin_context()
cfg.CONF.set_default('rpc_backend',
'heat.openstack.common.rpc.impl_fake')

View File

@ -15,7 +15,6 @@
from oslo.config import cfg
from heat.common import config
from heat.common import exception
from heat.common import template_format
from heat.engine import resource
@ -92,7 +91,6 @@ user_policy_template = '''
class UserPolicyTestCase(HeatTestCase):
def setUp(self):
super(UserPolicyTestCase, self).setUp()
config.register_engine_opts()
username = utils.PhysName('test_stack', 'CfnUser')
self.fc = fakes.FakeKeystoneClient(username=username)
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')

View File

@ -34,7 +34,6 @@ from heat.engine import parser
from heat.engine import resource
from heat.engine import scheduler
from heat.engine.resources import wait_condition as wc
from heat.common import config
from heat.common import context
test_template_waitcondition = '''
@ -96,7 +95,6 @@ class WaitConditionTest(HeatTestCase):
def setUp(self):
super(WaitConditionTest, self).setUp()
config.register_engine_opts()
setup_dummy_db()
self.m.StubOutWithMock(wc.WaitConditionHandle,
'get_status')
@ -389,7 +387,6 @@ class WaitConditionTest(HeatTestCase):
class WaitConditionHandleTest(HeatTestCase):
def setUp(self):
super(WaitConditionHandleTest, self).setUp()
config.register_engine_opts()
cfg.CONF.set_default('heat_waitcondition_server_url',
'http://127.0.0.1:8000/v1/waitcondition')