interfaces
azure_bootstrap.repositories.interfaces
¶
Repository interfaces for Azure bootstrap library.
This module contains interface definitions for configuration and secrets repositories.
Modules:
| Name | Description |
|---|---|
enhanced_config_repository_interface |
Interface for Enhanced Config Repository. |
secrets_repository_interface |
Interface for Secrets Repository. |
Classes:
| Name | Description |
|---|---|
EnhancedConfigRepositoryInterface |
Abstract interface for enhanced configuration repository operations. |
SecretsRepositoryInterface |
Abstract interface for secrets repository operations. |
EnhancedConfigRepositoryInterface
¶
Bases: ABC
Abstract interface for enhanced configuration repository operations.
This interface defines all configuration access operations for integration with Azure App Configuration, Key Vault, and environment variables following a hierarchical precedence model.
Configuration Precedence (highest to lowest): 1. Environment variables (os.environ) 2. Azure App Configuration 3. Key Vault secrets (via secrets repository) 4. Default values
Benefits: - Abstracts configuration storage implementation details - Enables dependency injection and testing with mocks - Provides clear contract for configuration access - Supports multiple backends with transparent fallback
Methods:
| Name | Description |
|---|---|
get_value |
Get a configuration value with hierarchical lookup. |
get_secret_value |
Get a secret value from Key Vault. |
get_all_values |
Get all configuration values from all sources. |
load_to_environ |
Load all configuration values into os.environ. |
refresh |
Refresh configuration from all sources. |
get_repository_metrics |
Get metrics about the configuration repository. |
is_app_config_available |
Check if Azure App Configuration is available and accessible. |
is_key_vault_available |
Check if Azure Key Vault is available and accessible. |
get_value
abstractmethod
¶
Get a configuration value with hierarchical lookup.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key
|
str
|
Configuration key name |
required |
default
|
str | None
|
Default value if key not found |
None
|
Returns:
| Type | Description |
|---|---|
str | None
|
Optional[str]: Configuration value or default |
Raises:
| Type | Description |
|---|---|
ConfigurationError
|
If configuration access fails |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
get_secret_value
abstractmethod
¶
Get a secret value from Key Vault.
This method specifically targets secrets and bypasses the standard configuration hierarchy to directly access Key Vault.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key
|
str
|
Secret key name |
required |
default
|
str | None
|
Default value if secret not found |
None
|
Returns:
| Type | Description |
|---|---|
str | None
|
Optional[str]: Secret value or default |
Raises:
| Type | Description |
|---|---|
SecretAccessError
|
If secret retrieval fails |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
get_all_values
abstractmethod
¶
Get all configuration values from all sources.
Returns:
| Type | Description |
|---|---|
dict[str, str]
|
Dict[str, str]: All configuration key-value pairs |
Raises:
| Type | Description |
|---|---|
ConfigurationError
|
If configuration access fails |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
load_to_environ
abstractmethod
¶
load_to_environ() -> int
Load all configuration values into os.environ.
This method loads all configuration from App Config and Key Vault into environment variables for transparent application access.
Returns:
| Name | Type | Description |
|---|---|---|
int |
int
|
Number of new values added to os.environ (excludes skipped values) |
Raises:
| Type | Description |
|---|---|
ConfigurationError
|
If loading fails |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
refresh
abstractmethod
¶
Refresh configuration from all sources.
This method reloads configuration from App Configuration and Key Vault to pick up any changes.
Raises:
| Type | Description |
|---|---|
ConfigurationError
|
If refresh fails |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
get_repository_metrics
abstractmethod
¶
is_app_config_available
abstractmethod
¶
is_app_config_available() -> bool
Check if Azure App Configuration is available and accessible.
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
True if App Config is accessible, False otherwise |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
is_key_vault_available
abstractmethod
¶
is_key_vault_available() -> bool
Check if Azure Key Vault is available and accessible.
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
True if Key Vault is accessible, False otherwise |
Source code in azure_bootstrap/repositories/interfaces/enhanced_config_repository_interface.py
SecretsRepositoryInterface
¶
Bases: ABC
Abstract interface for secrets repository operations.
This interface defines all secret access operations for integration with Azure Key Vault or other secret storage backends.
Benefits: - Abstracts secret storage implementation details from business logic - Enables dependency injection and testing with mocks - Provides clear contract for secret access operations - Supports multiple backends (Key Vault, local files, environment, etc.)
Methods:
| Name | Description |
|---|---|
get_secret |
Retrieve a secret value by name. |
set_secret |
Store a secret value (if backend supports writes). |
delete_secret |
Delete a secret (if backend supports deletion). |
list_secrets |
List all available secrets (names only for security). |
is_available |
Check if secrets repository is available and accessible. |
get_secret
abstractmethod
¶
Retrieve a secret value by name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
secret_name
|
str
|
Name of the secret to retrieve |
required |
Returns:
| Type | Description |
|---|---|
str | None
|
Optional[str]: Secret value if found, None otherwise |
Raises:
| Type | Description |
|---|---|
SecretAccessError
|
If secret retrieval fails |
Source code in azure_bootstrap/repositories/interfaces/secrets_repository_interface.py
set_secret
abstractmethod
¶
Store a secret value (if backend supports writes).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
secret_name
|
str
|
Name of the secret |
required |
secret_value
|
str
|
Value to store |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
True if successful, False otherwise |
Raises:
| Type | Description |
|---|---|
SecretAccessError
|
If secret storage fails |
NotImplementedError
|
If backend doesn't support writes |
Source code in azure_bootstrap/repositories/interfaces/secrets_repository_interface.py
delete_secret
abstractmethod
¶
Delete a secret (if backend supports deletion).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
secret_name
|
str
|
Name of the secret to delete |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
True if successful, False otherwise |
Raises:
| Type | Description |
|---|---|
SecretAccessError
|
If secret deletion fails |
NotImplementedError
|
If backend doesn't support deletion |
Source code in azure_bootstrap/repositories/interfaces/secrets_repository_interface.py
list_secrets
abstractmethod
¶
List all available secrets (names only for security).
Returns:
| Type | Description |
|---|---|
dict[str, str]
|
Dict[str, str]: Dictionary mapping secret names to metadata |
Raises:
| Type | Description |
|---|---|
SecretAccessError
|
If listing fails |