/** * 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.management.resources.fluentcore.arm.Region; import com.microsoft.rest.RestClient; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; public class VirtualMachineEncryptionOperationsTests extends ComputeManagementTest { private static String RG_NAME = ""; private static Region REGION = Region.US_EAST; @Override protected void initializeClients(RestClient restClient, String defaultSubscription, String domain) { RG_NAME = generateRandomResourceName("vmencryptst", 18); super.initializeClients(restClient, defaultSubscription, domain); } @Override protected void cleanUpResources() { resourceManager.resourceGroups().deleteByName(RG_NAME); } @Test @Ignore("Requires manually creating service principal and setting SP credentials in the test") public void canEncryptVirtualMachine() { // https://docs.microsoft.com/en-us/azure/security/azure-security-disk-encryption // // KeyVault Resource ID String keyVaultId = "KEY_VAULT_ID_HERE"; // Azure AD service principal client (application) ID String aadClientId = "AAD_APPLICATION_ID_HERE"; // Azure AD service principal client secret String aadSecret = "AAD_CLIENT_SECRET_HERE"; final String vmName1 = "myvm1"; final String publicIpDnsLabel = generateRandomResourceName("pip", 20); final String uname = "juser"; final String password = "123tEst!@|ac"; VirtualMachine virtualMachine = computeManager.virtualMachines() .define(vmName1) .withRegion(REGION) .withNewResourceGroup(RG_NAME) .withNewPrimaryNetwork("10.0.0.0/28") .withPrimaryPrivateIPAddressDynamic() .withNewPrimaryPublicIPAddress(publicIpDnsLabel) .withLatestLinuxImage("RedHat", "RHEL", "7.2") .withRootUsername(uname) .withRootPassword(password) .withSize(VirtualMachineSizeTypes.STANDARD_D5_V2) .withOSDiskCaching(CachingTypes.READ_WRITE) .create(); DiskVolumeEncryptionMonitor monitor1 = virtualMachine.diskEncryption().getMonitor(); Assert.assertNotNull(monitor1); Assert.assertNotNull(monitor1.osDiskStatus()); Assert.assertNotNull(monitor1.dataDiskStatus()); Assert.assertTrue(monitor1.osDiskStatus().equals(EncryptionStatus.NOT_ENCRYPTED)); Assert.assertTrue(monitor1.dataDiskStatus().equals(EncryptionStatus.NOT_ENCRYPTED)); DiskVolumeEncryptionMonitor monitor2 = virtualMachine .diskEncryption() .enable(keyVaultId, aadClientId, aadSecret); Assert.assertNotNull(monitor2); Assert.assertNotNull(monitor2.osDiskStatus()); Assert.assertNotNull(monitor2.dataDiskStatus()); monitor1.refresh(); Assert.assertTrue(monitor1.osDiskStatus().equals(monitor2.osDiskStatus())); Assert.assertTrue(monitor1.dataDiskStatus().equals(monitor2.dataDiskStatus())); monitor2.refresh(); Assert.assertTrue(monitor2.osDiskStatus().equals(EncryptionStatus.ENCRYPTION_INPROGRESS)); } }