Newer
Older
# Copyright 2021 Google LLC
# Copyright 2021 EPAM Systems
# Copyright © Microsoft Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Credentials init module."""
Dmitrii Valuiskii (EPAM)
committed
import importlib
import os
Dmitrii Valuiskii (EPAM)
committed
import logging
from providers.factory import ProvidersFactory
from providers.types import BaseCredentials
Dmitrii Valuiskii (EPAM)
committed
logger = logging.getLogger()
def _import_provider_specific_credential_module(provider: str) -> str:
"""
Import provider specific credential module for correct registering it
"""
module_name = f"providers.{provider.lower()}.{provider.lower()}_credentials"
importlib.import_module(module_name)
return module_name
def get_credentials(cloud_env: str = None) -> BaseCredentials:
"""Get specific Credentials according to cloud environment.
:param cloud_env: Name of the provided cloud env, if not given,
`CLOUD_PROVIDER` env var should be set.
:type cloud_env: str, optional
:return: An instance of BaseCredentials
:rtype: BaseCredentials
"""
cloud_env = cloud_env or os.environ.get("CLOUD_PROVIDER")
Dmitrii Valuiskii (EPAM)
committed
# import section needed to register cloud specific clients
try:
_import_provider_specific_credential_module(cloud_env)
except ModuleNotFoundError as exc:
logger.critical(f"Error occurred while importing credential module for {cloud_env}")
logger.critical(f"Exception: {exc}")
return ProvidersFactory.get_credentials(cloud_env)