about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/azure/ai/ml/entities/_datastore/utils.py
blob: 538f9590561e5edc0882f4d5ab342298fd10fb1c (plain)
1
2
3
4
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# ---------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# ---------------------------------------------------------

# pylint: disable=protected-access

from typing import Any, Optional, Union, cast

from azure.ai.ml._restclient.v2023_04_01_preview import models
from azure.ai.ml._restclient.v2024_07_01_preview import models as models2024
from azure.ai.ml.entities._credentials import (
    AccountKeyConfiguration,
    CertificateConfiguration,
    NoneCredentialConfiguration,
    SasTokenConfiguration,
    ServicePrincipalConfiguration,
)
from azure.ai.ml.entities._datastore._on_prem_credentials import KerberosKeytabCredentials, KerberosPasswordCredentials


def from_rest_datastore_credentials(
    rest_credentials: models.DatastoreCredentials,
) -> Union[
    AccountKeyConfiguration,
    SasTokenConfiguration,
    ServicePrincipalConfiguration,
    CertificateConfiguration,
    NoneCredentialConfiguration,
]:
    config_class: Any = NoneCredentialConfiguration

    if isinstance(rest_credentials, (models.AccountKeyDatastoreCredentials, models2024.AccountKeyDatastoreCredentials)):
        # we are no more using key for key base account.
        # https://github.com/Azure/azure-sdk-for-python/pull/35716
        if isinstance(rest_credentials.secrets, models2024.SasDatastoreSecrets):
            config_class = SasTokenConfiguration
        else:
            config_class = AccountKeyConfiguration
    elif isinstance(rest_credentials, (models.SasDatastoreCredentials, models2024.SasDatastoreCredentials)):
        config_class = SasTokenConfiguration
    elif isinstance(
        rest_credentials, (models.ServicePrincipalDatastoreCredentials, models2024.ServicePrincipalDatastoreCredentials)
    ):
        config_class = ServicePrincipalConfiguration
    elif isinstance(
        rest_credentials, (models.CertificateDatastoreCredentials, models2024.CertificateDatastoreCredentials)
    ):
        config_class = CertificateConfiguration

    return cast(
        Union[
            AccountKeyConfiguration,
            SasTokenConfiguration,
            ServicePrincipalConfiguration,
            CertificateConfiguration,
            NoneCredentialConfiguration,
        ],
        config_class._from_datastore_rest_object(rest_credentials),
    )


def _from_rest_datastore_credentials_preview(
    rest_credentials: models.DatastoreCredentials,
) -> Optional[Union[KerberosKeytabCredentials, KerberosPasswordCredentials]]:
    if isinstance(rest_credentials, models.KerberosKeytabCredentials):
        return KerberosKeytabCredentials._from_rest_object(rest_credentials)
    if isinstance(rest_credentials, models.KerberosPasswordCredentials):
        return KerberosPasswordCredentials._from_rest_object(rest_credentials)

    return None