Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Backports:SLE-15-SP3:Update
python-moto
moto-pr3575-managedblockchain-botocore-api.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File moto-pr3575-managedblockchain-botocore-api.patch of Package python-moto
From 5de009ac256421dd0a6751f259aec35342cfb987 Mon Sep 17 00:00:00 2001 From: Bert Blommers <info@bertblommers.nl> Date: Fri, 1 Jan 2021 05:57:21 -0800 Subject: [PATCH] Fix Blockchain to work with new API --- moto/managedblockchain/responses.py | 8 ++++---- moto/managedblockchain/urls.py | 3 +++ moto/managedblockchain/utils.py | 14 ++++++++++++-- requirements-dev.txt | 2 +- setup.py | 2 +- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/moto/managedblockchain/responses.py b/moto/managedblockchain/responses.py index 7dd628eba..55252925d 100644 --- a/moto/managedblockchain/responses.py +++ b/moto/managedblockchain/responses.py @@ -10,7 +10,7 @@ networkid_from_managedblockchain_url, proposalid_from_managedblockchain_url, invitationid_from_managedblockchain_url, - memberid_from_managedblockchain_url, + memberid_from_managedblockchain_request, nodeid_from_managedblockchain_url, ) @@ -297,7 +297,7 @@ def _memberid_response(self, request, full_url, headers): else: body = request.data network_id = networkid_from_managedblockchain_url(full_url) - member_id = memberid_from_managedblockchain_url(full_url) + member_id = memberid_from_managedblockchain_request(full_url, body) if method == "GET": return self._memberid_response_get(network_id, member_id, headers) elif method == "PATCH": @@ -343,7 +343,7 @@ def _node_response(self, request, full_url, headers): parsed_url = urlparse(full_url) querystring = parse_qs(parsed_url.query, keep_blank_values=True) network_id = networkid_from_managedblockchain_url(full_url) - member_id = memberid_from_managedblockchain_url(full_url) + member_id = memberid_from_managedblockchain_request(full_url, body) if method == "GET": status = None if "status" in querystring: @@ -394,7 +394,7 @@ def _nodeid_response(self, request, full_url, headers): else: body = request.data network_id = networkid_from_managedblockchain_url(full_url) - member_id = memberid_from_managedblockchain_url(full_url) + member_id = memberid_from_managedblockchain_request(full_url, body) node_id = nodeid_from_managedblockchain_url(full_url) if method == "GET": return self._nodeid_response_get(network_id, member_id, node_id, headers) diff --git a/moto/managedblockchain/urls.py b/moto/managedblockchain/urls.py index 442a73233..9bc2491f5 100644 --- a/moto/managedblockchain/urls.py +++ b/moto/managedblockchain/urls.py @@ -16,4 +16,7 @@ "{0}/networks/(?P<networkid>[^/.]+)/members/(?P<memberid>[^/.]+)/nodes$": ManagedBlockchainResponse.node_response, "{0}/networks/(?P<networkid>[^/.]+)/members/(?P<memberid>[^/.]+)/nodes?(?P<querys>[^/.]+)$": ManagedBlockchainResponse.node_response, "{0}/networks/(?P<networkid>[^/.]+)/members/(?P<memberid>[^/.]+)/nodes/(?P<nodeid>[^/.]+)$": ManagedBlockchainResponse.nodeid_response, + # >= botocore 1.19.41 (API change - memberId is now part of query-string or body) + "{0}/networks/(?P<networkid>[^/.]+)/nodes$": ManagedBlockchainResponse.node_response, + "{0}/networks/(?P<networkid>[^/.]+)/nodes/(?P<nodeid>[^/.]+)$": ManagedBlockchainResponse.nodeid_response, } diff --git a/moto/managedblockchain/utils.py b/moto/managedblockchain/utils.py index d0485829b..84d5137a8 100644 --- a/moto/managedblockchain/utils.py +++ b/moto/managedblockchain/utils.py @@ -1,8 +1,9 @@ +import json import random import re import string -from six.moves.urllib.parse import urlparse +from six.moves.urllib.parse import parse_qs, urlparse def region_from_managedblckchain_url(url): @@ -27,11 +28,20 @@ def get_network_id(): ) -def memberid_from_managedblockchain_url(full_url): +def memberid_from_managedblockchain_request(full_url, body): id_search = re.search(r"\/m-[A-Z0-9]{26}", full_url, re.IGNORECASE) return_id = None if id_search: return_id = id_search.group(0).replace("/", "") + else: + # >= botocore 1.19.41 can add the memberId as a query parameter, or in the body + parsed_url = urlparse(full_url) + qs = parse_qs(parsed_url.query) + if "memberId" in qs: + return_id = qs.get("memberId")[0] + elif body: + body = json.loads(body) + return_id = body["MemberId"] return return_id diff --git a/requirements-dev.txt b/requirements-dev.txt index 692a1cbf3..2df056d85 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -21,7 +21,7 @@ beautifulsoup4==4.6.0 # The below pins mirror the Python version-conditional pins in setup.py # Jinja2>=2.10.1; python_version >= '3.6' -mock; python_version >= '3.6' +mock<=4.0.2; python_version >= '3.6' more-itertools; python_version >= '3.6' setuptools; python_version >= '3.6' sshpubkeys>=3.1.0; python_version >= '3.6' diff --git a/setup.py b/setup.py index 913565eb4..0aab0bcff 100755 --- a/setup.py +++ b/setup.py @@ -70,7 +70,7 @@ def get_version(): else: install_requires += [ "Jinja2>=2.10.1", - "mock", + "mock<=4.0.2", "more-itertools", "setuptools", "zipp",
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor