|
1 | 1 | import os
|
2 | 2 | from typing import Any, Callable, Optional, Union
|
3 | 3 |
|
| 4 | +from litellm._logging import verbose_logger |
4 | 5 | from litellm.types.secret_managers.get_azure_ad_token_provider import (
|
5 | 6 | AzureCredentialType,
|
6 | 7 | )
|
7 | 8 |
|
8 | 9 |
|
| 10 | +def infer_credential_type_from_environment() -> AzureCredentialType: |
| 11 | + if ( |
| 12 | + os.environ.get("AZURE_CLIENT_ID") |
| 13 | + and os.environ.get("AZURE_CLIENT_SECRET") |
| 14 | + and os.environ.get("AZURE_TENANT_ID") |
| 15 | + ): |
| 16 | + return AzureCredentialType.ClientSecretCredential |
| 17 | + elif os.environ.get("AZURE_CLIENT_ID"): |
| 18 | + return AzureCredentialType.ManagedIdentityCredential |
| 19 | + elif ( |
| 20 | + os.environ.get("AZURE_CLIENT_ID") |
| 21 | + and os.environ.get("AZURE_TENANT_ID") |
| 22 | + and os.environ.get("AZURE_CERTIFICATE_PATH") |
| 23 | + and os.environ.get("AZURE_CERTIFICATE_PASSWORD") |
| 24 | + ): |
| 25 | + return AzureCredentialType.CertificateCredential |
| 26 | + elif os.environ.get("AZURE_CERTIFICATE_PASSWORD"): |
| 27 | + return AzureCredentialType.CertificateCredential |
| 28 | + elif os.environ.get("AZURE_CERTIFICATE_PATH"): |
| 29 | + return AzureCredentialType.CertificateCredential |
| 30 | + else: |
| 31 | + return AzureCredentialType.DefaultAzureCredential |
| 32 | + |
| 33 | + |
9 | 34 | def get_azure_ad_token_provider(
|
10 | 35 | azure_scope: Optional[str] = None,
|
11 | 36 | azure_credential: Optional[AzureCredentialType] = None,
|
@@ -42,9 +67,14 @@ def get_azure_ad_token_provider(
|
42 | 67 | )
|
43 | 68 |
|
44 | 69 | cred: str = (
|
45 |
| - azure_credential.value if azure_credential else None |
46 |
| - or os.environ.get("AZURE_CREDENTIAL", AzureCredentialType.ClientSecretCredential) |
47 |
| - or AzureCredentialType.ClientSecretCredential |
| 70 | + azure_credential.value |
| 71 | + if azure_credential |
| 72 | + else None |
| 73 | + or os.environ.get("AZURE_CREDENTIAL") |
| 74 | + or infer_credential_type_from_environment() |
| 75 | + ) |
| 76 | + verbose_logger.info( |
| 77 | + f"For Azure AD Token Provider, choosing credential type: {cred}" |
48 | 78 | )
|
49 | 79 | credential: Optional[
|
50 | 80 | Union[
|
|
0 commit comments