Update DB Init script to include tracebacks and improved output
This commit is contained in:
parent
deabf4389f
commit
549bfea927
@ -26,13 +26,27 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
|
import logging
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
|
|
||||||
|
# Create logger, console handler and formatter
|
||||||
|
logger = logging.getLogger('OpenStack-Helm DB Init')
|
||||||
|
logger.setLevel(logging.DEBUG)
|
||||||
|
ch = logging.StreamHandler()
|
||||||
|
ch.setLevel(logging.DEBUG)
|
||||||
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
|
# Set the formatter and add the handler
|
||||||
|
ch.setFormatter(formatter)
|
||||||
|
logger.addHandler(ch)
|
||||||
|
|
||||||
|
|
||||||
# Get the connection string for the service db root user
|
# Get the connection string for the service db root user
|
||||||
if "ROOT_DB_CONNECTION" in os.environ:
|
if "ROOT_DB_CONNECTION" in os.environ:
|
||||||
db_connection = os.environ['ROOT_DB_CONNECTION']
|
db_connection = os.environ['ROOT_DB_CONNECTION']
|
||||||
|
logger.info('Got DB root connection')
|
||||||
else:
|
else:
|
||||||
print 'ROOT_DB_CONNECTION env var missing'
|
logger.critical('environment variable ROOT_DB_CONNECTION not set')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Get the connection string for the service db
|
# Get the connection string for the service db
|
||||||
@ -42,28 +56,28 @@ if "OPENSTACK_CONFIG_FILE" in os.environ:
|
|||||||
if "OPENSTACK_CONFIG_DB_SECTION" in os.environ:
|
if "OPENSTACK_CONFIG_DB_SECTION" in os.environ:
|
||||||
os_conf_section = os.environ['OPENSTACK_CONFIG_DB_SECTION']
|
os_conf_section = os.environ['OPENSTACK_CONFIG_DB_SECTION']
|
||||||
else:
|
else:
|
||||||
print 'Env var OPENSTACK_CONFIG_DB_SECTION not set'
|
logger.critical('environment variable OPENSTACK_CONFIG_DB_SECTION not set')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if "OPENSTACK_CONFIG_DB_KEY" in os.environ:
|
if "OPENSTACK_CONFIG_DB_KEY" in os.environ:
|
||||||
os_conf_key = os.environ['OPENSTACK_CONFIG_DB_KEY']
|
os_conf_key = os.environ['OPENSTACK_CONFIG_DB_KEY']
|
||||||
else:
|
else:
|
||||||
print 'Env var OPENSTACK_CONFIG_DB_KEY not set'
|
logger.critical('environment variable OPENSTACK_CONFIG_DB_KEY not set')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
config = ConfigParser.RawConfigParser()
|
config = ConfigParser.RawConfigParser()
|
||||||
print("Using {0} as db config source".format(os_conf))
|
logger.info("Using {0} as db config source".format(os_conf))
|
||||||
config.read(os_conf)
|
config.read(os_conf)
|
||||||
print("Trying to load db config from {0}:{1}".format(
|
logger.info("Trying to load db config from {0}:{1}".format(
|
||||||
os_conf_section, os_conf_key))
|
os_conf_section, os_conf_key))
|
||||||
user_db_conn = config.get(os_conf_section, os_conf_key)
|
user_db_conn = config.get(os_conf_section, os_conf_key)
|
||||||
print("Got config from {0}".format(os_conf))
|
logger.info("Got config from {0}".format(os_conf))
|
||||||
except:
|
except:
|
||||||
print("Tried to load config from {0} but failed.".format(os_conf))
|
logger.critical("Tried to load config from {0} but failed.".format(os_conf))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
elif "DB_CONNECTION" in os.environ:
|
elif "DB_CONNECTION" in os.environ:
|
||||||
user_db_conn = os.environ['DB_CONNECTION']
|
user_db_conn = os.environ['DB_CONNECTION']
|
||||||
print 'Got config from DB_CONNECTION env var'
|
logger.info('Got config from DB_CONNECTION env var')
|
||||||
else:
|
else:
|
||||||
print 'Could not get db config, either from config file or env var'
|
logger.critical('Could not get db config, either from config file or env var')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Root DB engine
|
# Root DB engine
|
||||||
@ -78,8 +92,11 @@ try:
|
|||||||
root_engine = create_engine(root_engine_url)
|
root_engine = create_engine(root_engine_url)
|
||||||
connection = root_engine.connect()
|
connection = root_engine.connect()
|
||||||
connection.close()
|
connection.close()
|
||||||
|
logger.info("Tested connection to DB @ {0}:{1} as {2}".format(
|
||||||
|
host, port, root_user))
|
||||||
except:
|
except:
|
||||||
print 'Could not connect to database as root user'
|
logger.critical('Could not connect to database as root user')
|
||||||
|
raise
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# User DB engine
|
# User DB engine
|
||||||
@ -89,17 +106,19 @@ try:
|
|||||||
database = user_engine.url.database
|
database = user_engine.url.database
|
||||||
user = user_engine.url.username
|
user = user_engine.url.username
|
||||||
password = user_engine.url.password
|
password = user_engine.url.password
|
||||||
print 'Got user db config'
|
logger.info('Got user db config')
|
||||||
except:
|
except:
|
||||||
print 'Could not get user database config'
|
logger.critical('Could not get user database config')
|
||||||
|
raise
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Create DB
|
# Create DB
|
||||||
try:
|
try:
|
||||||
root_engine.execute("CREATE DATABASE IF NOT EXISTS {0}".format(database))
|
root_engine.execute("CREATE DATABASE IF NOT EXISTS {0}".format(database))
|
||||||
print("Created database {0}".format(database))
|
logger.info("Created database {0}".format(database))
|
||||||
except:
|
except:
|
||||||
print("Could not create database {0}".format(database))
|
logger.critical("Could not create database {0}".format(database))
|
||||||
|
raise
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Create DB User
|
# Create DB User
|
||||||
@ -107,17 +126,22 @@ try:
|
|||||||
root_engine.execute(
|
root_engine.execute(
|
||||||
"GRANT ALL ON `{0}`.* TO \'{1}\'@\'%%\' IDENTIFIED BY \'{2}\'".format(
|
"GRANT ALL ON `{0}`.* TO \'{1}\'@\'%%\' IDENTIFIED BY \'{2}\'".format(
|
||||||
database, user, password))
|
database, user, password))
|
||||||
print("Created user {0} for {1}".format(user, database))
|
logger.info("Created user {0} for {1}".format(user, database))
|
||||||
except:
|
except:
|
||||||
print("Could not create user {0} for {1}".format(user, database))
|
logger.critical("Could not create user {0} for {1}".format(user, database))
|
||||||
|
raise
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Test connection
|
# Test connection
|
||||||
try:
|
try:
|
||||||
connection = user_engine.connect()
|
connection = user_engine.connect()
|
||||||
connection.close()
|
connection.close()
|
||||||
print 'Database connection for user ok'
|
logger.info("Tested connection to DB @ {0}:{1}/{2} as {3}".format(
|
||||||
|
host, port, database, user))
|
||||||
except:
|
except:
|
||||||
print 'Could not connect to database as user'
|
logger.critical('Could not connect to database as user')
|
||||||
|
raise
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
logger.info('Finished DB Management')
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
Loading…
Reference in New Issue
Block a user