如何使用java sdk删除Azure ARM中的VM时删除磁盘?

时间:2016-08-30 16:56:39

标签: java azure azure-resource-manager

我正在从azure ARM中删除VM。当我使用java-sdk删除VM时,VM已成功删除,但磁盘和网络未被删除。它将VHD文件保存在存储中。我试图分离磁盘,但同样它会从VM分离磁盘但不删除VHD。

删除VM: -

azure.virtualMachines().delete("resourceGroupName", "vmName");

分离磁盘: -

azure.virtualMachines().getByGroup("resourceGroupName", "vmName");
vm.update().withoutDataDisk("diskName").apply(); 

即使在执行上述操作之后,VHD文件也存在于存储器中。 当我删除VM时,如何永久删除所有连接的磁盘?

2 个答案:

答案 0 :(得分:0)

@PawanSharma,据我所知,如果你想删除一次虚拟机及其相关的所有资源,你只需要删除包含虚拟机和所有其他资源的资源组,或者手动删除这些资源。

根据您的代码,我判断您使用的是Azure SDK for Java的1.0.0-beta版本,因此我建议您尝试使用以下代码来执行此操作。

 azure.resourceGroups().delete("<resource-group-name>");

作为参考,您可以参考GitHub上的sample code

与此同时,没有Azure SDK的另一种方式是使用Azure REST API Delete a resource group,我认为这是更清晰的理解方式。

答案 1 :(得分:0)

Azure-Storage解决了这个问题。您必须从附加的存储帐户中删除blob vhd文件。

        CloudStorageAccount cloudStorageAccount = CloudStorageAccount.parse(storageConnectionString);
        CloudBlobClient cloudBlobClient = cloudStorageAccount.createCloudBlobClient();
        Iterable<CloudBlobContainer>  containersList= cloudBlobClient.listContainers();
        for(CloudBlobContainer container:containersList)
        {
            String currentContainerName = container.getName();
            logger.debug("Current Container Name : "+currentContainerName);
            CloudBlobContainer blobContainer = cloudBlobClient.getContainerReference(currentContainerName);
            CloudPageBlob pageBlob = blobContainer.getPageBlobReference(diskName);
            if(pageBlob.exists())  
                return pageBlob.deleteIfExists();
        }

更多详情请参阅azure storage git