package com.microsoft.azure.management.compute.implementation;
import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.AzureResponseBuilder;
import com.microsoft.azure.credentials.AzureTokenCredentials;
import com.microsoft.azure.management.apigeneration.Beta;
import com.microsoft.azure.management.compute.AvailabilitySets;
import com.microsoft.azure.management.compute.ComputeSkus;
import com.microsoft.azure.management.compute.ComputeUsages;
import com.microsoft.azure.management.compute.Disks;
import com.microsoft.azure.management.compute.Galleries;
import com.microsoft.azure.management.compute.GalleryImageVersions;
import com.microsoft.azure.management.compute.GalleryImages;
import com.microsoft.azure.management.compute.Snapshots;
import com.microsoft.azure.management.compute.VirtualMachineCustomImages;
import com.microsoft.azure.management.compute.VirtualMachineExtensionImages;
import com.microsoft.azure.management.compute.VirtualMachineImages;
import com.microsoft.azure.management.compute.VirtualMachineScaleSets;
import com.microsoft.azure.management.compute.VirtualMachines;
import com.microsoft.azure.management.graphrbac.implementation.GraphRbacManager;
import com.microsoft.azure.management.network.implementation.NetworkManager;
import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable;
import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl;
import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager;
import com.microsoft.azure.management.resources.fluentcore.utils.ProviderRegistrationInterceptor;
import com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor;
import com.microsoft.azure.management.storage.implementation.StorageManager;
import com.microsoft.azure.serializer.AzureJacksonAdapter;
import com.microsoft.rest.RestClient;
public final class ComputeManager extends Manager<ComputeManager, ComputeManagementClientImpl> {
private StorageManager storageManager;
private NetworkManager networkManager;
private GraphRbacManager rbacManager;
private AvailabilitySets availabilitySets;
private VirtualMachines virtualMachines;
private VirtualMachineImages virtualMachineImages;
private VirtualMachineExtensionImages virtualMachineExtensionImages;
private VirtualMachineScaleSets virtualMachineScaleSets;
private ComputeUsages computeUsages;
private VirtualMachineCustomImages virtualMachineCustomImages;
private Disks disks;
private Snapshots snapshots;
private ComputeSkus computeSkus;
private Galleries galleries;
private GalleryImages galleryImages;
private GalleryImageVersions galleryImageVersions;
public static Configurable configure() {
return new ComputeManager.ConfigurableImpl();
}
public static ComputeManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
return new ComputeManager(new RestClient.Builder()
.withBaseUrl(credentials.environment(), AzureEnvironment.Endpoint.RESOURCE_MANAGER)
.withCredentials(credentials)
.withSerializerAdapter(new AzureJacksonAdapter())
.withResponseBuilderFactory(new AzureResponseBuilder.Factory())
.withInterceptor(new ProviderRegistrationInterceptor(credentials))
.withInterceptor(new ResourceManagerThrottlingInterceptor())
.build(), subscriptionId);
}
public static ComputeManager authenticate(RestClient restClient, String subscriptionId) {
return new ComputeManager(restClient, subscriptionId);
}
public interface Configurable extends AzureConfigurable<Configurable> {
ComputeManager authenticate(AzureTokenCredentials credentials, String subscriptionId);
}
private static final class ConfigurableImpl extends AzureConfigurableImpl<Configurable> implements Configurable {
@Override
public ComputeManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
return ComputeManager.authenticate(buildRestClient(credentials), subscriptionId);
}
}
private ComputeManager(RestClient restClient, String subscriptionId) {
super(
restClient,
subscriptionId,
new ComputeManagementClientImpl(restClient).withSubscriptionId(subscriptionId));
storageManager = StorageManager.authenticate(restClient, subscriptionId);
networkManager = NetworkManager.authenticate(restClient, subscriptionId);
rbacManager = GraphRbacManager.authenticate(restClient, ((AzureTokenCredentials) (restClient.credentials())).domain());
}
public AvailabilitySets availabilitySets() {
if (availabilitySets == null) {
availabilitySets = new AvailabilitySetsImpl(this);
}
return availabilitySets;
}
public VirtualMachines virtualMachines() {
if (virtualMachines == null) {
virtualMachines = new VirtualMachinesImpl(
this,
storageManager,
networkManager,
rbacManager);
}
return virtualMachines;
}
public VirtualMachineImages virtualMachineImages() {
if (virtualMachineImages == null) {
virtualMachineImages = new VirtualMachineImagesImpl(new VirtualMachinePublishersImpl(super.innerManagementClient.virtualMachineImages(),
super.innerManagementClient.virtualMachineExtensionImages()),
super.innerManagementClient.virtualMachineImages());
}
return virtualMachineImages;
}
public VirtualMachineExtensionImages virtualMachineExtensionImages() {
if (virtualMachineExtensionImages == null) {
virtualMachineExtensionImages = new VirtualMachineExtensionImagesImpl(new VirtualMachinePublishersImpl(super.innerManagementClient.virtualMachineImages(),
super.innerManagementClient.virtualMachineExtensionImages()));
}
return virtualMachineExtensionImages;
}
public VirtualMachineScaleSets virtualMachineScaleSets() {
if (virtualMachineScaleSets == null) {
virtualMachineScaleSets = new VirtualMachineScaleSetsImpl(
this,
storageManager,
networkManager,
this.rbacManager);
}
return virtualMachineScaleSets;
}
public ComputeUsages usages() {
if (computeUsages == null) {
computeUsages = new ComputeUsagesImpl(super.innerManagementClient);
}
return computeUsages;
}
public VirtualMachineCustomImages virtualMachineCustomImages() {
if (virtualMachineCustomImages == null) {
virtualMachineCustomImages = new VirtualMachineCustomImagesImpl(this);
}
return virtualMachineCustomImages;
}
public Disks disks() {
if (disks == null) {
disks = new DisksImpl(this);
}
return disks;
}
public Snapshots snapshots() {
if (snapshots == null) {
snapshots = new SnapshotsImpl(this);
}
return snapshots;
}
public ComputeSkus computeSkus() {
if (computeSkus == null) {
computeSkus = new ComputeSkusImpl(this);
}
return computeSkus;
}
@Beta(Beta.SinceVersion.V1_15_0)
public Galleries galleries() {
if (galleries == null) {
galleries = new GalleriesImpl(this);
}
return galleries;
}
@Beta(Beta.SinceVersion.V1_15_0)
public GalleryImages galleryImages() {
if (galleryImages == null) {
galleryImages = new GalleryImagesImpl(this);
}
return galleryImages;
}
@Beta(Beta.SinceVersion.V1_15_0)
public GalleryImageVersions galleryImageVersions() {
if (galleryImageVersions == null) {
galleryImageVersions = new GalleryImageVersionsImpl(this);
}
return galleryImageVersions;
}
}