Подключите диски к остановленным экземплярам с помощью Python SDK

Я работаю над Azure Python SDK, я пытаюсь подключить диски к экземплярам в остановленном состоянии, например, диски, подключенные к виртуальной машине в остановленном состоянии, я знаю managedby Свойство даст мне диски без прикрепленных экземпляров, но я не могу получить API или свойство, чтобы проверить, используются ли диски в настоящее время или нет.

Есть ли способ подключить диски к остановленным экземплярам, ​​таким как виртуальные машины?

3 ответа

Вы можете сделать что-то вроде этого:

compute_client = ComputeManagementClient(credentials, subscription_id)
# you can also list by subscription
# https://docs.microsoft.com/en-us/python/api/azure-mgmt-compute/azure.mgmt.compute.v2017_03_30.operations.disks_operations.disksoperations?view=azure-python#list-custom-headers-none--raw-false----operation-config-
disks = compute_client.disks.list_by_resource_group('resourcegroupname')
for disk in disks:
    print disk

это даст вам все диски в группе ресурсов. нет возможности достать все "бесхозные" диски. Я думаю, что вам лучше всего взять все диски и посмотреть, не подключены ли они к чему-либо

Дополнительные примеры: https://github.com/Azure/azure-sdk-for-python/wiki/Managed-Disk

Прямой функции для вывода списка дисков, подключенных к ВМ, в Python SDK нет, вы можете просто перечислить управляемые диски по группам или по подписке. Но вы можете подключить диски к виртуальной машине в свойстве VM.

Например, вы можете перечислить диски с данными следующим образом:

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.resource import ResourceManagementClient, SubscriptionClient

TENANT_ID = "xxxxx"
CLIENT_ID = "xxxxx"
KEY = "secret"

cred = ServicePrincipalCredentials(client_id = CLIENT_ID,
        secret = KEY,
        tenant = TENANT_ID)

subscription_id = "xxxxx"

compute_client = ComputeManagementClient(cred, subscription_id)

rg = "resourceGroupName"
vm_name = "vmName"

vm_info = compute_client.virtual_machines.get(rg, vm_name)

for disk in vm_info.storage_profile.data_disks:
    print disk.managed_disk.id

Я проверял все поля объекта disk и я обнаружил, что имя связанной виртуальной машины может быть извлечено из name поле. например, я нашел имя TestVM2_OsDisk_1_834968b1cdc341c78bfbc227c9ccacda Вот TestVM2 имя виртуальной машины, к которой прикреплен диск

Итак, я беру имя ВМ из name поле с помощью регулярного выражения re.split('_OsDisk', disk.name) и проверка состояния виртуальной машины с помощью Azure API для виртуальных машин, если это дает мне VM deallocated то он остановлен или даст мне VM running,

Возможно, это не очень хороший способ, но пока это работает.

Другие вопросы по тегам