Search in sources :

Example 6 with Record

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

the class GloboDnsResourceTest method testUpdateRecordAndReverseWhenDomainExistsAndOverrideIsTrue.

/////////////////////////
// Update Record tests //
/////////////////////////
@Test
public void testUpdateRecordAndReverseWhenDomainExistsAndOverrideIsTrue() throws Exception {
    String recordName = "recordname";
    String oldRecordIp = "40.30.20.10";
    String newRecordIp = "50.40.30.20";
    String domainName = "domain.name.com";
    String reverseDomainName = "30.40.50.in-addr.arpa";
    String reverseRecordName = "20";
    String reverseRecordContent = recordName + "." + domainName;
    Domain domain = generateFakeDomain(domainName, false);
    Record record = generateFakeRecord(domain, recordName, oldRecordIp, false);
    Domain reverseDomain = generateFakeDomain(reverseDomainName, true);
    Record reverseRecord = generateFakeRecord(reverseDomain, reverseRecordName, "X", true);
    Answer answer = _globoDnsResource.execute(new CreateOrUpdateRecordAndReverseCommand(recordName, newRecordIp, domainName, TEMPLATE_ID, true));
    // ensure calls in sequence to ensure this call are the only ones.
    InOrder inOrder = inOrder(_recordApi);
    inOrder.verify(_recordApi, times(1)).updateRecord(eq(record.getId()), eq(domain.getId()), eq(recordName), eq(newRecordIp));
    inOrder.verify(_recordApi, times(1)).updateRecord(eq(reverseRecord.getId()), eq(reverseDomain.getId()), eq(reverseRecordName), eq(reverseRecordContent));
    assertNotNull(answer);
    assertEquals(true, answer.getResult());
    verify(_exportApi, times(1)).scheduleExport();
}
Also used : Answer(com.cloud.agent.api.Answer) InOrder(org.mockito.InOrder) Record(com.globo.globodns.client.model.Record) Domain(com.globo.globodns.client.model.Domain) CreateOrUpdateRecordAndReverseCommand(com.globo.globodns.cloudstack.commands.CreateOrUpdateRecordAndReverseCommand) Test(org.junit.Test)

Example 7 with Record

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

the class GloboDnsResourceTest method testRemoveReverseRecordButNotRemoveRecordWhenRecordExistsWithDifferentValueAndOverrideIsFalse.

@Test
public void testRemoveReverseRecordButNotRemoveRecordWhenRecordExistsWithDifferentValueAndOverrideIsFalse() throws Exception {
    String recordName = "recordname";
    String recordIp = "40.30.20.10";
    String domainName = "domain.name.com";
    String reverseDomainName = "20.30.40.in-addr.arpa";
    String reverseRecordName = "10";
    String reverseRecordContent = recordName + "." + domainName;
    Domain domain = generateFakeDomain(domainName, false);
    Record record = generateFakeRecord(domain, recordName, "X", false);
    Domain reverseDomain = generateFakeDomain(reverseDomainName, true);
    Record reverseRecord = generateFakeRecord(reverseDomain, reverseRecordName, reverseRecordContent, true);
    Answer answer = _globoDnsResource.execute(new RemoveRecordCommand(recordName, recordIp, domainName, false));
    assertEquals(true, answer.getResult());
    verify(_recordApi, never()).removeRecord(eq(record.getId()));
    verify(_recordApi, times(1)).removeRecord(eq(reverseRecord.getId()));
    verify(_exportApi, times(1)).scheduleExport();
}
Also used : Answer(com.cloud.agent.api.Answer) Record(com.globo.globodns.client.model.Record) RemoveRecordCommand(com.globo.globodns.cloudstack.commands.RemoveRecordCommand) Domain(com.globo.globodns.client.model.Domain) Test(org.junit.Test)

Example 8 with Record

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

the class GloboDnsResource method removeRecord.

/**
     * Try to remove a record from bindZoneName. If record was removed returns true.
     * @param recordName
     * @param bindZoneName
     * @return true if record exists and was removed.
     */
protected boolean removeRecord(String recordName, String recordValue, String bindZoneName, boolean reverse, boolean override) {
    Domain domain = searchDomain(bindZoneName, reverse);
    if (domain == null) {
        s_logger.warn("Domain " + bindZoneName + " doesn't exists in GloboDNS. Record " + recordName + " has already been removed.");
        return false;
    }
    Record record = searchRecord(recordName, domain.getId());
    if (record == null) {
        s_logger.warn("Record " + recordName + " in domain " + bindZoneName + " has already been removed.");
        return false;
    } else {
        if (!override && !record.getContent().equals(recordValue)) {
            s_logger.warn("Record " + recordName + " in domain " + bindZoneName + " have different value from " + recordValue + " and override is not enable. I will not delete it.");
            return false;
        }
        _globoDns.getRecordAPI().removeRecord(record.getId());
    }
    return true;
}
Also used : Record(com.globo.globodns.client.model.Record) Domain(com.globo.globodns.client.model.Domain)

Example 9 with Record

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

the class GloboDnsResource method createOrUpdateRecord.

/**
     * Create a new record in Zone, or update it if record has been exists.
     * @param domainId
     * @param name
     * @param ip
     * @param type
     * @return if record was created or updated.
     */
private boolean createOrUpdateRecord(Long domainId, String name, String ip, String type, boolean override) {
    Record record = this.searchRecord(name, domainId);
    if (record == null) {
        // Create new record
        record = _globoDns.getRecordAPI().createRecord(domainId, name, ip, type);
        s_logger.info("Created record " + record.getName() + " in domain " + domainId);
    } else {
        if (!ip.equals(record.getContent())) {
            if (Boolean.TRUE.equals(override)) {
                // ip is incorrect. Fix.
                _globoDns.getRecordAPI().updateRecord(record.getId(), domainId, name, ip);
            } else {
                return false;
            }
        }
    }
    return true;
}
Also used : Record(com.globo.globodns.client.model.Record)

Example 10 with Record

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

the class GloboDnsResourceTest method testRemoveRecordWithSuccessAndReverseRecordNotRemovedWhenReverseRecordExistsWithDifferentValueAndOverrideIsFalse.

@Test
public void testRemoveRecordWithSuccessAndReverseRecordNotRemovedWhenReverseRecordExistsWithDifferentValueAndOverrideIsFalse() throws Exception {
    String recordName = "recordname";
    String recordIp = "40.30.20.10";
    String domainName = "domain.name.com";
    String reverseDomainName = "20.30.40.in-addr.arpa";
    String reverseRecordName = "10";
    Domain domain = generateFakeDomain(domainName, false);
    Record record = generateFakeRecord(domain, recordName, recordIp, false);
    Domain reverseDomain = generateFakeDomain(reverseDomainName, true);
    Record reverseRecord = generateFakeRecord(reverseDomain, reverseRecordName, "X", true);
    Answer answer = _globoDnsResource.execute(new RemoveRecordCommand(recordName, recordIp, domainName, false));
    assertEquals(true, answer.getResult());
    verify(_recordApi, times(1)).removeRecord(eq(record.getId()));
    verify(_recordApi, never()).removeRecord(eq(reverseRecord.getId()));
    verify(_exportApi, times(1)).scheduleExport();
}
Also used : Answer(com.cloud.agent.api.Answer) Record(com.globo.globodns.client.model.Record) RemoveRecordCommand(com.globo.globodns.cloudstack.commands.RemoveRecordCommand) Domain(com.globo.globodns.client.model.Domain) Test(org.junit.Test)

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