Example usage for com.amazonaws.services.ec2.model SpotInstanceRequest getStatus

List of usage examples for com.amazonaws.services.ec2.model SpotInstanceRequest getStatus

Introduction

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

Prototype


public SpotInstanceStatus getStatus() 

Source Link

Document

The status code and status message describing the Spot Instance request.

Usage

From source file:com.kpbird.aws.Main.java

private void createEC2SpotInstance() {
    try {//ww w  .ja v a  2  s.  co m
        /// Creating Spot Instance ////

        // Initializes a Spot Instance Request
        RequestSpotInstancesRequest requestRequest = new RequestSpotInstancesRequest();
        // Request 1 x t1.micro instance with a bid price of $0.03.
        requestRequest.setSpotPrice(spotPrice);
        requestRequest.setInstanceCount(Integer.valueOf(1));
        LaunchSpecification launchSpecification = new LaunchSpecification();
        launchSpecification.setImageId(imageId);
        launchSpecification.setInstanceType(instanceType);
        launchSpecification.setMonitoringEnabled(true);

        // Add the security group to the request.
        ArrayList<String> securityGroups = new ArrayList<String>();
        securityGroups.add(groupName);
        launchSpecification.setSecurityGroups(securityGroups);

        launchSpecification.setKeyName(keyName);

        // Add the launch specifications to the request.
        requestRequest.setLaunchSpecification(launchSpecification);

        // Call the RequestSpotInstance API.
        RequestSpotInstancesResult requestResult = ec2client.requestSpotInstances(requestRequest);

        List<SpotInstanceRequest> requestResponses = requestResult.getSpotInstanceRequests();

        // Setup an arraylist to collect all of the request ids we want to
        // watch hit the running state.
        ArrayList<String> spotInstanceRequestIds = new ArrayList<String>();

        // Add all of the request ids to the hashset, so we can determine when they hit the
        // active state.
        for (SpotInstanceRequest requestResponse : requestResponses) {
            System.out.println("Created Spot Request: " + requestResponse.getSpotInstanceRequestId());
            spotInstanceRequestIds.add(requestResponse.getSpotInstanceRequestId());
            log.Info(requestResponse.getInstanceId() + "\t" + requestResponse.getState());
        }

        String instanceId = null;
        boolean isWaiting = true;
        while (isWaiting) {
            log.Info("*** Waiting for Spot Instance Request ***");
            Thread.sleep(5000);
            DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest();
            describeRequest.setSpotInstanceRequestIds(spotInstanceRequestIds);

            DescribeSpotInstanceRequestsResult describeResult = ec2client
                    .describeSpotInstanceRequests(describeRequest);
            List<SpotInstanceRequest> describeResponses = describeResult.getSpotInstanceRequests();
            for (SpotInstanceRequest describeResponse : describeResponses) {
                log.Info(describeResponse.getInstanceId() + "\t" + describeResponse.getState() + "\t"
                        + describeResponse.getSpotInstanceRequestId() + "\t"
                        + describeResponse.getStatus().getCode() + "\t"
                        + describeResponse.getStatus().getMessage());
                if (describeResponse.getState().equals("active")) {
                    isWaiting = false;
                    instanceId = describeResponse.getInstanceId();
                    break;
                }
            }

        }
        isWaiting = true;
        while (isWaiting) {
            log.Info("*** Waiting for Instance Running ***");
            Thread.sleep(1000);
            DescribeInstancesResult r = ec2client.describeInstances();
            Iterator<Reservation> ir = r.getReservations().iterator();
            while (ir.hasNext()) {
                Reservation rr = ir.next();
                List<Instance> instances = rr.getInstances();
                for (Instance ii : instances) {
                    log.Info(ii.getImageId() + "\t" + ii.getInstanceId() + "\t" + ii.getState().getName() + "\t"
                            + ii.getPrivateDnsName());
                    if (ii.getState().getName().equals("running") && ii.getInstanceId().equals(instanceId)) {
                        log.Info(ii.getPublicDnsName());
                        String publicDNS = ii.getPublicDnsName();
                        log.Info("Public DNS :" + publicDNS);
                        isWaiting = false;
                    }
                }
            }
        }

        /// Creating Tag for New Instance ////
        log.Info("Creating Tags for New Instance");
        CreateTagsRequest crt = new CreateTagsRequest();
        ArrayList<Tag> arrTag = new ArrayList<Tag>();
        arrTag.add(new Tag().withKey("Name").withValue(instanceName));
        crt.setTags(arrTag);

        ArrayList<String> arrInstances = new ArrayList<String>();
        arrInstances.add(instanceId);
        crt.setResources(arrInstances);
        ec2client.createTags(crt);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:org.excalibur.service.aws.ec2.EC2.java

License:Open Source License

private List<SpotInstanceOfferResult> toSpotInstanceResults(SpotInstanceOffer request,
        List<SpotInstanceRequest> spotInstanceRequests) {
    List<SpotInstanceOfferResult> resultList = new ArrayList<SpotInstanceOfferResult>();

    for (SpotInstanceRequest spotInstanceResult : spotInstanceRequests) {
        SpotInstanceOfferResult result = new SpotInstanceOfferResult().setCreateTime(new Date())
                .setOfferRequest(request);

        result.setState(SpotInstanceOfferStateType.valueOfFrom(spotInstanceResult.getState()));
        result.setSpotRequestId(spotInstanceResult.getSpotInstanceRequestId());

        result.setStatus(new SpotInstanceOfferStatus().setCode(spotInstanceResult.getStatus().getCode())
                .setMessage(spotInstanceResult.getStatus().getMessage())
                .setUpdateTime(spotInstanceResult.getStatus().getUpdateTime()));

        resultList.add(result);/*  w w  w. ja  v a  2 s.  co  m*/
    }

    return resultList;
}