summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavi Oliveira <davi.oliveira@locaweb.com>2021-02-10 18:36:38 -0300
committerDavi Oliveira <davi.oliveira@locaweb.com>2021-02-10 18:36:38 -0300
commitc20723cfb5c3af983a42a54e1233e9b6f0550ce1 (patch)
treeb4a14d8852931925ea033c9adb101decd84b9833 /lib
parentInitialize poolboy app (diff)
Add zone without rrset
Diffstat (limited to 'lib')
-rw-r--r--lib/powerdnsex.ex4
-rw-r--r--lib/powerdnsex/gen_server/server.ex4
-rw-r--r--lib/powerdnsex/managers/records_manager.ex4
-rw-r--r--lib/powerdnsex/managers/zones_manager.ex12
4 files changed, 24 insertions, 0 deletions
diff --git a/lib/powerdnsex.ex b/lib/powerdnsex.ex
index b77389c..6b71f08 100644
--- a/lib/powerdnsex.ex
+++ b/lib/powerdnsex.ex
@@ -48,6 +48,10 @@ defmodule PowerDNSex do
call({:show_zone, zone, server_name})
end
+ def get_zone(zone, server_name \\ @default_server) when is_binary(zone) do
+ call({:get_zone, zone, server_name})
+ end
+
@spec delete_zone(String.t(), String.t()) :: :ok | {:error, String.t()}
@doc """
Delete specific Zone on PowerDNS
diff --git a/lib/powerdnsex/gen_server/server.ex b/lib/powerdnsex/gen_server/server.ex
index df8a453..e015c7e 100644
--- a/lib/powerdnsex/gen_server/server.ex
+++ b/lib/powerdnsex/gen_server/server.ex
@@ -24,6 +24,10 @@ defmodule PowerDNSex.Server do
{:reply, ZonesManager.show(zone, server_name), state}
end
+ def handle_call({:get_zone, zone, server_name}, _from, state) do
+ {:reply, ZonesManager.get_zone(zone, server_name), state}
+ end
+
def handle_call({:delete_zone, zone, server_name}, _from, state) do
{:reply, ZonesManager.delete(zone, server_name), state}
end
diff --git a/lib/powerdnsex/managers/records_manager.ex b/lib/powerdnsex/managers/records_manager.ex
index f2ef6b5..89b8d4b 100644
--- a/lib/powerdnsex/managers/records_manager.ex
+++ b/lib/powerdnsex/managers/records_manager.ex
@@ -12,6 +12,10 @@ defmodule PowerDNSex.Managers.RecordsManager do
patch(zone, rrset_attrs)
end
+ def put_zone(%Zone{} = zone, %{} = rrset_attrs) do
+ create(zone, rrset_attrs)
+ end
+
def show(zone_name, %{} = rrset_attrs) do
case ZonesManager.show(zone_name) do
{:ok, zone} -> RRSet.find(zone.rrsets, rrset_attrs)
diff --git a/lib/powerdnsex/managers/zones_manager.ex b/lib/powerdnsex/managers/zones_manager.ex
index 23bab1d..1f16a6c 100644
--- a/lib/powerdnsex/managers/zones_manager.ex
+++ b/lib/powerdnsex/managers/zones_manager.ex
@@ -20,6 +20,14 @@ defmodule PowerDNSex.Managers.ZonesManager do
|> process_request_response
end
+ def get_zone(zone_name, server_name \\ @default_server)
+ when is_bitstring(zone_name) do
+ server_name
+ |> zone_path_light(zone_name)
+ |> HttpClient.get!()
+ |> process_request_response
+ end
+
def delete(zone_name, server_name \\ @default_server)
when is_bitstring(zone_name) do
server_name
@@ -40,6 +48,10 @@ defmodule PowerDNSex.Managers.ZonesManager do
zone_path(server_name) <> "/#{zone_name}"
end
+ defp zone_path_light(server_name, zone_name) when is_bitstring(server_name) do
+ "api/v1/servers/#{server_name}/zones/#{zone_name}?rrsets=false"
+ end
+
defp process_request_response(%Response{body: body, status_code: status}) do
case status do
s when s == 204 ->