blob: 5c28c23eba06a2318bffbadbd2b132eca048e8d9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jclouds.azurecompute.domain;
import static com.google.common.collect.ImmutableList.copyOf;
import java.net.URI;
import java.util.List;
import org.jclouds.javax.annotation.Nullable;
import com.google.auto.value.AutoValue;
/**
* @see <a href="https://msdn.microsoft.com/en-us/library/azure/jj157193.aspx">Role</a>
*/
@AutoValue
public abstract class Role {
@AutoValue
public abstract static class ConfigurationSet {
@AutoValue
public abstract static class InputEndpoint {
@AutoValue
public abstract static class LoadBalancerProbe {
public abstract String path();
public abstract int port();
public abstract String protocol();
LoadBalancerProbe() { // For AutoValue only!
}
public static LoadBalancerProbe create(final String path, final int port, final String protocol) {
return new AutoValue_Role_ConfigurationSet_InputEndpoint_LoadBalancerProbe(path, port, protocol);
}
}
public abstract int localPort();
public abstract String name();
public abstract Integer port();
public abstract String protocol();
@Nullable
public abstract String vip();
public abstract Boolean enableDirectServerReturn();
@Nullable
public abstract String loadBalancerName();
@Nullable
public abstract LoadBalancerProbe loadBalancerProbe();
@Nullable
public abstract Integer idleTimeoutInMinutes();
InputEndpoint() { // For AutoValue only!
}
public static InputEndpoint create(
final String name, final String protocol, final int localPort, final int port,
final String vip, final boolean enableDirectServerReturn, final String loadBalancerName,
final LoadBalancerProbe loadBalancerProbe, final Integer idleTimeoutInMinutes) {
return new AutoValue_Role_ConfigurationSet_InputEndpoint(localPort, name, port, protocol, vip,
enableDirectServerReturn, loadBalancerName, loadBalancerProbe, idleTimeoutInMinutes);
}
}
@AutoValue
public abstract static class SubnetName {
@Nullable
public abstract String name();
SubnetName() { // For AutoValue only!
}
public static SubnetName create(final String name) {
return new AutoValue_Role_ConfigurationSet_SubnetName(name);
}
}
@AutoValue
public abstract static class PublicIP {
public abstract String name();
public abstract int idleTimeoutInMinutes();
PublicIP() { // For AutoValue only!
}
public static PublicIP create(final String name, final int idleTimeoutInMinutes) {
return new AutoValue_Role_ConfigurationSet_PublicIP(name, idleTimeoutInMinutes);
}
}
public abstract String configurationSetType();
public abstract List<InputEndpoint> inputEndpoints();
@Nullable
public abstract List<SubnetName> subnetNames();
@Nullable
public abstract String staticVirtualNetworkIPAddress();
@Nullable
public abstract List<PublicIP> publicIPs();
@Nullable
public abstract String networkSecurityGroup();
ConfigurationSet() { // For AutoValue only!
}
public static ConfigurationSet create(
final String configurationSetType, final List<InputEndpoint> inputEndpoints,
final List<SubnetName> subnetNames, final String staticVirtualNetworkIPAddress,
final List<PublicIP> publicIPs, final String networkSecurityGroup) {
return new AutoValue_Role_ConfigurationSet(configurationSetType, inputEndpoints, subnetNames,
staticVirtualNetworkIPAddress, publicIPs, networkSecurityGroup);
}
}
@AutoValue
public abstract static class ResourceExtensionReference {
@AutoValue
public abstract static class ResourceExtensionParameterValue {
public abstract String key();
public abstract String value();
public abstract String type();
ResourceExtensionParameterValue() { // For AutoValue only!
}
public static ResourceExtensionParameterValue create(
final String key, final String value, final String type) {
return new AutoValue_Role_ResourceExtensionReference_ResourceExtensionParameterValue(key, value, type);
}
}
@Nullable public abstract String referenceName();
@Nullable public abstract String publisher();
@Nullable public abstract String name();
@Nullable public abstract String version();
@Nullable public abstract List<ResourceExtensionParameterValue> resourceExtensionParameterValues();
@Nullable public abstract String state();
ResourceExtensionReference() { // For AutoValue only!
}
public static ResourceExtensionReference create(
final String referenceName, final String publisher, final String name, final String version,
final List<ResourceExtensionParameterValue> resourceExtensionParameterValues, final String state) {
return new AutoValue_Role_ResourceExtensionReference(referenceName, publisher, name, version,
resourceExtensionParameterValues, state);
}
}
@AutoValue
public abstract static class OSVirtualHardDisk {
public abstract String hostCaching();
public abstract String diskName();
@Nullable
public abstract Integer lun();
@Nullable
public abstract Integer logicalDiskSizeInGB();
public abstract URI mediaLink();
@Nullable
public abstract String sourceImageName();
public abstract OSImage.Type os();
OSVirtualHardDisk() { // For AutoValue only!
}
public static OSVirtualHardDisk create(final String hostCaching, final String diskName, final Integer lun,
final Integer logicalDiskSizeInGB, final URI mediaLink, final String sourceImageName,
final OSImage.Type os) {
return new AutoValue_Role_OSVirtualHardDisk(hostCaching, diskName, lun, logicalDiskSizeInGB, mediaLink,
sourceImageName, os);
}
}
/**
* Represents the name of the Virtual Machine.
*/
public abstract String roleName();
/**
* Specifies the type of role that is used. For Virtual Machines, this must be PersistentVMRole.
*/
public abstract String roleType();
/**
* Specifies the name of the VM Image that was used to create the Virtual Machine.
*/
@Nullable
public abstract String vmImage();
/**
* Specifies the path to the VHD files that are associated with the VM Image.
*/
@Nullable
public abstract String mediaLocation();
/**
* Contains a collection of configuration sets that define system and application settings.
*/
public abstract List<ConfigurationSet> configurationSets();
/**
* Optional. Contains a collection of resource extensions that are installed on the Virtual Machine. This element is
* used if ProvisionGuestAgent is set to true.
*/
@Nullable
public abstract List<ResourceExtensionReference> resourceExtensionReferences();
/**
* Specifies the name of a collection of Virtual Machines. Virtual Machines specified in the same availability set
* are allocated to different nodes to maximize availability.
*/
@Nullable
public abstract String availabilitySetName();
/**
* Contains the parameters that were used to add a data disk to a Virtual Machine.
*/
@Nullable
public abstract List<DataVirtualHardDisk> dataVirtualHardDisks();
/**
* Contains the parameters that were used to create the operating system disk for a Virtual Machine.
*/
public abstract OSVirtualHardDisk osVirtualHardDisk();
/**
* Specifies the size of the Virtual Machine.
*/
public abstract RoleSize.Type roleSize();
/**
* Optional. Indicates whether the VM Agent is installed on the Virtual Machine. To run a resource extension in a
* Virtual Machine, this service must be installed.
*
* @return true or false
*/
@Nullable
public abstract Boolean provisionGuestAgent();
/**
* Specifies the read-only thumbprint of the certificate that is used with the HTTPS listener for WinRM.
*/
@Nullable
public abstract String defaultWinRmCertificateThumbprint();
public static Role create(final String roleName, final String roleType, final String vmImage,
final String mediaLocation, final List<ConfigurationSet> configurationSets,
final List<ResourceExtensionReference> resourceExtensionReferences,
final String availabilitySetName, final List<DataVirtualHardDisk> dataVirtualHardDisks,
final OSVirtualHardDisk osVirtualHardDisk, final RoleSize.Type roleSize, final Boolean provisionGuestAgent,
final String defaultWinRmCertificateThumbprint) {
return new AutoValue_Role(roleName, roleType, vmImage, mediaLocation, copyOf(configurationSets),
copyOf(resourceExtensionReferences), availabilitySetName, copyOf(dataVirtualHardDisks),
osVirtualHardDisk, roleSize, provisionGuestAgent, defaultWinRmCertificateThumbprint);
}
}