diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..1a5e91cd --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,3 @@ +include requirements* +include *.rst +recursive-include patroni *.py diff --git a/Dockerfile b/docker/Dockerfile similarity index 71% rename from Dockerfile rename to docker/Dockerfile index 2068d856..1a1cb41c 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -8,29 +8,26 @@ RUN apt-get update -y && apt-get install curl -y # Add PGDG repositories RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list -RUN curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - +RUN curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - RUN apt-get update -y RUN apt-get upgrade -y ENV PGVERSION 9.4 -RUN apt-get install python python-psycopg2 python-yaml python-requests python-boto postgresql-${PGVERSION} python-dnspython python-kazoo python-pip -y -RUN pip install python-etcd +RUN apt-get install postgresql-${PGVERSION} -y +RUN apt-get install python python-psycopg2 python-yaml python-requests python-dnspython python-pip python-mock -y +RUN pip install patroni + ENV PATH /usr/lib/postgresql/${PGVERSION}/bin:$PATH -RUN mkdir -p /patroni/helpers -RUN mkdir -p /patroni/scripts -ADD patroni.py /patroni/patroni.py -ADD helpers /patroni/helpers -ADD scripts /patroni/scripts - ENV ETCDVERSION 2.0.13 RUN curl -L https://github.com/coreos/etcd/releases/download/v${ETCDVERSION}/etcd-v${ETCDVERSION}-linux-amd64.tar.gz | tar xz -C /bin --strip=1 --wildcards --no-anchored etcd etcdctl -## Setting up a simple script that will serve as an entrypoint +### Setting up a simple script that will serve as an entrypoint +RUN mkdir /patroni/ RUN mkdir /data/ && touch /var/log/etcd.log /var/log/etcd.err /pgpass /patroni/postgres.yml RUN chown postgres:postgres -R /patroni/ /data/ /pgpass /var/log/etcd.* /patroni/postgres.yml -ADD docker/entrypoint.sh /entrypoint.sh +ADD entrypoint.sh /entrypoint.sh EXPOSE 4001 5432 2380 diff --git a/docker/Dockerfile.test.patch b/docker/Dockerfile.test.patch new file mode 100644 index 00000000..376f3c20 --- /dev/null +++ b/docker/Dockerfile.test.patch @@ -0,0 +1,13 @@ +--- Dockerfile 2015-09-03 09:24:16.355412216 +0200 ++++ Dockerfile.test 2015-09-03 09:25:48.407879693 +0200 +@@ -15,7 +15,9 @@ + ENV PGVERSION 9.4 + RUN apt-get install postgresql-${PGVERSION} -y + RUN apt-get install python python-psycopg2 python-yaml python-requests python-dnspython python-pip python-mock -y +-RUN pip install patroni ++## We install prereqs from pypi, the package from testpypi ++RUN pip install --force-reinstall --upgrade kazoo boto python-etcd ++RUN pip install -i https://testpypi.python.org/pypi patroni + + + ENV PATH /usr/lib/postgresql/${PGVERSION}/bin:$PATH diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ce40f6dc..b28f4ae6 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -133,5 +133,5 @@ then sleep 60 done else - exec /patroni/patroni.py /patroni/postgres.yml + exec patroni /patroni/postgres.yml fi diff --git a/patroni/__init__.py b/patroni/__init__.py index a3e6290d..b970b513 100644 --- a/patroni/__init__.py +++ b/patroni/__init__.py @@ -1 +1 @@ -__version__ = '0.15' +__version__ = '0.22' diff --git a/patroni/helpers/__init__.py b/patroni/helpers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/patroni/patroni.py b/patroni/patroni.py index dd7bd52e..2ee32211 100755 --- a/patroni/patroni.py +++ b/patroni/patroni.py @@ -5,12 +5,12 @@ import sys import time import yaml -from patroni.helpers.api import RestApiServer -from patroni.helpers.etcd import Etcd -from patroni.helpers.ha import Ha -from patroni.helpers.postgresql import Postgresql -from patroni.helpers.utils import setup_signal_handlers, sleep -from patroni.helpers.zookeeper import ZooKeeper +from .helpers.api import RestApiServer +from .helpers.etcd import Etcd +from .helpers.ha import Ha +from .helpers.postgresql import Postgresql +from .helpers.utils import setup_signal_handlers, sleep +from .helpers.zookeeper import ZooKeeper logger = logging.getLogger(__name__) diff --git a/patroni/scripts/__init__.py b/patroni/scripts/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/requirements-py3.txt b/requirements-py3.txt index 544577ad..0fd9dfb3 100644 --- a/requirements-py3.txt +++ b/requirements-py3.txt @@ -5,5 +5,5 @@ psycopg2 PyYAML requests six -kazoo -python-etcd +kazoo>=2.2.1 +python-etcd>=0.4.1 diff --git a/setup.py b/setup.py index 82ac8de8..b90d1084 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ if sys.version_info < (2, 7, 0): __location__ = os.path.join(os.getcwd(), os.path.dirname(inspect.getfile(inspect.currentframe()))) + def read_version(package): data = {} with open(os.path.join(package, '__init__.py'), 'r') as fd: @@ -56,6 +57,8 @@ CLASSIFIERS = [ 'Programming Language :: Python :: Implementation :: CPython', ] +CONSOLE_SCRIPTS = ['patroni = patroni.patroni:main'] + class PyTest(TestCommand): @@ -91,7 +94,6 @@ class PyTest(TestCommand): params['plugins'] = ['cov'] if self.junitxml: params['args'] += self.junitxml - #params['args'] += ['--doctest-modules', MAIN_PACKAGE, '--doctest-modules', HELPERS, '--doctest-modules', SCRIPTS, '-s'] params['args'] += ['--doctest-modules', MAIN_PACKAGE, '-s', '-vv'] errno = pytest.main(**params) sys.exit(errno) @@ -144,6 +146,7 @@ def setup_package(): cmdclass=cmdclass, tests_require=['pytest-cov', 'pytest'], command_options=command_options, + entry_points={'console_scripts': CONSOLE_SCRIPTS}, )