package io.fathom.cloud.openstack.client.dns; import io.fathom.cloud.openstack.client.OpenstackServiceClientBase; import io.fathom.cloud.openstack.client.RestClientException; import io.fathom.cloud.openstack.client.dns.model.Recordset; import io.fathom.cloud.openstack.client.dns.model.RecordsetList; import io.fathom.cloud.openstack.client.dns.model.WrappedRecordset; import io.fathom.cloud.openstack.client.dns.model.WrappedZone; import io.fathom.cloud.openstack.client.dns.model.Zone; import io.fathom.cloud.openstack.client.dns.model.ZoneList; import io.fathom.cloud.openstack.client.identity.TokenProvider; import io.fathom.cloud.openstack.client.storage.OpenstackStorageClient; import io.fathom.http.HttpClient; import io.fathom.http.HttpRequest; import java.net.URI; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class OpenstackDnsClient extends OpenstackServiceClientBase { private static final Logger log = LoggerFactory.getLogger(OpenstackStorageClient.class); public static final String SERVICE_TYPE = "dns"; public OpenstackDnsClient(HttpClient httpClient, URI uri, TokenProvider tokenProvider) { super(httpClient, uri, tokenProvider); } public List<Zone> listZones() throws RestClientException { HttpRequest request = buildGet("v2/zones"); ZoneList zones = doRequest(request, ZoneList.class); return zones.zones; } public Zone createZone(Zone zone) throws RestClientException { WrappedZone request = new WrappedZone(); request.zone = zone; WrappedZone response = doPost("v2/zones", request, WrappedZone.class); return response.zone; } public List<Recordset> listRecordsets(String zoneId, boolean details) throws RestClientException { String url = "v2/zones/" + zoneId + "/recordsets"; if (details) { url += "/details"; } HttpRequest request = buildGet(url); RecordsetList recordsets = doRequest(request, RecordsetList.class); return recordsets.recordsets; } public void deleteRecordset(String zoneId, String recordsetId) throws RestClientException { if (zoneId == null || zoneId.isEmpty()) { throw new IllegalArgumentException(); } if (recordsetId == null || recordsetId.isEmpty()) { throw new IllegalArgumentException(); } HttpRequest request = buildDelete("v2/zones/" + zoneId + "/recordsets/" + recordsetId); doStringRequest(request); } public Recordset createRecordset(String zoneId, Recordset recordset) throws RestClientException { String url = "v2/zones/" + zoneId + "/recordsets"; WrappedRecordset data = new WrappedRecordset(); data.recordset = recordset; WrappedRecordset response = doPost(url, data, WrappedRecordset.class); return response.recordset; } }