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

Я работаю над azure python sdk, я пытаюсь подключить диски к экземплярам в остановленном состоянии, например, диски, подключенные к виртуальной машине в остановленном состоянии, я знаю, что свойство managedby даст мне диски без подключенных экземпляров, но я не могу получить какой-либо api или свойство, чтобы проверить, используются ли в данный момент диски или нет.

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


person Vikas Gautam    schedule 01.02.2019    source источник
comment
Мне непонятен ваш вопрос. Если диски подключены к ВМ. Тогда диск будет использоваться независимо от остановки или запуска виртуальной машины. Итак, что вы на самом деле имеете в виду в вопросе?   -  person Charles Xu    schedule 01.02.2019
comment
он просто не знает, как это сделать, вот и все   -  person 4c74356b41    schedule 01.02.2019
comment
ок @CharlesXu, есть ли способ получить эти диски?   -  person Vikas Gautam    schedule 01.02.2019
comment
Есть еще вопросы?   -  person Charles Xu    schedule 05.02.2019


Ответы (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

person 4c74356b41    schedule 01.02.2019

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

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

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
person Charles Xu    schedule 01.02.2019
comment
в чем вообще смысл копировать мой ответ? это не добавляет ничего нового - person 4c74356b41; 01.02.2019
comment
@ 4c74356b41 Не думаю, что копирую ваш ответ. Вы просто перечисляете управляемые диски по группам, а не точно по подключенным дискам. - person Charles Xu; 01.02.2019

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

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

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

person Vikas Gautam    schedule 05.02.2019
comment
просто предостережение, только диски с именами по умолчанию имеют это имя. вы можете создать диск с любым именем и прикрепить его к виртуальной машине с любым именем (если они находятся в одном регионе) - person 4c74356b41; 05.02.2019
comment
@VikasGautam Ты запутаешь меня в том, чего ты хочешь. ВМ диска? Или диски, подключенные к виртуальной машине? - person Charles Xu; 06.02.2019