From 9d42ebdd45c149f40d84c6acb56164ba109084ea Mon Sep 17 00:00:00 2001 From: Alexander VT <> Date: Wed, 11 May 2022 12:10:37 -0500 Subject: [PATCH 01/11] fix(gs): ensure inmem cache exp getschecked --- fence/blueprints/data/indexd.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index 9237a2e95..2f180f07c 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1077,9 +1077,15 @@ def _generate_google_storage_signed_url( is_cached = False if proxy_group_id in self._assume_role_cache_gs: - private_key, key_db_entry = self._assume_role_cache_gs.get(proxy_group_id) - is_cached = True - elif hasattr(flask.current_app, "db"): + raw_private_key, raw_key_db_entry, expires_at = self._assume_role_cache_gs.get(proxy_group_id) + if expires_at > expiration_time: + is_cached = True + private_key = raw_private_key + key_db_entry = raw_key_db_entry + else: + del self._assume_role_cache_gs[proxy_group_id] + + if not is_cached and hasattr(flask.current_app, "db"): with flask.current_app.db.session as session: cache = ( session.query(AssumeRoleCacheGCP) @@ -1090,6 +1096,7 @@ def _generate_google_storage_signed_url( rv = ( json.loads(cache.gcp_private_key), json.loads(cache.gcp_key_db_entry), + cache.expires_at, ) self._assume_role_cache_gs[proxy_group_id] = rv private_key, key_db_entry = self._assume_role_cache_gs.get( From b8822d79137a1d2ac83806308c31497c2552b40c Mon Sep 17 00:00:00 2001 From: BinamB Date: Fri, 13 May 2022 14:54:26 -0500 Subject: [PATCH 02/11] add unit test and fix things --- fence/blueprints/data/indexd.py | 8 ++-- tests/data/test_indexed_file.py | 69 ++++++++++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 5 deletions(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index 2f180f07c..7dafc9bd8 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1075,16 +1075,16 @@ def _generate_google_storage_signed_url( expiration_time = int(time.time()) + expires_in is_cached = False - if proxy_group_id in self._assume_role_cache_gs: - raw_private_key, raw_key_db_entry, expires_at = self._assume_role_cache_gs.get(proxy_group_id) - if expires_at > expiration_time: + raw_private_key, raw_key_db_entry = self._assume_role_cache_gs.get( + proxy_group_id + ) + if raw_key_db_entry and raw_key_db_entry.expires > expiration_time: is_cached = True private_key = raw_private_key key_db_entry = raw_key_db_entry else: del self._assume_role_cache_gs[proxy_group_id] - if not is_cached and hasattr(flask.current_app, "db"): with flask.current_app.db.session as session: cache = ( diff --git a/tests/data/test_indexed_file.py b/tests/data/test_indexed_file.py index 531abecfc..9dfc38b96 100755 --- a/tests/data/test_indexed_file.py +++ b/tests/data/test_indexed_file.py @@ -1,11 +1,17 @@ """ Test fence.blueprints.data.indexd.IndexedFile """ +from unittest import mock from mock import patch +import cirrus import pytest -from fence.blueprints.data.indexd import IndexedFile +import fence.blueprints.data.indexd as indexd +from fence.blueprints.data.indexd import IndexedFile, GoogleStorageIndexedFileLocation +from fence.models import AssumeRoleCacheGCP, UserGoogleAccountToProxyGroup +import fence.resources.google.utils as utils + from fence.errors import ( InternalError, @@ -381,6 +387,67 @@ def test_internal_get_signed_url_no_location_match( ) +@mock.patch.object(utils, "_get_proxy_group_id", return_value=None) +@mock.patch.object(indexd, "get_or_create_proxy_group_id", return_value="1") +def test_internal_get_gs_signed_url_cache_new_key_if_old_key_expired( + mock_get_or_create_proxy_group_id, + mock_get_proxy_group_id, + app, + indexd_client_accepting_record, + db_session, +): + """ + Test fence.blueprints.data.indexd.GoogleStorageIndexedFileLocation._generate_google_storage_signed_url does not use cached key if its expired + """ + db_session.add( + AssumeRoleCacheGCP( + gcp_proxy_group_id="1", + expires_at=0, + gcp_private_key="key", + gcp_key_db_entry='{"1":("key", keydbentry)}', + ) + ) + db_session.commit() + + indexd_record_with_non_public_authz_and_public_acl_populated = { + "urls": [f"gs://some/location"], + "authz": ["/programs/DEV/projects/test"], + "acl": ["*"], + } + indexd_client_accepting_record( + indexd_record_with_non_public_authz_and_public_acl_populated + ) + # with patch("fence.blueprints.data.indexd.flask.current_app", return_value=app): + with mock.patch.object( + utils, "create_primary_service_account_key", return_value="sa_private_key" + ): + with mock.patch.object( + cirrus.google_cloud.utils, + "get_signed_url", + return_value="https://cloud.google.com/compute/url", + ): + indexed_file = IndexedFile(file_id="some id") + google_object = GoogleStorageIndexedFileLocation("gs://some/location") + keydbentry = UserGoogleAccountToProxyGroup() + keydbentry.expires = 10 + google_object._assume_role_cache_gs = {"1": ("key", keydbentry)} + + assert google_object._assume_role_cache_gs + before_cache = db_session.query(AssumeRoleCacheGCP).first() + + google_object._generate_google_storage_signed_url( + http_verb="GET", + resource_path="gs://some/location", + expires_in=0, + user_id=1, + username="some user", + r_pays_project=None, + ) + + after_cache = db_session.query(AssumeRoleCacheGCP).all() + assert before_cache != after_cache + + def test_set_acl_missing_unauthorized( app, supported_protocol, indexd_client_accepting_record ): From 556dbe743e3d87703b871383b29741a4558b64e4 Mon Sep 17 00:00:00 2001 From: BinamB Date: Fri, 13 May 2022 15:21:42 -0500 Subject: [PATCH 03/11] change orientation --- fence/blueprints/data/indexd.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index 7dafc9bd8..a3d727ed0 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1073,19 +1073,9 @@ def _generate_google_storage_signed_url( proxy_group_id = get_or_create_proxy_group_id() expiration_time = int(time.time()) + expires_in - is_cached = False - if proxy_group_id in self._assume_role_cache_gs: - raw_private_key, raw_key_db_entry = self._assume_role_cache_gs.get( - proxy_group_id - ) - if raw_key_db_entry and raw_key_db_entry.expires > expiration_time: - is_cached = True - private_key = raw_private_key - key_db_entry = raw_key_db_entry - else: - del self._assume_role_cache_gs[proxy_group_id] - if not is_cached and hasattr(flask.current_app, "db"): + + if hasattr(flask.current_app, "db"): with flask.current_app.db.session as session: cache = ( session.query(AssumeRoleCacheGCP) @@ -1104,6 +1094,17 @@ def _generate_google_storage_signed_url( ) is_cached = True + if proxy_group_id in self._assume_role_cache_gs: + raw_private_key, raw_key_db_entry = self._assume_role_cache_gs.get( + proxy_group_id + ) + if raw_key_db_entry and raw_key_db_entry.expires > expiration_time: + is_cached = True + private_key = raw_private_key + key_db_entry = raw_key_db_entry + else: + del self._assume_role_cache_gs[proxy_group_id] + # check again to see if we cached the creds if not we need to if is_cached == False: private_key, key_db_entry = get_or_create_primary_service_account_key( From 288548025534924ff6b03d090edc6a6cf926b947 Mon Sep 17 00:00:00 2001 From: BinamB Date: Mon, 16 May 2022 14:06:07 -0500 Subject: [PATCH 04/11] add unit test + more fixes --- fence/blueprints/data/indexd.py | 44 +++++++++++++--------- fence/resources/google/utils.py | 3 ++ tests/data/test_indexed_file.py | 67 ++++++++++++++++++++------------- 3 files changed, 69 insertions(+), 45 deletions(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index a3d727ed0..fe4c8a17d 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1075,7 +1075,20 @@ def _generate_google_storage_signed_url( expiration_time = int(time.time()) + expires_in is_cached = False - if hasattr(flask.current_app, "db"): + if proxy_group_id in self._assume_role_cache_gs: + ( + raw_private_key, + raw_key_db_entry, + expires_at, + ) = self._assume_role_cache_gs.get(proxy_group_id) + if raw_key_db_entry and raw_key_db_entry.expires > expiration_time: + is_cached = True + private_key = raw_private_key + key_db_entry = raw_key_db_entry + else: + del self._assume_role_cache_gs[proxy_group_id] + + if is_cached == False and hasattr(flask.current_app, "db"): with flask.current_app.db.session as session: cache = ( session.query(AssumeRoleCacheGCP) @@ -1089,22 +1102,13 @@ def _generate_google_storage_signed_url( cache.expires_at, ) self._assume_role_cache_gs[proxy_group_id] = rv - private_key, key_db_entry = self._assume_role_cache_gs.get( - proxy_group_id - ) + ( + private_key, + key_db_entry, + expires_at, + ) = self._assume_role_cache_gs.get(proxy_group_id) is_cached = True - if proxy_group_id in self._assume_role_cache_gs: - raw_private_key, raw_key_db_entry = self._assume_role_cache_gs.get( - proxy_group_id - ) - if raw_key_db_entry and raw_key_db_entry.expires > expiration_time: - is_cached = True - private_key = raw_private_key - key_db_entry = raw_key_db_entry - else: - del self._assume_role_cache_gs[proxy_group_id] - # check again to see if we cached the creds if not we need to if is_cached == False: private_key, key_db_entry = get_or_create_primary_service_account_key( @@ -1121,17 +1125,21 @@ def _generate_google_storage_signed_url( # If our scheduled maintainence script removes the url-signing key # before the expiration of the url then the url will NOT work # (even though the url itself isn't expired) - if key_db_entry and key_db_entry.expires < expiration_time: + if key_db_entry.expires < expiration_time: private_key = create_primary_service_account_key( user_id=user_id, username=username, proxy_group_id=proxy_group_id ) - self._assume_role_cache_gs[proxy_group_id] = (private_key, key_db_entry) + self._assume_role_cache_gs[proxy_group_id] = ( + private_key, + key_db_entry, + key_db_entry.expires, + ) db_entry = {} db_entry["gcp_proxy_group_id"] = proxy_group_id db_entry["gcp_private_key"] = str(private_key) db_entry["gcp_key_db_entry"] = str(key_db_entry) - db_entry["expires_at"] = expiration_time + db_entry["expires_at"] = key_db_entry.expires if hasattr(flask.current_app, "db"): # we don't have db in startup with flask.current_app.db.session as session: diff --git a/fence/resources/google/utils.py b/fence/resources/google/utils.py index c6b7ed455..44d643881 100644 --- a/fence/resources/google/utils.py +++ b/fence/resources/google/utils.py @@ -80,6 +80,9 @@ def get_or_create_primary_service_account_key( sa_private_key = create_primary_service_account_key( user_id, username, proxy_group_id, expires ) + user_service_account_key = _get_primary_service_account_key( + user_id, username, proxy_group_id + ) return sa_private_key, user_service_account_key diff --git a/tests/data/test_indexed_file.py b/tests/data/test_indexed_file.py index 9dfc38b96..b4008827a 100755 --- a/tests/data/test_indexed_file.py +++ b/tests/data/test_indexed_file.py @@ -9,7 +9,11 @@ import fence.blueprints.data.indexd as indexd from fence.blueprints.data.indexd import IndexedFile, GoogleStorageIndexedFileLocation -from fence.models import AssumeRoleCacheGCP, UserGoogleAccountToProxyGroup +from fence.models import ( + AssumeRoleCacheGCP, + GoogleServiceAccountKey, + UserGoogleAccountToProxyGroup, +) import fence.resources.google.utils as utils @@ -417,35 +421,44 @@ def test_internal_get_gs_signed_url_cache_new_key_if_old_key_expired( indexd_client_accepting_record( indexd_record_with_non_public_authz_and_public_acl_populated ) - # with patch("fence.blueprints.data.indexd.flask.current_app", return_value=app): - with mock.patch.object( - utils, "create_primary_service_account_key", return_value="sa_private_key" + + mock_google_service_account_key = GoogleServiceAccountKey() + mock_google_service_account_key.expires = 10 + mock_google_service_account_key.private_key = "key" + + with mock.patch( + "fence.blueprints.data.indexd.get_or_create_primary_service_account_key", + return_value=("sa_private_key", mock_google_service_account_key), ): - with mock.patch.object( - cirrus.google_cloud.utils, - "get_signed_url", - return_value="https://cloud.google.com/compute/url", + with mock.patch( + "fence.blueprints.data.indexd.create_primary_service_account_key", + return_value=("sa_private_key"), ): - indexed_file = IndexedFile(file_id="some id") - google_object = GoogleStorageIndexedFileLocation("gs://some/location") - keydbentry = UserGoogleAccountToProxyGroup() - keydbentry.expires = 10 - google_object._assume_role_cache_gs = {"1": ("key", keydbentry)} - - assert google_object._assume_role_cache_gs - before_cache = db_session.query(AssumeRoleCacheGCP).first() - - google_object._generate_google_storage_signed_url( - http_verb="GET", - resource_path="gs://some/location", - expires_in=0, - user_id=1, - username="some user", - r_pays_project=None, - ) + with mock.patch.object( + cirrus.google_cloud.utils, + "get_signed_url", + return_value="https://cloud.google.com/compute/url", + ): + indexed_file = IndexedFile(file_id="some id") + google_object = GoogleStorageIndexedFileLocation("gs://some/location") + keydbentry = UserGoogleAccountToProxyGroup() + keydbentry.expires = 10 + google_object._assume_role_cache_gs = {"1": ("key", keydbentry, 10)} + + assert google_object._assume_role_cache_gs + before_cache = db_session.query(AssumeRoleCacheGCP).first() + + google_object._generate_google_storage_signed_url( + http_verb="GET", + resource_path="gs://some/location", + expires_in=0, + user_id=1, + username="some user", + r_pays_project=None, + ) - after_cache = db_session.query(AssumeRoleCacheGCP).all() - assert before_cache != after_cache + after_cache = db_session.query(AssumeRoleCacheGCP).all() + assert before_cache != after_cache def test_set_acl_missing_unauthorized( From 4058b435587c4a5f38ab8ff394d8ae5ef24a177e Mon Sep 17 00:00:00 2001 From: BinamB Date: Mon, 13 Jun 2022 09:04:38 -0700 Subject: [PATCH 05/11] json dump --- fence/blueprints/data/indexd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index fe4c8a17d..2c3f614a1 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1137,7 +1137,7 @@ def _generate_google_storage_signed_url( db_entry = {} db_entry["gcp_proxy_group_id"] = proxy_group_id - db_entry["gcp_private_key"] = str(private_key) + db_entry["gcp_private_key"] = json.dumps(str(private_key)) db_entry["gcp_key_db_entry"] = str(key_db_entry) db_entry["expires_at"] = key_db_entry.expires From 7757fd60ffa8dea6c55b7e88a6f665bb2711dce7 Mon Sep 17 00:00:00 2001 From: BinamB Date: Mon, 13 Jun 2022 09:11:17 -0700 Subject: [PATCH 06/11] comment --- fence/blueprints/data/indexd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index 2c3f614a1..4d7d4595a 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1137,7 +1137,7 @@ def _generate_google_storage_signed_url( db_entry = {} db_entry["gcp_proxy_group_id"] = proxy_group_id - db_entry["gcp_private_key"] = json.dumps(str(private_key)) + db_entry["gcp_private_key"] = json.dumps(str(private_key)) # can't json loads at some points db_entry["gcp_key_db_entry"] = str(key_db_entry) db_entry["expires_at"] = key_db_entry.expires From f3ac91ec2bbb3f6442e7531288725239b1f1a0c5 Mon Sep 17 00:00:00 2001 From: BinamB Date: Mon, 13 Jun 2022 11:19:54 -0700 Subject: [PATCH 07/11] dumps --- fence/blueprints/data/indexd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index 4d7d4595a..2c3f614a1 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1137,7 +1137,7 @@ def _generate_google_storage_signed_url( db_entry = {} db_entry["gcp_proxy_group_id"] = proxy_group_id - db_entry["gcp_private_key"] = json.dumps(str(private_key)) # can't json loads at some points + db_entry["gcp_private_key"] = json.dumps(str(private_key)) db_entry["gcp_key_db_entry"] = str(key_db_entry) db_entry["expires_at"] = key_db_entry.expires From 00f6fda595617c24bc932a1a3028481d1cb37c47 Mon Sep 17 00:00:00 2001 From: BinamB Date: Wed, 15 Jun 2022 12:38:41 -0500 Subject: [PATCH 08/11] update poetry lock --- poetry.lock | 218 +++++++++++++++++++++++++++++----------------------- 1 file changed, 123 insertions(+), 95 deletions(-) diff --git a/poetry.lock b/poetry.lock index ecb7dd882..25a923c17 100644 --- a/poetry.lock +++ b/poetry.lock @@ -81,7 +81,7 @@ fastapi = ["fastapi (>=0.54.1,<0.55.0)"] [[package]] name = "azure-core" -version = "1.22.1" +version = "1.24.1" description = "Microsoft Azure Core Library for Python" category = "main" optional = false @@ -90,17 +90,18 @@ python-versions = ">=3.6" [package.dependencies] requests = ">=2.18.4" six = ">=1.11.0" +typing-extensions = ">=4.0.1" [[package]] name = "azure-storage-blob" -version = "12.9.0" +version = "12.12.0" description = "Microsoft Azure Blob Storage Client Library for Python" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [package.dependencies] -azure-core = ">=1.10.0,<2.0.0" +azure-core = ">=1.23.1,<2.0.0" cryptography = ">=2.1.4" msrest = ">=0.6.21" @@ -114,7 +115,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "bcrypt" -version = "3.2.0" +version = "3.2.2" description = "Modern password hashing for your software and your servers" category = "main" optional = false @@ -122,7 +123,6 @@ python-versions = ">=3.6" [package.dependencies] cffi = ">=1.1" -six = ">=1.4.1" [package.extras] tests = ["pytest (>=3.2.1,!=3.3.0)"] @@ -244,11 +244,11 @@ resolved_reference = "bdfdeb05e45407e839fd954ce6d195d847cd8024" [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.5.18.1" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "cffi" @@ -370,7 +370,7 @@ python-versions = ">=3.5" [[package]] name = "dnspython" -version = "2.2.0" +version = "2.2.1" description = "DNS toolkit" category = "main" optional = false @@ -417,8 +417,8 @@ gmpy2 = ["gmpy2"] [[package]] name = "email-validator" -version = "1.1.3" -description = "A robust email syntax and deliverability validation library for Python 2.x/3.x." +version = "1.2.1" +description = "A robust email syntax and deliverability validation library." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" @@ -574,7 +574,7 @@ PyYAML = ">=5.1,<6.0" [[package]] name = "google-api-core" -version = "1.31.5" +version = "1.31.6" description = "Google API client core library" category = "main" optional = false @@ -584,7 +584,7 @@ python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" google-auth = ">=1.25.0,<2.0dev" googleapis-common-protos = ">=1.6.0,<2.0dev" packaging = ">=14.3" -protobuf = {version = ">=3.12.0", markers = "python_version > \"3\""} +protobuf = {version = ">=3.12.0,<4.0.0dev", markers = "python_version > \"3\""} pytz = "*" requests = ">=2.18.0,<3.0.0dev" six = ">=1.13.0" @@ -644,15 +644,15 @@ six = "*" [[package]] name = "google-cloud-core" -version = "2.2.2" +version = "2.3.1" description = "Google Cloud API client core library" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -google-api-core = ">=1.21.0,<3.0.0dev" -google-auth = ">=1.24.0,<3.0dev" +google-api-core = ">=1.31.5,<2.0.0 || >2.3.0,<3.0.0dev" +google-auth = ">=1.25.0,<3.0dev" [package.extras] grpc = ["grpcio (>=1.8.2,<2.0dev)"] @@ -687,7 +687,7 @@ testing = ["pytest"] [[package]] name = "google-resumable-media" -version = "2.2.1" +version = "2.3.3" description = "Utilities for Google Media Downloads and Resumable Uploads" category = "main" optional = false @@ -702,17 +702,17 @@ requests = ["requests (>=2.18.0,<3.0.0dev)"] [[package]] name = "googleapis-common-protos" -version = "1.54.0" +version = "1.56.2" description = "Common protobufs used in Google APIs" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -protobuf = ">=3.12.0" +protobuf = ">=3.15.0,<4.0.0dev" [package.extras] -grpc = ["grpcio (>=1.0.0)"] +grpc = ["grpcio (>=1.0.0,<2.0.0dev)"] [[package]] name = "h11" @@ -779,7 +779,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "immutables" -version = "0.16" +version = "0.18" description = "Immutable Collections" category = "main" optional = false @@ -789,7 +789,7 @@ python-versions = ">=3.6" typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""} [package.extras] -test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (>=0.910)", "pytest (>=6.2.4,<6.3.0)"] +test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (==0.942)", "pytest (>=6.2.4,<6.3.0)"] [[package]] name = "importlib-metadata" @@ -851,7 +851,7 @@ python-versions = "*" [[package]] name = "markdown" -version = "3.3.6" +version = "3.3.7" description = "Python implementation of Markdown." category = "main" optional = false @@ -889,7 +889,7 @@ test = ["unittest2 (>=1.1.0)"] [[package]] name = "more-itertools" -version = "8.12.0" +version = "8.13.0" description = "More routines for operating on iterables, beyond itertools" category = "dev" optional = false @@ -935,20 +935,21 @@ xray = ["aws-xray-sdk (>=0.93,!=0.96)"] [[package]] name = "msrest" -version = "0.6.21" +version = "0.7.1" description = "AutoRest swagger generator Python client runtime." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [package.dependencies] +azure-core = ">=1.24.0" certifi = ">=2017.4.17" isodate = ">=0.6.0" requests = ">=2.16,<3.0" requests-oauthlib = ">=0.5.0" [package.extras] -async = ["aiohttp (>=3.0)", "aiodns"] +async = ["aiodns", "aiohttp (>=3.0)"] [[package]] name = "oauth2client" @@ -991,7 +992,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "paramiko" -version = "2.9.2" +version = "2.11.0" description = "SSH2 protocol library" category = "main" optional = false @@ -1001,6 +1002,7 @@ python-versions = "*" bcrypt = ">=3.1.3" cryptography = ">=2.5" pynacl = ">=1.0.1" +six = "*" [package.extras] all = ["pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "bcrypt (>=3.1.3)", "invoke (>=1.3)", "gssapi (>=1.4.1)", "pywin32 (>=2.1.8)"] @@ -1237,7 +1239,7 @@ pycrypto = ["pycrypto (>=2.6.0,<2.7.0)"] [[package]] name = "pytz" -version = "2021.3" +version = "2022.1" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -1483,11 +1485,11 @@ email = ["email-validator"] [[package]] name = "xmltodict" -version = "0.12.0" +version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.4" [[package]] name = "zipp" @@ -1536,25 +1538,29 @@ authutils = [ {file = "authutils-6.1.0.tar.gz", hash = "sha256:7263af0b2ce3a0db19236fd123b34f795d07e07111b7bd18a51808568ddfdc2e"}, ] azure-core = [ - {file = "azure-core-1.22.1.zip", hash = "sha256:4b6e405268a33b873107796495cec3f2f1b1ffe935624ce0fbddff36d38d3a4d"}, - {file = "azure_core-1.22.1-py3-none-any.whl", hash = "sha256:407381c74e2ccc16adb1f29c4a1b381ebd39e8661bbf60422926d8252d5b757d"}, + {file = "azure-core-1.24.1.zip", hash = "sha256:39c5d59d04209bb70a1a7ee879cef05d07bc76472cd3fb5eaa2e607a90d312bb"}, + {file = "azure_core-1.24.1-py3-none-any.whl", hash = "sha256:f48a640affa59fa45ac770565b3bead4c4f834242d16983c1ae2bb173a4b8a6d"}, ] azure-storage-blob = [ - {file = "azure-storage-blob-12.9.0.zip", hash = "sha256:cff66a115c73c90e496c8c8b3026898a3ce64100840276e9245434e28a864225"}, - {file = "azure_storage_blob-12.9.0-py2.py3-none-any.whl", hash = "sha256:859195b4850dcfe77ffafbe53500abb74b001e52e77fe6d9492fa73639a22127"}, + {file = "azure-storage-blob-12.12.0.zip", hash = "sha256:f6daf07d1ca86d189ae15c9b1859dff5b7127bf24a07a4bbe41e0b81e01d62f7"}, + {file = "azure_storage_blob-12.12.0-py3-none-any.whl", hash = "sha256:1eac4c364309ccc193c80ee26c78d25dfbf10926b1309095a448a7a0388526eb"}, ] backoff = [ {file = "backoff-1.11.1-py2.py3-none-any.whl", hash = "sha256:61928f8fa48d52e4faa81875eecf308eccfb1016b018bb6bd21e05b5d90a96c5"}, {file = "backoff-1.11.1.tar.gz", hash = "sha256:ccb962a2378418c667b3c979b504fdeb7d9e0d29c0579e3b13b86467177728cb"}, ] bcrypt = [ - {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d"}, - {file = "bcrypt-3.2.0-cp36-abi3-win32.whl", hash = "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55"}, - {file = "bcrypt-3.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34"}, - {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"}, + {file = "bcrypt-3.2.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:7180d98a96f00b1050e93f5b0f556e658605dd9f524d0b0e68ae7944673f525e"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:61bae49580dce88095d669226d5076d0b9d927754cedbdf76c6c9f5099ad6f26"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88273d806ab3a50d06bc6a2fc7c87d737dd669b76ad955f449c43095389bc8fb"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6d2cb9d969bfca5bc08e45864137276e4c3d3d7de2b162171def3d188bf9d34a"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b02d6bfc6336d1094276f3f588aa1225a598e27f8e3388f4db9948cb707b521"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c46100e315c3a5b90fdc53e429c006c5f962529bc27e1dfd656292c20ccc40"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7d9ba2e41e330d2af4af6b1b6ec9e6128e91343d0b4afb9282e54e5508f31baa"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cd43303d6b8a165c29ec6756afd169faba9396a9472cdff753fe9f19b96ce2fa"}, + {file = "bcrypt-3.2.2-cp36-abi3-win32.whl", hash = "sha256:4e029cef560967fb0cf4a802bcf4d562d3d6b4b1bf81de5ec1abbe0f1adb027e"}, + {file = "bcrypt-3.2.2-cp36-abi3-win_amd64.whl", hash = "sha256:7ff2069240c6bbe49109fe84ca80508773a904f5a8cb960e02a977f7f519b129"}, + {file = "bcrypt-3.2.2.tar.gz", hash = "sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb"}, ] boto = [ {file = "boto-2.49.0-py2.py3-none-any.whl", hash = "sha256:147758d41ae7240dc989f0039f27da8ca0d53734be0eb869ef16e3adcfa462e8"}, @@ -1592,8 +1598,8 @@ cdispyutils = [ ] cdisutilstest = [] certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, + {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, + {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, ] cffi = [ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, @@ -1752,8 +1758,8 @@ decorator = [ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] dnspython = [ - {file = "dnspython-2.2.0-py3-none-any.whl", hash = "sha256:081649da27ced5e75709a1ee542136eaba9842a0fe4c03da4fb0a3d3ed1f3c44"}, - {file = "dnspython-2.2.0.tar.gz", hash = "sha256:e79351e032d0b606b98d38a4b0e6e2275b31a5b85c873e587cc11b73aca026d6"}, + {file = "dnspython-2.2.1-py3-none-any.whl", hash = "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"}, + {file = "dnspython-2.2.1.tar.gz", hash = "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"}, ] docopt = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, @@ -1768,8 +1774,8 @@ ecdsa = [ {file = "ecdsa-0.17.0.tar.gz", hash = "sha256:b9f500bb439e4153d0330610f5d26baaf18d17b8ced1bc54410d189385ea68aa"}, ] email-validator = [ - {file = "email_validator-1.1.3-py2.py3-none-any.whl", hash = "sha256:5675c8ceb7106a37e40e2698a57c056756bf3f272cfa8682a4f87ebd95d8440b"}, - {file = "email_validator-1.1.3.tar.gz", hash = "sha256:aa237a65f6f4da067119b7df3f13e89c25c051327b2b5b66dc075f33d62480d7"}, + {file = "email_validator-1.2.1-py2.py3-none-any.whl", hash = "sha256:c8589e691cf73eb99eed8d10ce0e9cbb05a0886ba920c8bcb7c82873f4c5789c"}, + {file = "email_validator-1.2.1.tar.gz", hash = "sha256:6757aea012d40516357c0ac2b1a4c31219ab2f899d26831334c5d069e8b6c3d8"}, ] flask = [ {file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"}, @@ -1807,8 +1813,8 @@ gen3users = [ {file = "gen3users-0.6.0.tar.gz", hash = "sha256:3b9b56798a7d8b34712389dbbab93c00b0f92524f890513f899c31630ea986da"}, ] google-api-core = [ - {file = "google-api-core-1.31.5.tar.gz", hash = "sha256:85d2074f2c8f9c07e614d7f978767d71ceb7d40647814ef4236d3a0ef671ee75"}, - {file = "google_api_core-1.31.5-py2.py3-none-any.whl", hash = "sha256:6815207a8b422e9da42c200681603f304b25f98c98b675a9db9fdc3717e44280"}, + {file = "google-api-core-1.31.6.tar.gz", hash = "sha256:bd4f418745aac8b4781c005056bac01616cafdef20fec95880cbd6f61c23f7f0"}, + {file = "google_api_core-1.31.6-py2.py3-none-any.whl", hash = "sha256:29d01d0599da4188331b9afd7c1b03ce155ad5047e461cf9ce3223a873fec729"}, ] google-api-python-client = [ {file = "google-api-python-client-1.11.0.tar.gz", hash = "sha256:caf4015800ef1a18d06d117f47f0219c0c0641f21978f6b1bb5ede7912fab97b"}, @@ -1823,8 +1829,8 @@ google-auth-httplib2 = [ {file = "google_auth_httplib2-0.1.0-py2.py3-none-any.whl", hash = "sha256:31e49c36c6b5643b57e82617cb3e021e3e1d2df9da63af67252c02fa9c1f4a10"}, ] google-cloud-core = [ - {file = "google-cloud-core-2.2.2.tar.gz", hash = "sha256:7d19bf8868b410d0bdf5a03468a3f3f2db233c0ee86a023f4ecc2b7a4b15f736"}, - {file = "google_cloud_core-2.2.2-py2.py3-none-any.whl", hash = "sha256:d9cffaf86df6a876438d4e8471183bbe404c9a15de9afe60433bc7dce8cb4252"}, + {file = "google-cloud-core-2.3.1.tar.gz", hash = "sha256:34334359cb04187bdc80ddcf613e462dfd7a3aabbc3fe4d118517ab4b9303d53"}, + {file = "google_cloud_core-2.3.1-py2.py3-none-any.whl", hash = "sha256:113ba4f492467d5bd442c8d724c1a25ad7384045c3178369038840ecdd19346c"}, ] google-cloud-storage = [ {file = "google-cloud-storage-1.44.0.tar.gz", hash = "sha256:29edbfeedd157d853049302bf5d104055c6f0cb7ef283537da3ce3f730073001"}, @@ -1876,12 +1882,12 @@ google-crc32c = [ {file = "google_crc32c-1.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183"}, ] google-resumable-media = [ - {file = "google-resumable-media-2.2.1.tar.gz", hash = "sha256:b1edfb98867c9fa25aa7af12d6468665b83c532b7349effab805a027ea8bbee5"}, - {file = "google_resumable_media-2.2.1-py2.py3-none-any.whl", hash = "sha256:fd616af31b83d48da040c8c09b6994606e1734efb8af9acc97cf5d6070e9ba72"}, + {file = "google-resumable-media-2.3.3.tar.gz", hash = "sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c"}, + {file = "google_resumable_media-2.3.3-py2.py3-none-any.whl", hash = "sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5"}, ] googleapis-common-protos = [ - {file = "googleapis-common-protos-1.54.0.tar.gz", hash = "sha256:a4031d6ec6c2b1b6dc3e0be7e10a1bd72fb0b18b07ef9be7b51f2c1004ce2437"}, - {file = "googleapis_common_protos-1.54.0-py2.py3-none-any.whl", hash = "sha256:e54345a2add15dc5e1a7891c27731ff347b4c33765d79b5ed7026a6c0c7cbcae"}, + {file = "googleapis-common-protos-1.56.2.tar.gz", hash = "sha256:b09b56f5463070c2153753ef123f07d2e49235e89148e9b2459ec8ed2f68d7d3"}, + {file = "googleapis_common_protos-1.56.2-py2.py3-none-any.whl", hash = "sha256:023eaea9d8c1cceccd9587c6af6c20f33eeeb05d4148670f2b0322dc1511700c"}, ] h11 = [ {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, @@ -1904,33 +1910,55 @@ idna = [ {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, ] immutables = [ - {file = "immutables-0.16-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:acbfa79d44228d96296279068441f980dc63dbed52522d9227ff9f4d96c6627e"}, - {file = "immutables-0.16-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c9ed003eacb92e630ef200e31f47236c2139b39476894f7963b32bd39bafa3"}, - {file = "immutables-0.16-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a396314b9024fa55bf83a27813fd76cf9f27dce51f53b0f19b51de035146251"}, - {file = "immutables-0.16-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a2a71678348fb95b13ca108d447f559a754c41b47bd1e7e4fb23974e735682d"}, - {file = "immutables-0.16-cp36-cp36m-win32.whl", hash = "sha256:064001638ab5d36f6aa05b6101446f4a5793fb71e522bc81b8fc65a1894266ff"}, - {file = "immutables-0.16-cp36-cp36m-win_amd64.whl", hash = "sha256:1de393f1b188740ca7b38f946f2bbc7edf3910d2048f03bbb8d01f17a038d67c"}, - {file = "immutables-0.16-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fcf678a3074613119385a02a07c469ec5130559f5ea843c85a0840c80b5b71c6"}, - {file = "immutables-0.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a307eb0984eb43e815dcacea3ac50c11d00a936ecf694c46991cd5a23bcb0ec0"}, - {file = "immutables-0.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7a58825ff2254e2612c5a932174398a4ea8fbddd8a64a02c880cc32ee28b8820"}, - {file = "immutables-0.16-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:798b095381eb42cf40db6876339e7bed84093e5868018a9e73d8e1f7ab4bb21e"}, - {file = "immutables-0.16-cp37-cp37m-win32.whl", hash = "sha256:19bdede174847c2ef1292df0f23868ab3918b560febb09fcac6eec621bd4812b"}, - {file = "immutables-0.16-cp37-cp37m-win_amd64.whl", hash = "sha256:9ccf4c0e3e2e3237012b516c74c49de8872ccdf9129739f7a0b9d7444a8c4862"}, - {file = "immutables-0.16-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d59beef203a3765db72b1d0943547425c8318ecf7d64c451fd1e130b653c2fbb"}, - {file = "immutables-0.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0020aaa4010b136056c20a46ce53204e1407a9e4464246cb2cf95b90808d9161"}, - {file = "immutables-0.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edd9f67671555af1eb99ad3c7550238487dd7ac0ac5205b40204ed61c9a922ac"}, - {file = "immutables-0.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:298a301f85f307b4c056a0825eb30f060e64d73605e783289f3df37dd762bab8"}, - {file = "immutables-0.16-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b779617f5b94486bfd0f22162cd72eb5f2beb0214a14b75fdafb7b2c908ed0cb"}, - {file = "immutables-0.16-cp38-cp38-win32.whl", hash = "sha256:511c93d8b1bbbf103ff3f1f120c5a68a9866ce03dea6ac406537f93ca9b19139"}, - {file = "immutables-0.16-cp38-cp38-win_amd64.whl", hash = "sha256:b651b61c1af6cda2ee201450f2ffe048a5959bc88e43e6c312f4c93e69c9e929"}, - {file = "immutables-0.16-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:aa7bf572ae1e006104c584be70dc634849cf0dc62f42f4ee194774f97e7fd17d"}, - {file = "immutables-0.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:50793a44ba0d228ed8cad4d0925e00dfd62ea32f44ddee8854f8066447272d05"}, - {file = "immutables-0.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:799621dcdcdcbb2516546a40123b87bf88de75fe7459f7bd8144f079ace6ec3e"}, - {file = "immutables-0.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7bcf52aeb983bd803b7c6106eae1b2d9a0c7ab1241bc6b45e2174ba2b7283031"}, - {file = "immutables-0.16-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:734c269e82e5f307fb6e17945953b67659d1731e65309787b8f7ba267d1468f2"}, - {file = "immutables-0.16-cp39-cp39-win32.whl", hash = "sha256:a454d5d3fee4b7cc627345791eb2ca4b27fa3bbb062ccf362ecaaa51679a07ed"}, - {file = "immutables-0.16-cp39-cp39-win_amd64.whl", hash = "sha256:2505d93395d3f8ae4223e21465994c3bc6952015a38dc4f03cb3e07a2b8d8325"}, - {file = "immutables-0.16.tar.gz", hash = "sha256:d67e86859598eed0d926562da33325dac7767b7b1eff84e232c22abea19f4360"}, + {file = "immutables-0.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d841dfa15b932bdad27f5149bce86b32d0dd8a29679ed61405677317b6893447"}, + {file = "immutables-0.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29a5886845cd0ca8263b721337750a895e28feee2f16694a526977a791909db5"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e979a9225507e3cd830ea73ac68b69fe82f495313a891485800daa5b6567e05"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9949f704b80d0e601587d0a3b1a0cc6ff5d49528f6dfc1c8a1476b2137bb925e"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b6c820c9bb5aac62b76de703384bb8bb706108be90c3def4a7f047f185a92bb"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:03696193b276db3a9b619629685198886ddd7c4098c544bd8d0f87532c74120b"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:798b4d6c388116effa7523591e4e39865292e4fa74e169b05a0759a16f604ce1"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b3621256bc8058a7973f736b9e2c940e17133476265a0a83b8df8c0f446ca32f"}, + {file = "immutables-0.18-cp310-cp310-win32.whl", hash = "sha256:98f67bd36532582751dcc9021fdb60e7efc82e5717ae5927b84d0b86ea58fe12"}, + {file = "immutables-0.18-cp310-cp310-win_amd64.whl", hash = "sha256:69352b45a115808219feaf0bb7a551e9aa76c72684db93cd03f11474165f4569"}, + {file = "immutables-0.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6ee2d6f8816fce53fa89b6a1ba2d4a96b344bf584d6ed0b10a871b17fff46e49"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13159cedb698fdd243d9f2a7469c1628e075a180fc02f865dd98322b92a14aaf"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d72527fde329e3b566b67c954237be52b07d6e84ff23dcc1e94499755cacff6"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53fccddd28cc3214aa48ca564702311c07eac069190dd890e097802c5d69b33a"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a29e3aa0fe05fb2cc6b31039f448aa6206d7f0cdb660c98aa9be6d12070d6840"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:ffced8535cc673fcfb411d28ba5744689a6978fa596c803725a76f43c1bda911"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9f17407491164beb689d426f7985f79ae9dfa69868653cfbdb95645f6bf05cb0"}, + {file = "immutables-0.18-cp36-cp36m-win32.whl", hash = "sha256:74456c579cfd53f883cdcc0700e3871648a3316767efc1adf8c723ad3d8addec"}, + {file = "immutables-0.18-cp36-cp36m-win_amd64.whl", hash = "sha256:e4c2110173649acf67bd763bbd2a9c3a863a1d20fd7f3db3493ce4e0fb04fae5"}, + {file = "immutables-0.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa5292630b08c874972931bac06ee381cb6fb7382d7be1856234d7bd4a8e676"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc830a689a55e404f0e23d7d69e01c218fa8a0be54a6ca5df45b6fbfeeac648a"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5caf9c670e6851e7f310716c7dcdf8705236d13056eda1fab3deaad5d7198468"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:853d63f4a07b2ea2131ba0831aeec11f6a6ee5e290e8f175bf56842762d7412e"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9a86dcca4bb406f80e7a18c233aec0e76a7530c456e24aa1e19a708a34f2aac1"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6baf4dc11ba0e9f41a6cbde7ecaa7af9cb482559b92ba3254e3e37a518b1970e"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:734ec4467dd15f9135ca5ecccc91e796a67d27c227e81554f9e06b1bb3b28d6d"}, + {file = "immutables-0.18-cp37-cp37m-win32.whl", hash = "sha256:f6edb73619aa0a5fe4a77d97dd9d39bfeef61a5afe71aa5bdceccf59b933999e"}, + {file = "immutables-0.18-cp37-cp37m-win_amd64.whl", hash = "sha256:fade8ccf7afbc1e7ea353159fa90cc04395f2f4f57658160d7a02f6aa60c4e77"}, + {file = "immutables-0.18-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8b650d779a46441dccd02e7ee8326dbd0dec633c6bd75e9fe13373a6b19570dd"}, + {file = "immutables-0.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1acbbc333f1643fd1ed21bcc3e09aad2ef6648478a0cae76a2ca5823764a7d3b"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3bad4d43009fa61ea40d887e6fa89ae7c4e62dff5e4a878d60b76cf245720bb"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e04b61ddffd4ccb4d7ab823b2e55dbb4ad47c37697e311fae4b98b3c023ab194"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54577e46c5332d7390212040c084335b7d667504847ed2788428d44f20e595ce"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1330f96eb6a3a11f5d02f30b2c6393ef30d01a79f7144d63d2a3e6ff05cb99db"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1d6821d7718cf9f4a7b1d9e765fc22a9d1ae0fad3fabd8724b4e614d2a6e0b54"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45bd862a5dfb952eaff4a9c2448712c5a550dd956575e23cbfc512010fb06c74"}, + {file = "immutables-0.18-cp38-cp38-win32.whl", hash = "sha256:989606e440492736112b471dcd80586e3d4a63bc6f8ff4f9d1d612e0f96cb683"}, + {file = "immutables-0.18-cp38-cp38-win_amd64.whl", hash = "sha256:ac9e05f846392e983fb59f74ed2334031b366251d16d24122e4c85f70fb6e2da"}, + {file = "immutables-0.18-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:de1a091ab89b7ba50501a915a0fbdceb52b079c752f4f7c76d2060237774a714"}, + {file = "immutables-0.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d43b16b6adbe1327c6688e14b125cb3b940e748790b305de96c8d55668ac25f"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f32b5933393e4cc204d8f9e7d9f503ec052e30f612090be0de0dd31b1464b35"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525fe9001b5a96c325eec41677efaeb8c3610776e834ce7f31fbe3d33cc05252"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11da4946e19f3b24a873b2ba2891cc226a89bb398561c62dfb966a9b6501a4a"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:90da9dea0a1c0a907d511f124cd87fe090c0e30a951c3fe68bc9782ae4f2c77f"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77bdc96dc24e32839557cde3785f8039a369c95529ff9179044b81d0ba4bd02c"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:210efea163a704597cfdb2d30713d3c0963c30f0d997539c9ab5da40e3d6a886"}, + {file = "immutables-0.18-cp39-cp39-win32.whl", hash = "sha256:535616ad7ca1174a27ade637192c970bfedb0b0e0467e69ce415b40d7cf7ba0c"}, + {file = "immutables-0.18-cp39-cp39-win_amd64.whl", hash = "sha256:1338aad6fd69f11442adcbb3402a028c90f6e945682ddb8aba462a3827f2d427"}, + {file = "immutables-0.18.tar.gz", hash = "sha256:5336c7974084cce62f7e29aaff81a3c3f75e0fd0a23a2faeb986ae0ea08d8cf4"}, ] importlib-metadata = [ {file = "importlib_metadata-4.8.3-py3-none-any.whl", hash = "sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e"}, @@ -1953,8 +1981,8 @@ jmespath = [ {file = "jmespath-0.9.2.tar.gz", hash = "sha256:54c441e2e08b23f12d7fa7d8e6761768c47c969e6aed10eead57505ba760aee9"}, ] markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, ] markupsafe = [ {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, @@ -2015,16 +2043,16 @@ mock = [ {file = "mock-2.0.0.tar.gz", hash = "sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"}, ] more-itertools = [ - {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, - {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, + {file = "more-itertools-8.13.0.tar.gz", hash = "sha256:a42901a0a5b169d925f6f217cd5a190e32ef54360905b9c39ee7db5313bfec0f"}, + {file = "more_itertools-8.13.0-py3-none-any.whl", hash = "sha256:c5122bffc5f104d37c1626b8615b511f3427aa5389b94d61e5ef8236bfbc3ddb"}, ] moto = [ {file = "moto-1.3.15-py2.py3-none-any.whl", hash = "sha256:3be7e1f406ef7e9c222dbcbfd8cefa2cb1062200e26deae49b5df446e17be3df"}, {file = "moto-1.3.15.tar.gz", hash = "sha256:fd98f7b219084ba8aadad263849c4dbe8be73979e035d8dc5c86e11a86f11b7f"}, ] msrest = [ - {file = "msrest-0.6.21-py2.py3-none-any.whl", hash = "sha256:c840511c845330e96886011a236440fafc2c9aff7b2df9c0a92041ee2dee3782"}, - {file = "msrest-0.6.21.tar.gz", hash = "sha256:72661bc7bedc2dc2040e8f170b6e9ef226ee6d3892e01affd4d26b06474d68d8"}, + {file = "msrest-0.7.1-py3-none-any.whl", hash = "sha256:21120a810e1233e5e6cc7fe40b474eeb4ec6f757a15d7cf86702c369f9567c32"}, + {file = "msrest-0.7.1.zip", hash = "sha256:6e7661f46f3afd88b75667b7187a92829924446c7ea1d169be8c4bb7eeb788b9"}, ] oauth2client = [ {file = "oauth2client-3.0.0.tar.gz", hash = "sha256:5b5b056ec6f2304e7920b632885bd157fa71d1a7f3ddd00a43b1541a8d1a2460"}, @@ -2038,8 +2066,8 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] paramiko = [ - {file = "paramiko-2.9.2-py2.py3-none-any.whl", hash = "sha256:04097dbd96871691cdb34c13db1883066b8a13a0df2afd4cb0a92221f51c2603"}, - {file = "paramiko-2.9.2.tar.gz", hash = "sha256:944a9e5dbdd413ab6c7951ea46b0ab40713235a9c4c5ca81cfe45c6f14fa677b"}, + {file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"}, + {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, ] pbr = [ {file = "pbr-2.0.0-py2.py3-none-any.whl", hash = "sha256:d9b69a26a5cb4e3898eb3c5cea54d2ab3332382167f04e30db5e1f54e1945e45"}, @@ -2209,8 +2237,8 @@ python-jose = [ {file = "python_jose-2.0.2-py2.py3-none-any.whl", hash = "sha256:3b35cdb0e55a88581ff6d3f12de753aa459e940b50fe7ca5aa25149bc94cb37b"}, ] pytz = [ - {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, - {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, ] pyyaml = [ {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, @@ -2340,8 +2368,8 @@ wtforms = [ {file = "WTForms-3.0.0.tar.gz", hash = "sha256:4abfbaa1d529a1d0ac927d44af8dbb9833afd910e56448a103f1893b0b176886"}, ] xmltodict = [ - {file = "xmltodict-0.12.0-py2.py3-none-any.whl", hash = "sha256:8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051"}, - {file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"}, + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, ] zipp = [ {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"}, From 3fe30e8ab7ff7261ce6d7b71ed69f034e8bfa51b Mon Sep 17 00:00:00 2001 From: BinamB Date: Thu, 16 Jun 2022 14:31:57 -0500 Subject: [PATCH 09/11] Add default None --- fence/blueprints/data/indexd.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index f0a0edf1d..c060b9aa0 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1195,7 +1195,7 @@ def _generate_google_storage_signed_url( raw_private_key, raw_key_db_entry, expires_at, - ) = self._assume_role_cache_gs.get(proxy_group_id) + ) = self._assume_role_cache_gs.get(proxy_group_id, (None, None, None)) if raw_key_db_entry and raw_key_db_entry.expires > expiration_time: is_cached = True private_key = raw_private_key @@ -1221,7 +1221,7 @@ def _generate_google_storage_signed_url( private_key, key_db_entry, expires_at, - ) = self._assume_role_cache_gs.get(proxy_group_id) + ) = self._assume_role_cache_gs.get(proxy_group_id, (None, None, None)) is_cached = True # check again to see if we cached the creds if not we need to From a1bce6d53264a9c866c6d3804a194f3756137e08 Mon Sep 17 00:00:00 2001 From: BinamB Date: Thu, 16 Jun 2022 15:14:50 -0500 Subject: [PATCH 10/11] black --- fence/blueprints/data/indexd.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index c060b9aa0..f677ae182 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1221,7 +1221,9 @@ def _generate_google_storage_signed_url( private_key, key_db_entry, expires_at, - ) = self._assume_role_cache_gs.get(proxy_group_id, (None, None, None)) + ) = self._assume_role_cache_gs.get( + proxy_group_id, (None, None, None) + ) is_cached = True # check again to see if we cached the creds if not we need to From a96c5f31f46ca42d997e45b4178933965538ed2c Mon Sep 17 00:00:00 2001 From: Binam Bajracharya <44302895+BinamB@users.noreply.github.com> Date: Mon, 27 Jun 2022 13:44:43 -0500 Subject: [PATCH 11/11] Update fence/blueprints/data/indexd.py Co-authored-by: Alexander VanTol --- fence/blueprints/data/indexd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fence/blueprints/data/indexd.py b/fence/blueprints/data/indexd.py index f677ae182..34e6342d5 100755 --- a/fence/blueprints/data/indexd.py +++ b/fence/blueprints/data/indexd.py @@ -1203,7 +1203,7 @@ def _generate_google_storage_signed_url( else: del self._assume_role_cache_gs[proxy_group_id] - if is_cached == False and hasattr(flask.current_app, "db"): + if not is_cached and hasattr(flask.current_app, "db"): with flask.current_app.db.session as session: cache = ( session.query(AssumeRoleCacheGCP)