List of usage examples for com.amazonaws.services.elasticbeanstalk AWSElasticBeanstalk describeEnvironments
DescribeEnvironmentsResult describeEnvironments(DescribeEnvironmentsRequest describeEnvironmentsRequest);
Returns descriptions for existing environments.
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()); } } }