Example usage for com.amazonaws.services.rds AmazonRDS describeDBInstances

List of usage examples for com.amazonaws.services.rds AmazonRDS describeDBInstances

Introduction

In this page you can find the example usage for com.amazonaws.services.rds AmazonRDS describeDBInstances.

Prototype

DescribeDBInstancesResult describeDBInstances(DescribeDBInstancesRequest describeDBInstancesRequest);

Source Link

Document

Returns information about provisioned RDS instances.

Usage

From source file:com.haskins.cloudtrailviewer.dialog.resourcedetail.detailpanels.RdsInstanceDetail.java

License:Open Source License

@Override
public String retrieveDetails(ResourceDetailRequest detailRequest) {

    String response = null;/*from w ww  .j  av a 2 s  . c  o m*/

    try {

        AmazonRDS client = new AmazonRDSClient(credentials);
        client.setRegion(Region.getRegion(Regions.fromName(detailRequest.getRegion())));

        DescribeDBInstancesRequest request = new DescribeDBInstancesRequest();
        request.setDBInstanceIdentifier(detailRequest.getResourceName());

        DescribeDBInstancesResult result = client.describeDBInstances(request);
        buildUI(result);

    } catch (IllegalArgumentException | AmazonClientException e) {
        response = e.getMessage();
        LOGGER.log(Level.WARNING, "Problem retrieving RDS details from AWS", e);
    }

    return response;
}

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

License:Apache License

/**
 * <p>// www  .jav a2 s  .  c  o m
 * Wait for the database creation and returns a {@link DBInstance} with up
 * to date values.
 * </p>
 * <p>
 * Note: some information are missing of the {@link DBInstance} returned by
 * {@link AmazonRDS#describeDBInstances(DescribeDBInstancesRequest)} as long
 * as the instance is "creating" rather than "available" (e.g.
 * {@link DBInstance#getEndpoint()} that holds the ip address).
 * </p>
 *
 * @param dbInstance
 * @param rds
 * @return up to date 'available' dbInstance
 * @throws DBInstanceNotFoundException the given <code>dbInstance</code> no longer exists (e.g. it
 *                                     has been destroyed, etc).
 */
@Nonnull
public static DBInstance awaitForDbInstanceCreation(@Nonnull DBInstance dbInstance, @Nonnull AmazonRDS rds)
        throws DBInstanceNotFoundException {
    logger.info(
            "Get Instance " + dbInstance.getDBInstanceIdentifier() + "/" + dbInstance.getDBName() + " status");

    while (!"available".equals(dbInstance.getDBInstanceStatus())) {
        logger.info("Instance " + dbInstance.getDBInstanceIdentifier() + "/" + dbInstance.getDBName()
                + " not yet available, sleep...");
        try {
            // 20 s because MySQL creation takes much more than 60s
            Thread.sleep(20 * 1000);
        } catch (InterruptedException e) {
            throw Throwables.propagate(e);
        }
        DescribeDBInstancesRequest describeDbInstanceRequest = new DescribeDBInstancesRequest()
                .withDBInstanceIdentifier(dbInstance.getDBInstanceIdentifier());
        DescribeDBInstancesResult describeDBInstancesResult = rds
                .describeDBInstances(describeDbInstanceRequest);

        List<DBInstance> dbInstances = describeDBInstancesResult.getDBInstances();
        Preconditions.checkState(dbInstances.size() == 1, "Exactly 1 db instance expected : %S", dbInstances);
        dbInstance = Iterables.getFirst(dbInstances, null);

    }
    return dbInstance;
}

From source file:jp.classmethod.aws.gradle.rds.AmazonRDSDescribeInstancesTask.java

License:Apache License

@TaskAction
public void describeDBInstances() { // NOPMD
    // to enable conventionMappings feature
    String dbInstanceIdentifier = getDbInstanceIdentifier();
    AmazonRDSPluginExtension ext = getProject().getExtensions().getByType(AmazonRDSPluginExtension.class);
    AmazonRDS rds = ext.getClient();
    try {/*ww  w  .j  a  va  2s. c  o m*/
        DescribeDBInstancesRequest request = new DescribeDBInstancesRequest().withMaxRecords(getMaxRecords());
        if (getDbInstanceIdentifier() != null && getDbInstanceIdentifier().length() > 0) {
            request.withDBInstanceIdentifier(getDbInstanceIdentifier());
        }
        if (getFilters() != null) {
            request.withFilters(getFilters().entrySet().stream()
                    .map(it -> new Filter().withName(it.getKey().toString()).withValues(it.getValue()))
                    .collect(Collectors.toList()));
        }
        DescribeDBInstancesResult dir = rds.describeDBInstances(request);
        dbInstances = dir.getDBInstances();
    } catch (AmazonServiceException e) {
        throw new GradleException("Fail to describe instance: " + dbInstanceIdentifier, e);
    }
}

From source file:jp.classmethod.aws.gradle.rds.AmazonRDSDescribeInstanceTask.java

License:Apache License

@TaskAction
public void waitInstanceForStatus() { // NOPMD
    // to enable conventionMappings feature
    String dbInstanceIdentifier = getDbInstanceIdentifier();
    List<String> successStatuses = getSuccessStatuses();
    List<String> waitStatuses = getWaitStatuses();
    int loopTimeout = getLoopTimeout();
    int loopWait = getLoopWait();

    if (dbInstanceIdentifier == null) {
        throw new GradleException("dbInstanceIdentifier is not specified");
    }/*from  w  ww . ja  v a  2s.  co m*/

    AmazonRDSPluginExtension ext = getProject().getExtensions().getByType(AmazonRDSPluginExtension.class);
    AmazonRDS rds = ext.getClient();

    long start = System.currentTimeMillis();
    while (true) {
        if (System.currentTimeMillis() > start + (loopTimeout * 1000)) {
            throw new GradleException("Timeout");
        }
        try {
            DescribeDBInstancesResult dir = rds.describeDBInstances(
                    new DescribeDBInstancesRequest().withDBInstanceIdentifier(dbInstanceIdentifier));
            dbInstance = dir.getDBInstances().get(0);
            found = true;
            lastStatus = dbInstance.getDBInstanceStatus();
            if (successStatuses.contains(lastStatus)) {
                getLogger().info("Description of DB instance {} is now {}.", dbInstanceIdentifier, lastStatus);
                break;
            } else if (waitStatuses.contains(lastStatus)) {
                getLogger().info("Description of DB instance {} is {}...", dbInstanceIdentifier, lastStatus);
                try {
                    Thread.sleep(loopWait * 1000);
                } catch (InterruptedException e) {
                    throw new GradleException("Sleep interrupted", e);
                }
            } else {
                // fail when current status is not waitStatuses or successStatuses
                throw new GradleException("Status of " + dbInstanceIdentifier + " is " + lastStatus
                        + ".  It seems to be failed.");
            }
        } catch (DBInstanceNotFoundException e) {
            throw new GradleException(dbInstanceIdentifier + " is not exists", e);
        } catch (AmazonServiceException e) {
            if (found) {
                break;
            } else {
                throw new GradleException("Fail to describe instance: " + dbInstanceIdentifier, e);
            }
        }
    }
}

From source file:jp.classmethod.aws.gradle.rds.AmazonRDSMigrateDBInstanceTask.java

License:Apache License

@TaskAction
public void createOrUpdateDBInstance() throws InterruptedException {
    AmazonRDSPluginExtension ext = getProject().getExtensions().getByType(AmazonRDSPluginExtension.class);
    AmazonRDS rds = ext.getClient();

    try {//w  ww. j ava 2  s  .c o m
        DescribeDBInstancesResult describeDBInstancesResult = rds.describeDBInstances(
                new DescribeDBInstancesRequest().withDBInstanceIdentifier(dbInstanceIdentifier));
        DBInstance dbInstance = describeDBInstancesResult.getDBInstances().get(0);
        if (stableStatuses.contains(dbInstance.getDBInstanceStatus())) {
            modifyDBInstance(rds);
        } else {
            throw new GradleException("Invalid status for update: " + dbInstance.getDBInstanceStatus());
        }
    } catch (DBInstanceNotFoundException e) {
        getLogger().info(e.getMessage());
        createDBInstance(rds);
    }
}

From source file:jp.classmethod.aws.gradle.rds.AmazonRDSWaitInstanceStatusTask.java

License:Apache License

@TaskAction
public void waitInstanceForStatus() { // NOPMD
    // to enable conventionMappings feature
    String dbInstanceIdentifier = getDbInstanceIdentifier();
    List<String> successStatuses = getSuccessStatuses();
    List<String> waitStatuses = getWaitStatuses();
    int loopTimeout = getLoopTimeout();
    int loopWait = getLoopWait();

    if (dbInstanceIdentifier == null) {
        throw new GradleException("dbInstanceIdentifier is not specified");
    }/*from   w  ww  . j av  a  2  s .c o  m*/

    AmazonRDSPluginExtension ext = getProject().getExtensions().getByType(AmazonRDSPluginExtension.class);
    AmazonRDS rds = ext.getClient();

    long start = System.currentTimeMillis();
    while (true) {
        if (System.currentTimeMillis() > start + (loopTimeout * 1000)) {
            throw new GradleException("Timeout");
        }
        try {
            DescribeDBInstancesResult dir = rds.describeDBInstances(
                    new DescribeDBInstancesRequest().withDBInstanceIdentifier(dbInstanceIdentifier));
            DBInstance dbInstance = dir.getDBInstances().get(0);

            found = true;
            lastStatus = dbInstance.getDBInstanceStatus();
            if (successStatuses.contains(lastStatus)) {
                getLogger().info("Status of DB instance {} is now {}.", dbInstanceIdentifier, lastStatus);
                break;
            } else if (waitStatuses.contains(lastStatus)) {
                getLogger().info("Status of DB instance {} is {}...", dbInstanceIdentifier, lastStatus);
                try {
                    Thread.sleep(loopWait * 1000);
                } catch (InterruptedException e) {
                    throw new GradleException("Sleep interrupted", e);
                }
            } else {
                // fail when current status is not waitStatuses or successStatuses
                throw new GradleException("Status of " + dbInstanceIdentifier + " is " + lastStatus
                        + ".  It seems to be failed.");
            }
        } catch (DBInstanceNotFoundException e) {
            throw new GradleException(dbInstanceIdentifier + " is not exists", e);
        } catch (AmazonServiceException e) {
            if (found) {
                break;
            } else {
                throw new GradleException("Fail to describe instance: " + dbInstanceIdentifier, e);
            }
        }
    }
}

From source file:org.xmlsh.aws.gradle.rds.AmazonRDSWaitInstanceStatusTask.java

License:BSD License

@TaskAction
public void waitInstanceForStatus() {
    // to enable conventionMappings feature
    String dbInstanceIdentifier = getDbInstanceIdentifier();
    List<String> successStatuses = getSuccessStatuses();
    List<String> waitStatuses = getWaitStatuses();
    int loopTimeout = getLoopTimeout();
    int loopWait = getLoopWait();

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

    AmazonRDSPluginExtension ext = getProject().getExtensions().getByType(AmazonRDSPluginExtension.class);
    AmazonRDS rds = ext.getClient();

    long start = System.currentTimeMillis();
    while (true) {
        if (System.currentTimeMillis() > start + (loopTimeout * 1000)) {
            throw new GradleException("Timeout");
        }/*from w w  w.j a  v a 2  s .co  m*/
        try {
            DescribeDBInstancesResult dir = rds.describeDBInstances(
                    new DescribeDBInstancesRequest().withDBInstanceIdentifier(dbInstanceIdentifier));
            DBInstance dbInstance = dir.getDBInstances().get(0);

            found = true;
            lastStatus = dbInstance.getDBInstanceStatus();
            if (successStatuses.contains(lastStatus)) {
                getLogger().info("Status of DB instance {} is now {}.", dbInstanceIdentifier, lastStatus);
                break;
            } else if (waitStatuses.contains(lastStatus)) {
                getLogger().info("Status of DB instance {} is {}...", dbInstanceIdentifier, lastStatus);
                try {
                    Thread.sleep(loopWait * 1000);
                } catch (InterruptedException e) {
                    throw new GradleException("Sleep interrupted", e);
                }
            } else {
                // fail when current status is not waitStatuses or successStatuses
                throw new GradleException("Status of " + dbInstanceIdentifier + " is " + lastStatus
                        + ".  It seems to be failed.");
            }
        } catch (DBInstanceNotFoundException e) {
            throw new GradleException(dbInstanceIdentifier + " is not exists", e);
        } catch (AmazonServiceException e) {
            if (found) {
                break;
            } else {
                throw new GradleException("Fail to describe instance: " + dbInstanceIdentifier, e);
            }
        }
    }
}