From 94d351b364e873cf4d35d918540e8666ea073139 Mon Sep 17 00:00:00 2001 From: Scott Hussey Date: Thu, 19 Apr 2018 09:09:25 -0500 Subject: [PATCH] [Fix] Migrate to pymongo BSON library * bson is incompatible w/ pip 10, migrate to pymongo bson * Update tox to run tests w/ locked requirements file as this is what production images are built with Change-Id: Iacf3301ddc224f3525102b0204f349b733608138 --- .../drivers/node/maasdriver/models/machine.py | 6 ++- requirements-direct.txt | 2 +- requirements-lock.txt | 52 +++++++++---------- .../postgres/test_build_data_collection.py | 4 +- tox.ini | 2 +- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/drydock_provisioner/drivers/node/maasdriver/models/machine.py b/drydock_provisioner/drivers/node/maasdriver/models/machine.py index c00e887a..2c71592d 100644 --- a/drydock_provisioner/drivers/node/maasdriver/models/machine.py +++ b/drydock_provisioner/drivers/node/maasdriver/models/machine.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. """Model representing MAAS node/machine resource.""" +import logging import drydock_provisioner.error as errors import drydock_provisioner.drivers.node.maasdriver.models.base as model_base @@ -19,8 +20,9 @@ import drydock_provisioner.drivers.node.maasdriver.models.interface as maas_inte import drydock_provisioner.drivers.node.maasdriver.models.blockdev as maas_blockdev import drydock_provisioner.drivers.node.maasdriver.models.volumegroup as maas_vg -import bson +from bson import BSON +LOG = logging.getLogger(__name__) class Machine(model_base.ResourceBase): @@ -288,7 +290,7 @@ class Machine(model_base.ResourceBase): resp = self.api_client.get(url, op='details') if resp.status_code == 200: - detail_config = bson.loads(resp.content) + detail_config = BSON.decode(resp.content) return detail_config def set_owner_data(self, key, value): diff --git a/requirements-direct.txt b/requirements-direct.txt index 8465992e..814eeab3 100644 --- a/requirements-direct.txt +++ b/requirements-direct.txt @@ -6,7 +6,7 @@ oslo.versionedobjects==1.23.0 requests oauthlib uwsgi==2.0.15 -bson==0.4.7 +pymongo==3.6.1 oslo.config==3.16.0 click==6.7 PasteDeploy==1.5.2 diff --git a/requirements-lock.txt b/requirements-lock.txt index 90dbe01d..28235636 100644 --- a/requirements-lock.txt +++ b/requirements-lock.txt @@ -1,20 +1,18 @@ alembic==0.8.2 amqp==2.2.2 Babel==2.5.3 -bson==0.4.7 cachetools==2.0.1 -certifi==2017.11.5 +certifi==2018.4.16 chardet==3.0.4 click==6.7 contextlib2==0.5.5 debtcollector==1.19.0 defusedxml==0.5.0 -enum-compat==0.0.2 -eventlet==0.20.0 +eventlet==0.22.1 falcon==1.4.1 fasteners==0.14.1 futurist==1.6.0 -greenlet==0.4.12 +greenlet==0.4.13 idna==2.6 iso8601==0.1.11 Jinja2==2.9.6 @@ -25,56 +23,56 @@ kombu==4.1.0 Mako==1.0.7 MarkupSafe==1.0 monotonic==1.4 -msgpack-python==0.5.1 +msgpack==0.5.6 netaddr==0.7.19 netifaces==0.10.6 -oauthlib==2.0.6 -oslo.concurrency==3.25.0 +oauthlib==2.0.7 +oslo.concurrency==3.27.0 oslo.config==3.16.0 oslo.context==2.20.0 -oslo.i18n==3.19.0 -oslo.log==3.36.0 -oslo.messaging==5.35.0 -oslo.middleware==3.34.0 +oslo.i18n==3.20.0 +oslo.log==3.38.0 +oslo.messaging==6.2.0 +oslo.middleware==3.35.0 oslo.policy==1.22.1 -oslo.serialization==2.23.0 -oslo.service==1.29.0 -oslo.utils==3.35.0 +oslo.serialization==2.25.0 +oslo.service==1.31.1 +oslo.utils==3.36.0 oslo.versionedobjects==1.23.0 Paste==2.0.3 PasteDeploy==1.5.2 -pbr==3.1.1 -pika==0.11.2 -pika-pool==0.1.3 -pip==9.0.1 +pbr==4.0.2 +pip==10.0.0 positional==1.2.1 prettytable==0.7.2 psycopg2==2.7.3.1 PTable==0.9.2 -pycadf==2.6.0 +pycadf==2.7.0 pycrypto==2.6.1 pyghmi==1.0.18 +pyinotify==0.9.6 +pymongo==3.6.1 pyparsing==2.2.0 -python-dateutil==2.6.1 +python-dateutil==2.7.2 python-editor==1.0.3 -python-keystoneclient==3.14.0 +python-keystoneclient==3.15.0 python-mimeparse==1.6.0 -pytz==2017.3 +pytz==2018.4 PyYAML==3.12 repoze.lru==0.7 requests==2.18.4 rfc3986==1.1.0 Routes==2.4.1 -setuptools==38.4.0 +setuptools==39.0.1 six==1.11.0 SQLAlchemy==1.1.14 statsd==3.2.2 stevedore==1.28.0 -tenacity==4.8.0 +tenacity==4.10.0 ulid2==0.1.1 urllib3==1.22 uWSGI==2.0.15 vine==1.1.4 -WebOb==1.7.4 -wheel==0.30.0 +WebOb==1.8.1 +wheel==0.31.0 wrapt==1.10.11 diff --git a/tests/integration/postgres/test_build_data_collection.py b/tests/integration/postgres/test_build_data_collection.py index 6087ffac..a9a26926 100644 --- a/tests/integration/postgres/test_build_data_collection.py +++ b/tests/integration/postgres/test_build_data_collection.py @@ -26,11 +26,11 @@ class TestBuildDataCollection(object): 'lshw': 'foo'.encode(), 'lldp': 'bar'.encode(), } - bson_data = bson.loads(bson.dumps(sample_data)) + bson_data = bson.BSON.encode(sample_data) machine = mocker.MagicMock() mocker_config = { - 'get_details.return_value': bson_data, + 'get_details.return_value': bson.BSON.decode(bson_data), 'hostname': 'foo', } machine.configure_mock(**mocker_config) diff --git a/tox.ini b/tox.ini index 8098f8cd..f1a069f2 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,7 @@ envlist = pep8,bandit,unit setenv = YAMLDIR = {toxinidir}/tests/yaml_samples/ basepython=python3.5 deps= - -rrequirements-direct.txt + -rrequirements-lock.txt -rrequirements-test.txt [testenv:freeze]