Example usage for com.amazonaws.services.route53.model ChangeAction DELETE

List of usage examples for com.amazonaws.services.route53.model ChangeAction DELETE

Introduction

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

Prototype

ChangeAction DELETE

To view the source code for com.amazonaws.services.route53.model ChangeAction DELETE.

Click Source Link

Usage

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()));

    /**/* ww  w  .  j  a  v  a 2s  . c  o m*/
     * 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.carrotgarden.maven.aws.dns.CarrotRoute53.java

License:BSD License

public void ensureCNAME(final String source, final String target) throws Exception {

    final HostedZone zone = findZone(source);

    Util.assertNotNull(zone, "missing zone for " + source);

    final String zoneId = zone.getId();

    final boolean isPresent;
    final ResourceRecordSet recordOld;
    {/*from   w  w  w . j a  v a2  s.c om*/
        final ResourceRecordSet recordFound = findRecord(zoneId, source);
        if (recordFound == null) {
            isPresent = false;
            recordOld = makeRecordCNAME(source, target);
        } else {
            isPresent = true;
            recordOld = recordFound;
        }
    }

    final ResourceRecordSet recordNew = makeRecordCNAME(source, target);

    recordNew.setTTL(recordOld.getTTL());

    //

    final Collection<Change> changeList = new LinkedList<Change>();
    if (isPresent) {
        changeList.add(new Change(ChangeAction.DELETE, recordOld));
        changeList.add(new Change(ChangeAction.CREATE, recordNew));
    } else {
        changeList.add(new Change(ChangeAction.CREATE, recordNew));
    }

    final ChangeBatch changeRequest = new ChangeBatch();
    changeRequest.setComment("updated : " + new Date());
    changeRequest.setChanges(changeList);

    final ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest();
    request.setHostedZoneId(zone.getId());
    request.setChangeBatch(changeRequest);

    final ChangeResourceRecordSetsResult result = amazonClient.changeResourceRecordSets(request);

    final ChangeInfo changeResult = result.getChangeInfo();

    logger.info("changeResult : \n{}", changeResult);

}

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/*  w  w  w  . j av  a 2  s  . co  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:org.ofbiz.tenant.amazonaws.AwsServices.java

License:Apache License

/**
 * update Amazon Rout53 resource record set
 * @param ctx/*from   www .jav  a 2  s. c  om*/
 * @param context
 * @return
 */
public static Map<String, Object> updateAmazonRoute53ResourceRecordSet(DispatchContext ctx,
        Map<String, Object> context) {
    String hostedZoneId = (String) context.get("hostedZoneId");
    String recordSetName = (String) context.get("recordSetName");
    String recordSetType = (String) context.get("recordSetType");
    List<String> domainNames = UtilGenerics.checkList(context.get("domainNames"));
    List<String> newDomainNames = UtilGenerics.checkList(context.get("newDomainNames"));
    String dNSName = (String) context.get("dNSName");
    String resourceRecordSetId = (String) context.get("resourceRecordSetId");
    Long weight = (Long) context.get("weight");
    Long tTL = (Long) context.get("tTL");

    try {
        AmazonRoute53 route53 = AwsFactory.getAmazonRoute53();
        RRType rrType = AwsUtil.getRRType(recordSetType);
        ResourceRecordSet deleteResourceRecordSet = new ResourceRecordSet(recordSetName, rrType);
        ResourceRecordSet createResourceRecordSet = new ResourceRecordSet(recordSetName, rrType);

        // set alias target
        if (UtilValidate.isNotEmpty(dNSName)) {
            AliasTarget aliasTarget = new AliasTarget(hostedZoneId, dNSName);
            deleteResourceRecordSet.setAliasTarget(aliasTarget);
            createResourceRecordSet.setAliasTarget(aliasTarget);
        }

        // set resource record set identifier
        if (UtilValidate.isNotEmpty(resourceRecordSetId)) {
            deleteResourceRecordSet.setSetIdentifier(resourceRecordSetId);
            createResourceRecordSet.setSetIdentifier(resourceRecordSetId);
        }

        // set weight
        if (UtilValidate.isEmpty(weight)) {
            weight = 0L;
        }
        deleteResourceRecordSet.setWeight(weight);
        createResourceRecordSet.setWeight(weight);

        // set TTL
        if (UtilValidate.isEmpty(tTL)) {
            tTL = 300L;
        }
        deleteResourceRecordSet.setTTL(tTL);
        createResourceRecordSet.setTTL(tTL);

        //--------- Delete Resource Record Set Change
        List<ResourceRecord> deleteResourceRecords = FastList.newInstance();
        // set delete resource records
        for (String domainName : domainNames) {
            ResourceRecord resourceRecord = new ResourceRecord(domainName);
            deleteResourceRecords.add(resourceRecord);
        }
        deleteResourceRecordSet.setResourceRecords(deleteResourceRecords);
        Change deleteChange = new Change(ChangeAction.DELETE, deleteResourceRecordSet);

        //-------- Create New Resource Record Set Change
        List<ResourceRecord> createResourceRecords = FastList.newInstance();
        // set create resource records
        for (String newDomainName : newDomainNames) {
            ResourceRecord resourceRecord = new ResourceRecord(newDomainName);
            createResourceRecords.add(resourceRecord);
        }
        createResourceRecordSet.setResourceRecords(createResourceRecords);
        Change createChange = new Change(ChangeAction.CREATE, createResourceRecordSet);

        // send request
        List<Change> changes = FastList.newInstance();
        changes.add(deleteChange);
        changes.add(createChange);
        ChangeBatch changeBatch = new ChangeBatch(changes);
        ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest(hostedZoneId,
                changeBatch);
        ChangeResourceRecordSetsResult resourceRecordSetsResult = route53.changeResourceRecordSets(request);
        ChangeInfo changeInfo = resourceRecordSetsResult.getChangeInfo();
        String changeId = changeInfo.getId();
        String status = changeInfo.getStatus();
        Date submittedAt = changeInfo.getSubmittedAt();
        String comment = changeInfo.getComment();
        Map<String, Object> results = ServiceUtil.returnSuccess();
        results.put("changeId", changeId);
        results.put("status", status);
        results.put("submittedAt", submittedAt);
        results.put("comment", comment);
        return results;
    } catch (Exception e) {
        Debug.logError(e, module);
        return ServiceUtil.returnError(e.getMessage());
    }
}

From source file:org.ofbiz.tenant.amazonaws.AwsServices.java

License:Apache License

/**
 * delete Amazon Rout53 resource record set
 * @param ctx/*from  www  .ja va 2  s .  c  o  m*/
 * @param context
 * @return
 */
public static Map<String, Object> deleteAmazonRoute53ResourceRecordSet(DispatchContext ctx,
        Map<String, Object> context) {
    String hostedZoneId = (String) context.get("hostedZoneId");
    String recordSetName = (String) context.get("recordSetName");
    String recordSetType = (String) context.get("recordSetType");
    List<String> domainNames = UtilGenerics.checkList(context.get("domainNames"));
    String dNSName = (String) context.get("dNSName");
    String resourceRecordSetId = (String) context.get("resourceRecordSetId");
    Long weight = (Long) context.get("weight");
    Long tTL = (Long) context.get("tTL");

    try {
        AmazonRoute53 route53 = AwsFactory.getAmazonRoute53();
        RRType rrType = AwsUtil.getRRType(recordSetType);
        ResourceRecordSet resourceRecordSet = new ResourceRecordSet(recordSetName, rrType);

        // set alias target
        if (UtilValidate.isNotEmpty(dNSName)) {
            AliasTarget aliasTarget = new AliasTarget(hostedZoneId, dNSName);
            resourceRecordSet.setAliasTarget(aliasTarget);
        }

        // set resource record set identifier
        if (UtilValidate.isNotEmpty(resourceRecordSetId)) {
            resourceRecordSet.setSetIdentifier(resourceRecordSetId);
        }

        // set resource records
        List<ResourceRecord> resourceRecords = FastList.newInstance();
        for (String domainName : domainNames) {
            ResourceRecord resourceRecord = new ResourceRecord(domainName);
            resourceRecords.add(resourceRecord);
        }
        resourceRecordSet.setResourceRecords(resourceRecords);

        // set weight
        if (UtilValidate.isEmpty(weight)) {
            weight = 0L;
        }
        resourceRecordSet.setWeight(weight);

        // set TTL
        if (UtilValidate.isEmpty(tTL)) {
            tTL = 300L;
        }
        resourceRecordSet.setTTL(tTL);

        Change change = new Change(ChangeAction.DELETE, resourceRecordSet);
        List<Change> changes = FastList.newInstance();
        changes.add(change);
        ChangeBatch changeBatch = new ChangeBatch(changes);
        ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest(hostedZoneId,
                changeBatch);
        ChangeResourceRecordSetsResult resourceRecordSetsResult = route53.changeResourceRecordSets(request);
        ChangeInfo changeInfo = resourceRecordSetsResult.getChangeInfo();
        String changeId = changeInfo.getId();
        String status = changeInfo.getStatus();
        Date submittedAt = changeInfo.getSubmittedAt();
        String comment = changeInfo.getComment();
        Map<String, Object> results = ServiceUtil.returnSuccess();
        results.put("changeId", changeId);
        results.put("status", status);
        results.put("submittedAt", submittedAt);
        results.put("comment", comment);
        return results;
    } catch (Exception e) {
        Debug.logError(e, module);
        return ServiceUtil.returnError(e.getMessage());
    }
}