private void deployNewVersion(String versionLabel, String environmentName, String applicationName, String templateName) { log.info("Describe environments to check if environment exists"); ArrayList<String> environmentNames = new ArrayList<String>(); environmentNames.add(environmentName); DescribeEnvironmentsRequest describeEnvironmentsRequest = new DescribeEnvironmentsRequest(); describeEnvironmentsRequest.setEnvironmentNames(environmentNames); DescribeEnvironmentsResult describeEnvironmentsResult = elasticBeanstalk.describeEnvironments(describeEnvironmentsRequest); if (describeEnvironmentsResult.getEnvironments().size() == 0) { log.info("Create environment with uploaded application version"); CreateEnvironmentRequest createEnvironmentRequest = new CreateEnvironmentRequest(); createEnvironmentRequest.setApplicationName(applicationName); createEnvironmentRequest.setEnvironmentName(environmentName); createEnvironmentRequest.setTemplateName(templateName); createEnvironmentRequest.setVersionLabel(versionLabel); CreateEnvironmentResult createEnvironmentResult = elasticBeanstalk.createEnvironment(createEnvironmentRequest); log.info("Created environment {}", createEnvironmentResult); } else { log.info("Update environment with uploaded application version"); UpdateEnvironmentRequest updateEnvironmentRequest = new UpdateEnvironmentRequest(); updateEnvironmentRequest.setEnvironmentName(environmentName); updateEnvironmentRequest.setVersionLabel(versionLabel); UpdateEnvironmentResult updateEnvironmentResult = elasticBeanstalk.updateEnvironment(updateEnvironmentRequest); log.info("Updated environment {}", updateEnvironmentResult); } }
private ApplicationVersionDescription createApplicationVersion(S3Location bundle, String applicationName, String versionLabel) { log.info("Create application version {} with for application {}", versionLabel, applicationName); CreateApplicationVersionRequest createApplicationVersionRequest = new CreateApplicationVersionRequest(applicationName, versionLabel); createApplicationVersionRequest.setDescription(applicationName + " via Gradle deployment on " + Instant.now()); createApplicationVersionRequest.setAutoCreateApplication(true); createApplicationVersionRequest.setSourceBundle(bundle); CreateApplicationVersionResult createApplicationVersionResult = elasticBeanstalk.createApplicationVersion(createApplicationVersionRequest); log.info("Registered application version {}", createApplicationVersionResult); return createApplicationVersionResult.getApplicationVersion(); }
private S3Location uploadCodeBundle(File warFile) { if (!warFile.exists()) throw new RuntimeException("war-file " + warFile + " does not exist."); log.info("Uploading {} to Amazon S3", warFile); String bucketName = elasticBeanstalk.createStorageLocation().getS3Bucket(); String key = createS3KeyFromFileName(warFile.getName()); s3.putObject(bucketName, key, warFile); return new S3Location(bucketName, key); }
@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)); }); } }
private void terminateEnvironment(String environmentId) { final DescribeEnvironmentsResult result = getAwseb().describeEnvironments(new DescribeEnvironmentsRequest().withEnvironmentIds(environmentId).withIncludeDeleted(false)); if (result.getEnvironments().isEmpty()) { log("Environment environmentId '%s' was already finished."); return; } log("Terminating environment %s", environmentId); TerminateEnvironmentRequest request = new TerminateEnvironmentRequest().withEnvironmentId(environmentId); getAwseb().terminateEnvironment(request); }
public static Optional<EnvironmentDescription> describe(AWSElasticBeanstalk client, String awsAppName, String environment) { return client.describeEnvironments(new DescribeEnvironmentsRequest() .withApplicationName(awsAppName) .withEnvironmentNames(Collections.singletonList(environment))) .getEnvironments().stream().findFirst(); } }
if(!skipRegions.contains(region.getName())){ AWSElasticBeanstalk awsElasticBeanstalk = AWSElasticBeanstalkClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(temporaryCredentials)).withRegion(region.getName()).build(); List<ApplicationDescription> appDesList = awsElasticBeanstalk.describeApplications().getApplications(); List<EbsVH> ebsList = new ArrayList<>(); for(ApplicationDescription appDes : appDesList) { List<EnvironmentDescription> envDesList = awsElasticBeanstalk.describeEnvironments(new DescribeEnvironmentsRequest().withApplicationName(appDes.getApplicationName())).getEnvironments(); if(envDesList.isEmpty()) { EbsVH ebsObj = new EbsVH(); ebsObj.setApp(appDes); ebsObj.setEnv(envDes); ebsObj.setEnvResource(awsElasticBeanstalk.describeEnvironmentResources(new DescribeEnvironmentResourcesRequest().withEnvironmentId(envDes.getEnvironmentId())).getEnvironmentResources()); ebsList.add(ebsObj);
List<ApplicationDescription> existingApps = eb.describeApplications(new DescribeApplicationsRequest() .withApplicationNames(appName)).getApplications(); if (existingApps.isEmpty()) { eb.deleteConfigurationTemplate(new DeleteConfigurationTemplateRequest() .withApplicationName(appName) .withTemplateName(templateName)); getLogger().info("configuration template {} @ {} deleted", templateName, appName); } else { eb.updateConfigurationTemplate(new UpdateConfigurationTemplateRequest() .withApplicationName(appName) .withTemplateName(templateName) eb.createConfigurationTemplate(new CreateConfigurationTemplateRequest() .withApplicationName(appName) .withTemplateName(templateName)
List<EnvironmentDescription> environments = getAwseb().describeEnvironments(new DescribeEnvironmentsRequest() .withEnvironmentIds(getEnvironmentIds()) .withIncludeDeleted(false) final DescribeEventsResult describeEventsResult = getAwseb().describeEvents( new DescribeEventsRequest() .withEnvironmentId(currentEnvironmentId)
withIncludeDeleted(false); final DescribeEnvironmentsResult result = getAwseb().describeEnvironments(req); log("AWS Abortable Environment Update Found. Calling abort on AWSEB Service"); getAwseb().abortEnvironmentUpdate(new AbortEnvironmentUpdateRequest().withEnvironmentId(environmentId));
private void updateEnvironment(AWSElasticBeanstalk client, String environment) { client.updateEnvironment(new UpdateEnvironmentRequest() .withApplicationName(awsAppName) .withEnvironmentName(environment) .withVersionLabel(newVersion)); }
public void execute() throws Exception { for (ApplicationDescription appDesc : service.describeApplications().getApplications()) { if (!appDesc.getApplicationName().startsWith("mbit-")) { info("Ignoring application name %s", appDesc.getApplicationName()); continue; } else { info("Browsing environments for app name %s", appDesc.getApplicationName()); } info("Deleting application"); service.deleteApplication(new DeleteApplicationRequest().withApplicationName(appDesc.getApplicationName()).withTerminateEnvByForce(true)); } }
@TaskAction public void createApplication() { // to enable conventionMappings feature String appName = getAppName(); String appDesc = getAppDesc(); AwsBeanstalkPluginExtension ext = getProject().getExtensions().getByType(AwsBeanstalkPluginExtension.class); AWSElasticBeanstalk eb = ext.getClient(); DescribeApplicationsResult existingApps = eb.describeApplications(new DescribeApplicationsRequest() .withApplicationNames(appName)); if (existingApps.getApplications().isEmpty()) { eb.createApplication(new CreateApplicationRequest() .withApplicationName(appName) .withDescription(appDesc)); getLogger().info("application " + appName + " (" + appDesc + ") created"); } else { eb.updateApplication(new UpdateApplicationRequest() .withApplicationName(appName) .withDescription(appDesc)); getLogger().info("application " + appName + " (" + appDesc + ") updated"); } } }
public void deleteApplicationVersion(ApplicationVersionDescription version) { log.info("Deleting application version {}", version.getVersionLabel()); DeleteApplicationVersionRequest deleteRequest = new DeleteApplicationVersionRequest(); deleteRequest.setApplicationName(version.getApplicationName()); deleteRequest.setVersionLabel(version.getVersionLabel()); deleteRequest.setDeleteSourceBundle(true); elasticBeanstalk.deleteApplicationVersion(deleteRequest); }
private String createEnvironment(String versionLabel, String versionDescription, String templateName, List<String> environmentNames) throws InvalidDeploymentTypeException { log("Creating environment based on application %s @ %s from version %s and configuration template %s", c.config.getApplicationName(), StringUtils.join(environmentNames, "/"), versionLabel, templateName); String newEnvironmentName = environmentNames.get(0); for (String environmentName : environmentNames) { try { lookupEnvironmentIds(Collections.singletonList(environmentName)); } catch (InvalidEnvironmentsSizeException e) { newEnvironmentName = environmentName; break; } } CreateEnvironmentRequest request = new CreateEnvironmentRequest() .withEnvironmentName(newEnvironmentName).withVersionLabel(versionLabel) .withDescription(versionDescription).withApplicationName(c.config.getApplicationName()) .withTemplateName(templateName); return getAwseb().createEnvironment(request).getEnvironmentId(); }
public void deleteOldVersions(String applicationName) { DescribeApplicationVersionsRequest search = new DescribeApplicationVersionsRequest(); search.setApplicationName(applicationName); List<ApplicationVersionDescription> versions = elasticBeanstalk.describeApplicationVersions(search).getApplicationVersions(); List<ApplicationVersionDescription> versionsToRemove = versionsToRemove(versions); Set<String> deployedLabels = findDeployedLabels(applicationName); log.info("Removing {} oldest versions of total {} versions", versionsToRemove.size(), versions.size()); for (ApplicationVersionDescription version : versionsToRemove) { if (deployedLabels.contains(version.getVersionLabel())) { log.info("Not removing version {} because it is deployed", version.getVersionLabel()); } else { deleteApplicationVersion(version); } } }
private String createConfigurationTemplate(String environmentId) { log("Creating configuration template from application %s with label %s", c.config.getApplicationName(), getVersionLabel()); CreateConfigurationTemplateRequest request = new CreateConfigurationTemplateRequest() .withApplicationName(c.config.getApplicationName()) .withEnvironmentId(environmentId) .withTemplateName("tmp-" + getVersionLabel()); return getAwseb().createConfigurationTemplate(request).getTemplateName(); }
private Set<String> findDeployedLabels(String applicationName) { DescribeEnvironmentsRequest req = new DescribeEnvironmentsRequest(); req.setApplicationName(applicationName); Set<String> result = new TreeSet<String>(); for (EnvironmentDescription description : elasticBeanstalk.describeEnvironments(req).getEnvironments()) { if (description.getVersionLabel() != null) { // Ignore null value (for example when environment is launching) result.add(description.getVersionLabel()); } } return result; } }
DescribeEnvironmentsResult der = eb.describeEnvironments(new DescribeEnvironmentsRequest() .withApplicationName(appName) .withEnvironmentNames(envName)); eb.terminateEnvironment(new TerminateEnvironmentRequest() .withEnvironmentId(envId) .withEnvironmentName(envName));
@Override public boolean perform() { Collection<String> environmentIds = getEnvironmentIds(); for (String element : environmentIds) { UpdateEnvironmentRequest req = new UpdateEnvironmentRequest(). withEnvironmentId(element). withVersionLabel(getVersionLabel()). withDescription(getVersionDescription()); log("Updating environmentId '%s' with Version Label set to '%s'", element, getVersionLabel()); getAwseb().updateEnvironment(req); } return false; }