List<Recordset> requested = readFromDatabase(true);
List<Recordset> current;
try {
current = readFromOpenstack(zone);
} catch (RestClientException e) {
throw new CloudException("Error reading zone", e);
}
Changes changes = computeChanges(current, requested);
try {
OpenstackDnsClient client = openstackClient.getDns();
for (Recordset r : changes.remove) {
client.deleteRecordset(zone.id, r.id);
}
for (Recordset r : changes.create) {
client.createRecordset(zone.id, r);
}
} catch (RestClientException e) {
throw new CloudException("Error applying zone changes", e);
}
return null;
}