/** * 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.apigeneration.Beta; import com.microsoft.azure.management.apigeneration.Fluent; import rx.Observable; /** * Virtual machine encryption related operations. */ @Fluent public interface VirtualMachineEncryption { /** * Enable encryption for virtual machine disks. * * @param keyVaultId resource ID of the key vault to store the disk encryption key * @param aadClientId client ID of an AAD application which has permission to the key vault * @param aadSecret client secret corresponding to the aadClientId * * @return observable that emits current volume encryption status */ @Beta Observable<DiskVolumeEncryptionMonitor> enableAsync(String keyVaultId, String aadClientId, String aadSecret); /** * Enable encryption for Windows virtual machine disks. * * @param encryptionSettings encryption settings for windows virtual machine * @return observable that emits current volume encryption status */ @Beta Observable<DiskVolumeEncryptionMonitor> enableAsync(WindowsVMDiskEncryptionConfiguration encryptionSettings); /** * Enable encryption for Linux virtual machine disks. * * @param encryptionSettings encryption settings for windows virtual machine * * @return observable that emits current volume encryption status */ @Beta Observable<DiskVolumeEncryptionMonitor> enableAsync(LinuxVMDiskEncryptionConfiguration encryptionSettings); /** * Disable encryption for virtual machine disks. * @param volumeType volume type to disable encryption * @return observable that emits current volume decryption status */ @Beta Observable<DiskVolumeEncryptionMonitor> disableAsync(final DiskVolumeType volumeType); /** * @return observable that emits current volume decryption status */ @Beta Observable<DiskVolumeEncryptionMonitor> getMonitorAsync(); /** * Enable encryption for virtual machine disks. * * @param keyVaultId resource ID of the key vault to store the disk encryption key * @param aadClientId client ID of an AAD application which has permission to the key vault * @param aadSecret client secret corresponding to the aadClientId * * @return current volume decryption status */ DiskVolumeEncryptionMonitor enable(String keyVaultId, String aadClientId, String aadSecret); /** * Enable encryption for Windows virtual machine disks. * * @param encryptionSettings encryption settings for windows virtual machine * * @return current volume encryption status */ DiskVolumeEncryptionMonitor enable(WindowsVMDiskEncryptionConfiguration encryptionSettings); /** * Enable encryption for Linux virtual machine disks. * * @param encryptionSettings encryption settings for windows virtual machine * * @return current volume encryption status */ DiskVolumeEncryptionMonitor enable(LinuxVMDiskEncryptionConfiguration encryptionSettings); /** * Disable encryption for virtual machine disks. * @param volumeType volume type to disable encryption * * @return current volume encryption status */ DiskVolumeEncryptionMonitor disable(final DiskVolumeType volumeType); /** * @return current volume decryption status */ DiskVolumeEncryptionMonitor getMonitor(); }