Example usage for com.amazonaws.services.ec2.model CreateVolumeResult getVolume

List of usage examples for com.amazonaws.services.ec2.model CreateVolumeResult getVolume

Introduction

In this page you can find the example usage for com.amazonaws.services.ec2.model CreateVolumeResult getVolume.

Prototype


public Volume getVolume() 

Source Link

Document

Describes a volume.

Usage

From source file:EBS_S3.java

License:Open Source License

public static void main(String[] args) throws Exception {

    AWSCredentials credentials = new PropertiesCredentials(
            EBS_S3.class.getResourceAsStream("AwsCredentials.properties"));

    /*********************************************
     *  #1 Create Amazon Client object/*from w  w  w . ja  va  2  s  . co m*/
     **********************************************/
    ec2 = new AmazonEC2Client(credentials);

    // We assume that we've already created an instance. Use the id of the instance.
    String instanceId = "i-278afe40"; //put your own instance id to test this code.

    try {

        /*********************************************
         *  #2.1 Create a volume
         *********************************************/
        // release
        System.out.println(ec2.describeVolumes());
        List<Volume> v_list = ec2.describeVolumes().getVolumes();
        System.out.println("Volume size: " + v_list.size());
        DeleteVolumeRequest rq;
        for (Volume v : v_list) {
            if (v.getVolumeId().compareTo("vol-343dd879") != 0) {
                rq = new DeleteVolumeRequest(v.getVolumeId());
                ec2.deleteVolume(rq);
            }
        }
        System.out.println(ec2.describeVolumes());
        System.out.println("Volume size: " + v_list.size());

        //create a volume
        System.out.println("2.1 Create a volume");
        CreateVolumeRequest cvr = new CreateVolumeRequest();
        cvr.setAvailabilityZone("us-east-1b");
        cvr.setSize(10); //size = 10 gigabytes
        CreateVolumeResult volumeResult = ec2.createVolume(cvr);
        String createdVolumeId = volumeResult.getVolume().getVolumeId();
        System.out.println("Created Volume ID: " + createdVolumeId);

        /*********************************************
         *  #2.2 Attach the volume to the instance
         *********************************************/
        System.out.println("2.2 Attach the volume to the instance");
        Thread.sleep(30000);
        AttachVolumeRequest avr = new AttachVolumeRequest();
        avr.setVolumeId(createdVolumeId);
        avr.setInstanceId(instanceId);
        avr.setDevice("/dev/sdf");
        ec2.attachVolume(avr);

        /*********************************************
         *  #2.3 Detach the volume from the instance
         *********************************************/
        System.out.println("2.3 Detach the volume from the instance");
        DetachVolumeRequest dvr = new DetachVolumeRequest();
        dvr.setVolumeId(createdVolumeId);
        dvr.setInstanceId(instanceId);
        ec2.detachVolume(dvr);

        /************************************************
        *    #3 S3 bucket and object
        ***************************************************/
        System.out.println("3 S3 bucket and object");
        s3 = new AmazonS3Client(credentials);

        //create bucket
        String bucketName = "cloud-xiangyao-bucket";
        s3.createBucket(bucketName);

        //set key
        String key = "object-name.txt";

        //set value
        File file = File.createTempFile("temp", ".txt");
        file.deleteOnExit();
        Writer writer = new OutputStreamWriter(new FileOutputStream(file));
        writer.write("This is a sample sentence.\r\nYes!");
        writer.close();

        //put object - bucket, key, value(file)
        s3.putObject(new PutObjectRequest(bucketName, key, file));

        //get object
        S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
        BufferedReader reader = new BufferedReader(new InputStreamReader(object.getObjectContent()));
        String data = null;
        while ((data = reader.readLine()) != null) {
            System.out.println(data);
        }

        /*********************************************
         *  #4 shutdown client object
         *********************************************/
        System.out.println("4 shutdown client object");
        ec2.shutdown();
        s3.shutdown();

    } catch (AmazonServiceException ase) {
        System.out.println("Caught Exception: " + ase.getMessage());
        System.out.println("Reponse Status Code: " + ase.getStatusCode());
        System.out.println("Error Code: " + ase.getErrorCode());
        System.out.println("Request ID: " + ase.getRequestId());
    }

}

From source file:AwsSample.java

License:Open Source License

public static void main(String[] args) throws Exception {

    BasicAWSCredentials credentials = new BasicAWSCredentials("", "");

    /*********************************************
     * /*  w  w  w.j a  v a 2s . c  o  m*/
     *  #1 Create Amazon Client object
     *  
     *********************************************/
    System.out.println("#1 Create Amazon Client object");
    ec2 = new AmazonEC2Client(credentials);

    try {

        /*********************************************
         * 
          *  #2 Describe Availability Zones.
          *  
          *********************************************/
        System.out.println("#2 Describe Availability Zones.");
        DescribeAvailabilityZonesResult availabilityZonesResult = ec2.describeAvailabilityZones();
        System.out.println("You have access to " + availabilityZonesResult.getAvailabilityZones().size()
                + " Availability Zones.");

        /*********************************************
         * 
         *  #3 Describe Available Images
         *  
         *********************************************/
        System.out.println("#3 Describe Available Images");
        DescribeImagesResult dir = ec2.describeImages();
        List<Image> images = dir.getImages();
        System.out.println("You have " + images.size() + " Amazon images");

        /*********************************************
         *                 
         *  #4 Describe Key Pair
         *                 
         *********************************************/
        System.out.println("#9 Describe Key Pair");
        DescribeKeyPairsResult dkr = ec2.describeKeyPairs();
        System.out.println(dkr.toString());

        /*********************************************
         * 
         *  #5 Describe Current Instances
         *  
         *********************************************/
        System.out.println("#4 Describe Current Instances");
        DescribeInstancesResult describeInstancesRequest = ec2.describeInstances();
        List<Reservation> reservations = describeInstancesRequest.getReservations();
        Set<Instance> instances = new HashSet<Instance>();
        // add all instances to a Set.
        for (Reservation reservation : reservations) {
            instances.addAll(reservation.getInstances());
        }

        System.out.println("You have " + instances.size() + " Amazon EC2 instance(s).");
        for (Instance ins : instances) {

            // instance id
            String instanceId = ins.getInstanceId();

            // instance state
            InstanceState is = ins.getState();
            System.out.println(instanceId + " " + is.getName());
        }
        ///////////////////////////////////////

        String Temp_Group = "Testgroup1"; //name of the group
        CreateSecurityGroupRequest r1 = new CreateSecurityGroupRequest(Temp_Group, "temporal group");
        ec2.createSecurityGroup(r1);
        AuthorizeSecurityGroupIngressRequest r2 = new AuthorizeSecurityGroupIngressRequest();
        r2.setGroupName(Temp_Group);

        /*************the property of http*****************/
        IpPermission permission = new IpPermission();
        permission.setIpProtocol("tcp");
        permission.setFromPort(80);
        permission.setToPort(80);
        List<String> ipRanges = new ArrayList<String>();
        ipRanges.add("0.0.0.0/0");
        permission.setIpRanges(ipRanges);

        /*************the property of SSH**********************/
        IpPermission permission1 = new IpPermission();
        permission1.setIpProtocol("tcp");
        permission1.setFromPort(22);
        permission1.setToPort(22);
        List<String> ipRanges1 = new ArrayList<String>();
        ipRanges1.add("0.0.0.0/22");
        permission1.setIpRanges(ipRanges1);

        /*************the property of https**********************/
        IpPermission permission2 = new IpPermission();
        permission2.setIpProtocol("tcp");
        permission2.setFromPort(443);
        permission2.setToPort(443);
        List<String> ipRanges2 = new ArrayList<String>();
        ipRanges2.add("0.0.0.0/0");
        permission2.setIpRanges(ipRanges2);

        /*************the property of tcp**********************/
        IpPermission permission3 = new IpPermission();
        permission3.setIpProtocol("tcp");
        permission3.setFromPort(0);
        permission3.setToPort(65535);
        List<String> ipRanges3 = new ArrayList<String>();
        ipRanges3.add("0.0.0.0/0");
        permission3.setIpRanges(ipRanges3);

        /**********************add rules to the group*********************/
        List<IpPermission> permissions = new ArrayList<IpPermission>();
        permissions.add(permission);
        permissions.add(permission1);
        permissions.add(permission2);
        permissions.add(permission3);
        r2.setIpPermissions(permissions);

        ec2.authorizeSecurityGroupIngress(r2);
        List<String> groupName = new ArrayList<String>();
        groupName.add(Temp_Group);//wait to out our instance into this group

        /*********************************************
        *
        *  #6.2 Create a New Key Pair
        * 
        *********************************************/

        CreateKeyPairRequest newKeyRequest = new CreateKeyPairRequest();
        newKeyRequest.setKeyName("Test_Key2");
        CreateKeyPairResult keyresult = ec2.createKeyPair(newKeyRequest);

        /************************print the properties of this key*****************/
        KeyPair kp = new KeyPair();

        kp = keyresult.getKeyPair();
        System.out.println("The key we created is = " + kp.getKeyName() + "\nIts fingerprint is="
                + kp.getKeyFingerprint() + "\nIts material is= \n" + kp.getKeyMaterial());

        String fileName = "C:/Users/Akhil/workspace/Test_Key2.pem";
        File distFile = new File(fileName);
        BufferedReader bufferedReader = new BufferedReader(new StringReader(kp.getKeyMaterial()));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(distFile));
        char buf[] = new char[1024];
        int len;
        while ((len = bufferedReader.read(buf)) != -1) {
            bufferedWriter.write(buf, 0, len);
        }
        bufferedWriter.flush();
        bufferedReader.close();
        bufferedWriter.close();
        //String myinstance; 
        /*********************************************
          * 
          *  #6 Create an Instance
          *  
          *********************************************/
        System.out.println("#5 Create an Instance");
        String imageId = "ami-76f0061f"; //Basic 32-bit Amazon Linux AMI
        int minInstanceCount = 1; // create 1 instance
        int maxInstanceCount = 1;
        RunInstancesRequest rir = new RunInstancesRequest(imageId, minInstanceCount, maxInstanceCount);
        rir.setKeyName("Test_Key2");
        rir.withSecurityGroups("Testgroup1");

        RunInstancesResult result = ec2.runInstances(rir);

        //get instanceId from the result
        List<Instance> resultInstance = result.getReservation().getInstances();
        String createdInstanceId = null;
        String myAvailabilityZone = null;
        for (Instance ins : resultInstance) {
            createdInstanceId = ins.getInstanceId();
            System.out.println("New instance has been created: " + ins.getInstanceId());
            //myinstance = ins.getInstanceId();

        }

        Thread.currentThread().sleep(60000);

        /*********************************************
         * 
         * 
         * Create a New Volume and attach it
         * 
         ***********************************************/

        List<Instance> resultInstance2 = result.getReservation().getInstances();

        createdInstanceId = null;
        for (Instance ins : resultInstance2) {

            createdInstanceId = ins.getInstanceId();
            System.out.println("New instance has been created: " + ins.getInstanceId());//print the instance ID

            /*********************************************
              * 
              *  #6.4 Create an Instance
              *  
              *********************************************/

            CreateVolumeRequest newVol = new CreateVolumeRequest(1, "us-east-1a");

            CreateVolumeResult volresult = ec2.createVolume(newVol);
            Volume vol1 = volresult.getVolume();
            String volId = vol1.getVolumeId();
            Thread.currentThread().sleep(30000);

            AttachVolumeRequest attachRequest = new AttachVolumeRequest().withInstanceId(createdInstanceId)
                    .withVolumeId(volId);
            attachRequest.withDevice("/dev/sda5");
            ec2.attachVolume(attachRequest);

            System.out.println("EBS volume has been attached and the volume ID is: " + volId);
        }
        /*********************************************
         * 
         *  #7 Create a 'tag' for the new instance.
         *  
         *********************************************/
        System.out.println("#6 Create a 'tag' for the new instance.");
        List<String> resources = new LinkedList<String>();
        List<Tag> tags = new LinkedList<Tag>();
        Tag nameTag = new Tag("Akhil", "MyFirstInstance");

        resources.add(createdInstanceId);
        tags.add(nameTag);

        CreateTagsRequest ctr = new CreateTagsRequest(resources, tags);
        ec2.createTags(ctr);

        /*********************************************
         * 
         *  #8 Stop/Start an Instance
         *  
         *********************************************/
        System.out.println("#7 Stop the Instance");
        List<String> instanceIds = new LinkedList<String>();
        instanceIds.add(createdInstanceId);

        //stop
        StopInstancesRequest stopIR = new StopInstancesRequest(instanceIds);
        ec2.stopInstances(stopIR);

        //start
        StartInstancesRequest startIR = new StartInstancesRequest(instanceIds);
        ec2.startInstances(startIR);

        System.out.println("#8 Getting DNS, IP.");

        DescribeInstancesRequest request = new DescribeInstancesRequest();
        request.setInstanceIds(instanceIds);

        DescribeInstancesResult result1 = ec2.describeInstances(request);
        List<Reservation> reservations1 = result1.getReservations();

        List<Instance> instances1;
        for (Reservation res : reservations1) {
            instances1 = res.getInstances();
            for (Instance ins1 : instances1) {
                System.out
                        .println("The public DNS is: " + ins1.getPublicDnsName() + "\n" + ins1.getRamdiskId());
                System.out.println("The private IP is: " + ins1.getPrivateIpAddress());
                System.out.println("The public IP is: " + ins1.getPublicIpAddress());

            }

            /*********************************************
                     
                    
              *  #10 Terminate an Instance
              *  
              *********************************************/
            System.out.println("#8 Terminate the Instance");
            TerminateInstancesRequest tir = new TerminateInstancesRequest(instanceIds);
            //ec2.terminateInstances(tir);

            /*********************************************
             *  
             *  #11 shutdown client object
             *  
             *********************************************/
            ec2.shutdown();

        }
    } catch (AmazonServiceException ase) {
        System.out.println("Caught Exception: " + ase.getMessage());
        System.out.println("Reponse Status Code: " + ase.getStatusCode());
        System.out.println("Error Code: " + ase.getErrorCode());
        System.out.println("Request ID: " + ase.getRequestId());
    }

}

From source file:HW1.java

License:Open Source License

public static String createVolume(String zone, String snapshotId) {
    String volume_name;/* w ww  .ja  va  2  s  . c  o m*/
    CreateVolumeRequest cvr = new CreateVolumeRequest();
    cvr.setSize(10); //size = 10 gigabytes
    CreateVolumeResult volume_result;
    cvr.setAvailabilityZone(zone);
    if (snapshotId != null)
        cvr.setSnapshotId(snapshotId);
    volume_result = ec2.createVolume(cvr);
    volume_name = volume_result.getVolume().getVolumeId();

    return volume_name;
}

From source file:virtualIT.java

License:Open Source License

private void createVolumeRequest(int userId) {
    /*********************************************
       *  #2.1 Create a volume//from  w  w w .  jav  a2 s.  c om
       *********************************************/
    //create a volume

    CreateVolumeRequest cvr = new CreateVolumeRequest();
    cvr.withAvailabilityZone(availableZone).withSize(1);//size = 10 gigabytes
    CreateVolumeResult volumeResult = ec2.createVolume(cvr);
    String createdVolumeId = volumeResult.getVolume().getVolumeId();
    System.out.println(createdVolumeId);
    extravolumeIdList.add(createdVolumeId);
    mapUserExtraVolu.put(userId, createdVolumeId);

}

From source file:EbsAttach.java

License:Open Source License

public static void main(String[] args) throws Exception {

    init();/*w  w w . ja v a2s. com*/

    try {
        DescribeAvailabilityZonesResult availabilityZonesResult = ec2.describeAvailabilityZones();
        System.out.println("You have access to " + availabilityZonesResult.getAvailabilityZones().size()
                + " Availability Zones.");

        DescribeInstancesResult describeInstancesRequest = ec2.describeInstances();
        List<Reservation> reservations = describeInstancesRequest.getReservations();
        Set<Instance> instances = new HashSet<Instance>();

        for (Reservation reservation : reservations) {
            instances.addAll(reservation.getInstances());
        }

        System.out.println("You have " + instances.size() + " Amazon EC2 instance(s) running.");
        for (Instance ins : instances) {

            // instance id
            String instanceId = ins.getInstanceId();

            // instance state
            InstanceState is = ins.getState();
            System.out.println(instanceId + " " + is.getName());
        }

        System.out.println("Attached Instance id: " + attachedInsId);
        /*********************************************
         * 
         *  #1 Create New Volume
         *  
         *********************************************/
        System.out.println("===========================================");
        System.out.println("#1   Volume State before Creating");
        System.out.println("===========================================");

        DescribeVolumesResult describeVolumesResult = ec2.describeVolumes();
        List<Volume> volumes = describeVolumesResult.getVolumes();
        for (Volume volume : volumes) {
            String volumeId = volume.getVolumeId();
            String volumeAvbZone = volume.getAvailabilityZone();
            String volumeSize = String.valueOf(volume.getSize());
            String volumeState = volume.getState();
            System.out.println(volumeId + "\t" + volumeSize + "\t" + volumeAvbZone + "\t" + volumeState);
        }

        CreateVolumeRequest createVolumeRequest = new CreateVolumeRequest().withSize(4).withVolumeType("gp2")
                .withAvailabilityZone("us-east-1a");
        CreateVolumeResult createVolumeResult = ec2.createVolume(createVolumeRequest);
        String createdVolumeId = createVolumeResult.getVolume().getVolumeId();
        System.out.println("# Created a volume #  ID: " + createdVolumeId);
        /*********************************************
         * 
         *  #2 Attach the created new Volume
         *  
         *********************************************/
        System.out.println("===========================================");
        System.out.println("#2   Volume State after Creating");
        System.out.println("===========================================");

        describeVolumesResult = ec2.describeVolumes();
        volumes = describeVolumesResult.getVolumes();
        for (Volume volume : volumes) {
            String volumeId = volume.getVolumeId();
            String volumeAvbZone = volume.getAvailabilityZone();
            String volumeSize = String.valueOf(volume.getSize());
            String volumeState = volume.getState();
            System.out.println(volumeId + "\t" + volumeSize + "\t" + volumeAvbZone + "\t" + volumeState);
        }
        //wait new volume is available
        System.out.println("#   Waiting new Volume is available");
        boolean avail = false;
        while (true) {
            Thread.sleep(1000);
            describeVolumesResult = ec2.describeVolumes();
            volumes = describeVolumesResult.getVolumes();
            for (Volume volume : volumes) {
                if (volume.getVolumeId().equals(createdVolumeId) && volume.getState().equals("available")) {
                    avail = true;
                    break;
                }
            }
            if (avail)
                break;
        }
        System.out.println("New Volume is available now.");

        AttachVolumeRequest attachVolumeRequest = new AttachVolumeRequest().withVolumeId(createdVolumeId)
                .withInstanceId(attachedInsId).withDevice("/dev/sdn");
        AttachVolumeResult attachVolumeResult = ec2.attachVolume(attachVolumeRequest);
        VolumeAttachment volumeAttachment = attachVolumeResult.getAttachment();

        System.out.println(
                volumeAttachment.getVolumeId() + " is attached on " + volumeAttachment.getAttachTime());

        /*********************************************
         * 
         *  #3 SSh to instance and run command
         *  
         *********************************************/
        System.out.println("===========================================");
        System.out.println("#2   Ssh and mount disk");
        System.out.println("===========================================");

        Session session = null;
        Channel openChannel = null;
        String keyDir = KEYDIR;
        String user = "ec2-user";
        String host = publicDNSName;
        String command = "df -h;" + "sudo mkfs -t ext3 /dev/xvdn;" + "sudo mkdir /minihw3;"
                + "sudo mount /dev/xvdn /minihw3;" + "df -h";
        boolean isConnect = false;
        while (!isConnect) {
            JSch jsch = new JSch();
            System.out.println("Waiting 5 seconds for SSH being available.");
            Thread.sleep(5 * 1000);
            try {
                jsch.addIdentity(keyDir);
            } catch (JSchException e) {
                System.out.println(e.getMessage());
            }
            try {
                session = jsch.getSession(user, host, 22);
                Properties config = new Properties();
                config.put("StrictHostKeyChecking", "no");
                session.setConfig(config);
                session.connect();
                System.out.println("SSH Connection Established.");
                isConnect = true;
                openChannel = session.openChannel("exec");

                ((ChannelExec) openChannel).setPty(true);

                ((ChannelExec) openChannel).setCommand(command);
                openChannel.setInputStream(null);
                ((ChannelExec) openChannel).setErrStream(System.err);

                int exitStatus = openChannel.getExitStatus();
                System.out.println("exit-status: " + exitStatus);
                InputStream in = openChannel.getInputStream();
                System.out.println("Exxcute remote cammand :" + command);
                openChannel.connect();

                byte[] tmp = new byte[1024];
                while (true) {
                    while (in.available() > 0) {
                        int i = in.read(tmp, 0, 1024);
                        if (i < 0)
                            break;
                        System.out.print(new String(tmp, 0, i));
                    }
                    if (openChannel.isClosed()) {
                        if (in.available() > 0)
                            continue;
                        System.out.println("exit-status: " + openChannel.getExitStatus());
                        break;
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (Exception ee) {
                    }
                }
            } catch (JSchException | IOException e) {
                System.out.println(e.getMessage());
            } finally {
                if (openChannel != null && !openChannel.isClosed()) {
                    openChannel.disconnect();
                    System.out.println("Channel Disconnected");
                }
                if (session != null && session.isConnected()) {
                    session.disconnect();
                    System.out.println("Session Disconnected");
                }
            }

        }
    } catch (AmazonServiceException ase) {
        System.out.println("Caught Exception: " + ase.getMessage());
        System.out.println("Reponse Status Code: " + ase.getStatusCode());
        System.out.println("Error Code: " + ase.getErrorCode());
        System.out.println("Request ID: " + ase.getRequestId());
    }

}

From source file:Assignment1.java

License:Open Source License

public static void main(String[] args) throws Exception {

    AWSCredentials credentials = new PropertiesCredentials(
            Assignment1.class.getResourceAsStream("AwsCredentials.properties"));

    /*********************************************
     *  #1 Create Amazon Client object//w  w  w.j av  a2 s  .  com
     **********************************************/
    ec2 = new AmazonEC2Client(credentials);

    // We assume that we've already created an instance. Use the id of the instance.
    //String instanceId = "i-4e6c2a3d"; //put your own instance id to test this code.

    try {

        CreateSecurityGroupRequest createSecurityGroupRequest = new CreateSecurityGroupRequest();

        createSecurityGroupRequest.withGroupName("mini").withDescription("My Java Security Group");

        CreateSecurityGroupResult createSecurityGroupResult = ec2
                .createSecurityGroup(createSecurityGroupRequest);

        IpPermission ipPermission = new IpPermission();

        ipPermission.withIpRanges("0.0.0.0/0", "150.150.150.150/32").withIpProtocol("tcp").withFromPort(22)
                .withToPort(22);
        AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest();

        authorizeSecurityGroupIngressRequest.withGroupName("mini").withIpPermissions(ipPermission);
        ec2.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);

        CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest();

        createKeyPairRequest.withKeyName("E3instance_key");

        CreateKeyPairResult createKeyPairResult = ec2.createKeyPair(createKeyPairRequest);

        KeyPair keyPair = new KeyPair();
        keyPair = createKeyPairResult.getKeyPair();

        String privateKey = keyPair.getKeyMaterial();

        System.out.print(privateKey);

        /*********************************************
         *                 
         *  #1.1 Describe Key Pair
         *                 
         *********************************************/
        System.out.println("\n#1.1 Describe Key Pair");
        DescribeKeyPairsResult dkr = ec2.describeKeyPairs();
        System.out.println(dkr.toString());

        /*********************************************
         * 
         *  #1.2 Create an Instance
         *  
         *********************************************/

        RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

        runInstancesRequest.withImageId("ami-ab844dc2").withInstanceType("t1.micro").withMinCount(2)
                .withMaxCount(2).withKeyName("E3instance_key").withSecurityGroups("mini");
        RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest);

        System.out.println("\n#1.2 Create an Instance");

        List<Instance> resultInstance = runInstancesResult.getReservation().getInstances();

        String createdInstanceId = null;

        for (Instance ins : resultInstance) {
            createdInstanceId = ins.getInstanceId();
            System.out.println("New instance has been created: " + ins.getInstanceId());
        }

        String myinstanceZone = resultInstance.get(0).getPlacement().getAvailabilityZone();
        String myinstanceZone1 = resultInstance.get(1).getPlacement().getAvailabilityZone();
        String myinstanceID = resultInstance.get(0).getInstanceId();
        String myinstanceID1 = resultInstance.get(1).getInstanceId();

        Thread.sleep(1000 * 1 * 60);

        /*********************************************
         *  #2.1 Create a volume
         *********************************************/
        //create a volume
        CreateVolumeRequest cvr = new CreateVolumeRequest();
        CreateVolumeRequest cvr1 = new CreateVolumeRequest();
        cvr.setAvailabilityZone(myinstanceZone);
        cvr1.setAvailabilityZone(myinstanceZone1);
        cvr.setSize(10); //size = 10 gigabytes
        cvr1.setSize(10);
        CreateVolumeResult volumeResult = ec2.createVolume(cvr);
        CreateVolumeResult volumeResult1 = ec2.createVolume(cvr1);
        String createdVolumeId = volumeResult.getVolume().getVolumeId();
        String createdVolumeId1 = volumeResult1.getVolume().getVolumeId();
        String[] volumeID = new String[2];
        volumeID[0] = createdVolumeId;
        volumeID[1] = createdVolumeId1;
        System.out.println("\n#2.1 Create a volume for each instance");

        Thread.sleep(1000 * 1 * 60);
        /*********************************************
         *  #2.2 Attach the volume to the instance
         *********************************************/
        AttachVolumeRequest avr = new AttachVolumeRequest();
        AttachVolumeRequest avr1 = new AttachVolumeRequest();
        avr.setInstanceId(myinstanceID);
        avr1.setInstanceId(myinstanceID1);
        avr.setVolumeId(createdVolumeId);
        avr1.setVolumeId(createdVolumeId1);
        avr.setDevice("/dev/sda2");
        avr1.setDevice("/dev/sda2");
        //avr.setVolumeId(createdVolumeId);
        //avr.setInstanceId(createdInstanceId);
        //avr.setDevice("/dev/sdf");
        ec2.attachVolume(avr);
        ec2.attachVolume(avr1);
        System.out.println("\n#2.2 Attach the volume");
        System.out.println("EBS volume has been attached and the volume ID is: " + createdVolumeId);
        System.out.println("EBS volume has been attached and the volume ID is: " + createdVolumeId1);

        Thread.sleep(1000 * 2 * 60);
        /***********************************
        *   #2.3 Monitoring (CloudWatch)
        *********************************/

        //create CloudWatch client
        AmazonCloudWatchClient cloudWatch = new AmazonCloudWatchClient(credentials);

        //create request message
        GetMetricStatisticsRequest statRequest = new GetMetricStatisticsRequest();

        //set up request message
        statRequest.setNamespace("AWS/EC2"); //namespace
        statRequest.setPeriod(60); //period of data
        ArrayList<String> stats = new ArrayList<String>();

        //Use one of these strings: Average, Maximum, Minimum, SampleCount, Sum 
        stats.add("Average");
        stats.add("Sum");
        statRequest.setStatistics(stats);

        //Use one of these strings: CPUUtilization, NetworkIn, NetworkOut, DiskReadBytes, DiskWriteBytes, DiskReadOperations  
        statRequest.setMetricName("CPUUtilization");

        // set time
        GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
        calendar.add(GregorianCalendar.SECOND, -1 * calendar.get(GregorianCalendar.SECOND)); // 1 second ago
        Date endTime = calendar.getTime();
        calendar.add(GregorianCalendar.MINUTE, -10); // 10 minutes ago
        Date startTime = calendar.getTime();
        statRequest.setStartTime(startTime);
        statRequest.setEndTime(endTime);

        //specify an instance
        ArrayList<Dimension> dimensions = new ArrayList<Dimension>();

        String monitorInstanceId = null;
        int i = 0;
        String[] idleInstance = new String[2];

        for (Instance ins : resultInstance) {
            monitorInstanceId = ins.getInstanceId();
            dimensions.add(new Dimension().withName("InstanceId").withValue(monitorInstanceId));
            statRequest.setDimensions(dimensions);

            Thread.sleep(1000 * 3 * 60);
            //get statistics
            GetMetricStatisticsResult statResult = cloudWatch.getMetricStatistics(statRequest);

            //display
            System.out.println(statResult.toString());
            List<Datapoint> dataList = statResult.getDatapoints();
            Double averageCPU = null;
            Date timeStamp = null;
            for (Datapoint data : dataList) {
                averageCPU = data.getAverage();
                timeStamp = data.getTimestamp();
                System.out.println("Average CPU utlilization for last 1 minutes: " + averageCPU);
                //System.out.println("Total CPU utlilization for last 1 minutes: "+data.getSum());

                //Calendar vmTime=GregorianCalendar.getInstance();
                //vmTime.setTime(timeStamp);
                //vmTime.get(Calendar.HOUR_OF_DAY);
                if (averageCPU < 50 && i < 2) {
                    idleInstance[i] = monitorInstanceId;
                    i++;
                }
            }

        }
        System.out.println("\n" + i + " instance(s) idling.");
        /*********************************************
         *  #2.4 Detach the volume from the instance 
         *********************************************/

        DetachVolumeRequest dvr = new DetachVolumeRequest();
        DetachVolumeRequest dvr1 = new DetachVolumeRequest();
        dvr.setVolumeId(createdVolumeId);
        dvr1.setVolumeId(createdVolumeId1);
        dvr.setInstanceId(myinstanceID);
        dvr1.setInstanceId(myinstanceID1);
        dvr.setDevice("/dev/sda2");
        dvr1.setDevice("/dev/sda2");
        ec2.detachVolume(dvr);
        ec2.detachVolume(dvr1);
        System.out.println("\n#2.4 Detach the volume");

        Thread.sleep(1000 * 1 * 60);

        /*********************************************
          *  #2.5 Create new AMI for idle instance
          *********************************************/
        String[] idleAMIID = new String[2];
        int j = 0;
        for (j = 0; j < idleInstance.length; j++) {
            CreateImageRequest Im = new CreateImageRequest(idleInstance[j], "image" + j);

            //CreateImageRequest Im1=new CreateImageRequest(myinstanceID1, "image1");
            Im.setInstanceId(idleInstance[j]);
            //Im1.setInstanceId(myinstanceID1);

            CreateImageResult myAMI = ec2.createImage(Im);
            idleAMIID[j] = myAMI.getImageId();

            //CreateImageResult myAMI1= ec2.createImage(Im1); 
            System.out.println("\n#2.5 Create new AMI");
        }
        Thread.sleep(1000 * 1 * 60);
        /*********************************************
          * 
          *  # Terminate an Instance
          *  
          *********************************************/
        //System.out.println("#8 Terminate the Instance");

        // TerminateInstancesRequest tir = new TerminateInstancesRequest(instanceIds);

        //ec2.terminateInstances(tir);
        /*********************************************
          *  #2.6 Create new VMs
          *********************************************/
        RunInstancesRequest runNewInstancesRequest = new RunInstancesRequest();
        int m;
        String[] newCreatedInstanceId = new String[2];
        for (m = 0; m < j; m++)//j is the number of AMI created
        {
            runNewInstancesRequest.withImageId(idleAMIID[m]).withInstanceType("t1.micro").withMinCount(1)
                    .withMaxCount(1).withKeyName("E3instance_key").withSecurityGroups("mini");
            RunInstancesResult runNewInstancesResult = ec2.runInstances(runNewInstancesRequest);
            List<Instance> newResultInstance = runNewInstancesResult.getReservation().getInstances();

            String newInstanceId = null;

            for (Instance ins : newResultInstance) {
                newInstanceId = ins.getInstanceId();
            }
            newCreatedInstanceId[m] = newInstanceId;
            System.out.println("Using AMI, a new instance has been created: " + newCreatedInstanceId[m]);

        }
        Thread.sleep(1000 * 1 * 60);
        //System.out.println("\n#2.6 Create "+ m + " instance using AMI");

        /*********************************************
          *  #2.7 Attach the volume to the new instance
          *********************************************/
        int n;
        for (n = 0; n < idleInstance.length; n++) {
            AttachVolumeRequest new_avr = new AttachVolumeRequest();
            //AttachVolumeRequest new_avr1 = new AttachVolumeRequest();
            new_avr.setInstanceId(newCreatedInstanceId[n]);
            //avr1.setInstanceId(myinstanceID1);
            new_avr.setVolumeId(volumeID[n]);
            //avr1.setVolumeId(createdVolumeId1);
            new_avr.setDevice("/dev/sda2");
            //avr1.setDevice("/dev/sda2");
            //avr.setVolumeId(createdVolumeId);
            //avr.setInstanceId(createdInstanceId);
            //avr.setDevice("/dev/sdf");
            ec2.attachVolume(new_avr);
            //ec2.attachVolume(avr1);
            System.out.println("\n#2.7 Re-attach the volume");
            System.out.println("EBS volume has been attached and the volume ID is: " + volumeID[n]);
            //System.out.println("EBS volume has been attached and the volume ID is: "+createdVolumeId1);

            Thread.sleep(1000 * 1 * 60);
        }
        /************************************************
        *    #3 S3 bucket and object
        ***************************************************/
        s3 = new AmazonS3Client(credentials);

        //create bucket
        String bucketName = "lucinda.duan";
        s3.createBucket(bucketName);

        //set key
        String key = "object-name.txt";

        //set value
        File file = File.createTempFile("temp", ".txt");
        file.deleteOnExit();
        Writer writer = new OutputStreamWriter(new FileOutputStream(file));
        writer.write("This is a sample sentence.\r\nYes!");
        writer.close();

        //put object - bucket, key, value(file)
        s3.putObject(new PutObjectRequest(bucketName, key, file));

        //get object
        S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
        BufferedReader reader = new BufferedReader(new InputStreamReader(object.getObjectContent()));
        String data = null;
        while ((data = reader.readLine()) != null) {
            System.out.println(data);
        }

        /*********************************************
         *  #4 shutdown client object
         *********************************************/
        // ec2.shutdown();
        // s3.shutdown();

    } catch (AmazonServiceException ase) {
        System.out.println("Caught Exception: " + ase.getMessage());
        System.out.println("Reponse Status Code: " + ase.getStatusCode());
        System.out.println("Error Code: " + ase.getErrorCode());
        System.out.println("Request ID: " + ase.getRequestId());
    }

}

From source file:com.cloudera.director.aws.ec2.ebs.EBSAllocator.java

License:Apache License

/**
 * Runs create volume requests for each instance. The number and type
 * of volumes to create are taken from the instance template.
 *
 * @param template the instance template
 * @param ec2InstanceIdsByVirtualInstanceId ids of the instances where the key is the virtual
 *                                          instance id and the value is the ec2 instance id
 * @return a list of InstanceEbsVolumes/*ww  w. j  a va2  s . c  om*/
 */
public List<InstanceEbsVolumes> createVolumes(EC2InstanceTemplate template,
        BiMap<String, String> ec2InstanceIdsByVirtualInstanceId) {
    checkState(template.getEbsKmsKeyId().isPresent(), INVALID_STATE_MISSING_KMS_KEY);

    Optional<String> templateAvailabilityZone = template.getAvailabilityZone();

    String availabilityZone = templateAvailabilityZone.isPresent() ? templateAvailabilityZone.get()
            : getAvailabilityZoneFromSubnetId(template.getSubnetId());

    int volumesPerInstance = template.getEbsVolumeCount();
    LOG.info("Requesting {} volumes each for {} instances", volumesPerInstance,
            ec2InstanceIdsByVirtualInstanceId.size());

    int uncreatedVolumeCount = 0;

    List<InstanceEbsVolumes> instanceEbsVolumesList = Lists.newArrayList();
    for (Map.Entry<String, String> entry : ec2InstanceIdsByVirtualInstanceId.entrySet()) {
        String virtualInstanceId = entry.getKey();
        String ec2InstanceId = entry.getValue();

        Map<String, InstanceEbsVolumes.Status> volumes = Maps.newHashMap();
        for (int j = 0; j < volumesPerInstance; j++) {
            CreateVolumeRequest request = new CreateVolumeRequest().withVolumeType(template.getEbsVolumeType())
                    .withSize(template.getEbsVolumeSizeGiB()).withAvailabilityZone(availabilityZone)
                    .withEncrypted(template.isEnableEbsEncryption())
                    .withKmsKeyId(template.getEbsKmsKeyId().get());

            try {
                CreateVolumeResult result = client.createVolume(request);
                String volumeId = result.getVolume().getVolumeId();
                volumes.put(volumeId, InstanceEbsVolumes.Status.CREATED);
            } catch (AmazonServiceException ex) {
                String message = "Failed to request an EBS volume for virtual instance %s";
                LOG.error(String.format(message, virtualInstanceId), ex);
                String volumeId = InstanceEbsVolumes.UNCREATED_VOLUME_ID + uncreatedVolumeCount;
                volumes.put(volumeId, InstanceEbsVolumes.Status.FAILED);
                uncreatedVolumeCount++;
            }
        }
        InstanceEbsVolumes instanceEbsVolumes = new InstanceEbsVolumes(virtualInstanceId, ec2InstanceId,
                volumes);
        instanceEbsVolumesList.add(instanceEbsVolumes);
    }
    return instanceEbsVolumesList;
}

From source file:com.dowdandassociates.gentoo.bootstrap.EbsOnDemandBootstrapInstanceInformationProvider.java

License:Apache License

@Override
protected Optional<Volume> generateVolume(Optional<Instance> instance) {
    if (!instance.isPresent()) {
        return Optional.absent();
    }/*from  w w  w  .j ava2  s.c  o m*/

    log.info("AvailabilityZone=" + instance.get().getPlacement().getAvailabilityZone());
    log.info("Size=" + volumeSize.get().toString());

    CreateVolumeResult createVolumeResult = getEc2Client().createVolume(
            new CreateVolumeRequest().withAvailabilityZone(instance.get().getPlacement().getAvailabilityZone())
                    .withSize(volumeSize.get()));

    log.info("volume id = " + createVolumeResult.getVolume().getVolumeId());
    DescribeVolumesRequest describeVolumesRequest = new DescribeVolumesRequest()
            .withVolumeIds(createVolumeResult.getVolume().getVolumeId());

    try {
        while (true) {
            log.info("Sleeping for " + sleep.get().toString() + " ms");
            Thread.sleep(sleep.get());
            DescribeVolumesResult describeVolumesResult = getEc2Client()
                    .describeVolumes(describeVolumesRequest);

            Volume volume = describeVolumesResult.getVolumes().get(0);
            String state = volume.getState();

            log.info("volume state = " + state);

            if ("creating".equals(state)) {
                continue;
            }

            if (!"available".equals(state)) {
                return Optional.absent();
            }

            return Optional.fromNullable(volume);
        }

    } catch (InterruptedException e) {
        return Optional.absent();
    }
}

From source file:com.dowdandassociates.gentoo.bootstrap.SnapshotOnDemandBootstrapInstanceInformationProvider.java

License:Apache License

@Override
protected Optional<Volume> generateVolume(Optional<Instance> instance) {
    if (!instance.isPresent()) {
        log.error("Instance is not present");
        return Optional.absent();
    }//from   w  ww  . j  a  v  a 2  s . c  o  m

    if (null == snapshotId.get()) {
        log.error("SnapshotId not set");
        return Optional.absent();
    }

    log.info("AvailabilityZone=" + instance.get().getPlacement().getAvailabilityZone());
    log.info("SnapshotId = " + snapshotId.get().toString());

    CreateVolumeResult createVolumeResult = getEc2Client().createVolume(
            new CreateVolumeRequest().withAvailabilityZone(instance.get().getPlacement().getAvailabilityZone())
                    .withSnapshotId(snapshotId.get()));

    DescribeVolumesRequest describeVolumesRequest = new DescribeVolumesRequest()
            .withVolumeIds(createVolumeResult.getVolume().getVolumeId());

    try {
        while (true) {
            log.info("Sleeping for " + sleep.get().toString() + " ms");
            Thread.sleep(sleep.get());
            DescribeVolumesResult describeVolumesResult = getEc2Client()
                    .describeVolumes(describeVolumesRequest);

            Volume volume = describeVolumesResult.getVolumes().get(0);
            String state = volume.getState();

            log.info("volume state = " + state);

            if ("creating".equals(state)) {
                continue;
            }

            if (!"available".equals(state)) {
                return Optional.absent();
            }

            return Optional.fromNullable(volume);
        }

    } catch (InterruptedException e) {
        return Optional.absent();
    }
}

From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java

License:Apache License

/**
 *
 * @param availabilityZone -/*from w  w w . j av  a 2  s  . c o m*/
 * @param size - size (in Gb) of the volume to be created. Must be larger than snapshot if used
 * @param snapshotId - optional if you want to create from a snapshot
 * @param ec2Client
 * @return volumeId - the id of the newly created volume
 */
public String createEbsVolume(String availabilityZone, int size, String snapshotId, AmazonEC2 ec2Client) {
    CreateVolumeRequest request = new CreateVolumeRequest().withAvailabilityZone(availabilityZone)
            .withSize(size);

    // Only create from a snapshot if the snapshotId is not null, otherwise make new volume
    if (snapshotId != null && !snapshotId.equals("")) {
        request = request.withSnapshotId(snapshotId);
    }

    CreateVolumeResult result = ec2Client.createVolume(request);
    String volumeId = result.getVolume().getVolumeId();

    return volumeId;
}