com.azure.resourcemanager.compute.implementation.VirtualMachineEncryptionImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-resourcemanager-compute Show documentation
Show all versions of azure-resourcemanager-compute Show documentation
This package contains Microsoft Azure Compute Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.resourcemanager.compute.implementation;
import com.azure.resourcemanager.compute.models.DiskVolumeEncryptionMonitor;
import com.azure.resourcemanager.compute.models.DiskVolumeType;
import com.azure.resourcemanager.compute.models.LinuxVMDiskEncryptionConfiguration;
import com.azure.resourcemanager.compute.models.OperatingSystemTypes;
import com.azure.resourcemanager.compute.models.VirtualMachine;
import com.azure.resourcemanager.compute.models.VirtualMachineEncryption;
import com.azure.resourcemanager.compute.models.WindowsVMDiskEncryptionConfiguration;
import reactor.core.publisher.Mono;
/** Implementation of VirtualMachineEncryption. */
class VirtualMachineEncryptionImpl implements VirtualMachineEncryption {
private final VirtualMachine virtualMachine;
private final VirtualMachineEncryptionHelper virtualMachineEncryptionHelper;
/**
* Creates VirtualMachineEncryptionImpl.
*
* @param virtualMachine virtual machine on which encryption related operations to be performed
*/
VirtualMachineEncryptionImpl(final VirtualMachine virtualMachine) {
this.virtualMachine = virtualMachine;
this.virtualMachineEncryptionHelper = new VirtualMachineEncryptionHelper(virtualMachine);
}
@Override
public Mono enableAsync(String keyVaultId, String aadClientId, String aadSecret) {
if (this.virtualMachine.osType() == OperatingSystemTypes.LINUX) {
return enableAsync(
new LinuxVMDiskEncryptionConfiguration(keyVaultId, aadClientId, aadSecret,
virtualMachine.manager().environment()));
} else {
return enableAsync(
new WindowsVMDiskEncryptionConfiguration(keyVaultId, aadClientId, aadSecret,
virtualMachine.manager().environment()));
}
}
@Override
public Mono enableAsync(String keyVaultId) {
if (this.virtualMachine.osType() == OperatingSystemTypes.LINUX) {
return enableAsync(
new LinuxVMDiskEncryptionConfiguration(keyVaultId, virtualMachine.manager().environment()));
} else {
return enableAsync(
new WindowsVMDiskEncryptionConfiguration(keyVaultId, virtualMachine.manager().environment()));
}
}
@Override
public Mono enableAsync(WindowsVMDiskEncryptionConfiguration encryptionSettings) {
return virtualMachineEncryptionHelper.enableEncryptionAsync(encryptionSettings);
}
@Override
public Mono enableAsync(LinuxVMDiskEncryptionConfiguration encryptionSettings) {
return virtualMachineEncryptionHelper.enableEncryptionAsync(encryptionSettings);
}
@Override
public Mono disableAsync(final DiskVolumeType volumeType) {
return virtualMachineEncryptionHelper.disableEncryptionAsync(volumeType);
}
@Override
public Mono getMonitorAsync() {
return new ProxyEncryptionMonitorImpl(this.virtualMachine).refreshAsync();
}
@Override
public DiskVolumeEncryptionMonitor enable(String keyVaultId, String aadClientId, String aadSecret) {
return enableAsync(keyVaultId, aadClientId, aadSecret).block();
}
@Override
public DiskVolumeEncryptionMonitor enable(String keyVaultId) {
return enableAsync(keyVaultId).block();
}
@Override
public DiskVolumeEncryptionMonitor enable(WindowsVMDiskEncryptionConfiguration encryptionSettings) {
return enableAsync(encryptionSettings).block();
}
@Override
public DiskVolumeEncryptionMonitor enable(LinuxVMDiskEncryptionConfiguration encryptionSettings) {
return enableAsync(encryptionSettings).block();
}
@Override
public DiskVolumeEncryptionMonitor disable(final DiskVolumeType volumeType) {
return disableAsync(volumeType).block();
}
@Override
public DiskVolumeEncryptionMonitor getMonitor() {
return getMonitorAsync().block();
}
}