0e502cc463
Bandit B105 hardcoded_password_string[1] is causing gate failure, which is false positive. Added a # nosec comment to skip Bandit testing of that line. [1] https://bandit.readthedocs.io/en/latest/plugins/b105_hardcoded_password_string.html Add local bindep.txt to include PostgreSQL dependendencies for testing. Story: 2006058 Task: 34771 Change-Id: I579754a0e093e192366ad2783bd766473227e761
130 lines
5.2 KiB
Python
130 lines
5.2 KiB
Python
# Copyright 2017 FUJITSU LIMITED
|
|
#
|
|
# 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_config import cfg
|
|
|
|
from monasca_notification.conf import types
|
|
|
|
_POSTGRESQL = 'postgresql'
|
|
_MYSQL = 'mysql'
|
|
_ORM = 'orm'
|
|
_REPO_DRIVERS_MAP = {
|
|
_POSTGRESQL: 'monasca_notification.common.repositories.'
|
|
'postgres.pgsql_repo:PostgresqlRepo',
|
|
_MYSQL: 'monasca_notification.common.repositories.'
|
|
'mysql.mysql_repo:MysqlRepo',
|
|
_ORM: 'monasca_notification.common.repositories.'
|
|
'orm.orm_repo:OrmRepo'
|
|
}
|
|
_ACCEPTABLE_DRIVER_KEYS = set(list(_REPO_DRIVERS_MAP.keys()) +
|
|
list(_REPO_DRIVERS_MAP.values()))
|
|
|
|
_DEFAULT_DB_HOST = '127.0.0.1'
|
|
_DEFAULT_DB_USER = 'notification'
|
|
_DEFAULT_DB_PASSWORD = 'password' # nosec bandit B105
|
|
_DEFAULT_DB_NAME = 'mon'
|
|
_DEFAULT_POSTGRESQL_PORT = 5432
|
|
_DEFAULT_MYSQL_PORT = 3306
|
|
|
|
db_group = cfg.OptGroup('database',
|
|
title='Database Options',
|
|
help='Driver configuration for database connectivity.')
|
|
|
|
db_opts = [
|
|
types.PluginOpt(name='repo_driver', choices=_ACCEPTABLE_DRIVER_KEYS,
|
|
default=_MYSQL, plugin_map=_REPO_DRIVERS_MAP,
|
|
required=True, advanced=True,
|
|
help='Driver name (or full class path) that should be '
|
|
'used to handle RDB connections. Accepts either '
|
|
'short labels {0} or full class names {1}. '
|
|
'Configuring either of them will require presence of '
|
|
'one of following sections {0} inside configuration '
|
|
'file.'.format(_REPO_DRIVERS_MAP.keys(),
|
|
_REPO_DRIVERS_MAP.values())
|
|
)
|
|
]
|
|
|
|
orm_group = cfg.OptGroup('orm',
|
|
title='ORM Options',
|
|
help='Configuration options to configure '
|
|
'ORM RBD driver.')
|
|
orm_opts = [
|
|
cfg.StrOpt(name='url', default=None,
|
|
help='Connection string for sqlalchemy.')
|
|
]
|
|
|
|
mysql_group = cfg.OptGroup('mysql',
|
|
title='MySQL Options',
|
|
help='Configuration options to configure '
|
|
'plain MySQL RBD driver.')
|
|
mysql_opts = [
|
|
cfg.HostAddressOpt(name='host', default=_DEFAULT_DB_HOST,
|
|
help='IP address of MySQL instance.'),
|
|
cfg.PortOpt(name='port', default=_DEFAULT_MYSQL_PORT,
|
|
help='Port number of MySQL instance.'),
|
|
cfg.StrOpt(name='user', default=_DEFAULT_DB_USER,
|
|
help='Username to connect to MySQL '
|
|
'instance and given database.'),
|
|
cfg.StrOpt(name='passwd', default=_DEFAULT_DB_PASSWORD,
|
|
ignore_case=True, secret=True,
|
|
help='Password to connect to MySQL instance '
|
|
'and given database.'),
|
|
cfg.DictOpt(name='ssl', default={},
|
|
help='A dict of arguments similar '
|
|
'to mysql_ssl_set parameters.'),
|
|
cfg.StrOpt(name='db', default=_DEFAULT_DB_NAME,
|
|
help='Database name available in given MySQL instance.')
|
|
]
|
|
|
|
postgresql_group = cfg.OptGroup('postgresql',
|
|
title='PostgreSQL Options',
|
|
help='Configuration options to configure '
|
|
'plain PostgreSQL RBD driver.')
|
|
postgresql_opts = [
|
|
cfg.HostAddressOpt(name='host', default=_DEFAULT_DB_HOST,
|
|
help='IP address of PostgreSQL instance.'),
|
|
cfg.PortOpt(name='port', default=_DEFAULT_POSTGRESQL_PORT,
|
|
help='Port number of PostgreSQL instance.'),
|
|
cfg.StrOpt(name='user', default=_DEFAULT_DB_USER,
|
|
help='Username to connect to PostgreSQL '
|
|
'instance and given database.'),
|
|
cfg.StrOpt(name='password', default=_DEFAULT_DB_PASSWORD,
|
|
secret=True, help='Password to connect to PostgreSQL '
|
|
'instance and given database'),
|
|
cfg.StrOpt(name='database', default=_DEFAULT_DB_NAME,
|
|
help='Database name available in '
|
|
'given PostgreSQL instance.')
|
|
]
|
|
|
|
|
|
def register_opts(conf):
|
|
conf.register_group(db_group)
|
|
conf.register_group(orm_group)
|
|
conf.register_group(mysql_group)
|
|
conf.register_group(postgresql_group)
|
|
|
|
conf.register_opts(db_opts, group=db_group)
|
|
conf.register_opts(orm_opts, group=orm_group)
|
|
conf.register_opts(mysql_opts, group=mysql_group)
|
|
conf.register_opts(postgresql_opts, group=postgresql_group)
|
|
|
|
|
|
def list_opts():
|
|
return {
|
|
db_group: db_opts,
|
|
orm_group: orm_opts,
|
|
mysql_group: mysql_opts,
|
|
postgresql_group: postgresql_opts,
|
|
}
|