gpt4 book ai didi

python - 如何使用 azure-sdk-for-python 删除磁盘?

转载 作者:行者123 更新时间:2023-11-28 18:29:40 25 4
gpt4 key购买 nike

我正在使用azure-sdk-for-python来创建和删除虚拟机。

https://github.com/Azure/azure-sdk-for-python

http://azure-sdk-for-python.readthedocs.io/en/latest/

我已经成功地使用资源管理器方法(不是经典)编写了创建和删除虚拟机的代码。

创建虚拟机的基本信息可以在这里看到: http://azure-sdk-for-python.readthedocs.io/en/latest/resourcemanagementcomputenetwork.html

我并不担心删除资源组存储帐户,因为我的所有虚拟机都使用相同的资源组。

要删除创建的虚拟机,我有这样的东西:

# 1. Delete the virtual machine
result = compute_client.virtual_machines.delete(
group_name,
vm_name
)
result.wait()
# 2. Delete the network interface
result = network_client.network_interfaces.delete(
group_name,
network_interface_name
)
result.wait()
# 3. Delete the ip
result = network_client.public_ip_addresses.delete(
group_name,
public_ip_address_name
)
result.wait()

正如一些人所知,数据磁盘不会与其虚拟机一起删除。我知道可以使用Azure CLI来完成: https://azure.microsoft.com/en-us/documentation/articles/storage-azure-cli/

azure storage blob delete -a <storage_account_name> -k <storage_account_key> -q vhds <data_disk>.vhd

但我不知道如何使用azure-sdk-for-python以编程方式执行此操作。我不想依赖 Azure CLI,因为我的其余代码正在使用 python sdk。

我希望得到一些关于如何做到这一点的帮助。

谢谢

最佳答案

您可以利用 Azure ComputeManagementClient 的磁盘 API 来获取与 VM 关联的磁盘列表,然后迭代它们以删除磁盘。下面是一些实现相同功能的示例代码:

def delete_vm(self, vm_name, nic_name, group_name):
# Delete VM
print('Delete VM {}'.format(vm_name))
try:
async_vm_delete = self.compute_client.virtual_machines.delete(group_name, vm_name)
async_vm_delete.wait()
net_del_poller = self.network_client.network_interfaces.delete(group_name, nic_name)
net_del_poller.wait()
disks_list = self.compute_client.disks.list_by_resource_group(group_name)
disk_handle_list = []
for disk in disks_list:
if vm_name in disk.name:
async_disk_delete = self.compute_client.disks.delete(self.group_name, disk.name)
async_disk_handle_list.append(async_disk_delete)
print("Queued disks will be deleted now...")
for async_disk_delete in disk_handle_list:
async_disk_delete.wait()
except CloudError:
print('A VM delete operation failed: {}'.format(traceback.format_exc()))
return False
print("Deleted VM {}".format(vm_name))
return True

关于python - 如何使用 azure-sdk-for-python 删除磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com