diff options
author | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-22 21:26:56 -0300 |
---|---|---|
committer | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-26 14:19:28 -0300 |
commit | 416539a6acb4391b52f80d91b96fdab07658953d (patch) | |
tree | 6ea82b452f3acfe8f64ef703ed0386b6fca561a4 /lib/powerdnsex.ex | |
parent | Add Delete Record feature (diff) |
WIP - Add elixir GenServer
Diffstat (limited to 'lib/powerdnsex.ex')
-rw-r--r-- | lib/powerdnsex.ex | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/powerdnsex.ex b/lib/powerdnsex.ex index c82aa59..7152417 100644 --- a/lib/powerdnsex.ex +++ b/lib/powerdnsex.ex @@ -1,2 +1,70 @@ defmodule PowerDNSex do + @default_server "localhost" + use PowerDNSex.ServerSetup + + alias PowerDNSex.Managers.{ZonesManager, RecordsManager} + alias PowerDNSex.Models.Zone + + ### + # Zones + ### + + @spec create_zone(Zone.t, String.t) :: :ok | {:error, String.t} + @doc """ + Create a new Zone on PowerDNS + """ + def create_zone(%Zone{} = zone, server_name \\ @default_server) do + ZonesManager.create(zone, server_name) + end + + @spec show_zone(Zone.t, String.t) :: :ok | {:error, String.t} + @doc """ + Show / Retrive info of the specific Zone + """ + def show_zone(%Zone{} = zone, server_name \\ @default_server) do + ZonesManager.show(zone, server_name) + end + + @spec delete_zone(Zone.t, String.t) :: :ok | {:error, String.t} + @doc """ + Delete specific Zone on PowerDNS + """ + def delete_zone(%Zone{} = zone, server_name \\ @default_server) do + ZonesManager.delete(zone, server_name) + end + + ### + # Records + ### + @spec create_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Create a new Record for the given Zone + """ + def create_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.create(zone, rrset_attrs) + end + + @spec show_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Show / Retrive info of the specific Record of the given Zone + """ + def show_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.show(zone, rrset_attrs) + end + + @spec update_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Update Record of the given Zone + """ + def update_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.update(zone, rrset_attrs) + end + + @spec delete_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Delete specific Record of given Zone + """ + def delete_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.delete(zone, rrset_attrs) + end end |