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

org.jclouds.aws.ec2.options.RunInstancesOptions Maven / Gradle / Ivy

The newest version!
/**
 *
 * Copyright (C) 2010 Cloud Conscious, LLC. 
 *
 * ====================================================================
 * Licensed 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.options;

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

import org.jclouds.aws.ec2.domain.InstanceType;
import org.jclouds.aws.ec2.options.internal.BaseEC2RequestOptions;
import org.jclouds.encryption.internal.Base64;

/**
 * Contains options supported in the Form API for the RunInstances operation. 

* Usage

The recommended way to instantiate a RunInstancesOptions object is to statically * import RunInstancesOptions.Builder.* and invoke a static creation method followed by an instance * mutator (if needed): *

* * import static org.jclouds.aws.ec2.options.RunInstancesOptions.Builder.* *

* EC2Client connection = // get connection * Future instances = connection.runInstances(executableBy("123125").imageIds(1000, 1004)); * * * @author Adrian Cole * @see */ public class RunInstancesOptions extends BaseEC2RequestOptions { public static final RunInstancesOptions NONE = new RunInstancesOptions(); /** * The name of the key pair. */ public RunInstancesOptions withKeyName(String keyName) { formParameters.put("KeyName", checkNotNull(keyName, "keyName")); return this; } String getKeyName() { return getFirstFormOrNull("KeyName"); } /** * Attach multiple security groups */ public RunInstancesOptions withSecurityGroups(String... securityGroups) { indexFormValuesWithPrefix("SecurityGroup", securityGroups); return this; } /** * Attach multiple security groups */ public RunInstancesOptions withSecurityGroups(Iterable securityGroups) { indexFormValuesWithPrefix("SecurityGroup", securityGroups); return this; } /** * Attaches a single security group. Multiple calls to this method won't add more groups. * * @param securityGroup * name of an existing security group */ public RunInstancesOptions withSecurityGroup(String securityGroup) { return withSecurityGroups(securityGroup); } String getSecurityGroup() { return getFirstFormOrNull("SecurityGroup.1"); } /** * Specifies the name of an existing placement group you want to launch the instance into (for * cluster compute instances). * * @param placementGroup * name of an existing placement group */ public RunInstancesOptions inPlacementGroup(String placementGroup) { formParameters.put("Placement.GroupName", checkNotNull(placementGroup, "placementGroup")); return this; } String getPlacementGroup() { return getFirstFormOrNull("Placement.GroupName"); } /** * Specifies additional information to make available to the instance(s). */ public RunInstancesOptions withAdditionalInfo(String info) { formParameters.put("AdditionalInfo", checkNotNull(info, "info")); return this; } String getAdditionalInfo() { return getFirstFormOrNull("AdditionalInfo"); } /** * Unencoded data */ public RunInstancesOptions withUserData(byte[] unencodedData) { checkArgument(checkNotNull(unencodedData, "unencodedData").length <= 16 * 1024, "userData cannot be larger than 16kb"); formParameters.put("UserData", Base64.encodeBytes(unencodedData)); return this; } String getUserData() { return getFirstFormOrNull("UserData"); } /** * Specifies the instance type. default small; */ public RunInstancesOptions asType(String type) { formParameters.put("InstanceType", checkNotNull(type, "type")); return this; } String getType() { return getFirstFormOrNull("InstanceType"); } /** * The ID of the kernel with which to launch the instance. */ public RunInstancesOptions withKernelId(String kernelId) { formParameters.put("KernelId", checkNotNull(kernelId, "kernelId")); return this; } String getKernelId() { return getFirstFormOrNull("KernelId"); } /** * The ID of the RAM disk with which to launch the instance. Some kernels require additional * drivers at l aunch. Check the kernel requirements for information on whether you need to * specify a RAM disk. To find kernel requirements, go to th e Resource Center and search for the * kernel ID. */ public RunInstancesOptions withRamdisk(String ramDiskId) { formParameters.put("RamdiskId", checkNotNull(ramDiskId, "ramDiskId")); return this; } String getRamdiskId() { return getFirstFormOrNull("RamdiskId"); } /** * The virtual name. */ public RunInstancesOptions withVirtualName(String virtualName) { formParameters.put("BlockDeviceMapping.VirtualName", checkNotNull(virtualName, "virtualName")); return this; } String getVirtualName() { return getFirstFormOrNull("BlockDeviceMapping.VirtualName"); } /** * The device name (e.g., /dev/sdh). */ public RunInstancesOptions withDeviceName(String deviceName) { formParameters.put("BlockDeviceMapping.DeviceName", checkNotNull(deviceName, "deviceName")); return this; } String getDeviceName() { return getFirstFormOrNull("BlockDeviceMapping.DeviceName"); } /** * Enables monitoring for the instance. */ public RunInstancesOptions enableMonitoring() { formParameters.put("Monitoring.Enabled", "true"); return this; } String getMonitoringEnabled() { return getFirstFormOrNull("Monitoring.Enabled"); } /** * Specifies the subnet ID within which to launch the instance(s) for Amazon Virtual Private * Cloud. */ public RunInstancesOptions withSubnetId(String subnetId) { formParameters.put("SubnetId", checkNotNull(subnetId, "subnetId")); return this; } String getSubnetId() { return getFirstFormOrNull("SubnetId"); } public static class Builder { /** * @see RunInstancesOptions#withKeyName(String) */ public static RunInstancesOptions withKeyName(String keyName) { RunInstancesOptions options = new RunInstancesOptions(); return options.withKeyName(keyName); } /** * @see RunInstancesOptions#withSecurityGroup(String) */ public static RunInstancesOptions withSecurityGroup(String securityGroup) { RunInstancesOptions options = new RunInstancesOptions(); return options.withSecurityGroup(securityGroup); } /** * @see RunInstancesOptions#inPlacementGroup(String) */ public static RunInstancesOptions inPlacementGroup(String placementGroup) { RunInstancesOptions options = new RunInstancesOptions(); return options.inPlacementGroup(placementGroup); } /** * @see RunInstancesOptions#withAdditionalInfo(String) */ public static RunInstancesOptions withAdditionalInfo(String additionalInfo) { RunInstancesOptions options = new RunInstancesOptions(); return options.withAdditionalInfo(additionalInfo); } /** * @see RunInstancesOptions#withUserData(byte []) */ public static RunInstancesOptions withUserData(byte[] unencodedData) { RunInstancesOptions options = new RunInstancesOptions(); return options.withUserData(unencodedData); } /** * @see RunInstancesOptions#asType(InstanceType) */ public static RunInstancesOptions asType(String instanceType) { RunInstancesOptions options = new RunInstancesOptions(); return options.asType(instanceType); } /** * @see RunInstancesOptions#withKernelId(String) */ public static RunInstancesOptions withKernelId(String kernelId) { RunInstancesOptions options = new RunInstancesOptions(); return options.withKernelId(kernelId); } /** * @see RunInstancesOptions#withDeviceName(String) */ public static RunInstancesOptions withDeviceName(String deviceName) { RunInstancesOptions options = new RunInstancesOptions(); return options.withDeviceName(deviceName); } /** * @see RunInstancesOptions#enableMonitoring() */ public static RunInstancesOptions enableMonitoring() { RunInstancesOptions options = new RunInstancesOptions(); return options.enableMonitoring(); } /** * @see RunInstancesOptions#withSubnetId(String) */ public static RunInstancesOptions withSubnetId(String subnetId) { RunInstancesOptions options = new RunInstancesOptions(); return options.withSubnetId(subnetId); } /** * @see RunInstancesOptions#withRamdisk(String) */ public static RunInstancesOptions withRamdisk(String ramdiskId) { RunInstancesOptions options = new RunInstancesOptions(); return options.withRamdisk(ramdiskId); } /** * @see RunInstancesOptions#withVirtualName(String) */ public static RunInstancesOptions withVirtualName(String virtualName) { RunInstancesOptions options = new RunInstancesOptions(); return options.withVirtualName(virtualName); } } }