Подключите диски к остановленным экземплярам с помощью 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
,
Возможно, это не очень хороший способ, но пока это работает.