From 31eb6b2b2985d7779f5fad5e71f20801820f3270 Mon Sep 17 00:00:00 2001 From: Felipe Monteiro Date: Wed, 19 Jul 2017 22:06:39 +0100 Subject: [PATCH] Added logic for establishing DB connection. --- deckhand/conf/config.py | 57 +++++++++++++++++-------------- deckhand/control/api.py | 9 +++-- deckhand/db/sqlalchemy/api.py | 3 +- etc/deckhand/deckhand.conf.sample | 47 ------------------------- 4 files changed, 39 insertions(+), 77 deletions(-) delete mode 100644 etc/deckhand/deckhand.conf.sample diff --git a/deckhand/conf/config.py b/deckhand/conf/config.py index 2b4a8306..0b47b0ee 100644 --- a/deckhand/conf/config.py +++ b/deckhand/conf/config.py @@ -17,18 +17,20 @@ from oslo_config import cfg CONF = cfg.CONF -database_group = cfg.OptGroup( - name='database', - title='Deckhand Database Options' -) +barbican_group = cfg.OptGroup( + name='barbican', + title='Barbican Options', + help=""" +Barbican options for allowing Deckhand to communicate with Barbican. +""") - -database_opts = [ - cfg.StrOpt(name='connection', - default='') +barbican_opts = [ + cfg.StrOpt( + 'api_endpoint', + sample_default='http://barbican.example.org:9311/', + help='URL override for the Barbican API endpoint.'), ] - keystone_auth_group = cfg.OptGroup( name='keystone_authtoken', title='Keystone Authentication Options' @@ -49,20 +51,6 @@ keystone_auth_opts = [ default='http://127.0.0.1/identity/v3') ] -barbican_group = cfg.OptGroup( - name='barbican', - title='Barbican Options', - help=""" -Barbican options for allowing Deckhand to communicate with Barbican. -""") - -barbican_opts = [ - cfg.StrOpt( - 'api_endpoint', - sample_default='http://barbican.example.org:9311/', - help='URL override for the Barbican API endpoint.'), -] - logging_group = cfg.OptGroup( name='logging', title='Logging Options', @@ -79,9 +67,6 @@ def register_opts(conf): conf.register_group(barbican_group) conf.register_opts(barbican_opts, group=barbican_group) - conf.register_group(database_group) - conf.register_opts(database_opts, group=database_group) - conf.register_group(keystone_auth_group) conf.register_opts(keystone_auth_opts, group=keystone_auth_group) @@ -95,4 +80,24 @@ def list_opts(): logging_group: logging_opts} +def parse_args(args=None, usage=None, default_config_files=None): + CONF(args=args, + project='deckhand', + usage=usage, + default_config_files=default_config_files) + + +def parse_cache_args(args=None): + # Look for Deckhand config files in the following directories:: + # + # ~/.${project}/ + # ~/ + # /etc/${project}/ + # /etc/ + # ${SNAP}/etc/${project} + # ${SNAP_COMMON}/etc/${project} + config_files = cfg.find_config_files(project='deckhand') + parse_args(args=args, default_config_files=config_files) + + register_opts(CONF) diff --git a/deckhand/control/api.py b/deckhand/control/api.py index 3dcbd2ea..024d8f22 100644 --- a/deckhand/control/api.py +++ b/deckhand/control/api.py @@ -25,14 +25,17 @@ from deckhand.control import secrets from deckhand.db.sqlalchemy import api as db_api CONF = cfg.CONF +LOG = None def __setup_logging(): + global LOG LOGGER_NAME = CONF.logging.global_logger_name LOG = logging.getLogger(__name__, LOGGER_NAME) logging.register_options(CONF) - + config.parse_args() + current_path = os.path.dirname(os.path.realpath(__file__)) root_path = os.path.abspath(os.path.join(current_path, os.pardir, os.pardir)) @@ -54,10 +57,10 @@ def start_api(state_manager=None): Create routes for the v1.0 API and sets up logging. """ - config.register_opts(CONF) __setup_logging() + # FOR TESTING -- REMOVE engine = db_api.get_engine() - assert engine.engine.name == 'postgres' + assert engine.engine.name == 'sqlite' control_api = falcon.API(request_type=api_base.DeckhandRequest) diff --git a/deckhand/db/sqlalchemy/api.py b/deckhand/db/sqlalchemy/api.py index b50977ef..a6ee3341 100644 --- a/deckhand/db/sqlalchemy/api.py +++ b/deckhand/db/sqlalchemy/api.py @@ -58,7 +58,8 @@ def _create_facade_lazily(): if _FACADE is None: with _LOCK: if _FACADE is None: - _FACADE = session.EngineFacade.from_config(CONF) + _FACADE = session.EngineFacade.from_config( + CONF, sqlite_fk=True) return _FACADE diff --git a/etc/deckhand/deckhand.conf.sample b/etc/deckhand/deckhand.conf.sample deleted file mode 100644 index e2d6cf63..00000000 --- a/etc/deckhand/deckhand.conf.sample +++ /dev/null @@ -1,47 +0,0 @@ -[DEFAULT] - - -[barbican] -# -# Barbican options for allowing Deckhand to communicate with Barbican. - -# -# From deckhand.conf -# - -# URL override for the Barbican API endpoint. (string value) -#api_endpoint = http://barbican.example.org:9311/ - - -[keystone_authtoken] - -# -# From deckhand.conf -# - -# (string value) -#signing_dir = - -# (string value) -#cafile = - -# (string value) -#project_domain_name = Default - -# (string value) -#project_name = admin - -# (string value) -#user_domain_name = Default - -# (string value) -#password = devstack - -# (string value) -#username = admin - -# (string value) -#auth_url = http://127.0.0.1/identity - -# (string value) -#auth_type = password