Skip to content

Keyvault stub

SecretClient

A stub keyvault to simulate an integration with Azure Keyvault. This would be replaced by a keyvault library.

Source code in data_platform\utils\keyvault_stub.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class SecretClient:
    """A stub keyvault to simulate an integration with Azure Keyvault. This would be
    replaced by a keyvault library.
    """

    def get_secret(self, secret_name: str) -> str:
        """returns a secret from the keyvault"""
        secrets = self.__secrets
        location, _, attribute = secret_name.split("__")
        secret = secrets.get(location, {}).get(attribute)

        return secret or ""

    def __init__(
        self, vault_url: str | None = None, credential: str | None = None
    ) -> None:
        secrets = {"SOURCE": {}, "DESTINATION": {}}

        env = os.getenv("TARGET", "dev")
        env_file = ".env.dev"
        if env == "prod":
            env_file = ".env"

        env_path = Path(__file__).joinpath(*[".."] * 3, env_file).resolve()
        with open(env_path) as env:
            for line in env:
                line = line.strip()
                if line:
                    key, value = line.split("=")
                    keys = key.split("__")
                    if len(keys) == 2:
                        location, attribute = keys
                        secrets[location][attribute] = value

        self.__secrets = secrets

get_secret(secret_name)

returns a secret from the keyvault

Source code in data_platform\utils\keyvault_stub.py
10
11
12
13
14
15
16
def get_secret(self, secret_name: str) -> str:
    """returns a secret from the keyvault"""
    secrets = self.__secrets
    location, _, attribute = secret_name.split("__")
    secret = secrets.get(location, {}).get(attribute)

    return secret or ""