/**
* 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.implementation;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.compute.VirtualMachineScaleSet;
import com.microsoft.azure.management.compute.VirtualMachineScaleSetNetworkProfile;
import com.microsoft.azure.management.compute.VirtualMachineScaleSetOSDisk;
import com.microsoft.azure.management.compute.VirtualMachineScaleSetOSProfile;
import com.microsoft.azure.management.compute.VirtualMachineScaleSetStorageProfile;
import com.microsoft.azure.management.compute.VirtualMachineScaleSetVMProfile;
import com.microsoft.azure.management.compute.VirtualMachineScaleSets;
import com.microsoft.azure.management.network.implementation.NetworkManager;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.TopLevelModifiableResourcesImpl;
import com.microsoft.azure.management.storage.implementation.StorageManager;
import java.util.ArrayList;
/**
* The implementation for VirtualMachineScaleSets.
*/
@LangDefinition
public class VirtualMachineScaleSetsImpl
extends TopLevelModifiableResourcesImpl<
VirtualMachineScaleSet,
VirtualMachineScaleSetImpl,
VirtualMachineScaleSetInner,
VirtualMachineScaleSetsInner,
ComputeManager>
implements VirtualMachineScaleSets {
private final StorageManager storageManager;
private final NetworkManager networkManager;
VirtualMachineScaleSetsImpl(
ComputeManager computeManager,
StorageManager storageManager,
NetworkManager networkManager) {
super(computeManager.inner().virtualMachineScaleSets(), computeManager);
this.storageManager = storageManager;
this.networkManager = networkManager;
}
@Override
public void deallocate(String groupName, String name) {
this.inner().deallocate(groupName, name);
}
@Override
public void powerOff(String groupName, String name) {
this.inner().powerOff(groupName, name);
}
@Override
public void restart(String groupName, String name) {
this.inner().restart(groupName, name);
}
@Override
public void start(String groupName, String name) {
this.inner().start(groupName, name);
}
@Override
public void reimage(String groupName, String name) {
this.inner().reimage(groupName, name);
}
@Override
public VirtualMachineScaleSetImpl define(String name) {
return wrapModel(name);
}
@Override
protected VirtualMachineScaleSetImpl wrapModel(String name) {
VirtualMachineScaleSetInner inner = new VirtualMachineScaleSetInner();
inner.withVirtualMachineProfile(new VirtualMachineScaleSetVMProfile());
inner.virtualMachineProfile()
.withStorageProfile(new VirtualMachineScaleSetStorageProfile()
.withOsDisk(new VirtualMachineScaleSetOSDisk().withVhdContainers(new ArrayList<String>())));
inner.virtualMachineProfile()
.withOsProfile(new VirtualMachineScaleSetOSProfile());
inner.virtualMachineProfile()
.withNetworkProfile(new VirtualMachineScaleSetNetworkProfile());
inner.virtualMachineProfile()
.networkProfile()
.withNetworkInterfaceConfigurations(new ArrayList<VirtualMachineScaleSetNetworkConfigurationInner>());
VirtualMachineScaleSetNetworkConfigurationInner primaryNetworkInterfaceConfiguration =
new VirtualMachineScaleSetNetworkConfigurationInner()
.withPrimary(true)
.withName("primary-nic-cfg")
.withIpConfigurations(new ArrayList<VirtualMachineScaleSetIPConfigurationInner>());
primaryNetworkInterfaceConfiguration
.ipConfigurations()
.add(new VirtualMachineScaleSetIPConfigurationInner()
.withName("primary-nic-ip-cfg"));
inner.virtualMachineProfile()
.networkProfile()
.networkInterfaceConfigurations()
.add(primaryNetworkInterfaceConfiguration);
return new VirtualMachineScaleSetImpl(name,
inner,
this.manager(),
this.storageManager,
this.networkManager);
}
@Override
protected VirtualMachineScaleSetImpl wrapModel(VirtualMachineScaleSetInner inner) {
if (inner == null) {
return null;
}
return new VirtualMachineScaleSetImpl(inner.name(),
inner,
this.manager(),
this.storageManager,
this.networkManager);
}
}