Получить список доступных местоположений из Azure - Python SDK - PullRequest
0 голосов
/ 07 мая 2019

Я хочу сохранить список доступных мест для моей подписки на Azure.Пока у меня есть это:

from azure.mgmt.subscription import SubscriptionClient


class ProviderAzure(CloudProviderAbstractClass):
    def __init__(self, client_id, access_secret_key, tenant, subscription_id, location):
        super(ProviderAzure, self).__init__()

        self.credentials = [subscription_id,
                            ServicePrincipalCredentials(
                                client_id=client_id,
                                secret=access_secret_key,
                                tenant=tenant)]

        self.location = location
        self.subscription_id = subscription_id
        self.subscription_client = SubscriptionClient(self.credentials)

    def list_available_locations(self):
        locations = self.subscription_client.subscriptions.list_locations(self.subscription_id)
        for location in locations:
            print(location.name)

Но когда я запускаю list_available_locations (), я получаю такой вывод:

     63         session = request.context.session
     64         try:
---> 65             self._creds.signed_session(session)
     66         except TypeError: # Credentials does not support session injection
     67             _LOGGER.warning("Your credentials class does not support session injection. Performance will not be at the maximu
m.")


AttributeError: 'list' object has no attribute 'signed_session'

Кто-нибудь знает, как я могу получить список?Я использую python2.7.

Спасибо.

1 Ответ

0 голосов
/ 07 мая 2019

Недопустимый объект учетных данных, который вы передаете SubscriptionClient, вы передаете список с двумя элементами: subscription_id + класс учетных данных.SubscriptionClient принимает класс учетных данных только по проекту (поскольку он является клиентом подписки, он не принимает подписку в качестве входных данных)

from azure.mgmt.subscription import SubscriptionClient


class ProviderAzure(CloudProviderAbstractClass):
    def __init__(self, client_id, access_secret_key, tenant, subscription_id, location):
        super(ProviderAzure, self).__init__()

        self.credentials =  ServicePrincipalCredentials(
                                client_id=client_id,
                                secret=access_secret_key,
                                tenant=tenant)

        self.location = location
        self.subscription_client = SubscriptionClient(self.credentials)

    def list_available_locations(self):
        locations = self.subscription_client.subscriptions.list_locations(self.subscription_id)
        for location in locations:
            print(location.name)
...