Package br.com.ingenieux.cloudy.awseb.di

Source Code of br.com.ingenieux.cloudy.awseb.di.BeanstalkEnvironmentModule

package br.com.ingenieux.cloudy.awseb.di;

import com.google.inject.AbstractModule;
import com.google.inject.Provides;

import com.amazonaws.services.ec2.AmazonEC2;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.Filter;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.elasticbeanstalk.AWSElasticBeanstalk;
import com.amazonaws.services.elasticbeanstalk.model.DescribeEnvironmentsRequest;
import com.amazonaws.services.elasticbeanstalk.model.DescribeEnvironmentsResult;
import com.amazonaws.services.elasticbeanstalk.model.EnvironmentDescription;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

public class BeanstalkEnvironmentModule extends AbstractModule {

  @Override
  protected void configure() {
  }

  @Provides
  @Singleton
  @Named("beanstalk.env")
  @Inject
  public EnvironmentDescription getEnvironmentDescription(@Named("beanstalk.env.id") String envId,
                                                          AWSElasticBeanstalk eb) {
    DescribeEnvironmentsResult
        environments =
        eb.describeEnvironments(new DescribeEnvironmentsRequest().withEnvironmentIds(envId));

    List<EnvironmentDescription> envs = environments.getEnvironments();

    if (envs.isEmpty()) {
      return null;
    }

    return envs.get(0);
  }

  @Provides
  @Singleton
  @Named("beanstalk.app.name")
  public String getAppName(@Named("beanstalk.env.id") String envId, AWSElasticBeanstalk eb) {
    DescribeEnvironmentsResult
        environments =
        eb.describeEnvironments(new DescribeEnvironmentsRequest().withEnvironmentIds(envId));

    List<EnvironmentDescription> envs = environments.getEnvironments();

    if (envs.isEmpty()) {
      return "n/a";
    }

    return envs.get(0).getApplicationName();
  }

  @Provides
  @Singleton
  @Named("beanstalk.env.id")
  public String getEnvId(@Named("aws.instance.id") String instanceId, AmazonEC2 ec2) {
    DescribeInstancesRequest request = new DescribeInstancesRequest()
        .withInstanceIds(instanceId)
        .withFilters(
            new Filter("instance-state-name").withValues("running"));

    for (Reservation r : ec2.describeInstances(request).getReservations()) {
      for (Instance i : r.getInstances()) {
        for (Tag t : i.getTags()) {
          if ("elasticbeanstalk:environment-id".equals(t.getKey())) {
            return t.getValue();
          }
        }
      }
    }

    return "n/a";
  }

  @Provides
  @Singleton
  @Named("beanstalk.env.name")
  public String getEnvName(@Named("aws.instance.id") String instanceId, AmazonEC2 ec2) {
    DescribeInstancesRequest request = new DescribeInstancesRequest()
        .withInstanceIds(instanceId)
        .withFilters(
            new Filter("instance-state-name").withValues("running"));

    for (Reservation r : ec2.describeInstances(request).getReservations()) {
      for (Instance i : r.getInstances()) {
        for (Tag t : i.getTags()) {
          if ("elasticbeanstalk:environment-name".equals(t.getKey())) {
            return t.getValue();
          }
        }
      }
    }

    return "n/a";
  }
}
TOP

Related Classes of br.com.ingenieux.cloudy.awseb.di.BeanstalkEnvironmentModule

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.