diff -r 2911935c524d -r 2fcc8ef0b97d pgtoolkit/toolbase.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pgtoolkit/toolbase.py Tue Aug 16 16:03:46 2011 +0200 @@ -0,0 +1,59 @@ +import argparse + +from pgtookit import pgmanager, config + + +class ToolBase: + def __init__(self, name, desc): + self.parser = argparse.ArgumentParser(description=desc) + + self.config = config.ConfigParser() + self.config.add_argument('databases', type=dict) + self.config.add_argument('meta_db') + self.config.add_argument('meta_query') + + self.pgm = pgmanager.get_instance() + + def init(self): + self.config.load('pgtoolkit.conf') + self.args = self.parser.parse_args() + + def buildconn(self, name, targetname): + with self.pgm.cursor('meta') as curs: + curs.execute(self.config.meta_query, [targetname]) + row = curs.fetchone_dict() + curs.connection.commit() + + if not row: + raise Exception('Unknown database "%s"' % targetname) + + self.pgm.create_conn(name=name, **row) + + def prepareconns(self, *args): + if self.config.meta_db: + self.pgm.create_conn(name='meta', dsn=self.config.meta_db) + for name in args: + self.buildconn(name, self.args.__dict__[name]) + self.pgm.close_conn('meta') + + +class SimpleTool(ToolBase): + def __init__(self, name, desc): + ToolBase.__init__(self, name, desc) + self.parser.add_argument('target', metavar='target', type=str, help='Target database') + + def init(self): + ToolBase.init(self) + self.prepareconns('target') + + +class SrcDstTool(ToolBase): + def __init__(self, name, desc): + ToolBase.__init__(self, name, desc) + self.parser.add_argument('src', metavar='source', type=str, help='Source database') + self.parser.add_argument('dst', metavar='destination', type=str, help='Destination database') + + def init(self): + ToolBase.init(self) + self.prepareconns('src', 'dst') +