Example usage for com.amazonaws.services.ec2.model InstanceStateName Running

List of usage examples for com.amazonaws.services.ec2.model InstanceStateName Running

Introduction

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

Prototype

InstanceStateName Running

To view the source code for com.amazonaws.services.ec2.model InstanceStateName Running.

Click Source Link

Usage

From source file:com.carrotgarden.maven.aws.ecc.CarrotElasticCompute.java

License:BSD License

/**
 * http://shlomoswidler.com/2009/07/ec2-instance-life-cycle.html
 *///w  w w  . ja va 2  s .  c  o  m
public void instanceStart(final String instanceId) throws Exception {

    final Instance instance = findInstance(instanceId);

    final InstanceStateName state = stateFrom(instance);

    logger.info("start: current state=" + state);

    switch (state) {
    case Running:
        return;
    case Pending:
        waitForIstanceState(instanceId, InstanceStateName.Running);
        return;
    case Stopped:
        break;
    case Stopping:
        waitForIstanceState(instanceId, InstanceStateName.Stopped);
        break;
    case ShuttingDown:
    case Terminated:
        throw new IllegalStateException("start: dead instance");
    default:
        throw new IllegalStateException("start: unknown state");
    }

    final StartInstancesRequest request = new StartInstancesRequest();
    request.setInstanceIds(wrapList(instanceId));

    final StartInstancesResult result = amazonClient.startInstances(request);

    waitForIstanceState(instanceId, InstanceStateName.Running);

}

From source file:com.carrotgarden.maven.aws.ecc.CarrotElasticCompute.java

License:BSD License

/**
 * http://shlomoswidler.com/2009/07/ec2-instance-life-cycle.html
 *///  w w w. j ava 2 s .  co  m
public void instanceStop(final String instanceId) throws Exception {

    final Instance instance = findInstance(instanceId);

    final InstanceStateName state = stateFrom(instance);

    logger.info("stop: current state=" + state);

    switch (state) {
    case Pending:
        waitForIstanceState(instanceId, InstanceStateName.Running);
    case Running:
        break;
    case Stopping:
        waitForIstanceState(instanceId, InstanceStateName.Stopped);
    case Stopped:
    case Terminated:
    case ShuttingDown:
        return;
    default:
        throw new IllegalStateException("start: unknown state");
    }

    final StopInstancesRequest request = new StopInstancesRequest();
    request.setInstanceIds(wrapList(instanceId));

    final StopInstancesResult result = amazonClient.stopInstances(request);

    waitForIstanceState(instanceId, InstanceStateName.Stopped);

}

From source file:com.carrotgarden.maven.aws.ecc.CarrotElasticCompute.java

License:BSD License

/**
 * stop instance and take image snapshot
 *///from w  w w.  j  a  v  a 2s.c o m
public Image imageCreate(final String instanceId, final String name, final String description)
        throws Exception {

    logger.info("ensure instance state : instanceId=" + instanceId);

    final InstanceStateName state = stateFrom(instanceId);

    final boolean wasRunning;

    switch (state) {
    case Pending:
        waitForIstanceState(instanceId, InstanceStateName.Running);
    case Running:
        wasRunning = true;
        break;
    case Stopping:
        waitForIstanceState(instanceId, InstanceStateName.Stopped);
    case Stopped:
        wasRunning = false;
        break;
    default:
        throw new Exception("image create : invalid instance state=" + state);
    }

    if (wasRunning) {
        instanceStop(instanceId);
    }

    final CreateImageRequest request = new CreateImageRequest();

    request.setInstanceId(instanceId);
    request.setName(name);
    request.setDescription(description);

    final CreateImageResult result = amazonClient.createImage(request);

    final String imageId = result.getImageId();

    logger.info("ensure image state: imageId=" + imageId);

    final Image image = waitForImageCreate(imageId);

    if (wasRunning) {
        instanceStart(instanceId);
    }

    return image;

}

From source file:com.dtolabs.rundeck.ec2.NodeGenerator.java

License:Apache License

private static Set<Instance> performQuery(AWSCredentials credentials, final String endPoint,
        final ArrayList<String> filterParams) {
    AmazonEC2Client ec2 = new AmazonEC2Client(credentials);
    if (null != endPoint && !"".equals(endPoint) && !"-".equals(endPoint)) {
        ec2.setEndpoint(endPoint);//ww  w .ja  v  a2 s  . c  o  m
    }

    //create "running" filter
    ArrayList<Filter> filters = new ArrayList<Filter>();
    Filter filter = new Filter("instance-state-name").withValues(InstanceStateName.Running.toString());
    filters.add(filter);

    if (null != filterParams) {
        for (final String filterParam : filterParams) {
            String[] x = filterParam.split("=", 2);
            if (!"".equals(x[0]) && !"".equals(x[1])) {
                filters.add(new Filter(x[0]).withValues(x[1]));
            }
        }
    }
    DescribeInstancesRequest request = new DescribeInstancesRequest().withFilters(filters);

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

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

From source file:com.dtolabs.rundeck.plugin.resources.ec2.InstanceToNodeMapper.java

License:Apache License

private ArrayList<Filter> buildFilters() {
    final ArrayList<Filter> filters = new ArrayList<Filter>();
    if (isRunningStateOnly()) {
        final Filter filter = new Filter("instance-state-name")
                .withValues(InstanceStateName.Running.toString());
        filters.add(filter);/*from  ww  w . j  a  v a  2  s. co  m*/
    }

    if (null != getFilterParams()) {
        for (final String filterParam : getFilterParams()) {
            final String[] x = filterParam.split("=", 2);
            if (!"".equals(x[0]) && !"".equals(x[1])) {
                filters.add(new Filter(x[0]).withValues(x[1]));
            }
        }
    }
    return filters;
}

From source file:com.example.utils.EC2Utils.java

License:Open Source License

/**
 * Return the DNS name of one Amazon EC2 instance with the provided filter name and value.
 * /*from w w w  .ja v a 2  s. c o  m*/
 * @param ec2Client
 *        an Amazon EC2 instance
 * @param filterName
 *        the name of the filter
 * @param filterValue
 *        the value of the filter
 * @return the public DNS name of an instance with the filter name and value. Null if none exist.
 */
public static String getEndpointForFirstActiveInstanceWithTag(AmazonEC2 ec2Client, String filterName,
        String filterValue) {
    DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
            .withFilters(new Filter().withName(filterName).withValues(filterValue));
    DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(describeInstancesRequest);

    List<Reservation> reservations = describeInstancesResult.getReservations();
    for (Reservation reservation : reservations) {
        List<Instance> ec2Instances = reservation.getInstances();
        for (Instance ec2Instance : ec2Instances) {
            if (InstanceStateName.Running.toString().equals(ec2Instance.getState().getName())) {
                return ec2Instance.getPublicDnsName();
            }
        }
    }
    return null;
}

From source file:com.lunabeat.dooper.HadoopCluster.java

License:Apache License

public RunInstancesResult launchMaster(String size) throws IOException {
    update();/*from  ww  w .j  a v  a 2  s . c o m*/
    if ((_master != null) && ((InstanceStateName.Running == InstanceStateName
            .fromValue(_master.getInstance().getState().getName()))
            || (InstanceStateName.Pending == InstanceStateName
                    .fromValue(_master.getInstance().getState().getName())))) {
        Reservation masterReservation = _ec2
                .describeInstances(
                        new DescribeInstancesRequest().withInstanceIds(_master.getInstance().getInstanceId()))
                .getReservations().get(0);
        return new RunInstancesResult().withReservation(masterReservation);
    }
    //make the groups
    createSecurityGroups();
    String AMIImage = _config.get("AMI." + size + ".Image", _config.get(ClusterConfig.DEFAULT_AMI_KEY));
    LOGGER.info("AMIImage = [" + AMIImage + "]");
    RunInstancesRequest rir = new RunInstancesRequest().withImageId(AMIImage).withMinCount(1).withMaxCount(1)
            .withInstanceType(size).withSecurityGroups(_masterGroupName)
            .withUserData(Base64.encodeBase64String(getUserData().getBytes()))
            .withKeyName(_config.get(ClusterConfig.KEYPAIR_NAME_KEY));
    return _ec2.runInstances(rir);
}

From source file:com.lunabeat.dooper.HadoopCluster.java

License:Apache License

/**
 *
 * @param howMany//from  w w  w .  j av a  2 s  .  co m
 * @return result of aws call to terminate
 */
public TerminateInstancesResult terminateSlaves(int howMany) {
    update();
    int terminated = 0;
    ArrayList<String> iids = new ArrayList<String>();
    for (ClusterInstance slave : _slaves) {
        InstanceStateName state = InstanceStateName.fromValue(slave.getInstance().getState().getName());
        if (terminated < howMany
                && (state == InstanceStateName.Running || state == InstanceStateName.Pending)) {
            iids.add(slave.getInstance().getInstanceId());
            terminated++;
        }

    }
    if (iids.size() < 1) {
        return null;
    }
    TerminateInstancesRequest tir = new TerminateInstancesRequest().withInstanceIds(iids);
    return _ec2.terminateInstances(tir);
}

From source file:datameer.awstasks.ant.ec2.Ec2LaunchTask.java

License:Apache License

@Override
public void doExecute(AmazonEC2 ec2) throws BuildException {
    LOG.info("executing " + getClass().getSimpleName() + " with groupName '" + _groupName + "'");
    try {/*from   www  . ja  v a  2 s  .  c o  m*/
        boolean instancesRunning = Ec2Util.findByGroup(ec2, _groupName, false, InstanceStateName.Pending,
                InstanceStateName.Running) != null;
        if (!isReuseRunningInstances() && instancesRunning) {
            throw new IllegalStateException("found already running instances for group '" + _groupName + "'");
        }
        if (!Ec2Util.groupExists(ec2, _groupName)) {
            LOG.info("group '" + _groupName + "' does not exists - creating it");
            String groupDescription = getGroupDescription();
            if (groupDescription == null) {
                throw new BuildException("must specify groupDescription");
            }
            ec2.createSecurityGroup(new CreateSecurityGroupRequest(_groupName, groupDescription));
        }

        List<String> securityGroups = Arrays.asList("default", _groupName);
        List<IpPermission> existingPermissions = Ec2Util.getPermissions(ec2, securityGroups);
        for (GroupPermission groupPermission : _groupPermissions) {
            if (groupPermission.getToPort() == -1) {
                groupPermission.setToPort(groupPermission.getFromPort());
            }
            if (!permissionExists(groupPermission, existingPermissions)) {
                LOG.info("did not found permission '" + groupPermission + "' - creating it...");
                ec2.authorizeSecurityGroupIngress(new AuthorizeSecurityGroupIngressRequest()
                        .withGroupName(_groupName).withIpPermissions(groupPermission.toIpPermission()));
            }
        }

        InstanceGroup instanceGroup = new InstanceGroupImpl(ec2);
        RunInstancesRequest launchConfiguration = new RunInstancesRequest(_ami, _instanceCount, _instanceCount);
        if (_kernelId != null) {
            launchConfiguration.setKernelId(_kernelId);
        }
        if (_ramDiskId != null) {
            launchConfiguration.setKernelId(_ramDiskId);
        }
        launchConfiguration.setKeyName(_privateKeyName);
        launchConfiguration.setSecurityGroups(securityGroups);
        if (_userData != null) {
            launchConfiguration.setUserData(Base64.encodeBase64String(_userData.getBytes()));
        }
        if (_instanceType != null) {
            launchConfiguration.setInstanceType(_instanceType);
        }
        launchConfiguration.setPlacement(new Placement(_availabilityZone));
        if (instancesRunning) {
            instanceGroup.connectTo(_groupName);
        } else {
            instanceGroup.launch(launchConfiguration, TimeUnit.MINUTES, _maxStartTime);
            if (_instanceName != null) {
                LOG.info("tagging instances with name '" + _instanceName + " [<idx>]'");
                int idx = 1;
                for (Instance instance : instanceGroup.getInstances(false)) {
                    CreateTagsRequest createTagsRequest = new CreateTagsRequest();
                    createTagsRequest.withResources(instance.getInstanceId()) //
                            .withTags(new Tag("Name", _instanceName + " [" + idx + "]"));
                    ec2.createTags(createTagsRequest);
                    idx++;
                }
            }
        }
    } catch (Exception e) {
        LOG.error("execution " + getClass().getSimpleName() + " with groupName '" + _groupName + "' failed: "
                + e.getMessage());
        throw new BuildException(e);
    }
}

From source file:datameer.awstasks.ant.ec2.Ec2StartTask.java

License:Apache License

@Override
public void execute() throws BuildException {
    System.out.println("executing " + getClass().getSimpleName() + " with groupName '" + _groupName + "'");
    Jec2 ec2 = new Jec2(_accessKey, _accessSecret);
    try {/*  w  w  w .  j ava 2s  .com*/
        boolean instancesRunning = Ec2Util.findByGroup(ec2, _groupName, InstanceStateName.Pending,
                InstanceStateName.Running) != null;
        if (!isReuseRunningInstances() && instancesRunning) {
            throw new IllegalStateException("found already running instances for group '" + _groupName + "'");
        }
        if (!Ec2Util.groupExists(ec2, _groupName)) {
            System.out.println("group '" + _groupName + "' does not exists - creating it");
            String groupDescription = getGroupDescription();
            if (groupDescription == null) {
                throw new BuildException("must specify groupDescription");
            }
            ec2.createSecurityGroup(_groupName, groupDescription);
        }

        List<String> securityGroups = Arrays.asList("default", _groupName);
        List<IpPermission> existingPermissions = Ec2Util.getPermissions(ec2, securityGroups);
        for (GroupPermission groupPermission : _groupPermissions) {
            if (groupPermission.getToPort() == -1) {
                groupPermission.setToPort(groupPermission.getFromPort());
            }
            if (!permissionExists(groupPermission, existingPermissions)) {
                System.out.println("did not found permission '" + groupPermission + "' - creating it...");
                ec2.authorizeSecurityGroupIngress(_groupName, groupPermission.getProtocol(),
                        groupPermission.getFromPort(), groupPermission.getToPort(),
                        groupPermission.getSourceIpOrGroup());
            }
        }

        InstanceGroup instanceGroup = new InstanceGroupImpl(ec2);
        LaunchConfiguration launchConfiguration = new LaunchConfiguration(_ami, _instanceCount, _instanceCount);
        if (_kernelId != null) {
            launchConfiguration.setKernelId(_kernelId);
        }
        if (_ramDiskId != null) {
            launchConfiguration.setKernelId(_ramDiskId);
        }
        launchConfiguration.setKeyName(_privateKeyName);
        launchConfiguration.setSecurityGroup(securityGroups);
        if (_userData != null) {
            launchConfiguration.setUserData(_userData.getBytes());
        }
        if (_instanceType != null) {
            InstanceType instanceType = InstanceType.valueOf(_instanceType.toUpperCase());
            launchConfiguration.setInstanceType(instanceType);
        }
        launchConfiguration.setAvailabilityZone(_availabilityZone);
        if (instancesRunning) {
            instanceGroup.connectTo(_groupName);
        } else {
            instanceGroup.startup(launchConfiguration, TimeUnit.MINUTES, _maxStartTime);
        }
    } catch (Exception e) {
        throw new BuildException(e);
    }
}