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