From dab1d03d81c538966d03fb9318a4588a9e803b44 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Sat, 24 Mar 2012 11:20:07 -0500 Subject: Allow to run directly from a git checkout (#1037) Signed-off-by: Sol Jerome --- src/lib/Bcfg2/Server/Snapshots/__init__.py | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/lib/Bcfg2/Server/Snapshots/__init__.py (limited to 'src/lib/Bcfg2/Server/Snapshots/__init__.py') diff --git a/src/lib/Bcfg2/Server/Snapshots/__init__.py b/src/lib/Bcfg2/Server/Snapshots/__init__.py new file mode 100644 index 000000000..7c901adb2 --- /dev/null +++ b/src/lib/Bcfg2/Server/Snapshots/__init__.py @@ -0,0 +1,31 @@ +__all__ = ['models', 'db_from_config', 'setup_session'] + +import sqlalchemy +import sqlalchemy.orm +# Compatibility import +from Bcfg2.Bcfg2Py3k import ConfigParser + + +def db_from_config(cfile): + cp = ConfigParser.ConfigParser() + cp.read([cfile]) + driver = cp.get('snapshots', 'driver') + if driver == 'sqlite': + path = cp.get('snapshots', 'database') + return 'sqlite:///%s' % path + elif driver in ['mysql', 'postgres']: + user = cp.get('snapshots', 'user') + password = cp.get('snapshots', 'password') + host = cp.get('snapshots', 'host') + db = cp.get('snapshots', 'database') + return '%s://%s:%s@%s/%s' % (driver, user, password, host, db) + else: + raise Exception("unsupported db driver %s" % driver) + + +def setup_session(cfile, debug=False): + engine = sqlalchemy.create_engine(db_from_config(cfile), + echo=debug) + Session = sqlalchemy.orm.sessionmaker() + Session.configure(bind=engine) + return Session() -- cgit v1.2.3-1-g7c22