Nahuel 91d0460b27
Fix#8577: Refactor part of the secrets manager implementation (#8617)
* Removed part of the secrets manager implementation in the server side

* Removed part of the secrets manager implementation in the openmetadata python library side

* Remove deprecated test

* Address pylint checks

* Address new pylint checks

* Address PR comments

* Fix import on airflows apis

* Clear singleton instances for running Ometa secrets manager test
2022-11-11 09:59:15 +01:00

43 lines
1.4 KiB
Python

from typing import Optional
from airflow.configuration import conf
from pydantic import SecretStr
from metadata.generated.schema.entity.services.connections.metadata.secretsManagerProvider import (
SecretsManagerProvider,
)
from metadata.generated.schema.security.credentials.awsCredentials import AWSCredentials
from metadata.utils.secrets.secrets_manager import SECRET_MANAGER_AIRFLOW_CONF
def build_aws_credentials() -> Optional[AWSCredentials]:
if conf.has_section(SECRET_MANAGER_AIRFLOW_CONF):
credentials = AWSCredentials(
awsRegion=conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_region", fallback="")
)
credentials.awsAccessKeyId = SecretStr(
conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_access_key_id", fallback="")
)
credentials.awsSecretAccessKey = SecretStr(
conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_secret_access_key", fallback="")
)
return credentials
return None
def build_secrets_manager_credentials(
secrets_manager: SecretsManagerProvider,
) -> Optional[AWSCredentials]:
if secrets_manager in [
SecretsManagerProvider.aws,
SecretsManagerProvider.managed_aws,
]:
return build_aws_credentials()
if secrets_manager in [
SecretsManagerProvider.aws_ssm,
SecretsManagerProvider.managed_aws_ssm,
]:
return build_aws_credentials()
else:
return None