blob: 6bca727307ee3ac834209c7ea532dd41e1c35e74 [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.aws.ec2.compute;
import static com.google.common.base.Objects.equal;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Strings.emptyToNull;
import java.util.Map;
import java.util.Set;
import org.jclouds.aws.ec2.options.RequestSpotInstancesOptions;
import org.jclouds.compute.options.TemplateOptions;
import org.jclouds.domain.LoginCredentials;
import org.jclouds.ec2.compute.options.EC2TemplateOptions;
import org.jclouds.ec2.domain.BlockDeviceMapping;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.rest.annotations.SinceApiVersion;
import org.jclouds.scriptbuilder.domain.Statement;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
/**
* Contains options supported in the {@code ComputeService#runNode} operation on
* the "ec2" provider. <h2>
* Usage</h2> The recommended way to instantiate a AWSEC2TemplateOptions object
* is to statically import AWSEC2TemplateOptions.* and invoke a static creation
* method followed by an instance mutator (if needed):
* <p/>
* <code>
* import static org.jclouds.aws.ec2.compute.options.AWSEC2TemplateOptions.Builder.*;
* <p/>
* ComputeService client = // get connection
* templateBuilder.options(inboundPorts(22, 80, 8080, 443));
* Set<? extends NodeMetadata> set = client.createNodesInGroup(tag, 2, templateBuilder.build());
* <code>
*/
public class AWSEC2TemplateOptions extends EC2TemplateOptions implements Cloneable {
@Override
public AWSEC2TemplateOptions clone() {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
copyTo(options);
return options;
}
@Override
public void copyTo(TemplateOptions to) {
super.copyTo(to);
if (to instanceof AWSEC2TemplateOptions) {
AWSEC2TemplateOptions eTo = AWSEC2TemplateOptions.class.cast(to);
if (getSubnetId() != null)
eTo.subnetId(getSubnetId());
if (getIAMInstanceProfileArn() != null)
eTo.iamInstanceProfileArn(getIAMInstanceProfileArn());
if (getIAMInstanceProfileName() != null)
eTo.iamInstanceProfileName(getIAMInstanceProfileName());
if (isMonitoringEnabled())
eTo.enableMonitoring();
if (!shouldAutomaticallyCreatePlacementGroup())
eTo.noPlacementGroup();
if (getPlacementGroup() != null)
eTo.placementGroup(getPlacementGroup());
if (getGroupIds().size() > 0)
eTo.securityGroupIds(getGroupIds());
if (getSpotPrice() != null)
eTo.spotPrice(getSpotPrice());
if (getSpotOptions() != null)
eTo.spotOptions(getSpotOptions());
if (getPrivateIpAddress() != null)
eTo.privateIpAddress(getPrivateIpAddress());
}
}
private boolean monitoringEnabled;
private String placementGroup = null;
private boolean noPlacementGroup;
private String subnetId;
private Float spotPrice;
private RequestSpotInstancesOptions spotOptions = RequestSpotInstancesOptions.NONE;
private Set<String> groupIds = ImmutableSet.of();
private String iamInstanceProfileArn;
private String iamInstanceProfileName;
private String privateIpAddress;
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
AWSEC2TemplateOptions that = AWSEC2TemplateOptions.class.cast(o);
return super.equals(that) && equal(this.monitoringEnabled, that.monitoringEnabled)
&& equal(this.placementGroup, that.placementGroup)
&& equal(this.noPlacementGroup, that.noPlacementGroup) && equal(this.subnetId, that.subnetId)
&& equal(this.spotPrice, that.spotPrice) && equal(this.spotOptions, that.spotOptions)
&& equal(this.groupIds, that.groupIds) && equal(this.iamInstanceProfileArn, that.iamInstanceProfileArn)
&& equal(this.iamInstanceProfileName, that.iamInstanceProfileName)
&& equal(this.privateIpAddress, that.privateIpAddress);
}
@Override
public int hashCode() {
return Objects.hashCode(super.hashCode(), monitoringEnabled, placementGroup, noPlacementGroup, subnetId,
spotPrice, spotOptions, groupIds, iamInstanceProfileArn, iamInstanceProfileName, privateIpAddress);
}
@Override
public ToStringHelper string() {
ToStringHelper toString = super.string();
if (monitoringEnabled)
toString.add("monitoringEnabled", monitoringEnabled);
toString.add("placementGroup", placementGroup);
if (noPlacementGroup)
toString.add("noPlacementGroup", noPlacementGroup);
toString.add("subnetId", subnetId);
toString.add("spotPrice", spotPrice);
if (spotOptions != RequestSpotInstancesOptions.NONE)
toString.add("spotOptions", spotOptions);
if (groupIds.size() != 0)
toString.add("groupIds", groupIds);
toString.add("iamInstanceProfileArn", iamInstanceProfileArn);
toString.add("iamInstanceProfileName", iamInstanceProfileName);
toString.add("privateIpAddress", privateIpAddress);
return toString;
}
public static final AWSEC2TemplateOptions NONE = new AWSEC2TemplateOptions();
/**
* Enable Cloudwatch monitoring
*
* @see CloudWatchClient
*/
public AWSEC2TemplateOptions enableMonitoring() {
this.monitoringEnabled = true;
return this;
}
/**
* Specifies the keypair used to run instances with
*/
public AWSEC2TemplateOptions placementGroup(String placementGroup) {
checkNotNull(emptyToNull(placementGroup), "use noPlacementGroup option instead of passing null");
checkState(!noPlacementGroup, "you cannot specify both options placementGroup and noPlacementGroup");
this.placementGroup = placementGroup;
return this;
}
/**
* Do not use a keypair on instances
*/
public AWSEC2TemplateOptions noPlacementGroup() {
checkState(placementGroup == null, "you cannot specify both options placementGroup and noPlacementGroup");
this.noPlacementGroup = true;
return this;
}
/**
* Specifies the subnetId used to run instances in
*/
public AWSEC2TemplateOptions subnetId(String subnetId) {
this.subnetId = checkNotNull(emptyToNull(subnetId), "subnetId must be defined");
return this;
}
/**
* @see org.jclouds.aws.ec2.options.AWSRunInstancesOptions#withIAMInstanceProfileArn(String)
*/
@SinceApiVersion("2012-06-01")
public AWSEC2TemplateOptions iamInstanceProfileArn(String arn) {
this.iamInstanceProfileArn = checkNotNull(emptyToNull(arn), "arn must be defined");
return this;
}
/**
* @see org.jclouds.aws.ec2.options.AWSRunInstancesOptions#withIAMInstanceProfileName(String)
*/
@SinceApiVersion("2012-06-01")
public AWSEC2TemplateOptions iamInstanceProfileName(String name) {
this.iamInstanceProfileName = checkNotNull(emptyToNull(name), "name must be defined");
return this;
}
public AWSEC2TemplateOptions privateIpAddress(String address) {
this.privateIpAddress = checkNotNull(emptyToNull(address), "address must be defined");
return this;
}
/**
* Specifies the maximum spot price to use
*/
public AWSEC2TemplateOptions spotPrice(Float spotPrice) {
this.spotPrice = spotPrice;
return this;
}
/**
* Options for starting spot instances
*/
public AWSEC2TemplateOptions spotOptions(RequestSpotInstancesOptions spotOptions) {
this.spotOptions = spotOptions != null ? spotOptions : RequestSpotInstancesOptions.NONE;
return this;
}
/**
*
* @see AWSEC2TemplateOptions#securityGroupIds(Iterable<String>)
*/
public AWSEC2TemplateOptions securityGroupIds(String... groupIds) {
return securityGroupIds(ImmutableSet.copyOf(groupIds));
}
/**
* Specifies the security group ids to be used for nodes with this template
*/
public AWSEC2TemplateOptions securityGroupIds(Iterable<String> groupIds) {
checkArgument(Iterables.size(groupIds) > 0, "you must specify at least one security group");
for (String groupId : groupIds)
checkNotNull(emptyToNull(groupId), "all security groups must be non-empty");
this.groupIds = ImmutableSet.copyOf(groupIds);
return this;
}
public Set<String> getGroupIds() {
return groupIds;
}
public static class Builder {
public static AWSEC2TemplateOptions overrideLoginUser(String user) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.overrideLoginUser(user);
}
public static AWSEC2TemplateOptions overrideLoginPassword(String password) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.overrideLoginPassword(password);
}
public static AWSEC2TemplateOptions overrideLoginPrivateKey(String privateKey) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.overrideLoginPrivateKey(privateKey);
}
public static AWSEC2TemplateOptions overrideAuthenticateSudo(boolean authenticateSudo) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.overrideAuthenticateSudo(authenticateSudo);
}
public static AWSEC2TemplateOptions overrideLoginCredentials(LoginCredentials credentials) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.overrideLoginCredentials(credentials);
}
/**
* @see AWSEC2TemplateOptions#securityGroupIds(Iterable<String>)
*/
public static AWSEC2TemplateOptions securityGroupIds(String... groupNames) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return AWSEC2TemplateOptions.class.cast(options.securityGroupIds(groupNames));
}
/**
* @see AWSEC2TemplateOptions#securityGroupIds(Iterable<String>)
*/
public static AWSEC2TemplateOptions securityGroupIds(Iterable<String> groupNames) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return AWSEC2TemplateOptions.class.cast(options.securityGroupIds(groupNames));
}
/**
* @see EC2TemplateOptions#blockDeviceMappings
*/
public static AWSEC2TemplateOptions blockDeviceMappings(Set<? extends BlockDeviceMapping> blockDeviceMappings) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.blockDeviceMappings(blockDeviceMappings);
}
/**
* @see EC2TemplateOptions#mapEBSSnapshotToDeviceName
*/
public static AWSEC2TemplateOptions mapEBSSnapshotToDeviceName(String deviceName, String snapshotId,
@Nullable Integer sizeInGib, boolean deleteOnTermination) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.mapEBSSnapshotToDeviceName(deviceName, snapshotId, sizeInGib, deleteOnTermination);
}
/**
* @see EC2TemplateOptions#mapNewVolumeToDeviceName
*/
public static AWSEC2TemplateOptions mapNewVolumeToDeviceName(String deviceName, int sizeInGib,
boolean deleteOnTermination) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.mapNewVolumeToDeviceName(deviceName, sizeInGib, deleteOnTermination);
}
/**
* @see EC2TemplateOptions#mapEphemeralDeviceToDeviceName
*/
public static AWSEC2TemplateOptions mapEphemeralDeviceToDeviceName(String deviceName, String virtualName) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.mapEphemeralDeviceToDeviceName(deviceName, virtualName);
}
/**
* @see EC2TemplateOptions#unmapDeviceNamed
*/
public static AWSEC2TemplateOptions unmapDeviceNamed(String deviceName) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.unmapDeviceNamed(deviceName);
}
/**
* @see AWSEC2TemplateOptions#securityGroups(Iterable<String>)
*/
public static AWSEC2TemplateOptions securityGroups(String... groupIds) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.securityGroups(groupIds);
}
/**
* @see AWSEC2TemplateOptions#securityGroups(Iterable<String>)
*/
public static AWSEC2TemplateOptions securityGroups(Iterable<String> groupIds) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.securityGroups(groupIds);
}
/**
* @see AWSEC2TemplateOptions#keyPair
*/
public static AWSEC2TemplateOptions keyPair(String keyPair) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.keyPair(keyPair);
}
/**
* @see AWSEC2TemplateOptions#userData
*/
public static AWSEC2TemplateOptions userData(byte[] unencodedData) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.userData(unencodedData);
}
/**
* @see AWSEC2TemplateOptions#noKeyPair
*/
public static AWSEC2TemplateOptions noKeyPair() {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.noKeyPair();
}
/**
* @see AWSEC2TemplateOptions#placementGroup
*/
public static AWSEC2TemplateOptions placementGroup(String placementGroup) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.placementGroup(placementGroup);
}
/**
* @see AWSEC2TemplateOptions#noPlacementGroup
*/
public static AWSEC2TemplateOptions noPlacementGroup() {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.noPlacementGroup();
}
/**
* @see AWSEC2TemplateOptions#enableMonitoring
*/
public static AWSEC2TemplateOptions enableMonitoring() {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.enableMonitoring();
}
// methods that only facilitate returning the correct object type
/**
* @see TemplateOptions#inboundPorts
*/
public static AWSEC2TemplateOptions inboundPorts(int... ports) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.inboundPorts(ports);
}
/**
* @see TemplateOptions#port
*/
public static AWSEC2TemplateOptions blockOnPort(int port, int seconds) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.blockOnPort(port, seconds);
}
/**
* @see TemplateOptions#installPrivateKey
*/
public static AWSEC2TemplateOptions installPrivateKey(String rsaKey) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.installPrivateKey(rsaKey);
}
/**
* @see TemplateOptions#authorizePublicKey
*/
public static AWSEC2TemplateOptions authorizePublicKey(String rsaKey) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.authorizePublicKey(rsaKey);
}
/**
* @see AWSEC2TemplateOptions#subnetId
*/
public static AWSEC2TemplateOptions subnetId(String subnetId) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.subnetId(subnetId);
}
/**
* @see AWSEC2TemplateOptions#iamInstanceProfileArn
*/
@SinceApiVersion("2012-06-01")
public static AWSEC2TemplateOptions iamInstanceProfileArn(String arn) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.iamInstanceProfileArn(arn);
}
/**
* @see AWSEC2TemplateOptions#iamInstanceProfileName
*/
@SinceApiVersion("2012-06-01")
public static AWSEC2TemplateOptions iamInstanceProfileName(String name) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.iamInstanceProfileName(name);
}
public static AWSEC2TemplateOptions privateIpAddress(String address) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.privateIpAddress(address);
}
/**
* @see AWSEC2TemplateOptions#spotPrice
*/
public static AWSEC2TemplateOptions spotPrice(Float spotPrice) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.spotPrice(spotPrice);
}
/**
* @see AWSEC2TemplateOptions#spotOptions
*/
public static AWSEC2TemplateOptions spotOptions(RequestSpotInstancesOptions spotOptions) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.spotOptions(spotOptions);
}
/**
* @see TemplateOptions#userMetadata(Map)
*/
public static AWSEC2TemplateOptions userMetadata(Map<String, String> userMetadata) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return AWSEC2TemplateOptions.class.cast(options.userMetadata(userMetadata));
}
/**
* @see TemplateOptions#userMetadata(String, String)
*/
public static AWSEC2TemplateOptions userMetadata(String key, String value) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return AWSEC2TemplateOptions.class.cast(options.userMetadata(key, value));
}
public static AWSEC2TemplateOptions blockUntilRunning(boolean blockUntilRunning) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return options.blockUntilRunning(blockUntilRunning);
}
/**
* @see TemplateOptions#nodeNames(Iterable)
*/
public static AWSEC2TemplateOptions nodeNames(Iterable<String> nodeNames) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return AWSEC2TemplateOptions.class.cast(options.nodeNames(nodeNames));
}
/**
* @see TemplateOptions#networks(Iterable)
*/
public static AWSEC2TemplateOptions networks(Iterable<String> networks) {
AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
return AWSEC2TemplateOptions.class.cast(options.networks(networks));
}
}
// methods that only facilitate returning the correct object type
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions blockDeviceMappings(Iterable<? extends BlockDeviceMapping> blockDeviceMappings) {
return AWSEC2TemplateOptions.class.cast(super.blockDeviceMappings(blockDeviceMappings));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions userMetadata(Map<String, String> userMetadata) {
return AWSEC2TemplateOptions.class.cast(super.userMetadata(userMetadata));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions userMetadata(String key, String value) {
return AWSEC2TemplateOptions.class.cast(super.userMetadata(key, value));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions nodeNames(Iterable<String> nodeNames) {
return AWSEC2TemplateOptions.class.cast(super.nodeNames(nodeNames));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions networks(Iterable<String> networks) {
return AWSEC2TemplateOptions.class.cast(super.networks(networks));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions keyPair(String keyPair) {
return AWSEC2TemplateOptions.class.cast(super.keyPair(keyPair));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions mapEBSSnapshotToDeviceName(String deviceName, String snapshotId, Integer sizeInGib,
boolean deleteOnTermination) {
return AWSEC2TemplateOptions.class.cast(super.mapEBSSnapshotToDeviceName(deviceName, snapshotId, sizeInGib,
deleteOnTermination));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions mapEphemeralDeviceToDeviceName(String deviceName, String virtualName) {
return AWSEC2TemplateOptions.class.cast(super.mapEphemeralDeviceToDeviceName(deviceName, virtualName));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions mapNewVolumeToDeviceName(String deviceName, int sizeInGib, boolean deleteOnTermination) {
return AWSEC2TemplateOptions.class.cast(super
.mapNewVolumeToDeviceName(deviceName, sizeInGib, deleteOnTermination));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions noKeyPair() {
return AWSEC2TemplateOptions.class.cast(super.noKeyPair());
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions securityGroups(Iterable<String> groupIds) {
return AWSEC2TemplateOptions.class.cast(super.securityGroups(groupIds));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions securityGroups(String... groupIds) {
return AWSEC2TemplateOptions.class.cast(super.securityGroups(groupIds));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions unmapDeviceNamed(String deviceName) {
return AWSEC2TemplateOptions.class.cast(super.unmapDeviceNamed(deviceName));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions userData(byte[] unencodedData) {
return AWSEC2TemplateOptions.class.cast(super.userData(unencodedData));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions blockOnPort(int port, int seconds) {
return AWSEC2TemplateOptions.class.cast(super.blockOnPort(port, seconds));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions inboundPorts(int... ports) {
return AWSEC2TemplateOptions.class.cast(super.inboundPorts(ports));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions authorizePublicKey(String publicKey) {
return AWSEC2TemplateOptions.class.cast(super.authorizePublicKey(publicKey));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions installPrivateKey(String privateKey) {
return AWSEC2TemplateOptions.class.cast(super.installPrivateKey(privateKey));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions blockUntilRunning(boolean blockUntilRunning) {
return AWSEC2TemplateOptions.class.cast(super.blockUntilRunning(blockUntilRunning));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions dontAuthorizePublicKey() {
return AWSEC2TemplateOptions.class.cast(super.dontAuthorizePublicKey());
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions nameTask(String name) {
return AWSEC2TemplateOptions.class.cast(super.nameTask(name));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions runAsRoot(boolean runAsRoot) {
return AWSEC2TemplateOptions.class.cast(super.runAsRoot(runAsRoot));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions runScript(Statement script) {
return AWSEC2TemplateOptions.class.cast(super.runScript(script));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions overrideLoginCredentials(LoginCredentials overridingCredentials) {
return AWSEC2TemplateOptions.class.cast(super.overrideLoginCredentials(overridingCredentials));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions overrideLoginPassword(String password) {
return AWSEC2TemplateOptions.class.cast(super.overrideLoginPassword(password));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions overrideLoginPrivateKey(String privateKey) {
return AWSEC2TemplateOptions.class.cast(super.overrideLoginPrivateKey(privateKey));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions overrideLoginUser(String loginUser) {
return AWSEC2TemplateOptions.class.cast(super.overrideLoginUser(loginUser));
}
/**
* {@inheritDoc}
*/
@Override
public AWSEC2TemplateOptions overrideAuthenticateSudo(boolean authenticateSudo) {
return AWSEC2TemplateOptions.class.cast(super.overrideAuthenticateSudo(authenticateSudo));
}
/**
* @return placementGroup to use when running the instance or null, to
* generate a placementGroup.
*/
public String getPlacementGroup() {
return placementGroup;
}
/**
* @return true (default) if we are supposed to use a placementGroup
*/
public boolean shouldAutomaticallyCreatePlacementGroup() {
return !noPlacementGroup;
}
/**
* @return true (default) if we are supposed to enable cloudwatch
*/
public boolean isMonitoringEnabled() {
return monitoringEnabled;
}
/**
* @return subnetId to use when running the instance or null.
*/
public String getSubnetId() {
return subnetId;
}
/**
* @return maximum spot price or null.
*/
public Float getSpotPrice() {
return spotPrice;
}
/**
* @return options for controlling spot instance requests.
*/
public RequestSpotInstancesOptions getSpotOptions() {
return spotOptions;
}
/**
* The Amazon resource name (ARN) of the IAM Instance Profile (IIP) to associate with the instance.
*
* @see org.jclouds.aws.ec2.options.AWSRunInstancesOptions#withIAMInstanceProfileArn(String)
*/
@SinceApiVersion("2012-06-01")
public String getIAMInstanceProfileArn() {
return iamInstanceProfileArn;
}
/**
* The name of the IAM Instance Profile (IIP) to associate with the instance.
*
* @see org.jclouds.aws.ec2.options.AWSRunInstancesOptions#withIAMInstanceProfileName(String)
*/
@SinceApiVersion("2012-06-01")
public String getIAMInstanceProfileName() {
return iamInstanceProfileName;
}
public String getPrivateIpAddress() {
return privateIpAddress;
}
}