diff --git a/ptero_common/janitors/base.py b/ptero_common/janitors/base.py index 0c997eb..bee2ad8 100644 --- a/ptero_common/janitors/base.py +++ b/ptero_common/janitors/base.py @@ -7,6 +7,7 @@ class Janitor(object): __metaclass__ = abc.ABCMeta def __init__(self, url): + self.url = url self.url_obj = urlparse(url) self.sanitized_url = self.sanitize_url(self.url_obj) diff --git a/ptero_common/janitors/postgres_janitor.py b/ptero_common/janitors/postgres_janitor.py new file mode 100644 index 0000000..a8c7b10 --- /dev/null +++ b/ptero_common/janitors/postgres_janitor.py @@ -0,0 +1,20 @@ +from .base import Janitor +import logging +import sqlalchemy + + +LOG = logging.getLogger(__name__) + + +class PostgresJanitor(Janitor): + ALLOWED_SCHEMES = {'postgres'} + + def clean(self): + engine = sqlalchemy.create_engine(self.url) + + meta = sqlalchemy.MetaData() + meta.reflect(bind=engine) + + for name, table in meta.tables.iteritems(): + LOG.debug('Deleting table %s', name) + engine.execute(table.drop())