All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jclouds.azurecompute.arm.compute.options.AzureTemplateOptions Maven / Gradle / Ivy

The newest version!
/*
 * 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.arm.compute.options;

import static shaded.com.google.common.base.Preconditions.checkNotNull;

import java.util.List;

import org.jclouds.azurecompute.arm.domain.AvailabilitySet;
import org.jclouds.azurecompute.arm.domain.DataDisk;
import org.jclouds.azurecompute.arm.domain.OSProfile.WindowsConfiguration;
import org.jclouds.azurecompute.arm.domain.Secrets;
import org.jclouds.azurecompute.arm.domain.StorageAccountType;
import org.jclouds.compute.options.TemplateOptions;

import shaded.com.google.common.base.MoreObjects;
import shaded.com.google.common.base.Objects;
import shaded.com.google.common.collect.ImmutableList;

/**
 * Azure ARM custom options
 */
public class AzureTemplateOptions extends TemplateOptions implements Cloneable {

   private AvailabilitySet availabilitySet;
   private String availabilitySetName;
   private List dataDisks = ImmutableList.of();
   private String resourceGroup;
   private List ipOptions = ImmutableList.of();
   private WindowsConfiguration windowsConfiguration;
   private List secrets = ImmutableList.of();
   private String customData;
   private StorageAccountType osDiskStorageType = StorageAccountType.STANDARD_LRS;
   private String planPublisher;
   private String planName;
   private String planProduct;

   /**
    * Sets the availability set where the nodes will be configured. If it does
    * not exist jclouds will create a new one with the given configuration.
    */
   public AzureTemplateOptions availabilitySet(AvailabilitySet availabilitySet) {
      this.availabilitySet = availabilitySet;
      return this;
   }

   /**
    * Sets the availability set where the nodes will be configured. The
    * availability set must exist.
    */
   public AzureTemplateOptions availabilitySet(String availabilitySetName) {
      this.availabilitySetName = availabilitySetName;
      return this;
   }

   /**
    * The resource group where the new resources will be created.
    */
   public AzureTemplateOptions resourceGroup(String resourceGroup) {
      this.resourceGroup = resourceGroup;
      return this;
   }

   public AzureTemplateOptions dataDisks(Iterable dataDisks) {
      for (DataDisk dataDisk : checkNotNull(dataDisks, "dataDisks"))
         checkNotNull(dataDisk, "all dataDisks must be non-empty");
      this.dataDisks = ImmutableList.copyOf(dataDisks);
      return this;
   }

   public AzureTemplateOptions dataDisks(DataDisk... dataDisks) {
      return dataDisks(ImmutableList.copyOf(checkNotNull(dataDisks, "dataDisks")));
   }

   /**
    * Configure the NICs that will be attached to the created nodes.
    * 

* Note that the number of NICs that can be attached depends on the size of * the virtual machine, and that the guest operating system needs to be * prepared to set up all the configured interfaces. *

* Depending on the image being used, a cloud-init or bootstrap script might * be needed to make the interface setup. */ public AzureTemplateOptions ipOptions(Iterable ipOptions) { for (IpOptions ipOption : checkNotNull(ipOptions, "ipOptions")) checkNotNull(ipOption, "all ipOptions must be non-empty"); this.ipOptions = ImmutableList.copyOf(ipOptions); return this; } /** * @see {@link AzureTemplateOptions#ipOptions(Iterable) */ public AzureTemplateOptions ipOptions(IpOptions... ipOptions) { return ipOptions(ImmutableList.copyOf(checkNotNull(ipOptions, "ipOptions"))); } /** * Windows configuration parameters * * @see docs */ public AzureTemplateOptions windowsConfiguration(WindowsConfiguration windowsConfiguration) { this.windowsConfiguration = windowsConfiguration; return this; } /** * Import certificates in the Windows Certificate Store * * @see docs */ public AzureTemplateOptions secrets(Iterable secrets) { for (Secrets secret : checkNotNull(secrets, "secrets")) checkNotNull(secret, "secrets can not be empty"); this.secrets = ImmutableList.copyOf(secrets); return this; } /** * Custom data (for cloud-init) for the Azure ARM API */ public AzureTemplateOptions customData(String customData) { this.customData = customData; return this; } public AzureTemplateOptions osDiskStorageType(StorageAccountType osDiskStorageType) { this.osDiskStorageType = osDiskStorageType; return this; } public AzureTemplateOptions planPublisher(String planPublisher) { this.planPublisher = planPublisher; return this; } public AzureTemplateOptions planName(String planName) { this.planName = planName; return this; } public AzureTemplateOptions planProduct(String planProduct) { this.planProduct = planProduct; return this; } public AvailabilitySet getAvailabilitySet() { return availabilitySet; } public String getAvailabilitySetName() { return availabilitySetName; } public List getDataDisks() { return dataDisks; } public String getResourceGroup() { return resourceGroup; } public List getIpOptions() { return ipOptions; } public WindowsConfiguration getWindowsConfiguration() { return windowsConfiguration; } public List getSecrets() { return secrets; } public String getCustomData() { return customData; } public StorageAccountType getOsDiskStorageType() { return osDiskStorageType; } public String getPlanPublisher() { return planPublisher; } public String getPlanName() { return planName; } public String getPlanProduct() { return planProduct; } @Override public AzureTemplateOptions clone() { AzureTemplateOptions options = new AzureTemplateOptions(); copyTo(options); return options; } @Override public void copyTo(TemplateOptions to) { super.copyTo(to); if (to instanceof AzureTemplateOptions) { AzureTemplateOptions eTo = AzureTemplateOptions.class.cast(to); eTo.availabilitySet(availabilitySet); eTo.availabilitySet(availabilitySetName); eTo.dataDisks(dataDisks); eTo.resourceGroup(resourceGroup); eTo.ipOptions(ipOptions); eTo.windowsConfiguration(windowsConfiguration); eTo.secrets(secrets); eTo.customData(customData); eTo.osDiskStorageType(osDiskStorageType); eTo.planPublisher(planPublisher); eTo.planName(planName); eTo.planProduct(planProduct); } } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof AzureTemplateOptions)) return false; if (!super.equals(o)) return false; AzureTemplateOptions that = (AzureTemplateOptions) o; return Objects.equal(availabilitySetName, that.availabilitySetName) && Objects.equal(resourceGroup, that.resourceGroup) && Objects.equal(availabilitySet, that.availabilitySet) && Objects.equal(dataDisks, that.dataDisks) && Objects.equal(ipOptions, that.ipOptions) && Objects.equal(windowsConfiguration, that.windowsConfiguration) && Objects.equal(secrets, that.secrets) && Objects.equal(this.customData, that.customData) && Objects.equal(this.planPublisher, that.planPublisher) && Objects.equal(this.planName, that.planName) && Objects.equal(this.planProduct, that.planProduct); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), availabilitySet, availabilitySetName, dataDisks, resourceGroup, ipOptions, customData, planPublisher, planName, planProduct); } @Override public MoreObjects.ToStringHelper string() { MoreObjects.ToStringHelper toString = super.string(); if (availabilitySet != null) toString.add("availabilitySet", availabilitySet); if (availabilitySetName != null) toString.add("availabilitySetName", availabilitySetName); if (!dataDisks.isEmpty()) toString.add("dataDisks", dataDisks); if (resourceGroup != null) toString.add("resourceGroup", resourceGroup); if (!ipOptions.isEmpty()) toString.add("ipOptions", ipOptions); if (windowsConfiguration != null) toString.add("windowsConfiguration", windowsConfiguration); if (!secrets.isEmpty()) toString.add("secrets", secrets); if (customData != null) toString.add("customData", customData); if (planPublisher != null) toString.add("publisher", planPublisher); if (planName != null) toString.add("planName", planName); if (planProduct != null) toString.add("planProduct", planProduct); return toString; } public static class Builder { /** * @see AzureTemplateOptions#availabilitySet(AvailabilitySet) */ public static AzureTemplateOptions availabilitySet(AvailabilitySet availabilitySet) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.availabilitySet(availabilitySet); } /** * @see AzureTemplateOptions#availabilitySet(String) */ public static AzureTemplateOptions availabilitySet(String availabilitySetName) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.availabilitySet(availabilitySetName); } /** * @see AzureTemplateOptions#dataDisks(DataDisk...) */ public static AzureTemplateOptions dataDisks(DataDisk... dataDisks) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.dataDisks(dataDisks); } /** * @see AzureTemplateOptions#dataDisks(Iterable) */ public static AzureTemplateOptions dataDisks(Iterable dataDisks) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.dataDisks(dataDisks); } /** * @see AzureTemplateOptions#resourceGroup(String) */ public static AzureTemplateOptions resourceGroup(String resourceGroup) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.resourceGroup(resourceGroup); } /** * @see AzureTemplateOptions#ipOptions(IpOptions...) */ public static AzureTemplateOptions ipOptions(IpOptions... ipOptions) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.ipOptions(ipOptions); } /** * @see AzureTemplateOptions#ipOptions(Iterable) */ public static AzureTemplateOptions ipOptions(Iterable ipOptions) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.ipOptions(ipOptions); } /** * @see AzureTemplateOptions#windowsConfiguration(WindowsConfiguration) */ public static AzureTemplateOptions windowsConfiguration(WindowsConfiguration windowsConfiguration) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.windowsConfiguration(windowsConfiguration); } /** * @see AzureTemplateOptions#secrets(Iterable) */ public static AzureTemplateOptions secrets(Iterable secrets) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.secrets(secrets); } /** * @see AzureTemplateOptions#customData(String) */ public static AzureTemplateOptions customData(String customData) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.customData(customData); } /** * @see AzureTemplateOptions#osDiskStorageType(StorageAccountType) */ public static AzureTemplateOptions osDiskStorageType(StorageAccountType osDiskStorageType) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.osDiskStorageType(osDiskStorageType); } /** * @see AzureTemplateOptions#planPublisher(String) */ public static AzureTemplateOptions planPublisher(String planPublisher) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.planPublisher(planPublisher); } /** * @see AzureTemplateOptions#planName(String) */ public static AzureTemplateOptions planName(String planName) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.planName(planName); } /** * @see AzureTemplateOptions#planProduct(String) */ public static AzureTemplateOptions planProduct(String planProduct) { AzureTemplateOptions options = new AzureTemplateOptions(); return options.planProduct(planProduct); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy