com.norbl.cbp.ppe
Class AmiPPE

java.lang.Object
  extended by com.norbl.cbp.ppe.AmiPPE
All Implemented Interfaces:
java.io.Serializable

public class AmiPPE
extends java.lang.Object
implements java.io.Serializable

Holds information about a public AMI that supports ppe. This supplements the information we can obtain from Image; note that the AMI tags are not publicly available even if image is public.

AmiPPEs are stored in S3 (publicly readable). After retrieving one, we get its Image (which is not serializable, boo, hiss) from AWS.

This class has static methods for creating, storing and retrien ving AmiPPEs.

See Also:
Serialized Form

Nested Class Summary
static class AmiPPE.ATag
           
static class AmiPPE.NoImageException
           
 
Field Summary
 java.lang.String amiID
           
 com.amazonaws.services.ec2.model.Image image
           
 double imageCharge
          $ per hour per instance.
 com.amazonaws.services.ec2.model.Region region
           
 java.util.HashMap<java.lang.String,java.lang.String> tags
          AMI tags.
 
Constructor Summary
AmiPPE(java.lang.String amiID, double imageCharge)
           
 
Method Summary
static java.util.List<AmiPPE> createAmiPPEs(com.amazonaws.services.ec2.AmazonEC2Client ec2Client, java.lang.String[] amiIDs, double imageCharge)
          Uses getTags(java.util.List) which only works if the user is the ami owner.
static void createAmiPPEs(java.lang.String amiGroupName, java.lang.String[] amiIDs, double imageCharge)
           
static void createAndUploadAmiPPEs(com.amazonaws.services.ec2.AmazonEC2Client ec2Client, S3Access s3Access, java.lang.String amiGroupName, java.lang.String[] amiIDs, double imageCharge)
          Uses getTags(java.util.List) which only works if the user is the ami owner.
static void createAndUploadAmiPPEs(java.lang.String amiGroupName, java.lang.String[] amiIDs, double imageCharge)
           
 java.lang.String getID()
           
static void getImageInfo(com.amazonaws.services.ec2.AmazonEC2Client ec2Client, java.util.List<AmiPPE> amis)
           
 java.lang.String getName()
           
 com.amazonaws.services.ec2.model.Region getRegion()
          Note that each ami resides and can be used in one and only one region (e.g.
static void getTags(java.util.List<AmiPPE> amis)
          Warning: this will only work if the images in the AmiPPEs were retrieved by the the owner of the images, whether or not they are public.
 java.lang.String getTagVal(AmiPPE.ATag aTag)
           
 java.lang.String getVirtualizationType()
          Get the availability zones that the specific ami can run in.
 boolean isHvm()
           
 boolean isParavirtual()
           
 boolean isUsableReBilling(ParamsEc2 params)
           
static java.util.List<AmiPPE> retrieveAmiPPEs(S3Access s3Access, java.lang.String amiGroupName)
           
static java.util.List<AmiPPE> retrieveAndInitAmiPPEs(S3Access s3Access, java.lang.String amiGroupName, com.amazonaws.services.ec2.AmazonEC2Client aec)
           
 java.lang.String toString()
           
static void uploadAmiPPEs(S3Access s3Access, java.lang.String amiGroupName, java.util.List<AmiPPE> amiPPEs)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

amiID

public java.lang.String amiID

imageCharge

public double imageCharge
$ per hour per instance.


image

public transient com.amazonaws.services.ec2.model.Image image

region

public transient com.amazonaws.services.ec2.model.Region region

tags

public java.util.HashMap<java.lang.String,java.lang.String> tags
AMI tags. Note that these are only directly accessible by AMI's owner, even for public AMIs. We store these in the S3 data.

Constructor Detail

AmiPPE

public AmiPPE(java.lang.String amiID,
              double imageCharge)
Method Detail

isUsableReBilling

public boolean isUsableReBilling(ParamsEc2 params)

getID

public java.lang.String getID()

getName

public java.lang.String getName()

getTagVal

public java.lang.String getTagVal(AmiPPE.ATag aTag)

getRegion

public com.amazonaws.services.ec2.model.Region getRegion()
Note that each ami resides and can be used in one and only one region (e.g. us-east).

Returns:

getVirtualizationType

public java.lang.String getVirtualizationType()
Get the availability zones that the specific ami can run in. Note that each ami resides and can be used in one and only one region (e.g. us-east). This method first determines the region from the ami, and then identifies the availability zones available in that region to the user.


isParavirtual

public boolean isParavirtual()

isHvm

public boolean isHvm()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getImageInfo

public static void getImageInfo(com.amazonaws.services.ec2.AmazonEC2Client ec2Client,
                                java.util.List<AmiPPE> amis)

getTags

public static void getTags(java.util.List<AmiPPE> amis)
Warning: this will only work if the images in the AmiPPEs were retrieved by the the owner of the images, whether or not they are public. We run this once and store the tag info the AmiPPEs in s3.

Parameters:
ec2Client -
amis -

createAmiPPEs

public static java.util.List<AmiPPE> createAmiPPEs(com.amazonaws.services.ec2.AmazonEC2Client ec2Client,
                                                   java.lang.String[] amiIDs,
                                                   double imageCharge)
Uses getTags(java.util.List) which only works if the user is the ami owner.

Parameters:
ec2Client -
amiIDs -
imageCharge -
Returns:

createAndUploadAmiPPEs

public static void createAndUploadAmiPPEs(com.amazonaws.services.ec2.AmazonEC2Client ec2Client,
                                          S3Access s3Access,
                                          java.lang.String amiGroupName,
                                          java.lang.String[] amiIDs,
                                          double imageCharge)
Uses getTags(java.util.List) which only works if the user is the ami owner.

Parameters:
ec2Client -
bucketName -
amiIDs -

uploadAmiPPEs

public static void uploadAmiPPEs(S3Access s3Access,
                                 java.lang.String amiGroupName,
                                 java.util.List<AmiPPE> amiPPEs)

createAndUploadAmiPPEs

public static void createAndUploadAmiPPEs(java.lang.String amiGroupName,
                                          java.lang.String[] amiIDs,
                                          double imageCharge)
                                   throws java.lang.Exception
Throws:
java.lang.Exception

retrieveAmiPPEs

public static java.util.List<AmiPPE> retrieveAmiPPEs(S3Access s3Access,
                                                     java.lang.String amiGroupName)

retrieveAndInitAmiPPEs

public static java.util.List<AmiPPE> retrieveAndInitAmiPPEs(S3Access s3Access,
                                                            java.lang.String amiGroupName,
                                                            com.amazonaws.services.ec2.AmazonEC2Client aec)

createAmiPPEs

public static void createAmiPPEs(java.lang.String amiGroupName,
                                 java.lang.String[] amiIDs,
                                 double imageCharge)
                          throws java.lang.Exception
Throws:
java.lang.Exception