From 725be1dc095e17a7b8836ae42ea08becb03459c5 Mon Sep 17 00:00:00 2001 From: Freddy Esteban Perez <34690766+freddyperez1@users.noreply.github.com> Date: Wed, 15 Jan 2020 12:34:02 -0600 Subject: [PATCH 1/5] Bump pymongo (#56) * remove version number joined by dots, does not work well with release candidates. remove automatically upload to pypi. pymongo version bump. * python bump in circleci config * add py2 tests in circleci * version bump Co-authored-by: Freddy Esteban Perez <44184476+freddyesteban@users.noreply.github.com> --- .circleci/config.yml | 36 ++++++++++++++++-------------------- requirements/prod.txt | 2 +- setup.py | 3 +-- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 32bfbff..ce4cf6b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,42 +1,38 @@ version: 2 jobs: - test: + test-py2: docker: - - image: python:3.5 + - image: python:2.7 working_directory: ~/python-client steps: - checkout - run: command: pip install --upgrade pip tox - + - run: - command: | + command: | tox -e lint - tox -e py35 - - pypi_upload: + tox -e py27 + + test-py3: docker: - - image: python:3.5 + - image: python:3.7 + working_directory: ~/python-client steps: - checkout + - run: + command: pip install --upgrade pip tox + - run: command: | - pip install --upgrade pip tox - tox -e build_pypi + tox -e lint + tox -e py37 workflows: version: 2 test: jobs: - - test - pypi_upload: - jobs: - - pypi_upload: - filters: - tags: - only: - - /^[0-9]+.[0-9]+.[0-9]+$/ - branches: - ignore: /.*/ \ No newline at end of file + - test-py2 + - test-py3 \ No newline at end of file diff --git a/requirements/prod.txt b/requirements/prod.txt index 2c773fd..8d8fe3f 100644 --- a/requirements/prod.txt +++ b/requirements/prod.txt @@ -1,5 +1,5 @@ elasticsearch>=2.0.0 -pymongo==3.7.2 +pymongo==3.8.0 redis>=2.0 requests>=2.0.0 six<2.0 diff --git a/setup.py b/setup.py index fca9571..2ebfc0f 100755 --- a/setup.py +++ b/setup.py @@ -4,8 +4,7 @@ from setuptools import find_packages from setuptools import setup -VERSION = ('0', '5', '2') -__version__ = '.'.join(VERSION) +__version__ = '0.6.0' with open('README.md') as f: readme = f.read() From d5ed0f62630fa830b212d1db8c5702c9f1bfd775 Mon Sep 17 00:00:00 2001 From: Freddy Esteban Perez <44184476+freddyesteban@users.noreply.github.com> Date: Tue, 25 Aug 2020 11:19:20 -0500 Subject: [PATCH 2/5] Mongodb 4 2 support (#58) * Changelog update * Update to python 3.8 * Fix doc generation * Add ability to pass additional keyword arguments to client connection * version bump and changelog update --- .circleci/config.yml | 4 ++-- .gitignore | 3 +++ changelog.rst | 4 ++++ docs/source/conf.py | 2 +- objectrocket/__init__.py | 2 ++ objectrocket/instances/mongodb.py | 16 +++++++++------- requirements/prod.txt | 2 +- setup.py | 2 +- tox.ini | 2 +- 9 files changed, 24 insertions(+), 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ce4cf6b..7cd5897 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,7 +17,7 @@ jobs: test-py3: docker: - - image: python:3.7 + - image: python:3.8 working_directory: ~/python-client steps: - checkout @@ -28,7 +28,7 @@ jobs: - run: command: | tox -e lint - tox -e py37 + tox -e py38 workflows: version: 2 diff --git a/.gitignore b/.gitignore index a9823c9..643bcde 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ .cache build dist +.vscode/ +.python-version +.idea/ diff --git a/changelog.rst b/changelog.rst index 3d92504..659e3b4 100644 --- a/changelog.rst +++ b/changelog.rst @@ -1,6 +1,10 @@ changelog ========= +0.7.0 +----- +- Add ability to pass additional arguments when retrieving authenticated connection to instance. + 0.4.x ----- - New stats endpoint that provides instance stats (for consumption by newrelic) diff --git a/docs/source/conf.py b/docs/source/conf.py index 240350a..2fce43a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -17,7 +17,7 @@ import sphinx_rtd_theme -from setup import __version__ +from objectrocket import __version__ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the diff --git a/objectrocket/__init__.py b/objectrocket/__init__.py index 42e9110..ea0905a 100644 --- a/objectrocket/__init__.py +++ b/objectrocket/__init__.py @@ -1,3 +1,5 @@ """Top level package with imported objects for convenience.""" # Import this object for ease of access. from objectrocket.client import Client # noqa + +__version__ = '0.7.0' diff --git a/objectrocket/instances/mongodb.py b/objectrocket/instances/mongodb.py index ebbc17c..5bc9489 100644 --- a/objectrocket/instances/mongodb.py +++ b/objectrocket/instances/mongodb.py @@ -8,6 +8,7 @@ import requests from concurrent import futures +from distutils.version import LooseVersion from objectrocket import bases from objectrocket import util @@ -59,19 +60,21 @@ def compaction(self, request_compaction=False): return response.json() - def get_authenticated_connection(self, user, passwd, db='admin', ssl=True): + def get_authenticated_connection(self, user, passwd, db='admin', ssl=True, **kwargs): """Get an authenticated connection to this instance. :param str user: The username to use for authentication. :param str passwd: The password to use for authentication. :param str db: The name of the database to authenticate against. Defaults to ``'Admin'``. :param bool ssl: Use SSL/TLS if available for this instance. Defaults to ``True``. + :param kwargs: Additional keyword arguments to pass to MongoClient. :raises: :py:class:`pymongo.errors.OperationFailure` if authentication fails. """ # Attempt to establish an authenticated connection. try: - connection = self.get_connection(ssl=ssl) + connection = self.get_connection(ssl=ssl, **kwargs) connection[db].authenticate(user, passwd) + return connection # Catch exception here for logging, then just re-raise. @@ -79,12 +82,12 @@ def get_authenticated_connection(self, user, passwd, db='admin', ssl=True): logger.exception(ex) raise - def get_connection(self, ssl=True): + def get_connection(self, ssl=True, **kwargs): """Get a live connection to this instance. :param bool ssl: Use SSL/TLS if available for this instance. """ - return self._get_connection(ssl=ssl) + return self._get_connection(ssl=ssl, **kwargs) @util.token_auto_auth def shards(self, add_shard=False): @@ -264,7 +267,7 @@ def set_stepdown_window(self, start, end, enabled=True, scheduled=True, weekly=T ###################### # Private interface. # ###################### - def _get_connection(self, ssl): + def _get_connection(self, ssl, **kwargs): """Get a live connection to this instance.""" # Use SSL/TLS if requested and available. @@ -272,8 +275,7 @@ def _get_connection(self, ssl): if ssl and self.ssl_connect_string: connect_string = self.ssl_connect_string - return pymongo.MongoClient(connect_string) - + return pymongo.MongoClient(connect_string, **kwargs) class Shard(bases.Extensible): """An ObjectRocket MongoDB instance shard. diff --git a/requirements/prod.txt b/requirements/prod.txt index 8d8fe3f..df2d34d 100644 --- a/requirements/prod.txt +++ b/requirements/prod.txt @@ -1,5 +1,5 @@ elasticsearch>=2.0.0 -pymongo==3.8.0 +pymongo==3.10.1 redis>=2.0 requests>=2.0.0 six<2.0 diff --git a/setup.py b/setup.py index 2ebfc0f..43c8764 100755 --- a/setup.py +++ b/setup.py @@ -3,8 +3,8 @@ """Setup script for ObjectRocket Python client.""" from setuptools import find_packages from setuptools import setup +from objectrocket import __version__ -__version__ = '0.6.0' with open('README.md') as f: readme = f.read() diff --git a/tox.ini b/tox.ini index eecbff2..49b0655 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 2.1 -envlist = lint,py27,py37 +envlist = lint,py27,py38 skipsdist = True [testenv] From 89ef5c608f727e9cb8178e25b3cc0495d36eac58 Mon Sep 17 00:00:00 2001 From: Freddy Esteban Perez <44184476+freddyesteban@users.noreply.github.com> Date: Tue, 25 Aug 2020 11:36:04 -0500 Subject: [PATCH 3/5] fix it (#59) --- requirements/dev.txt | 1 + tox.ini | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 3d0a1c9..9304148 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -10,3 +10,4 @@ tox>=2.1 wheel>=0.22.0 git+https://github.com/mverteuil/pytest-ipdb.git responses>=0.4.0 +twine \ No newline at end of file diff --git a/tox.ini b/tox.ini index 49b0655..9b1df56 100644 --- a/tox.ini +++ b/tox.ini @@ -13,7 +13,7 @@ recreate = False commands = {envbindir}/py.test --cov objectrocket --cov-report term-missing {toxinidir}/tests [testenv:build_pypi] -deps = twine +deps = -r requirements/dev.txt commands = {envbindir}/python setup.py clean bdist_wheel {toxinidir}/scripts/upload_to_pypi.sh pypi From 56451b207ce60079c6c459df4ba1afef1cd60615 Mon Sep 17 00:00:00 2001 From: Eric Bellefontaine Date: Wed, 9 Dec 2020 13:20:47 -0600 Subject: [PATCH 4/5] Add docker authentication --- .circleci/config.yml | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7cd5897..c49b92b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,38 +1,47 @@ version: 2 +references: + objectrocket-docker-auth: &objectrocket-docker-auth + auth: + username: ${DOCKER_USERNAME} + password: ${DOCKER_PASSWORD} + context-to-use: &context-to-use + context: objectrocket-shared jobs: test-py2: docker: - - image: python:2.7 + - <<: *objectrocket-docker-auth + image: python:2.7 working_directory: ~/python-client steps: - - checkout + - checkout - - run: - command: pip install --upgrade pip tox + - run: + command: pip install --upgrade pip tox - - run: - command: | - tox -e lint - tox -e py27 + - run: + command: | + tox -e lint + tox -e py27 test-py3: docker: - - image: python:3.8 + - <<: *objectrocket-docker-auth + image: python:3.8 working_directory: ~/python-client steps: - - checkout + - checkout - - run: - command: pip install --upgrade pip tox + - run: + command: pip install --upgrade pip tox - - run: - command: | - tox -e lint - tox -e py38 + - run: + command: | + tox -e lint + tox -e py38 workflows: version: 2 test: jobs: - - test-py2 - - test-py3 \ No newline at end of file + - test-py2: *context-to-use + - test-py3: *context-to-use From d27778a50e3c4a3d06108bb8f90dbfc2ed0584f6 Mon Sep 17 00:00:00 2001 From: Eric Bellefontaine Date: Tue, 15 Dec 2020 15:48:54 -0600 Subject: [PATCH 5/5] Add stale.yml --- .github/stale.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..d93a1a6 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,16 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 30 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: +- security +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false