Example usage for com.amazonaws.services.elasticbeanstalk.model DescribeEnvironmentResourcesRequest DescribeEnvironmentResourcesRequest

List of usage examples for com.amazonaws.services.elasticbeanstalk.model DescribeEnvironmentResourcesRequest DescribeEnvironmentResourcesRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.elasticbeanstalk.model DescribeEnvironmentResourcesRequest DescribeEnvironmentResourcesRequest.

Prototype

DescribeEnvironmentResourcesRequest

Source Link

Usage

From source file:br.com.ingenieux.mojo.beanstalk.cmd.dns.BindDomainsCommand.java

License:Apache License

@Override
protected Void executeInternal(BindDomainsContext ctx) throws Exception {
    Map<String, String> recordsToAssign = new LinkedHashMap<String, String>();

    ctx.singleInstance = isSingleInstance(ctx.getCurEnv());

    /**/*from w  ww .j  av a 2s. c om*/
     * Step #2: Validate Parameters
     */
    {
        for (String domain : ctx.getDomains()) {
            String key = formatDomain(domain);
            String value = null;

            /*
                         * Handle Entries in the form <record>:<zoneid>
             */
            if (-1 != key.indexOf(':')) {
                String[] pair = key.split(":", 2);

                key = formatDomain(pair[0]);
                value = strip(pair[1], ".");
            }

            recordsToAssign.put(key, value);
        }

        Validate.isTrue(recordsToAssign.size() > 0, "No Domains Supplied!");

        if (isInfoEnabled()) {
            info("Domains to Map to Environment (cnamePrefix='%s')", ctx.getCurEnv().getCNAME());

            for (Map.Entry<String, String> entry : recordsToAssign.entrySet()) {
                String key = entry.getKey();
                String zoneId = entry.getValue();

                String message = format(" * Domain: %s", key);

                if (null != zoneId) {
                    message += " (and using zoneId " + zoneId + ")";
                }

                info(message);
            }
        }
    }

    /**
     * Step #3: Lookup Domains on Route53
     */
    Map<String, HostedZone> hostedZoneMapping = new LinkedHashMap<String, HostedZone>();

    {
        Set<String> unresolvedDomains = new LinkedHashSet<String>();

        for (Map.Entry<String, String> entry : recordsToAssign.entrySet()) {
            if (null != entry.getValue()) {
                continue;
            }

            unresolvedDomains.add(entry.getKey());
        }

        for (HostedZone hostedZone : r53.listHostedZones().getHostedZones()) {
            String id = hostedZone.getId();
            String name = hostedZone.getName();

            hostedZoneMapping.put(id, hostedZone);

            if (unresolvedDomains.contains(name)) {
                if (isInfoEnabled()) {
                    info("Mapping Domain %s to R53 Zone Id %s", name, id);
                }

                recordsToAssign.put(name, id);

                unresolvedDomains.remove(name);
            }
        }

        Validate.isTrue(unresolvedDomains.isEmpty(), "Domains not resolved: " + join(unresolvedDomains, "; "));
    }

    /**
     * Step #4: Domain Validation
     */
    {
        for (Map.Entry<String, String> entry : recordsToAssign.entrySet()) {
            String record = entry.getKey();
            String zoneId = entry.getValue();
            HostedZone hostedZone = hostedZoneMapping.get(zoneId);

            Validate.notNull(hostedZone, format("Unknown Hosted Zone Id: %s for Record: %s", zoneId, record));
            Validate.isTrue(record.endsWith(hostedZone.getName()), format(
                    "Record %s does not map to zoneId %s (domain: %s)", record, zoneId, hostedZone.getName()));
        }
    }

    /**
     * Step #5: Get ELB Hosted Zone Id - if appliable
     */
    if (!ctx.singleInstance) {
        String loadBalancerName = parentMojo.getService()
                .describeEnvironmentResources(new DescribeEnvironmentResourcesRequest()
                        .withEnvironmentId(ctx.getCurEnv().getEnvironmentId()))
                .getEnvironmentResources().getLoadBalancers().get(0).getName();

        DescribeLoadBalancersRequest req = new DescribeLoadBalancersRequest(asList(loadBalancerName));

        List<LoadBalancerDescription> loadBalancers = elb.describeLoadBalancers(req)
                .getLoadBalancerDescriptions();

        Validate.isTrue(1 == loadBalancers.size(), "Unexpected number of Load Balancers returned");

        ctx.elbHostedZoneId = loadBalancers.get(0).getCanonicalHostedZoneNameID();

        if (isInfoEnabled()) {
            info(format("Using ELB Canonical Hosted Zone Name Id %s", ctx.elbHostedZoneId));
        }
    }

    /**
     * Step #6: Apply Change Batch on Each Domain
     */
    for (Map.Entry<String, String> recordEntry : recordsToAssign.entrySet()) {
        assignDomain(ctx, recordEntry.getKey(), recordEntry.getValue());
    }

    return null;
}

From source file:br.com.ingenieux.mojo.beanstalk.env.DescribeEnvironmentResourcesMojo.java

License:Apache License

@Override
protected Object executeInternal() throws MojoExecutionException, MojoFailureException {
    return getService().describeEnvironmentResources(new DescribeEnvironmentResourcesRequest()
            .withEnvironmentId(curEnv.getEnvironmentId()).withEnvironmentName(curEnv.getEnvironmentName()));
}

From source file:br.com.ingenieux.mojo.beanstalk.env.DumpInstancesMojo.java

License:Apache License

@Override
protected Object executeInternal() throws Exception {
    AmazonEC2 ec2 = clientFactory.getService(AmazonEC2Client.class);

    DescribeEnvironmentResourcesResult envResources = getService().describeEnvironmentResources(
            new DescribeEnvironmentResourcesRequest().withEnvironmentId(curEnv.getEnvironmentId())
                    .withEnvironmentName(curEnv.getEnvironmentName()));
    List<String> instanceIds = new ArrayList<String>();

    for (Instance i : envResources.getEnvironmentResources().getInstances()) {
        instanceIds.add(i.getId());/*  w w w.j  a  v  a  2 s  .co  m*/
    }

    DescribeInstancesResult ec2Instances = ec2
            .describeInstances(new DescribeInstancesRequest().withInstanceIds(instanceIds));

    PrintStream printStream = null;

    if (null != outputFile) {
        printStream = new PrintStream(outputFile);
    }

    for (Reservation r : ec2Instances.getReservations()) {
        for (com.amazonaws.services.ec2.model.Instance i : r.getInstances()) {
            String ipAddress = dumpPrivateAddresses ? i.getPrivateIpAddress()
                    : StringUtils.defaultString(i.getPublicIpAddress(), i.getPrivateDnsName());
            String instanceId = i.getInstanceId();

            if (null != printStream) {
                printStream.println(ipAddress + " # " + instanceId);
            } else {
                getLog().info(" * " + instanceId + ": " + ipAddress);
            }
        }
    }

    if (null != printStream) {
        printStream.close();
    }

    return null;
}

From source file:org.cloudml.connectors.BeanstalkConnector.java

License:Open Source License

public Collection<String> getEnvIPs(String envName, int timeout) {
    DescribeEnvironmentResourcesRequest request = new DescribeEnvironmentResourcesRequest()
            .withEnvironmentName(envName);
    List<Instance> instances = null;
    System.out.print("Waiting for environment ips");
    while (timeout-- > 0) {
        try {//www  .  ja v a 2  s .co  m
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Logger.getLogger(BeanstalkConnector.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.print("-");
        DescribeEnvironmentResourcesResult res = beanstalkClient.describeEnvironmentResources(request);
        instances = res.getEnvironmentResources().getInstances();
        if (instances.size() == 0)
            continue;
        AmazonEC2Client ec2 = new AmazonEC2Client(awsCredentials);
        ec2.setEndpoint(beanstalkEndpoint.replace("elasticbeanstalk", "ec2"));
        List<String> instanceIds = new ArrayList<String>();
        for (Instance instance : instances) {
            instanceIds.add(instance.getId());
        }
        List<String> ips = new ArrayList<String>();
        DescribeInstancesRequest desins = new DescribeInstancesRequest().withInstanceIds(instanceIds);
        DescribeInstancesResult desinres = ec2.describeInstances(desins);
        for (Reservation reservation : desinres.getReservations()) {
            for (com.amazonaws.services.ec2.model.Instance ins : reservation.getInstances()) {
                String ip = ins.getPublicIpAddress();
                if (ip != null && ip.length() > 0)
                    ips.add(ip);
            }
        }
        if (ips.size() > 0)
            return ips;

    }
    return Collections.EMPTY_LIST;
}