/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. */ package com.microsoft.azure.management.compute; import com.microsoft.azure.PagedList; import com.microsoft.azure.management.resources.ResourceGroup; import com.microsoft.azure.management.resources.fluentcore.arm.Region; import com.microsoft.rest.RestClient; import org.junit.Assert; import org.junit.Test; public class ManagedDiskOperationsTests extends ComputeManagementTest { private static String RG_NAME = ""; private static Region region = Region.US_WEST_CENTRAL; @Override protected void initializeClients(RestClient restClient, String defaultSubscription, String domain) { RG_NAME = generateRandomResourceName("javacsmrg", 15); super.initializeClients(restClient, defaultSubscription, domain); } @Override protected void cleanUpResources() { resourceManager.resourceGroups().deleteByName(RG_NAME); } @Test public void canOperateOnEmptyManagedDisk() { final String diskName = generateRandomResourceName("md-empty-", 20); final DiskSkuTypes updateTo = DiskSkuTypes.STANDARD_LRS; ResourceGroup resourceGroup = resourceManager .resourceGroups() .define(RG_NAME) .withRegion(region) .create(); // Create an empty managed disk // Disk disk = computeManager.disks() .define(diskName) .withRegion(region) .withExistingResourceGroup(resourceGroup.name()) .withData() .withSizeInGB(100) // Start option .withSku(DiskSkuTypes.STANDARD_LRS) .withTag("tkey1", "tval1") // End option .create(); Assert.assertNotNull(disk.id()); Assert.assertTrue(disk.name().equalsIgnoreCase(diskName)); Assert.assertEquals(disk.sku(), DiskSkuTypes.STANDARD_LRS); Assert.assertEquals(disk.creationMethod(), DiskCreateOption.EMPTY); Assert.assertFalse(disk.isAttachedToVirtualMachine()); Assert.assertEquals(disk.sizeInGB(), 100); Assert.assertNull(disk.osType()); Assert.assertNotNull(disk.source()); Assert.assertEquals(disk.source().type(), CreationSourceType.EMPTY); Assert.assertNull(disk.source().sourceId()); // Resize and change storage account type // disk = disk.update() .withSku(updateTo) .withSizeInGB(200) .apply(); Assert.assertEquals(disk.sku(), updateTo); Assert.assertEquals(disk.sizeInGB(), 200); disk = computeManager.disks().getByResourceGroup(disk.resourceGroupName(), disk.name()); Assert.assertNotNull(disk); PagedList<Disk> myDisks = computeManager.disks().listByResourceGroup(disk.resourceGroupName()); Assert.assertNotNull(myDisks); Assert.assertTrue(myDisks.size() > 0); String sasUrl = disk.grantAccess(100); Assert.assertTrue(sasUrl != null && sasUrl != ""); // Requires access to be revoked before deleting the disk // disk.revokeAccess(); computeManager.disks().deleteById(disk.id()); } @Test public void canOperateOnManagedDiskFromDisk() { final String diskName1 = generateRandomResourceName("md-1", 20); final String diskName2 = generateRandomResourceName("md-2", 20); ResourceGroup resourceGroup = resourceManager .resourceGroups() .define(RG_NAME) .withRegion(region) .create(); // Create an empty managed disk // Disk emptyDisk = computeManager.disks() .define(diskName1) .withRegion(region) .withExistingResourceGroup(resourceGroup.name()) .withData() .withSizeInGB(100) .create(); // Create a managed disk from existing managed disk // Disk disk = computeManager.disks() .define(diskName2) .withRegion(region) .withExistingResourceGroup(resourceGroup.name()) .withData() .fromDisk(emptyDisk) // Start Option .withSizeInGB(200) .withSku(DiskSkuTypes.STANDARD_LRS) // End Option .create(); disk = computeManager.disks().getById(disk.id()); Assert.assertNotNull(disk.id()); Assert.assertTrue(disk.name().equalsIgnoreCase(diskName2)); Assert.assertEquals(disk.sku(), DiskSkuTypes.STANDARD_LRS); Assert.assertEquals(disk.creationMethod(), DiskCreateOption.COPY); Assert.assertFalse(disk.isAttachedToVirtualMachine()); Assert.assertEquals(disk.sizeInGB(), 200); Assert.assertNull(disk.osType()); Assert.assertNotNull(disk.source()); Assert.assertEquals(disk.source().type(), CreationSourceType.COPIED_FROM_DISK); Assert.assertTrue(disk.source().sourceId().equalsIgnoreCase(emptyDisk.id())); computeManager.disks().deleteById(emptyDisk.id()); computeManager.disks().deleteById(disk.id()); } @Test public void canOperateOnManagedDiskFromSnapshot() { final String emptyDiskName = generateRandomResourceName("md-empty-", 20); final String snapshotBasedDiskName = generateRandomResourceName("md-snp-", 20); final String snapshotName = generateRandomResourceName("snp-", 20); ResourceGroup resourceGroup = resourceManager .resourceGroups() .define(RG_NAME) .withRegion(region) .create(); Disk emptyDisk = computeManager.disks() .define(emptyDiskName) .withRegion(region) .withExistingResourceGroup(resourceGroup) .withData() .withSizeInGB(100) .create(); Snapshot snapshot = computeManager.snapshots() .define(snapshotName) .withRegion(region) .withExistingResourceGroup(resourceGroup) .withDataFromDisk(emptyDisk) .withSizeInGB(200) .withSku(DiskSkuTypes.STANDARD_LRS) .create(); Assert.assertNotNull(snapshot.id()); Assert.assertTrue(snapshot.name().equalsIgnoreCase(snapshotName)); Assert.assertEquals(snapshot.sku(), DiskSkuTypes.STANDARD_LRS); Assert.assertEquals(snapshot.creationMethod(), DiskCreateOption.COPY); Assert.assertEquals(snapshot.sizeInGB(), 200); Assert.assertNull(snapshot.osType()); Assert.assertNotNull(snapshot.source()); Assert.assertEquals(snapshot.source().type(), CreationSourceType.COPIED_FROM_DISK); Assert.assertTrue(snapshot.source().sourceId().equalsIgnoreCase(emptyDisk.id())); Disk fromSnapshotDisk = computeManager.disks() .define(snapshotBasedDiskName) .withRegion(region) .withExistingResourceGroup(resourceGroup) .withData() .fromSnapshot(snapshot) .withSizeInGB(300) .create(); Assert.assertNotNull(fromSnapshotDisk.id()); Assert.assertTrue(fromSnapshotDisk.name().equalsIgnoreCase(snapshotBasedDiskName)); Assert.assertEquals(fromSnapshotDisk.sku(), DiskSkuTypes.STANDARD_LRS); Assert.assertEquals(fromSnapshotDisk.creationMethod(), DiskCreateOption.COPY); Assert.assertEquals(fromSnapshotDisk.sizeInGB(), 300); Assert.assertNull(fromSnapshotDisk.osType()); Assert.assertNotNull(fromSnapshotDisk.source()); Assert.assertEquals(fromSnapshotDisk.source().type(), CreationSourceType.COPIED_FROM_SNAPSHOT); Assert.assertTrue(fromSnapshotDisk.source().sourceId().equalsIgnoreCase(snapshot.id())); } }