Add tagging support for Cognito identity pools (#4147)

This commit is contained in:
Waldemar Hummer 2021-08-09 13:57:48 +02:00 committed by GitHub
parent 3336539293
commit 8e61504482
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 7 deletions

View File

@ -29,6 +29,8 @@ class CognitoIdentity(BaseModel):
self.identity_pool_id = get_random_identity_id(region) self.identity_pool_id = get_random_identity_id(region)
self.creation_time = datetime.datetime.utcnow() self.creation_time = datetime.datetime.utcnow()
self.tags = kwargs.get("tags") or {}
def to_json(self): def to_json(self):
return json.dumps( return json.dumps(
{ {
@ -68,7 +70,7 @@ class CognitoIdentityBackend(BaseBackend):
"DeveloperProviderName": identity_pool.developer_provider_name, "DeveloperProviderName": identity_pool.developer_provider_name,
"IdentityPoolId": identity_pool.identity_pool_id, "IdentityPoolId": identity_pool.identity_pool_id,
"IdentityPoolName": identity_pool.identity_pool_name, "IdentityPoolName": identity_pool.identity_pool_name,
"IdentityPoolTags": {}, # TODO: add tags "IdentityPoolTags": identity_pool.tags,
"OpenIdConnectProviderARNs": identity_pool.open_id_connect_provider_arns, "OpenIdConnectProviderARNs": identity_pool.open_id_connect_provider_arns,
"SamlProviderARNs": identity_pool.saml_provider_arns, "SamlProviderARNs": identity_pool.saml_provider_arns,
"SupportedLoginProviders": identity_pool.supported_login_providers, "SupportedLoginProviders": identity_pool.supported_login_providers,
@ -86,6 +88,7 @@ class CognitoIdentityBackend(BaseBackend):
open_id_connect_provider_arns, open_id_connect_provider_arns,
cognito_identity_providers, cognito_identity_providers,
saml_provider_arns, saml_provider_arns,
tags=None,
): ):
new_identity = CognitoIdentity( new_identity = CognitoIdentity(
self.region, self.region,
@ -96,6 +99,7 @@ class CognitoIdentityBackend(BaseBackend):
open_id_connect_provider_arns=open_id_connect_provider_arns, open_id_connect_provider_arns=open_id_connect_provider_arns,
cognito_identity_providers=cognito_identity_providers, cognito_identity_providers=cognito_identity_providers,
saml_provider_arns=saml_provider_arns, saml_provider_arns=saml_provider_arns,
tags=tags,
) )
self.identity_pools[new_identity.identity_pool_id] = new_identity self.identity_pools[new_identity.identity_pool_id] = new_identity
@ -113,7 +117,7 @@ class CognitoIdentityBackend(BaseBackend):
provider_arns, provider_arns,
identity_providers, identity_providers,
saml_providers, saml_providers,
pool_tags, tags=None,
): ):
pool = self.identity_pools[identity_pool_id] pool = self.identity_pools[identity_pool_id]
pool.identity_pool_name = pool.identity_pool_name or identity_pool_name pool.identity_pool_name = pool.identity_pool_name or identity_pool_name
@ -129,6 +133,8 @@ class CognitoIdentityBackend(BaseBackend):
pool.cognito_identity_providers = identity_providers pool.cognito_identity_providers = identity_providers
if saml_providers is not None: if saml_providers is not None:
pool.saml_provider_arns = saml_providers pool.saml_provider_arns = saml_providers
if tags:
pool.tags = tags
response = pool.to_json() response = pool.to_json()
return response return response

View File

@ -16,6 +16,7 @@ class CognitoIdentityResponse(BaseResponse):
open_id_connect_provider_arns = self._get_param("OpenIdConnectProviderARNs") open_id_connect_provider_arns = self._get_param("OpenIdConnectProviderARNs")
cognito_identity_providers = self._get_param("CognitoIdentityProviders") cognito_identity_providers = self._get_param("CognitoIdentityProviders")
saml_provider_arns = self._get_param("SamlProviderARNs") saml_provider_arns = self._get_param("SamlProviderARNs")
pool_tags = self._get_param("IdentityPoolTags")
return cognitoidentity_backends[self.region].create_identity_pool( return cognitoidentity_backends[self.region].create_identity_pool(
identity_pool_name=identity_pool_name, identity_pool_name=identity_pool_name,
@ -25,6 +26,7 @@ class CognitoIdentityResponse(BaseResponse):
open_id_connect_provider_arns=open_id_connect_provider_arns, open_id_connect_provider_arns=open_id_connect_provider_arns,
cognito_identity_providers=cognito_identity_providers, cognito_identity_providers=cognito_identity_providers,
saml_provider_arns=saml_provider_arns, saml_provider_arns=saml_provider_arns,
tags=pool_tags,
) )
def update_identity_pool(self): def update_identity_pool(self):
@ -34,10 +36,10 @@ class CognitoIdentityResponse(BaseResponse):
allow_classic = self._get_bool_param("AllowClassicFlow") allow_classic = self._get_bool_param("AllowClassicFlow")
login_providers = self._get_param("SupportedLoginProviders") login_providers = self._get_param("SupportedLoginProviders")
provider_name = self._get_param("DeveloperProviderName") provider_name = self._get_param("DeveloperProviderName")
provider_arns = self._get_multi_param("OpenIdConnectProviderARNs") provider_arns = self._get_param("OpenIdConnectProviderARNs")
identity_providers = self._get_multi_param_dict("CognitoIdentityProviders") identity_providers = self._get_param("CognitoIdentityProviders")
saml_providers = self._get_multi_param("SamlProviderARNs") saml_providers = self._get_param("SamlProviderARNs")
pool_tags = self._get_multi_param_dict("IdentityPoolTags") pool_tags = self._get_param("IdentityPoolTags")
return cognitoidentity_backends[self.region].update_identity_pool( return cognitoidentity_backends[self.region].update_identity_pool(
identity_pool_id=pool_id, identity_pool_id=pool_id,
@ -49,7 +51,7 @@ class CognitoIdentityResponse(BaseResponse):
provider_arns=provider_arns, provider_arns=provider_arns,
identity_providers=identity_providers, identity_providers=identity_providers,
saml_providers=saml_providers, saml_providers=saml_providers,
pool_tags=pool_tags, tags=pool_tags,
) )
def get_id(self): def get_id(self):