backend-printing/helper/key_vault.py (29 lines of code) (raw):
"""Contains the key vault for the application.
This is where all the SAP config are set and get.
"""
from dataclasses import asdict
from helper.azure_client import AzureClient
class KeyVault(AzureClient):
def get_sap_config(self, secret_name):
"""Gets the SAP config from the key vault.
Args:
secret_name (string): Name of the secret
Returns:
dict: SAP config
"""
try:
return self.key_vault_client.get_secret(secret_name)
except Exception as e:
raise Exception(
f"Error occurred getting SAP config with name {secret_name}: {e}"
)
def get_sap_config_secrets(self):
"""Gets the SAP config secrets from the key vault.
Returns:
list[json]: SAP config secrets
"""
try:
sap_secrets = []
secret_properties = self.key_vault_client.list_properties_of_secrets()
for secret in secret_properties:
if secret.name.startswith("BGPRINT"):
try:
sap_secrets.append(self.get_sap_config(secret.name))
except Exception as e:
print(e)
return sap_secrets
except Exception as e:
raise Exception(f"Error occurred getting SAP config: {e}")
def set_kv_secrets(self, secret_key, secret_value):
"""Set the secret key and value to the key vault.
Args:
secret_key (string): Key name
secret_value (string): value of the key
Raises:
Exception: Error occurred setting the secret
Returns:
boolean: True if the secret is successfully set
"""
try:
self.key_vault_client.set_secret(secret_key, secret_value)
return True
except Exception as e:
raise Exception(f"Error occurred setting SAP config: {e}")