Example usage for com.amazonaws.services.elasticbeanstalk AWSElasticBeanstalk describeEnvironments

List of usage examples for com.amazonaws.services.elasticbeanstalk AWSElasticBeanstalk describeEnvironments

Introduction

In this page you can find the example usage for com.amazonaws.services.elasticbeanstalk AWSElasticBeanstalk describeEnvironments.

Prototype

DescribeEnvironmentsResult describeEnvironments(DescribeEnvironmentsRequest describeEnvironmentsRequest);

Source Link

Document

Returns descriptions for existing environments.

Usage

From source file:fr.xebia.cloud.amazon.aws.tools.AmazonAwsUtils.java

License:Apache License

public static void synchronousTerminateEnvironments(@Nonnull String applicationName,
        @Nonnull AWSElasticBeanstalk beanstalk) {
    Set<String> statusToTerminate = Sets.newHashSet("Launching", "Updating", "Ready");
    Set<String> statusTerminating = Sets.newHashSet("Terminating");

    List<EnvironmentDescription> environments = beanstalk
            .describeEnvironments(new DescribeEnvironmentsRequest().withApplicationName(applicationName))
            .getEnvironments();/*from  w  w w  . j a v a 2 s  .  c  o  m*/
    List<EnvironmentDescription> environmentsToWaitFor = Collections.emptyList();

    int counter = 0;
    while (counter < 1 * 60) {
        environmentsToWaitFor = Lists.newArrayList();
        for (EnvironmentDescription environment : environments) {
            if (statusToTerminate.contains(environment.getStatus())) {
                TerminateEnvironmentResult terminateEnvironmentResult = beanstalk.terminateEnvironment(
                        new TerminateEnvironmentRequest().withEnvironmentId(environment.getEnvironmentId()));
                logger.debug("Terminate environment {}, status:{} - ",
                        new Object[] { environment.getEnvironmentName(), environment.getStatus(),
                                terminateEnvironmentResult });
                environmentsToWaitFor.add(environment);
            } else if (statusTerminating.contains(environment.getStatus())) {
                environmentsToWaitFor.add(environment);
                logger.debug("Skip termination of not running environment {}", environment);
            } else {
                logger.trace("skip terminated environment {}", environment);
            }
        }
        if (environmentsToWaitFor.isEmpty()) {
            break;
        } else {
            try {
                Thread.sleep(500);
            } catch (Exception e) {
                throw Throwables.propagate(e);
            }
            environments = beanstalk
                    .describeEnvironments(
                            new DescribeEnvironmentsRequest().withApplicationName(applicationName))
                    .getEnvironments();
        }
    }

    if (!environmentsToWaitFor.isEmpty()) {
        logger.warn("Failure to terminate {}", environmentsToWaitFor);
    }
}

From source file:jp.classmethod.aws.gradle.elasticbeanstalk.AWSElasticBeanstalkCleanupApplicationVersionTask.java

License:Apache License

@TaskAction
public void deleteVersion() {
    // to enable conventionMappings feature
    String appName = getAppName();
    boolean deleteSourceBundle = isDeleteSourceBundle();

    AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class);
    AWSElasticBeanstalk eb = ext.getClient();

    DescribeEnvironmentsResult der = eb
            .describeEnvironments(new DescribeEnvironmentsRequest().withApplicationName(appName));
    List<String> usingVersions = der.getEnvironments().stream().map(ed -> ed.getVersionLabel())
            .collect(Collectors.toList());

    DescribeApplicationVersionsResult davr = eb
            .describeApplicationVersions(new DescribeApplicationVersionsRequest().withApplicationName(appName));
    List<String> versionLabelsToDelete = davr.getApplicationVersions().stream()
            .filter(avd -> usingVersions.contains(avd.getVersionLabel()) == false
                    && avd.getVersionLabel().contains("-SNAPSHOT-"))
            .map(avd -> avd.getVersionLabel()).collect(Collectors.toList());

    versionLabelsToDelete.forEach(versionLabel -> {
        getLogger().info("version " + versionLabel + " deleted");
        eb.deleteApplicationVersion(new DeleteApplicationVersionRequest().withApplicationName(appName)
                .withVersionLabel(versionLabel).withDeleteSourceBundle(deleteSourceBundle));
    });//from  w ww  .j a  v a2 s.c  om
}

From source file:jp.classmethod.aws.gradle.elasticbeanstalk.AWSElasticBeanstalkCreateEnvironmentTask.java

License:Apache License

@TaskAction
public void createEnvironment() { // NOPMD
    // to enable conventionMappings feature
    String appName = getAppName();
    String envName = getEnvName();
    String envDesc = getEnvDesc();
    String cnamePrefix = getCnamePrefix();
    String templateName = getTemplateName();
    String versionLabel = getVersionLabel();
    Tier tier = getTier();//  w w  w. j a  va 2 s.  co m
    Map<String, String> tags = getTags();

    AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class);
    AWSElasticBeanstalk eb = ext.getClient();

    DescribeEnvironmentsResult der = eb.describeEnvironments(new DescribeEnvironmentsRequest()
            .withApplicationName(appName).withEnvironmentNames(envName).withIncludeDeleted(false));

    List<Tag> ebTags = tags.entrySet().stream().map(entry -> {
        Tag t = new Tag();
        t.setKey(entry.getKey());
        t.setValue(entry.getValue());
        return t;
    }).collect(Collectors.toList());

    if (der.getEnvironments() == null || der.getEnvironments().isEmpty()) {
        CreateEnvironmentRequest req = new CreateEnvironmentRequest().withApplicationName(appName)
                .withEnvironmentName(envName).withDescription(envDesc).withTemplateName(templateName)
                .withVersionLabel(versionLabel);

        if (tier != null) {
            req.withTier(tier.toEnvironmentTier());
            if (tier == Tier.WebServer) {
                req.withCNAMEPrefix(cnamePrefix);
            }
        }

        if (ebTags != null && !ebTags.isEmpty()) {
            req.withTags(ebTags);
        }

        CreateEnvironmentResult result = eb.createEnvironment(req);
        getLogger().info("environment {} @ {} ({}) created", envName, appName, result.getEnvironmentId());
    } else {
        String environmentId = der.getEnvironments().get(0).getEnvironmentId();

        // Only these two values are required to deploy the a application
        UpdateEnvironmentRequest req = new UpdateEnvironmentRequest().withEnvironmentId(environmentId)
                .withVersionLabel(versionLabel);

        // All other variables are optional and refer to the environment
        if (isNotBlank(envName)) {
            req.withEnvironmentName(envName);
        }
        if (isNotBlank(envDesc)) {
            req.withDescription(envDesc);
        }
        if (isNotBlank(templateName)) {
            req.withTemplateName(templateName);
        }

        eb.updateEnvironment(req);

        getLogger().info("environment {} @ {} ({}) updated", envName, appName, environmentId);
    }
}

From source file:jp.classmethod.aws.gradle.elasticbeanstalk.AWSElasticBeanstalkTerminateEnvironmentTask.java

License:Apache License

@TaskAction
public void terminateEnvironment() {
    // to enable conventionMappings feature
    String appName = getAppName();
    String envName = getEnvName();
    String envId = getEnvId();/*from   w  w  w  .ja v a 2  s  .  com*/

    AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class);
    AWSElasticBeanstalk eb = ext.getClient();

    if (envId == null) {
        DescribeEnvironmentsResult der = eb.describeEnvironments(
                new DescribeEnvironmentsRequest().withApplicationName(appName).withEnvironmentNames(envName));

        if (der.getEnvironments() == null || der.getEnvironments().isEmpty()) {
            getLogger().warn("environment " + envName + " @ " + appName + " not found");
            return;
        }

        EnvironmentDescription ed = der.getEnvironments().get(0);
        envId = ed.getEnvironmentId();
    }

    try {
        eb.terminateEnvironment(
                new TerminateEnvironmentRequest().withEnvironmentId(envId).withEnvironmentName(envName));
        getLogger().info("environment " + envName + " (" + envId + ") @ " + appName + " termination requested");
    } catch (AmazonServiceException e) {
        if (e.getMessage().contains("No Environment found") == false) {
            throw e;
        }
        getLogger().warn("environment " + envName + " (" + envId + ") @ " + appName + " not found");
    }
}

From source file:jp.classmethod.aws.gradle.elasticbeanstalk.AWSElasticBeanstalkWaitEnvironmentStatusTask.java

License:Apache License

@TaskAction
public void waitEnvironmentForStatus() { // NOPMD
    // to enable conventionMappings feature
    String appName = getAppName();
    String envName = getEnvName();
    int loopTimeout = getLoopTimeout();
    int loopWait = getLoopWait();

    if (appName == null) {
        throw new GradleException("applicationName is not specified");
    }/*from  ww  w.  j  ava2  s .  c  o  m*/

    AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class);
    AWSElasticBeanstalk eb = ext.getClient();

    long start = System.currentTimeMillis();
    while (true) {
        if (System.currentTimeMillis() > start + (loopTimeout * 1000)) {
            throw new GradleException("Timeout");
        }

        try {
            DescribeEnvironmentsResult der = eb.describeEnvironments(new DescribeEnvironmentsRequest()
                    .withApplicationName(appName).withEnvironmentNames(envName));

            if (der.getEnvironments() == null || der.getEnvironments().isEmpty()) {
                getLogger().info("environment " + envName + " @ " + appName + " not found");
                return;
            }

            EnvironmentDescription ed = der.getEnvironments().get(0);

            if (successStatuses.contains(ed.getStatus())) {
                getLogger().info("Status of environment " + envName + " @ " + appName + " is now "
                        + ed.getStatus() + ".");
                break;
            } else if (waitStatuses.contains(ed.getStatus())) {
                getLogger().info(
                        "Status of environment " + envName + " @ " + appName + " is " + ed.getStatus() + "...");
                try {
                    Thread.sleep(loopWait * 1000);
                } catch (InterruptedException e) {
                    throw new GradleException("interrupted", e);
                }
            } else {
                // fail if not contains in successStatus or waitStatus
                throw new GradleException("Status of environment " + envName + " @ " + appName + " is "
                        + ed.getStatus() + ".  It seems to be failed.");
            }
        } catch (AmazonServiceException e) {
            throw new GradleException(e.getMessage(), e);
        }
    }
}

From source file:org.xmlsh.aws.gradle.elasticbeanstalk.AWSElasticBeanstalkCreateEnvironmentTask.java

License:BSD License

@TaskAction
public void createEnvironment() {
    // to enable conventionMappings feature
    String appName = getAppName();
    String envName = getEnvName();
    String envDesc = getEnvDesc();
    String cnamePrefix = getCnamePrefix();
    String templateName = getTemplateName();
    String versionLabel = getVersionLabel();
    Tier tier = getTier();/*  w  w w  . j av  a2s  . com*/

    AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class);
    AWSElasticBeanstalk eb = ext.getClient();

    DescribeEnvironmentsResult der = eb.describeEnvironments(new DescribeEnvironmentsRequest()
            .withApplicationName(appName).withEnvironmentNames(envName).withIncludeDeleted(false));

    if (der.getEnvironments() == null || der.getEnvironments().isEmpty()) {
        CreateEnvironmentRequest req = new CreateEnvironmentRequest().withApplicationName(appName)
                .withEnvironmentName(envName).withDescription(envDesc).withTemplateName(templateName)
                .withVersionLabel(versionLabel).withTier(tier.toEnvironmentTier());
        if (tier == Tier.WebServer) {
            req.withCNAMEPrefix(cnamePrefix);
        }
        CreateEnvironmentResult result = eb.createEnvironment(req);
        getLogger().info(
                "environment " + envName + " @ " + appName + " (" + result.getEnvironmentId() + ") created");
    } else {
        String environmentId = der.getEnvironments().get(0).getEnvironmentId();

        eb.updateEnvironment(new UpdateEnvironmentRequest().withEnvironmentId(environmentId)
                .withEnvironmentName(envName).withDescription(envDesc).withTemplateName(templateName)
                .withVersionLabel(versionLabel).withTier(tier.toEnvironmentTier()));
        getLogger().info("environment " + envName + " @ " + appName + " (" + environmentId + ") updated");
    }
}

From source file:org.xmlsh.aws.gradle.elasticbeanstalk.AWSElasticBeanstalkWaitEnvironmentStatusTask.java

License:BSD License

@TaskAction
public void waitEnvironmentForStatus() {
    // to enable conventionMappings feature
    String appName = getAppName();
    String envName = getEnvName();
    int loopTimeout = getLoopTimeout();
    int loopWait = getLoopWait();

    if (appName == null)
        throw new GradleException("applicationName is not specified");

    AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class);
    AWSElasticBeanstalk eb = ext.getClient();

    long start = System.currentTimeMillis();
    while (true) {
        if (System.currentTimeMillis() > start + (loopTimeout * 1000)) {
            throw new GradleException("Timeout");
        }/*from  ww w .  ja v  a2  s.c  o  m*/

        try {
            DescribeEnvironmentsResult der = eb.describeEnvironments(new DescribeEnvironmentsRequest()
                    .withApplicationName(appName).withEnvironmentNames(envName));

            if (der.getEnvironments() == null || der.getEnvironments().isEmpty()) {
                getLogger().info("environment " + envName + " @ " + appName + " not found");
                return;
            }

            EnvironmentDescription ed = der.getEnvironments().get(0);

            if (successStatuses.contains(ed.getStatus())) {
                getLogger().info("Status of environment " + envName + " @ " + appName + " is now "
                        + ed.getStatus() + ".");
                break;
            } else if (waitStatuses.contains(ed.getStatus())) {
                getLogger().info(
                        "Status of environment " + envName + " @ " + appName + " is " + ed.getStatus() + "...");
                try {
                    Thread.sleep(loopWait * 1000);
                } catch (InterruptedException e) {
                    throw new GradleException("interrupted");
                }
            } else {
                // waitStatuses?successStatuses???fail??
                throw new GradleException("Status of environment " + envName + " @ " + appName + " is "
                        + ed.getStatus() + ".  It seems to be failed.");
            }
        } catch (AmazonServiceException e) {
            throw new GradleException(e.getMessage());
        }
    }
}