List of usage examples for com.amazonaws.services.route53.model ResourceRecordSet getType
public String getType()
The DNS record type.
From source file:br.com.ingenieux.mojo.beanstalk.cmd.dns.BindDomainsCommand.java
License:Apache License
protected void assignDomain(BindDomainsContext ctx, String record, String zoneId) { ChangeBatch changeBatch = new ChangeBatch(); changeBatch.setComment(format("Updated for env %s", ctx.getCurEnv().getCNAME())); /**/*from ww w . ja v a 2s . c om*/ * Look for Existing Resource Record Sets */ { ResourceRecordSet resourceRecordSet = null; ListResourceRecordSetsResult listResourceRecordSets = r53 .listResourceRecordSets(new ListResourceRecordSetsRequest(zoneId)); for (ResourceRecordSet rrs : listResourceRecordSets.getResourceRecordSets()) { if (!rrs.getName().equals(record)) { continue; } boolean matchesTypes = "A".equals(rrs.getType()) || "CNAME".equals(rrs.getType()); if (!matchesTypes) { continue; } if (isInfoEnabled()) { info("Excluding resourceRecordSet %s for domain %s", rrs, record); } changeBatch.getChanges().add(new Change(ChangeAction.DELETE, rrs)); } } /** * Then Add Ours */ ResourceRecordSet resourceRecordSet = new ResourceRecordSet(); resourceRecordSet.setName(record); resourceRecordSet.setType(RRType.A); if (ctx.singleInstance) { final String address = ctx.getCurEnv().getEndpointURL(); ResourceRecord resourceRecord = new ResourceRecord(address); resourceRecordSet.setTTL(60L); resourceRecordSet.setResourceRecords(asList(resourceRecord)); if (isInfoEnabled()) { info("Adding resourceRecordSet %s for domain %s mapped to %s", resourceRecordSet, record, address); } } else { AliasTarget aliasTarget = new AliasTarget(); aliasTarget.setHostedZoneId(ctx.getElbHostedZoneId()); aliasTarget.setDNSName(ctx.getCurEnv().getEndpointURL()); resourceRecordSet.setAliasTarget(aliasTarget); if (isInfoEnabled()) { info("Adding resourceRecordSet %s for domain %s mapped to %s", resourceRecordSet, record, aliasTarget.getDNSName()); } } changeBatch.getChanges().add(new Change(ChangeAction.CREATE, resourceRecordSet)); if (isInfoEnabled()) { info("Changes to be sent: %s", changeBatch.getChanges()); } ChangeResourceRecordSetsRequest req = new ChangeResourceRecordSetsRequest(zoneId, changeBatch); r53.changeResourceRecordSets(req); }
From source file:com.github.blacklocus.rdsecho.utl.Route53Find.java
License:Open Source License
public static Predicate<ResourceRecordSet> cnameEquals(final String cname) { return new Predicate<ResourceRecordSet>() { @Override/* ww w. j av a 2s. c o m*/ public boolean apply(ResourceRecordSet resourceRecordSet) { return resourceRecordSet.getName().equals(cname) && resourceRecordSet.getType().equals("CNAME"); } }; }
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()); }/*from w w w.j a v a2s.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.msi.dns53.server.query.ListResourceRecordSets.java
License:Apache License
private ListResourceRecordSetsResult listResourceRecordSets(Session sess, ListResourceRecordSetsRequest request) throws ErrorResponse { ListResourceRecordSetsResult result = new ListResourceRecordSetsResult(); AccessMySQL sqlaccess = AccessMySQL.getInstance(); String tableName = sqlaccess.getTableName(request.getHostedZoneId(), this.getAccountId()); if (tableName.equals("FAILED")) { throw DNS53Faults.NoSuchHostedZone(request.getHostedZoneId()); }/*from ww w . j a v a 2 s . c om*/ if (request.getStartRecordType() != null && request.getStartRecordName() == null) { throw DNS53Faults.InvalidInput(); } logger.debug( "Table " + tableName + " is found for hosted zone with id, " + request.getHostedZoneId() + "."); String zoneName = sqlaccess.getZoneName(request.getHostedZoneId()); logger.debug("Target hosted zone: " + zoneName); RequestHandler.checkType(request.getStartRecordType()); List<DNS53ResourceRecord> records = sqlaccess.listResourceRecords(sess, request.getHostedZoneId(), request.getStartRecordName(), null, request.getStartRecordType(), null, -1, -1); logger.debug("There are " + records.size() + " resource record sets in this hosted zone."); int maxItems = -1; if (request.getMaxItems() != null) { try { maxItems = Integer.valueOf(request.getMaxItems()); } catch (NumberFormatException e) { throw DNS53Faults.InvalidArgument("maxitems parameter must be an integer between 1 and 100."); } } if (maxItems == -1) { maxItems = 100; // default } boolean truncated = false; if (maxItems < records.size()) { truncated = true; } Collection<ResourceRecordSet> resourceRecordSets = new LinkedList<ResourceRecordSet>(); /* * ResourceRecordSet ns = new ResourceRecordSet(); ns.setName(zoneName); * ns.setType("NS"); Collection<ResourceRecord> nsRecords = new * LinkedList<ResourceRecord>(); */ int i = 0; while (i < records.size() && i < maxItems) { DNS53ResourceRecord rec = records.get(i); ResourceRecordSet temp = new ResourceRecordSet(); temp.setName(rec.getName()); temp.setType(rec.getRdtype()); temp.setTTL(Long.valueOf(rec.getTtl())); if (rec.getSid() != null) { temp.setSetIdentifier(rec.getSid()); } if (rec.getWeight() != -1) { temp.setWeight(rec.getWeight()); } Collection<ResourceRecord> resourceRecords = new LinkedList<ResourceRecord>(); resourceRecords.add(new ResourceRecord().withValue(rec.getRdata())); temp.setResourceRecords(resourceRecords); resourceRecordSets.add(temp); ++i; } // now reduce the duplicates TreeMap<String, ResourceRecordSet> map = new TreeMap<String, ResourceRecordSet>(); for (ResourceRecordSet rs : resourceRecordSets) { String key = rs.getName() + "::" + rs.getType(); ResourceRecordSet temp = map.get(key); if (temp == null) { map.put(key, rs); } else { temp.getResourceRecords().add(new ResourceRecord(rs.getResourceRecords().get(0).getValue())); } } resourceRecordSets = map.values(); result.setResourceRecordSets(resourceRecordSets); result.setIsTruncated(truncated); if (truncated) { result.setNextRecordName("UNIMPLEMENTED"); result.setNextRecordType("UNIMPLEMENTED"); } result.setMaxItems(String.valueOf(maxItems)); return result; }
From source file:com.renatodelgaudio.awsupdate.SimpleRecordService.java
License:Open Source License
@Override public boolean updateRecord(String ip) { String recordName = config.getRecordName(); ChangeResourceRecordSetsRequest changeRequest = new ChangeResourceRecordSetsRequest(); changeRequest.setHostedZoneId(config.getZoneId()); ChangeBatch batch = new ChangeBatch(); Change change = new Change(); ResourceRecordSet set = getCurrentRecordSet(); if (set != null) { if (!equalsIgnoreCase("A", set.getType())) { log.error("Record already exists but not as Type A. No actions were performed."); return false; }//from w ww. j a v a2s . co m change.setAction("UPSERT"); log.info("Record [" + recordName + "] already present on AWS Route 53. Upating it.."); } else { change.setAction("CREATE"); log.info("Record [" + recordName + "] not present on AWS Route 53. Creating it.."); set = new ResourceRecordSet().withName(recordName).withType("A"); } set.setTTL(Long.parseLong(config.getTTL())); List<ResourceRecord> l = new ArrayList<ResourceRecord>(); l.add(new ResourceRecord(ip)); set.setResourceRecords(l); change.setResourceRecordSet(set); batch.withChanges(change); changeRequest.setChangeBatch(batch); log.info("Updating DNS " + recordName + " with IP " + ip); ChangeResourceRecordSetsResult result = config.getAmazonRoute53Client() .changeResourceRecordSets(changeRequest); log.info(result.toString()); return true; }
From source file:fr.xebia.cloud.amazon.aws.tools.AmazonAwsUtils.java
License:Apache License
public static void deleteCnameIfExist(Iterable<String> cnames, HostedZone hostedZone, AmazonRoute53 route53) { // List all//from w w w.ja v a2 s . c o m ListResourceRecordSetsRequest listResourceRecordSetsRequest = new ListResourceRecordSetsRequest() // .withStartRecordType(RRType.CNAME) .withHostedZoneId(hostedZone.getId()); ListResourceRecordSetsResult listResourceRecordSetsResult = route53 .listResourceRecordSets(listResourceRecordSetsRequest); if (listResourceRecordSetsResult.isTruncated()) { logger.warn("truncated result"); } Function<ResourceRecordSet, String> cnameExtractor = new Function<ResourceRecordSet, String>() { @Override public String apply(@Nullable ResourceRecordSet resourceRecordSet) { if (resourceRecordSet == null) { return null; } if (!RRType.CNAME.equals(RRType.fromValue(resourceRecordSet.getType()))) { return null; } return resourceRecordSet.getName(); } }; Iterable<ResourceRecordSet> existingCnamesAsResourceRecordSet = Iterables .filter(listResourceRecordSetsResult.getResourceRecordSets(), new Predicate<ResourceRecordSet>() { @Override public boolean apply(@Nullable ResourceRecordSet resourceRecordSet) { return RRType.CNAME.equals(RRType.fromValue(resourceRecordSet.getType())); } }); final ImmutableMap<String, ResourceRecordSet> existingCnames = Maps .uniqueIndex(existingCnamesAsResourceRecordSet, cnameExtractor); Sets.SetView<String> cnamesToDelete = Sets.intersection(Sets.newHashSet(cnames), existingCnames.keySet()); Function<String, Change> cnameToDeleteCnameChange = new Function<String, Change>() { @Override public Change apply(@Nullable String cname) { ResourceRecordSet existingResourceRecordSet = existingCnames.get(cname); return new Change().withAction(ChangeAction.DELETE) .withResourceRecordSet(new ResourceRecordSet().withType(RRType.CNAME).withName(cname) .withTTL(existingResourceRecordSet.getTTL()) .withResourceRecords(existingResourceRecordSet.getResourceRecords())); } }; List<Change> changes = Lists.newArrayList(Iterables.transform(cnamesToDelete, cnameToDeleteCnameChange)); if (changes.isEmpty()) { logger.debug("No CNAME to delete"); return; } logger.info("Delete CNAME changes {}", changes); ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest = new ChangeResourceRecordSetsRequest() .withHostedZoneId(hostedZone.getId()).withChangeBatch(new ChangeBatch().withChanges(changes)); route53.changeResourceRecordSets(changeResourceRecordSetsRequest); }
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 www. j av a 2 s. com 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:io.kodokojo.service.aws.Route53DnsManager.java
License:Open Source License
private static DnsEntry convertDnsEnrty(ResourceRecordSet resourceRecordSet) { String dnsName = resourceRecordSet.getName(); DnsEntry.Type dnsType = DnsEntry.Type.valueOf(resourceRecordSet.getType()); String value = resourceRecordSet.getResourceRecords().get(0).getValue(); return new DnsEntry(dnsName, dnsType, value); }
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());// w ww . java2 s.c o m } return n; }
From source file:tech.greenfield.aws.route53.EventHandler.java
License:Open Source License
/** * Start an DNS registration for the launched instance * @param ec2InstanceId instance ID of instance that needs to be registered * @param ttl TTL in seconds to use when creating a new record *///from w w w . j a va 2 s.c o m private void registerInstance(String ec2InstanceId) throws NoIpException { logger.info("Registering " + ec2InstanceId); ChangeBatch cb = message.getUpsertChanges(Collections.singletonList(getInstance(ec2InstanceId))); if (Route53Message.isDebug()) logger.fine("Adding instance with addresses: " + cb); for (Change c : cb.getChanges()) { ResourceRecordSet rr = c.getResourceRecordSet(); ResourceRecordSet oldrr = Tools.getRecordSet(rr.getName(), rr.getType()); if (Objects.nonNull(oldrr)) oldrr.getResourceRecords().forEach(r -> rr.withResourceRecords(r)); } ChangeResourceRecordSetsRequest req = new ChangeResourceRecordSetsRequest(Route53Message.getHostedZoneId(), cb); if (Route53Message.isDebug()) logger.fine("Sending rr change request: " + req); Tools.waitFor(route53().changeResourceRecordSets(req)); }