diff options
author | Rob Austein <sra@hactrn.net> | 2016-02-15 23:08:06 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2016-02-15 23:08:06 +0000 |
commit | 5250ae9f0894ea8152fc9bc7692e6fb117f85f58 (patch) | |
tree | b67bfb1a340eac933ae936fdb0969fca067a6626 /rp | |
parent | 33f37a6caa6ed69a9463b2684cab8b8510e4b3ae (diff) |
Snapshot before whacking migrations.
svn path=/branches/tk705/; revision=6259
Diffstat (limited to 'rp')
-rw-r--r-- | rp/config/Makefile.in | 12 | ||||
-rwxr-xr-x | rp/config/rpki-sql-setup | 34 |
2 files changed, 23 insertions, 23 deletions
diff --git a/rp/config/Makefile.in b/rp/config/Makefile.in index d7367a5f..c6050f3e 100644 --- a/rp/config/Makefile.in +++ b/rp/config/Makefile.in @@ -23,7 +23,7 @@ srcdir = @srcdir@ CFG_INSTALL_TARGETS = @CFG_INSTALL_TARGETS@ -all:: rpki.rp.xml rpki.rp.sample.conf +all:: rpki.rp.xml rpki.rp.conf.sample clean:: @true @@ -35,7 +35,7 @@ install-always:: all @echo "== Default configuration file location is ${sysconfdir}/rpki.conf ==" @echo ${INSTALL} -d ${DESTDIR}${sysconfdir}/rpki - ${INSTALL} rpki.rp.xml rpki.rp.sample.conf ${DESTDIR}${sysconfdir}/rpki + ${INSTALL} rpki.rp.xml rpki.rp.conf.sample ${DESTDIR}${sysconfdir}/rpki test uninstall deinstall:: @true @@ -56,13 +56,13 @@ rpki.rp.xml: ${abs_top_srcdir}/rpki/autoconf.py rpki-confgen rpki-confgen.xml --set myrpki::run_pubd=no \ --write-xml $@ -rpki.rp.sample.conf: rpki.rp.xml +rpki.rp.conf.sample: rpki.rp.xml ${PYTHON} rpki-confgen \ --read-xml rpki.rp.xml \ --write-conf $@ clean:: - rm -f rpki.rp.xml rpki.rp.sample.conf + rm -f rpki.rp.xml rpki.rp.conf.sample install-postconf: \ install-user install-conf install-sql install-django @@ -75,10 +75,10 @@ install-user: install-conf: test -f ${DESTDIR}${sysconfdir}/rpki.conf ||\ - cp -p ${DESTDIR}${sysconfdir}/rpki/rpki.rp.sample.conf ${DESTDIR}${sysconfdir}/rpki.conf + cp -p ${DESTDIR}${sysconfdir}/rpki/rpki.rp.conf.sample ${DESTDIR}${sysconfdir}/rpki.conf #uninstall deinstall:: -# rm -f ${DESTDIR}${sysconfdir}/rpki/rpki.rp.xml ${DESTDIR}${sysconfdir}/rpki/rpki.rp.sample.conf +# rm -f ${DESTDIR}${sysconfdir}/rpki/rpki.rp.xml ${DESTDIR}${sysconfdir}/rpki/rpki.rp.conf.sample install-sql: ${sbindir}/rpki-sql-setup create diff --git a/rp/config/rpki-sql-setup b/rp/config/rpki-sql-setup index c72c97c5..98ef2898 100755 --- a/rp/config/rpki-sql-setup +++ b/rp/config/rpki-sql-setup @@ -54,10 +54,6 @@ class Abstract_Driver(object): else: return True - def db_exists(self, udb): - self.execute("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = %s", (udb.database,)) - return bool(self.fetchone()[0]) - def fetchone(self): return self._cur.fetchone() @@ -88,6 +84,10 @@ class MySQL_Driver(Abstract_Driver): def _db_accessible_test(self, udb): self.driver.connect(db = udb.database, user = udb.username, passwd = udb.password).close() + def db_exists(self, udb): + self.execute("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0.database}'".format(udb)) + return bool(self.fetchone()[0]) + def execute(*args): try: self._cur @@ -203,27 +203,27 @@ class PostgreSQL_Driver(Abstract_Driver): finally: self._seteuid(uid) - def _role_in_use(self, udb): - self.execute('''\ + def db_exists(self, udb): + self.execute("SELECT COUNT(*) FROM pg_database WHERE datname = '{0.database}'".format(udb)) + return bool(self.fetchone()[0]) + + def role_in_use(self, udb): + self.execute(textwrap.dedent('''\ SELECT COUNT(*) FROM pg_database JOIN pg_roles ON pg_database.datdba = pg_roles.oid - WHERE pg_roles.rolname = %s''', (udb.username,)) + WHERE pg_roles.rolname = '{0.username}' + '''.format(udb))) return bool(self.fetchone()[0]) def create(self, udb): - self.execute('''\ - DO $$ BEGIN - IF NOT EXISTS (SELECT * FROM pg_catalog.pg_roles - WHERE rolname = '{0.username}') - THEN - CREATE ROLE {0.username} LOGIN PASSWORD '{0.password}'; - END IF; - END $$'''.format(udb)) - self.execute("CREATE DATABASE {0.database} OWNER {0.username}".format(udb)) + if not self.role_in_use(udb): + self.execute("CREATE ROLE {0.username} LOGIN PASSWORD '{0.password}'".format(udb)) + if not self.db_exists(udb): + self.execute("CREATE DATABASE {0.database} OWNER {0.username}".format(udb)) def drop(self, udb): self.execute("DROP DATABASE IF EXISTS {0.database}".format(udb)) - if not self._role_in_use(udb): + if not self.role_in_use(udb): self.execute("DROP ROLE IF EXISTS {0.username}".format(udb)) def script_drop(self, udb): |