hudson.plugins.ec2
Class EC2Cloud

java.lang.Object
  extended by hudson.model.AbstractModelObject
      extended by hudson.slaves.Cloud
          extended by hudson.plugins.ec2.EC2Cloud
All Implemented Interfaces:
hudson.ExtensionPoint, hudson.model.Describable<hudson.slaves.Cloud>, hudson.model.ModelObject, hudson.search.SearchableModelObject, hudson.search.SearchItem, hudson.security.AccessControlled

public class EC2Cloud
extends hudson.slaves.Cloud

Hudson's view of EC2.

Author:
Kohsuke Kawaguchi

Nested Class Summary
static class EC2Cloud.DescriptorImpl
           
 
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
hudson.ExtensionPoint.LegacyInstancesAreScopedToHudson
 
Field Summary
 int instanceCap
          Upper bound on how many instances we may provision.
 
Fields inherited from class hudson.slaves.Cloud
ALL, name, PROVISION
 
Constructor Summary
EC2Cloud(java.lang.String accessId, java.lang.String secretKey, java.lang.String privateKey, java.lang.String instanceCapStr, java.util.List<SlaveTemplate> templates)
           
 
Method Summary
 java.net.URL buildPresignedURL(java.lang.String path)
          Computes the presigned URL for the given S3 resource.
 boolean canProvision(hudson.model.Label label)
           
 com.xerox.amazonws.ec2.Jec2 connect()
          Connects to EC2 and returns Jec2, which can then be used to communicate with EC2.
 org.jets3t.service.S3Service connectS3()
          Connects to S3 and returns S3Service.
 int countCurrentEC2Slaves()
          Counts the number of instances in EC2 currently running.
 void doAttach(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp, java.lang.String id)
          Debug command to attach to a running instance.
 void doProvision(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp, java.lang.String ami)
           
static EC2Cloud get()
          Gets the first EC2Cloud instance configured in the current Hudson, or null if no such thing exists.
 java.lang.String getAccessId()
           
 java.lang.String getInstanceCapStr()
           
 com.xerox.amazonws.ec2.KeyPairInfo getKeyPair()
          Gets the KeyPairInfo used for the launch.
 hudson.plugins.ec2.EC2PrivateKey getPrivateKey()
           
 java.lang.String getSecretKey()
           
 SlaveTemplate getTemplate(hudson.model.Label label)
          Gets SlaveTemplate that has the matching Label.
 SlaveTemplate getTemplate(java.lang.String ami)
           
 java.util.List<SlaveTemplate> getTemplates()
           
 java.util.Collection<hudson.slaves.NodeProvisioner.PlannedNode> provision(hudson.model.Label label, int excessWorkload)
           
protected  java.lang.Object readResolve()
           
 
Methods inherited from class hudson.slaves.Cloud
all, checkPermission, getACL, getDescriptor, getDisplayName, getSearchUrl, hasPermission
 
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, makeSearchIndex, requirePOST, sendError, sendError, sendError, sendError, sendError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instanceCap

public final int instanceCap
Upper bound on how many instances we may provision.

Constructor Detail

EC2Cloud

@DataBoundConstructor
public EC2Cloud(java.lang.String accessId,
                                     java.lang.String secretKey,
                                     java.lang.String privateKey,
                                     java.lang.String instanceCapStr,
                                     java.util.List<SlaveTemplate> templates)
Method Detail

readResolve

protected java.lang.Object readResolve()

getAccessId

public java.lang.String getAccessId()

getSecretKey

public java.lang.String getSecretKey()

getPrivateKey

public hudson.plugins.ec2.EC2PrivateKey getPrivateKey()

getInstanceCapStr

public java.lang.String getInstanceCapStr()

getTemplates

public java.util.List<SlaveTemplate> getTemplates()

getTemplate

public SlaveTemplate getTemplate(java.lang.String ami)

getTemplate

public SlaveTemplate getTemplate(hudson.model.Label label)
Gets SlaveTemplate that has the matching Label.


getKeyPair

public com.xerox.amazonws.ec2.KeyPairInfo getKeyPair()
                                              throws com.xerox.amazonws.ec2.EC2Exception,
                                                     java.io.IOException
Gets the KeyPairInfo used for the launch.

Throws:
com.xerox.amazonws.ec2.EC2Exception
java.io.IOException

countCurrentEC2Slaves

public int countCurrentEC2Slaves()
                          throws com.xerox.amazonws.ec2.EC2Exception
Counts the number of instances in EC2 currently running.

This includes those instances that may be started outside Hudson.

Throws:
com.xerox.amazonws.ec2.EC2Exception

doAttach

public void doAttach(org.kohsuke.stapler.StaplerRequest req,
                     org.kohsuke.stapler.StaplerResponse rsp,
                     @QueryParameter
                     java.lang.String id)
              throws javax.servlet.ServletException,
                     java.io.IOException,
                     com.xerox.amazonws.ec2.EC2Exception
Debug command to attach to a running instance.

Throws:
javax.servlet.ServletException
java.io.IOException
com.xerox.amazonws.ec2.EC2Exception

doProvision

public void doProvision(org.kohsuke.stapler.StaplerRequest req,
                        org.kohsuke.stapler.StaplerResponse rsp,
                        @QueryParameter
                        java.lang.String ami)
                 throws javax.servlet.ServletException,
                        java.io.IOException
Throws:
javax.servlet.ServletException
java.io.IOException

provision

public java.util.Collection<hudson.slaves.NodeProvisioner.PlannedNode> provision(hudson.model.Label label,
                                                                                 int excessWorkload)
Specified by:
provision in class hudson.slaves.Cloud

canProvision

public boolean canProvision(hudson.model.Label label)
Specified by:
canProvision in class hudson.slaves.Cloud

get

public static EC2Cloud get()
Gets the first EC2Cloud instance configured in the current Hudson, or null if no such thing exists.


connect

public com.xerox.amazonws.ec2.Jec2 connect()
Connects to EC2 and returns Jec2, which can then be used to communicate with EC2.


connectS3

public org.jets3t.service.S3Service connectS3()
                                       throws org.jets3t.service.S3ServiceException
Connects to S3 and returns S3Service.

Throws:
org.jets3t.service.S3ServiceException

buildPresignedURL

public java.net.URL buildPresignedURL(java.lang.String path)
                               throws java.io.IOException,
                                      org.jets3t.service.S3ServiceException
Computes the presigned URL for the given S3 resource.

Parameters:
path - String like "/bucketName/folder/folder/abc.txt" that represents the resource to request.
Throws:
java.io.IOException
org.jets3t.service.S3ServiceException


Copyright © 2009. All Rights Reserved.