From b1afd5ddc4b2e756846942349b8312e247348588 Mon Sep 17 00:00:00 2001 From: Feike Steenbergen Date: Thu, 3 Sep 2015 09:52:01 +0200 Subject: [PATCH] Refactoring to enable package building and succesfull installation of the Patroni package. Build the first packages of patroni and added them to pypi.python.org Update Dockerfile to use pip to install patroni. --- MANIFEST.in | 3 +++ Dockerfile => docker/Dockerfile | 19 ++++++++----------- docker/Dockerfile.test.patch | 13 +++++++++++++ docker/entrypoint.sh | 2 +- patroni/__init__.py | 2 +- patroni/helpers/__init__.py | 0 patroni/patroni.py | 12 ++++++------ patroni/scripts/__init__.py | 0 requirements-py3.txt | 4 ++-- setup.py | 5 ++++- 10 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 MANIFEST.in rename Dockerfile => docker/Dockerfile (71%) create mode 100644 docker/Dockerfile.test.patch delete mode 100644 patroni/helpers/__init__.py delete mode 100644 patroni/scripts/__init__.py 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}, )