org.jclouds.compute
Interface ComputeService

All Known Implementing Classes:
AWSEC2ComputeService, BaseComputeService, EC2ComputeService, GoGridComputeService, TerremarkVCloudComputeService

public interface ComputeService

Provides portable access to launching compute instances.

Author:
Adrian Cole, Ivan Meredith

Method Summary
 Set<? extends NodeMetadata> createNodesInGroup(String group, int count)
          Like createNodesInGroup(String,int,TemplateOptions), except that the options are default, as specified in templateOptions().
 Set<? extends NodeMetadata> createNodesInGroup(String group, int count, Template template)
          The compute api treats nodes as a group based on the name you specify.
 Set<? extends NodeMetadata> createNodesInGroup(String group, int count, TemplateOptions templateOptions)
          Like createNodesInGroup(String,int,Template), except that the template is default, equivalent to templateBuilder().any().options(templateOptions).
 void destroyNode(String id)
          destroy the node, given its id.
 Set<? extends NodeMetadata> destroyNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
          nodes matching the filter are treated as a logical set.
 ComputeServiceContext getContext()
           
 NodeMetadata getNodeMetadata(String id)
          Find a node by its id.
 Set<? extends Location> listAssignableLocations()
          The list locations command returns all the valid locations for nodes.
 Set<? extends Hardware> listHardwareProfiles()
          The list hardware profiles command shows you the options including virtual cpu count, memory, and disks.
 Set<? extends Image> listImages()
          Images define the operating system and metadata related to a node.
 Set<? extends ComputeMetadata> listNodes()
          all nodes available to the current user by id.
 Set<? extends NodeMetadata> listNodesDetailsMatching(com.google.common.base.Predicate<ComputeMetadata> filter)
          get all nodes including details such as image and ip addresses even if it incurs extra requests to the service.
 void rebootNode(String id)
          reboot the node, given its id.
 void rebootNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
          nodes matching the filter are treated as a logical set.
 void resumeNode(String id)
          resume the node from suspended state, given its id.
 void resumeNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
          nodes matching the filter are treated as a logical set.
 ExecResponse runScriptOnNode(String id, Statement runScript)
           
 ExecResponse runScriptOnNode(String id, Statement runScript, RunScriptOptions options)
          Run the script on a specific node
 ExecResponse runScriptOnNode(String id, String runScript)
           
 ExecResponse runScriptOnNode(String id, String runScript, RunScriptOptions options)
           
 Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter, Statement runScript)
           
 Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter, Statement runScript, RunScriptOptions options)
          Run the script on all nodes with the specific predicate.
 Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter, String runScript)
           
 Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter, String runScript, RunScriptOptions options)
           
 com.google.common.util.concurrent.ListenableFuture<ExecResponse> submitScriptOnNode(String id, Statement runScript, RunScriptOptions options)
          Run the script on a specific node in the background, typically as nohup
 void suspendNode(String id)
          suspend the node, given its id.
 void suspendNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
          nodes matching the filter are treated as a logical set.
 TemplateBuilder templateBuilder()
          Makes a new template builder for this service
 TemplateOptions templateOptions()
          Makes a new set of options for running nodes
 

Method Detail

getContext

ComputeServiceContext getContext()
Returns:
a reference to the context that created this ComputeService.

templateBuilder

TemplateBuilder templateBuilder()
Makes a new template builder for this service


templateOptions

TemplateOptions templateOptions()
Makes a new set of options for running nodes


listHardwareProfiles

Set<? extends Hardware> listHardwareProfiles()
The list hardware profiles command shows you the options including virtual cpu count, memory, and disks. cpu count is not a portable quantity across clouds, as they are measured differently. However, it is a good indicator of relative speed within a cloud. memory is measured in megabytes and disks in gigabytes.

Returns:
a map of hardware profiles by ID, conceding that in some clouds the "id" is not used.

listImages

Set<? extends Image> listImages()
Images define the operating system and metadata related to a node. In some clouds, Images are bound to a specific region, and their identifiers are different across these regions. For this reason, you should consider matching image requirements like operating system family with TemplateBuilder as opposed to choosing an image explicitly. The getImages() command returns a map of images by id.


listNodes

Set<? extends ComputeMetadata> listNodes()
all nodes available to the current user by id. If possible, the returned set will include NodeMetadata objects.


listAssignableLocations

Set<? extends Location> listAssignableLocations()
The list locations command returns all the valid locations for nodes. A location has a scope, which is typically region or zone. A region is a general area, like eu-west, where a zone is similar to a datacenter. If a location has a parent, that implies it is within that location. For example a location can be a rack, whose parent is likely to be a zone.


createNodesInGroup

Set<? extends NodeMetadata> createNodesInGroup(String group,
                                               int count,
                                               Template template)
                                               throws RunNodesException
The compute api treats nodes as a group based on the name you specify. Using this group, you can choose to operate one or many nodes as a logical unit without regard to the implementation details of the cloud.

The set that is returned will include credentials you can use to ssh into the nodes. The "key" part of the credentials is either a password or a private key. You have to inspect the value to determine this.

 if (node.getCredentials().key.startsWith("-----BEGIN RSA PRIVATE KEY-----"))
    // it is a private key, not a password.
 

Note. if all you want to do is execute a script at bootup, you should consider use of the runscript option.

If resources such as security groups are needed, they will be reused or created for you. Inbound port 22 will always be opened up.

Parameters:
group - - common identifier to group nodes by, cannot contain hyphens
count - - how many to fire up.
template - - how to configure the nodes
Returns:
all of the nodes the api was able to launch in a running state.
Throws:
RunNodesException - when there's a problem applying options to nodes. Note that successful and failed nodes are a part of this exception, so be sure to inspect this carefully.

createNodesInGroup

Set<? extends NodeMetadata> createNodesInGroup(String group,
                                               int count,
                                               TemplateOptions templateOptions)
                                               throws RunNodesException
Like createNodesInGroup(String,int,Template), except that the template is default, equivalent to templateBuilder().any().options(templateOptions).

Throws:
RunNodesException

createNodesInGroup

Set<? extends NodeMetadata> createNodesInGroup(String group,
                                               int count)
                                               throws RunNodesException
Like createNodesInGroup(String,int,TemplateOptions), except that the options are default, as specified in templateOptions().

Throws:
RunNodesException

resumeNode

void resumeNode(String id)
resume the node from suspended state, given its id.

note

affected nodes may not resume with the same IP address(es)


resumeNodesMatching

void resumeNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
nodes matching the filter are treated as a logical set. Using the resume command, you can save time by resumeing the nodes in parallel.

note

affected nodes may not resume with the same IP address(es)

Throws:
UnsupportedOperationException - if the underlying provider doesn't support suspend/resume
NoSuchElementException - if no nodes matched the predicate specified

suspendNode

void suspendNode(String id)
suspend the node, given its id. This will result in suspended state.

note

affected nodes may not resume with the same IP address(es)

Throws:
UnsupportedOperationException - if the underlying provider doesn't support suspend/resume

suspendNodesMatching

void suspendNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
nodes matching the filter are treated as a logical set. Using the suspend command, you can save time by suspending the nodes in parallel.

note

affected nodes may not resume with the same IP address(es)

Throws:
UnsupportedOperationException - if the underlying provider doesn't support suspend/resume
NoSuchElementException - if no nodes matched the predicate specified

destroyNode

void destroyNode(String id)
destroy the node, given its id. If it is the only node in a tag set, the dependent resources will also be destroyed.


destroyNodesMatching

Set<? extends NodeMetadata> destroyNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
nodes matching the filter are treated as a logical set. Using the delete command, you can save time by removing the nodes in parallel. When the last node in a set is destroyed, any indirect resources it uses, such as keypairs, are also destroyed.

Returns:
list of nodes destroyed

rebootNode

void rebootNode(String id)
reboot the node, given its id.


rebootNodesMatching

void rebootNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter)
nodes matching the filter are treated as a logical set. Using this command, you can save time by rebooting the nodes in parallel.

Throws:
NoSuchElementException - if no nodes matched the predicate specified

getNodeMetadata

NodeMetadata getNodeMetadata(String id)
Find a node by its id.


listNodesDetailsMatching

Set<? extends NodeMetadata> listNodesDetailsMatching(com.google.common.base.Predicate<ComputeMetadata> filter)
get all nodes including details such as image and ip addresses even if it incurs extra requests to the service.

Parameters:
filter - how to select the nodes you are interested in details on.

runScriptOnNodesMatching

Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter,
                                                                  String runScript)
                                                                  throws RunScriptOnNodesException
Throws:
RunScriptOnNodesException
See Also:
runScriptOnNodesMatching(Predicate, Statement, RunScriptOptions)

runScriptOnNodesMatching

Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter,
                                                                  Statement runScript)
                                                                  throws RunScriptOnNodesException
Throws:
RunScriptOnNodesException
See Also:
runScriptOnNodesMatching(Predicate, Statement, RunScriptOptions)

runScriptOnNodesMatching

Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter,
                                                                  String runScript,
                                                                  RunScriptOptions options)
                                                                  throws RunScriptOnNodesException
Throws:
RunScriptOnNodesException
See Also:
runScriptOnNodesMatching(Predicate, Statement, RunScriptOptions)

runScriptOnNodesMatching

Map<? extends NodeMetadata,ExecResponse> runScriptOnNodesMatching(com.google.common.base.Predicate<NodeMetadata> filter,
                                                                  Statement runScript,
                                                                  RunScriptOptions options)
                                                                  throws RunScriptOnNodesException
Run the script on all nodes with the specific predicate.

Parameters:
filter - Predicate-based filter to define on which nodes the script is to be executed
runScript - statement containing the script to run
options - nullable options to how to run the script, whether to override credentials
Returns:
map with node identifiers and corresponding responses
Throws:
NoSuchElementException - if no nodes matched the predicate specified
RunScriptOnNodesException - if anything goes wrong during script execution
See Also:
NodePredicates.runningInGroup(String), Statements

runScriptOnNode

ExecResponse runScriptOnNode(String id,
                             Statement runScript,
                             RunScriptOptions options)
Run the script on a specific node

Parameters:
id - node the script is to be executed on
runScript - statement containing the script to run
options - nullable options to how to run the script, whether to override credentials
Returns:
map with node identifiers and corresponding responses
Throws:
NoSuchElementException - if the node is not found
IllegalStateException - if the node is not in running state
ScriptStillRunningException - if the script was still running after ComputeServiceConstants.Timeouts.scriptComplete
See Also:
NodePredicates.runningInGroup(String), Statements

submitScriptOnNode

@Beta
com.google.common.util.concurrent.ListenableFuture<ExecResponse> submitScriptOnNode(String id,
                                                                                         Statement runScript,
                                                                                         RunScriptOptions options)
Run the script on a specific node in the background, typically as nohup

Parameters:
id - node the script is to be executed on
runScript - statement containing the script to run
options - nullable options to how to run the script, whether to override credentials
Returns:
map with node identifiers and corresponding responses
Throws:
NoSuchElementException - if the node is not found
IllegalStateException - if the node is not in running state
See Also:
NodePredicates.runningInGroup(String), Statements

runScriptOnNode

ExecResponse runScriptOnNode(String id,
                             Statement runScript)
See Also:
runScriptOnNode(String, Statement, RunScriptOptions)

runScriptOnNode

ExecResponse runScriptOnNode(String id,
                             String runScript,
                             RunScriptOptions options)
See Also:
runScriptOnNode(String, Statement, RunScriptOptions), Statements.exec(java.lang.String)

runScriptOnNode

ExecResponse runScriptOnNode(String id,
                             String runScript)
See Also:
runScriptOnNode(String, String, RunScriptOptions)


Copyright © 2009-2012 jclouds. All Rights Reserved.