Example usage for com.amazonaws.services.route53.model ResourceRecord getValue

List of usage examples for com.amazonaws.services.route53.model ResourceRecord getValue

Introduction

In this page you can find the example usage for com.amazonaws.services.route53.model ResourceRecord getValue.

Prototype


public String getValue() 

Source Link

Document

The current or new DNS record value, not to exceed 4,000 characters.

Usage

From source file:com.github.blacklocus.rdsecho.EchoPromote.java

License:Open Source License

@Override
boolean traverseStage(DBInstance instance) {

    LOG.info("Reading current DNS records");
    String tld = EchoUtil.getTLD(cfg.promoteCname()) + '.';
    HostedZone hostedZone = route53Find.hostedZone(nameEquals(tld)).get();
    LOG.info("  Found corresponding HostedZone. name: {} id: {}", hostedZone.getName(), hostedZone.getId());

    ResourceRecordSet resourceRecordSet = route53Find
            .resourceRecordSet(hostedZone.getId(), cnameEquals(cfg.promoteCname())).get();
    ResourceRecord resourceRecord = getOnlyElement(resourceRecordSet.getResourceRecords());
    LOG.info("  Found CNAME {} with current value {}", resourceRecordSet.getName(), resourceRecord.getValue());

    Endpoint endpoint = instance.getEndpoint();
    String tagEchoManaged = echo.getTagEchoManaged();
    String dbInstanceId = instance.getDBInstanceIdentifier();
    if (null == endpoint) {
        LOG.info("Echo DB instance {} (id: {}) has no address. Is it still initializing?", tagEchoManaged,
                dbInstanceId);//w w  w  .  j a  v a 2s.  c o  m
        return false;
    }
    String instanceAddr = endpoint.getAddress();
    if (resourceRecord.getValue().equals(instanceAddr)) {
        LOG.info("  Echo DB instance {} ({}) lines up with CNAME {}. Nothing to do.", tagEchoManaged,
                instanceAddr, resourceRecordSet.getName());
        return false;
    } else {
        LOG.info("  Echo DB instance {} ({}) differs from CNAME {}.", tagEchoManaged, instanceAddr,
                resourceRecordSet.getName());
    }

    if (cfg.interactive()) {
        String format = "Are you sure you want to promote %s to be the new target of %s? Input %s to confirm.";
        if (!EchoUtil.prompt(dbInstanceId, format, dbInstanceId, cfg.promoteCname(), dbInstanceId)) {
            LOG.info("User declined to proceed. Exiting.");
            return false;
        }
    }

    LOG.info("Updating CNAME {} from {} to {}", cfg.name(), resourceRecord.getValue(), instanceAddr);
    ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest()
            .withHostedZoneId(hostedZone.getId())
            .withChangeBatch(new ChangeBatch().withChanges(
                    new Change(ChangeAction.UPSERT, new ResourceRecordSet(cfg.promoteCname(), RRType.CNAME)
                            .withResourceRecords(new ResourceRecord(instanceAddr)).withTTL(cfg.promoteTtl()))));
    route53.changeResourceRecordSets(request);

    Optional<String[]> promoteTags = cfg.promoteTags();
    if (promoteTags.isPresent()) {
        List<Tag> tags = EchoUtil.parseTags(promoteTags.get());
        if (tags.size() > 0) {
            LOG.info("Applying tags on promote: {}", Arrays.asList(tags));
            AddTagsToResourceRequest tagsRequest = new AddTagsToResourceRequest().withResourceName(
                    RdsFind.instanceArn(cfg.region(), cfg.accountNumber(), instance.getDBInstanceIdentifier()));
            tagsRequest.setTags(tags);
            rds.addTagsToResource(tagsRequest);
        }
    }

    LOG.info("Searching for any existing promoted instance to demote.");

    return true;
}

From source file:com.msi.dns53.client.DNS53Client.java

License:Apache License

public ChangeResourceRecordSetsResult changeResourceRecordSets(ChangeResourceRecordSetsRequest req)
        throws AmazonServiceException, AmazonClientException {
    Client c = Client.create();/* w  ww  . ja  v  a2 s .c o m*/
    WebResource r = c.resource(this.serverURL);

    String entity = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
            + "<ChangeResourceRecordSetsRequest xmlns=\"https://route53.amazonaws.com/doc/2012-02-29/\">";
    if (req.getChangeBatch() != null) {
        entity += "<ChangeBatch>";
        if (req.getChangeBatch().getComment() != null) {
            entity += "<Comment>" + req.getChangeBatch().getComment() + "</Comment>";
        }
        List<Change> changes = req.getChangeBatch().getChanges();
        if (changes != null && changes.size() > 0) {
            entity += "<Changes>";
            for (Change change : changes) {
                entity += "<Change>";
                entity += "<Action>" + change.getAction() + "</Action>";
                if (change.getResourceRecordSet() != null) {
                    entity += "<ResourceRecordSet>";
                    entity += "<Name>" + change.getResourceRecordSet().getName() + "</Name>";
                    entity += "<Type>" + change.getResourceRecordSet().getType() + "</Type>";
                    entity += "<TTL>" + change.getResourceRecordSet().getTTL() + "</TTL>";
                    List<ResourceRecord> records = change.getResourceRecordSet().getResourceRecords();
                    if (records != null && records.size() > 0) {
                        entity += "<ResourceRecords>";
                        for (ResourceRecord record : records) {
                            entity += "<ResourceRecord><Value>" + record.getValue()
                                    + "</Value></ResourceRecord>";
                        }
                        entity += "</ResourceRecords>";
                    }
                    entity += "</ResourceRecordSet>";
                }
                entity += "</Change>";
            }
            entity += "</Changes>";
        }
        entity += "</ChangeBatch>";
    }
    entity += "</ChangeResourceRecordSetsRequest>";

    ClientResponse response = r.path(req.getHostedZoneId() + "/rrset")
            .header("X-Amzn-Authorization",
                    "AWS3 AWSAccessKeyId=" + this.accessKey + "," + "Algorithm=HmacSHA256,"
                            + "SignedHeaders=Host;X-Amz-Date," + "Signature=THISISANEXAMPLESIGNATURE=")
            .type(MediaType.APPLICATION_XML_TYPE).accept(MediaType.TEXT_XML).entity(entity)
            .post(ClientResponse.class);

    String resultXml = response.getEntity(String.class);
    if (response.getStatus() != 200) {
        exceptionMapper(response, resultXml);
    }

    ChangeResourceRecordSetsResponsePOJO interResult = null;
    try {
        StringReader reader = new StringReader(resultXml);
        JAXBContext context = JAXBContext.newInstance(ChangeResourceRecordSetsResponsePOJO.class);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        interResult = (ChangeResourceRecordSetsResponsePOJO) unmarshaller.unmarshal(reader);
    } catch (JAXBException e) {
        e.printStackTrace();
        return null;
    }
    if (interResult == null) {
        return null;
    }

    ChangeResourceRecordSetsResult result = new ChangeResourceRecordSetsResult();
    if (interResult.getChangeInfo() != null) {
        ChangeInfo ci = new ChangeInfo();
        ci.setComment(interResult.getChangeInfo().getComment());
        ci.setId(interResult.getChangeInfo().getId());
        ci.setStatus(interResult.getChangeInfo().getStatus());
        ci.setSubmittedAt(interResult.getChangeInfo().getSubmittedAt());
        result.setChangeInfo(ci);
    }

    return result;
}

From source file:com.msi.dns53.server.query.ChangeResourceRecordSets.java

License:Apache License

private ChangeResourceRecordSetsResult changeResourceRecordSets(Session s,
        ChangeResourceRecordSetsRequest request) throws ErrorResponse {
    Date submittedAt = new Date();
    ChangeResourceRecordSetsResult result = new ChangeResourceRecordSetsResult();
    AccessMySQL sqlaccess = AccessMySQL.getInstance();
    String tableName = sqlaccess.getTableName(request.getHostedZoneId(), this.getAccountId());
    if (tableName.equals("FAILED")) {
        throw DNS53Faults.NoSuchHostedZone(request.getHostedZoneId());
    }//w ww.  j av a 2 s .  c o m
    String zoneName = sqlaccess.getZoneName(request.getHostedZoneId());
    //LinkedList<RRRequest> rrrs = request.getRRRequests(); 
    List<Change> changes = request.getChangeBatch().getChanges();
    //check if the ChangeBatch is valid
    for (Change tmp : changes) {
        String name = tmp.getResourceRecordSet().getName();
        String nameDot = name;
        if (name.charAt(name.length() - 1) != '.') {
            nameDot += ".";
        } else {
            name = name.substring(0, name.length() - 1);
        }
        long weight = -1;
        if (tmp.getResourceRecordSet().getWeight() != null) {
            weight = tmp.getResourceRecordSet().getWeight();
            if (weight < 0 || weight > 225) {
                throw DNS53Faults.InvalidArgument("Weight of a resource record must be between 0 and 255.");
            }
        }
        if (tmp.getResourceRecordSet().getType() == null) {
            throw DNS53Faults.MissingRequiredParameter(
                    "Type parameter is required for each resource record set change request.");
        }
        if (tmp.getResourceRecordSet().getTTL() == null) {
            throw DNS53Faults.MissingRequiredParameter(
                    "TTL parameter is required for each resource record set change request "
                            + "except for the change requests to modify alias resource record sets.");
        }
        if (tmp.getAction().equals("CREATE")) {
            for (ResourceRecord rr : tmp.getResourceRecordSet().getResourceRecords()) {
                boolean recordExists = sqlaccess.recordExists(s, request.getHostedZoneId(), nameDot,
                        tmp.getResourceRecordSet().getType(), rr.getValue());
                DNS53ResourceRecord newRecord = new DNS53ResourceRecord();
                newRecord.setZoneId(request.getHostedZoneId());
                newRecord.setZoneName(zoneName);
                newRecord.setName(nameDot);
                newRecord.setTtl(tmp.getResourceRecordSet().getTTL());
                newRecord.setRdata(rr.getValue());
                if (tmp.getResourceRecordSet().getWeight() != null) {
                    logger.debug("Request to create a weighted resource record set: "
                            + tmp.getResourceRecordSet().toString());
                    if (recordExists) {
                        if (sqlaccess.recordExists(s, request.getHostedZoneId(), nameDot,
                                tmp.getResourceRecordSet().getType(), rr.getValue())) {
                            throw DNS53Faults
                                    .InvalidChangeBatch("Tried to create a weighted resource record set, "
                                            + nameDot + " " + tmp.getResourceRecordSet().getType()
                                            + ", but it already exists.");
                        }
                    }
                    if (tmp.getResourceRecordSet().getSetIdentifier() == null) {
                        throw DNS53Faults.MissingRequiredParameter(
                                "SetIdentifier is required for weighted resource" + "record set.");
                    }
                    newRecord.setSid(tmp.getResourceRecordSet().getSetIdentifier());
                    if (!(tmp.getResourceRecordSet().getType().equals("A")
                            || tmp.getResourceRecordSet().getType().equals("AAAA")
                            || tmp.getResourceRecordSet().getType().equals("CNAME")
                            || tmp.getResourceRecordSet().getType().equals("TXT"))) {
                        throw DNS53Faults.InvalidArgument(
                                "Weighted resource record set must be A, AAAA, CNAME, or TXT type.");
                    }
                    newRecord.setRdtype(tmp.getResourceRecordSet().getType());
                    newRecord.setWeight(weight);
                    for (int i = 0; i < weight; ++i) {
                        sqlaccess.addResourceRecord(request.getHostedZoneId(), name,
                                tmp.getResourceRecordSet().getTTL(), tmp.getResourceRecordSet().getType(),
                                rr.getValue(), this.getAccountId());
                    }
                } else {
                    if (recordExists) {
                        throw DNS53Faults.InvalidChangeBatch("Tried to create resource record set, " + name
                                + " " + tmp.getResourceRecordSet().getType() + ", but it already exists.");
                    }
                    if (!DNS53Constants.RESOURCERECORDSETS_TYPES
                            .contains(tmp.getResourceRecordSet().getType())) {
                        throw DNS53Faults.InvalidArgument("Resource record type is not recognized.");
                    }
                    newRecord.setRdtype(tmp.getResourceRecordSet().getType());
                    sqlaccess.addResourceRecord(request.getHostedZoneId(), name,
                            tmp.getResourceRecordSet().getTTL(), tmp.getResourceRecordSet().getType(),
                            rr.getValue(), this.getAccountId());
                }
                s.save(newRecord);
            }
        } else if (tmp.getAction().equals("DELETE")) {
            for (ResourceRecord rr : tmp.getResourceRecordSet().getResourceRecords()) {
                boolean recordExists = sqlaccess.recordExists(s, request.getHostedZoneId(), nameDot,
                        tmp.getResourceRecordSet().getType(), rr.getValue());
                if (!recordExists) {
                    throw DNS53Faults.InvalidChangeBatch("Tried to delete resource record set " + name + " "
                            + tmp.getResourceRecordSet().getType() + ", but it was not found.");
                }
                List<DNS53ResourceRecord> recordList = ResourceRecordEntity.selectResourceRecords(s,
                        request.getHostedZoneId(), nameDot, rr.getValue(), tmp.getResourceRecordSet().getType(),
                        tmp.getResourceRecordSet().getSetIdentifier(), tmp.getResourceRecordSet().getTTL(),
                        weight);

                if (recordList == null || recordList.size() == 0) {
                    throw DNS53Faults.InvalidChangeBatch("Tried to delete resource record set " + name + " "
                            + tmp.getResourceRecordSet().getType() + ", but it was not found with "
                            + "weight = " + tmp.getResourceRecordSet().getWeight() + " and "
                            + "SetIdentifier = " + tmp.getResourceRecordSet().getSetIdentifier() + ".");
                }
                if (recordList.size() > 1) {
                    logger.debug(
                            "Too many results being returned for DELETE change request. Either duplicate entries exist, NS records are selected for deletion, or other issue. Throwing InternalError!");
                    throw DNS53Faults.InternalError();
                }
                DNS53ResourceRecord currentRecord = recordList.get(0);

                if (tmp.getResourceRecordSet().getWeight() != null) {
                    if (tmp.getResourceRecordSet().getSetIdentifier() == null) {
                        throw DNS53Faults.MissingRequiredParameter(
                                "SetIdentifier is required for weighted resource" + "record set.");
                    }
                    List<DNS53ResourceRecord> existing = sqlaccess.listResourceRecords(tableName,
                            tmp.getResourceRecordSet().getType(), name, rr.getValue());
                    logger.debug("Existing weight of the record resource set is " + existing.size()
                            + ". DELETE is requested" + " with weight, "
                            + tmp.getResourceRecordSet().getWeight());
                    if (tmp.getResourceRecordSet().getWeight() != Integer.valueOf(existing.size()).longValue()
                            || tmp.getResourceRecordSet().getWeight() != currentRecord.getWeight()) {
                        throw DNS53Faults.InvalidArgument(
                                "Weighted resource record set was found with matching name and value(s). "
                                        + "However, the value of weight is different. Existing resource record set has the weight of "
                                        + existing.size() + ".");
                    }
                } else {
                    if (tmp.getResourceRecordSet().getSetIdentifier() != null) {
                        throw DNS53Faults
                                .MissingRequiredParameter("SetIdentifier was received, however, weight was not "
                                        + "passed along. Both of these parameters are required for change request against weighted "
                                        + "resource record sets.");
                    }
                    if (currentRecord.getWeight() != -1) {
                        throw DNS53Faults.InvalidArgument(
                                "Weighted resource record set was found with matching name and value(s). "
                                        + "However, the request did not pass weight parameter.");
                    }
                }
                s.delete(currentRecord);
                sqlaccess.deleteResourceRecord(request.getHostedZoneId(), name,
                        tmp.getResourceRecordSet().getTTL(), tmp.getResourceRecordSet().getType(),
                        rr.getValue(), this.getAccountId());
            }
        }
    }
    String changeID = RequestHandler.writeChange(sqlaccess, "INSYNC", submittedAt.toString(), "RRSET", "RRSET");
    ChangeInfo ci = new ChangeInfo();
    ci.setId(changeID);
    ci.setStatus("INSYNC");
    ci.setSubmittedAt(submittedAt);
    result.setChangeInfo(ci);

    return result;
}

From source file:com.msi.dns53.server.query.ListResourceRecordSets.java

License:Apache License

@Override
public String marshall(MarshallStruct<ListResourceRecordSetsResult> input, HttpServletResponse resp)
        throws Exception {
    ListResourceRecordSetsResult result = input.getMainObject();

    XMLNode response = new XMLNode(DNS53Constants.LISTRESOURCERECORDSETSRESPONSE);
    response.addAttr(DNS53Constants.XMLNS, DNS53Constants.XMLNS_VALUE);
    if (result.getResourceRecordSets() != null) {
        XMLNode rrSet = QueryUtil.addNode(response, DNS53Constants.RESOURCERECORDSETS);
        for (ResourceRecordSet rrs : result.getResourceRecordSets()) {
            XMLNode rr = QueryUtil.addNode(rrSet, DNS53Constants.RESOURCERECORDSET);
            QueryUtil.addNode(rr, DNS53Constants.NAME, rrs.getName());
            QueryUtil.addNode(rr, DNS53Constants.TYPE, rrs.getType());
            QueryUtil.addNode(rr, DNS53Constants.TTL, rrs.getTTL());
            if (rrs.getSetIdentifier() != null) {
                QueryUtil.addNode(rr, DNS53Constants.SETIDENTIFIER, rrs.getSetIdentifier());
            }/* w w w .  j  a  va 2 s  . c om*/
            if (rrs.getWeight() != null && rrs.getWeight() != -1) {
                QueryUtil.addNode(rr, DNS53Constants.WEIGHT, rrs.getWeight());
            }
            if (rrs.getResourceRecords() != null && rrs.getResourceRecords().size() > 0) {
                XMLNode records = QueryUtil.addNode(rr, DNS53Constants.RESOURCERECORDS);
                for (ResourceRecord record : rrs.getResourceRecords()) {
                    XMLNode r = QueryUtil.addNode(records, DNS53Constants.RESOURCERECORD);
                    QueryUtil.addNode(r, DNS53Constants.VALUE, record.getValue());
                }
            }
        }
    }
    QueryUtil.addNode(response, DNS53Constants.ISTRUNCATED, result.getIsTruncated());
    QueryUtil.addNode(response, DNS53Constants.MAXITEMS, result.getMaxItems());
    if (result.getIsTruncated() && result.getNextRecordName() != null) {
        QueryUtil.addNode(response, DNS53Constants.NEXTRECORDNAME, result.getNextRecordName());
    }
    if (result.getIsTruncated() && result.getNextRecordType() != null) {
        QueryUtil.addNode(response, DNS53Constants.NEXTRECORDTYPE, result.getNextRecordType());
    }
    if (result.getIsTruncated() && result.getNextRecordIdentifier() != null) {
        QueryUtil.addNode(response, DNS53Constants.NEXTRECORDIDENTIFIER, result.getNextRecordIdentifier());
    }
    return response.toString();
}

From source file:com.renatodelgaudio.awsupdate.SimpleRecordService.java

License:Open Source License

@Override
public String getCurrentIP() {
    ResourceRecordSet set = getCurrentRecordSet();
    if (set != null && set.getResourceRecords() != null && set.getResourceRecords().size() > 0) {
        ResourceRecord rr = set.getResourceRecords().get(0);
        if (rr != null) {
            return rr.getValue();
        }//from ww  w  . ja  va 2 s.  co m
    }
    return null;
}

From source file:io.kodokojo.service.aws.Route53DnsManager.java

License:Open Source License

private boolean containEntry(DnsEntry dnsEntry, boolean stric) {
    if (dnsEntry == null) {
        throw new IllegalArgumentException("dnsEntry must be defined.");
    }//from   ww  w.  j  a  v  a 2s .c  om
    HostedZone hostedZone = getHostedZone();
    boolean found = false;
    if (hostedZone != null) {
        Iterator<ResourceRecordSet> iterator = getResourceRecordSet(hostedZone).iterator();
        String dnsEntryName = valideDnsName(dnsEntry.getName());
        while (!found && iterator.hasNext()) {
            ResourceRecordSet recordSet = iterator.next();
            found = recordSet.getName().equals(dnsEntryName)
                    && DnsEntry.Type.valueOf(recordSet.getType()).equals(dnsEntry.getType());
            if (found && stric) {
                Iterator<ResourceRecord> recordIterator = recordSet.getResourceRecords().iterator();
                boolean sameValue = false;
                while (!sameValue && recordIterator.hasNext()) {
                    ResourceRecord record = recordIterator.next();
                    sameValue = dnsEntry.getValue().equals(record.getValue());
                }
                found = sameValue;
            }
        }
    }
    return found;
}

From source file:org.lendingclub.mercator.aws.Route53Scanner.java

License:Apache License

ObjectNode toJson(ResourceRecordSet rs) {
    ObjectNode n = mapper.createObjectNode();
    n.put("aws_ttl", rs.getTTL());
    n.put("aws_type", rs.getType());
    n.put("aws_name", rs.getName());
    n.put("id", rs.getType() + "_" + rs.getName());
    ArrayNode an = mapper.createArrayNode();
    n.set("aws_resourceRecords", an);

    for (ResourceRecord rr : rs.getResourceRecords()) {
        an.add(rr.getValue());
    }//from   w  w  w  . ja  v a 2 s  .  co  m
    return n;
}