heat-db-setup read engine config file for DB connection details

Currently heat-db-setup, or rather the underlying python -m heat.db.sqlalchemy.manage
has a hard-coded database connection URL, so DB setup will fail if a non-default
configuration exists in /etc/heat/heat-engine.conf.

This attempts to read the sql_connection from the DEFAULT section of heat-engine.conf
falling back to the old default string on failure.

bug/1087741

Change-Id: Ieb41503a58ee0804d79a32a8286268803c9f456c
Signed-off-by: Steven Hardy <shardy@redhat.com>
This commit is contained in:
Steven Hardy 2012-12-07 17:16:04 +00:00
parent 705469b5a5
commit 14d8a7a19f
1 changed files with 13 additions and 2 deletions

View File

@ -1,14 +1,25 @@
#!/usr/bin/env python
from migrate.versioning.shell import main
import migrate.exceptions
import ConfigParser
if __name__ == '__main__':
import os.path
migrate_repo_path = os.path.join(os.path.dirname(__file__),
'migrate_repo')
# Try to get the config-file value for sql_connection
# Note we can't use openstack.common.cfg because this also insists
# on parsing the CLI, which we don't want here
config = ConfigParser.SafeConfigParser()
try:
main(url='mysql://heat:heat@localhost/heat', debug='False',
repository=migrate_repo_path)
config = ConfigParser.SafeConfigParser()
config.readfp(open('/etc/heat/heat-engine.conf'))
sql_connection = config.get('DEFAULT', 'sql_connection')
except Exception:
sql_connection = 'mysql://heat:heat@localhost/heat'
try:
main(url=sql_connection, debug='False', repository=migrate_repo_path)
except migrate.exceptions.DatabaseAlreadyControlledError:
print 'Database already version controlled.'