Search in sources :

Example 16 with Record

use of com.globo.globodns.client.model.Record in project cloudstack by apache.

the class GloboDnsResource method execute.

public Answer execute(RemoveDomainCommand cmd) {
    try {
        Domain domain = searchDomain(cmd.getNetworkDomain(), false);
        if (domain != null) {
            if (!cmd.isOverride()) {
                for (Record record : _globoDns.getRecordAPI().listAll(domain.getId())) {
                    if (record.getTypeNSRecordAttributes().getId() == null) {
                        s_logger.warn("There are records in domain " + cmd.getNetworkDomain() + " and override is not enable. I will not delete this domain.");
                        return new Answer(cmd, true, "Domain keeped");
                    }
                }
            }
            _globoDns.getDomainAPI().removeDomain(domain.getId());
            scheduleExportChangesToBind();
        } else {
            s_logger.warn("Domain " + cmd.getNetworkDomain() + " already been deleted.");
        }
        return new Answer(cmd, true, "Domain removed");
    } catch (GloboDnsException e) {
        return new Answer(cmd, false, e.getMessage());
    }
}
Also used : ReadyAnswer(com.cloud.agent.api.ReadyAnswer) Answer(com.cloud.agent.api.Answer) MaintainAnswer(com.cloud.agent.api.MaintainAnswer) GloboDnsException(com.globo.globodns.client.GloboDnsException) Record(com.globo.globodns.client.model.Record) Domain(com.globo.globodns.client.model.Domain)

Example 17 with Record

use of com.globo.globodns.client.model.Record in project cloudstack by apache.

the class GloboDnsResource method searchRecord.

/**
     * Find recordName in domain.
     * @param recordName
     * @param domainId Id of BindZoneName. Maybe you need use searchDomain before to use BindZoneName.
     * @return Record or null if not exists.
     */
private Record searchRecord(String recordName, Long domainId) {
    if (recordName == null || domainId == null) {
        return null;
    }
    List<Record> candidates = _globoDns.getRecordAPI().listByQuery(domainId, recordName);
    // GloboDns search name in name and content. We need to iterate to check if recordName exists only in name
    for (Record candidate : candidates) {
        if (recordName.equalsIgnoreCase(candidate.getName())) {
            s_logger.debug("Record " + recordName + " in domain id " + domainId + " found in GloboDNS");
            return candidate;
        }
    }
    s_logger.debug("Record " + recordName + " in domain id " + domainId + " not found in GloboDNS");
    return null;
}
Also used : Record(com.globo.globodns.client.model.Record)

Aggregations

Record (com.globo.globodns.client.model.Record)17 Domain (com.globo.globodns.client.model.Domain)14 Answer (com.cloud.agent.api.Answer)13 Test (org.junit.Test)12 CreateOrUpdateRecordAndReverseCommand (com.globo.globodns.cloudstack.commands.CreateOrUpdateRecordAndReverseCommand)6 RemoveRecordCommand (com.globo.globodns.cloudstack.commands.RemoveRecordCommand)4 ArrayList (java.util.ArrayList)3 RemoveDomainCommand (com.globo.globodns.cloudstack.commands.RemoveDomainCommand)2 MaintainAnswer (com.cloud.agent.api.MaintainAnswer)1 ReadyAnswer (com.cloud.agent.api.ReadyAnswer)1 GloboDnsException (com.globo.globodns.client.GloboDnsException)1 InOrder (org.mockito.InOrder)1