import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.xerox.amazonws.ec2.AddressInfo; import com.xerox.amazonws.ec2.AvailabilityZone; import com.xerox.amazonws.ec2.ConsoleOutput; import com.xerox.amazonws.ec2.DescribeImageAttributeResult; import com.xerox.amazonws.ec2.GroupDescription; import com.xerox.amazonws.ec2.Jec2; import com.xerox.amazonws.ec2.Jec2.ImageListAttributeOperationType; import com.xerox.amazonws.ec2.ImageAttribute.ImageAttributeType; import com.xerox.amazonws.ec2.ImageDescription; import com.xerox.amazonws.ec2.ImageListAttributeItem; import com.xerox.amazonws.ec2.ImageListAttribute.ImageListAttributeItemType; import com.xerox.amazonws.ec2.InstanceType; import com.xerox.amazonws.ec2.KeyPairInfo; import com.xerox.amazonws.ec2.LaunchConfiguration; import com.xerox.amazonws.ec2.LaunchPermissionAttribute; import com.xerox.amazonws.ec2.ProductCodesAttribute; import com.xerox.amazonws.ec2.ProductInstanceInfo; import com.xerox.amazonws.ec2.SnapshotInfo; import com.xerox.amazonws.ec2.VolumeInfo; import com.xerox.amazonws.ec2.AttachmentInfo; public class TestEBS { private static Log logger = LogFactory.getLog(TestEBS.class); public static void main(String [] args) throws Exception { Properties props = new Properties(); props.load(TestEBS.class.getClassLoader().getResourceAsStream("aws.properties")); Jec2 ec2 = new Jec2(props.getProperty("aws.accessId"), props.getProperty("aws.secretKey")); describeVolumes(ec2, new String [] {}); describeSnapshots(ec2, new String [] {}); VolumeInfo vol = ec2.createVolume("512", null, "merlot"); describeVolumes(ec2, new String [] {vol.getVolumeId()}); if (args[0] != null) { ec2.attachVolume(vol.getVolumeId(), args[0], "/dev/sdi"); try { Thread.sleep(4000); } catch (InterruptedException ex) {} describeVolumes(ec2, new String [] {vol.getVolumeId()}); try { Thread.sleep(4000); } catch (InterruptedException ex) {} ec2.detachVolume(vol.getVolumeId(), null, null, true); } SnapshotInfo snap = ec2.createSnapshot(vol.getVolumeId(), ""); try { Thread.sleep(4000); } catch (InterruptedException ex) {} describeSnapshots(ec2, new String [] {snap.getSnapshotId()}); try { Thread.sleep(4000); } catch (InterruptedException ex) {} ec2.deleteSnapshot(snap.getSnapshotId()); ec2.deleteVolume(vol.getVolumeId()); describeVolumes(ec2, new String [] {vol.getVolumeId()}); } public static void describeVolumes(Jec2 ec2, String [] ids) throws Exception { logger.info("Volumes"); List<VolumeInfo> vols = ec2.describeVolumes(ids); for (VolumeInfo info : vols) { logger.info(info.getVolumeId()+"\t"+info.getSize()+"\t"+info.getStatus()); List<AttachmentInfo> set = info.getAttachmentInfo(); for (AttachmentInfo att : set) { logger.info(" "+att.getInstanceId()+"\t"+att.getDevice()+"\t"+att.getStatus()); } } } public static void describeSnapshots(Jec2 ec2, String [] ids) throws Exception { logger.info("Snapshots"); List<SnapshotInfo> snaps = ec2.describeSnapshots(ids); for (SnapshotInfo info : snaps) { logger.info(info.getSnapshotId()+"\t"+info.getVolumeId()+"\t"+info.getStatus()+"\t"+info.getProgress()); } } }