summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-02-14 21:37:15 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-02-15 20:47:26 +0100
commitc6b3b120c1b592e3bd8a99d27e50e3c53ce212a0 (patch)
tree699d02d88f7755f1237e56bddc81291084cfafd6
parentAdd automatic reverse zone. (diff)
downloaddns_record-c6b3b120c1b592e3bd8a99d27e50e3c53ce212a0.tar.gz
dns_record-c6b3b120c1b592e3bd8a99d27e50e3c53ce212a0.tar.xz
dns_record resources working!
-rw-r--r--lib/puppet/provider/dns_record/zonefile.rb21
-rw-r--r--lib/puppet/provider/dns_zone/zonefile.rb20
-rw-r--r--lib/puppet/type/dns_record.rb6
-rw-r--r--lib/puppet/type/dns_zone.rb41
4 files changed, 56 insertions, 32 deletions
diff --git a/lib/puppet/provider/dns_record/zonefile.rb b/lib/puppet/provider/dns_record/zonefile.rb
index 9b6ec6e..bcd8969 100644
--- a/lib/puppet/provider/dns_record/zonefile.rb
+++ b/lib/puppet/provider/dns_record/zonefile.rb
@@ -3,17 +3,27 @@ require 'puppet/functions/zones'
Puppet::Type.type(:dns_record).provide(:zonefile) do
+ # def initialize(*args)
+ # super
+ # # zone_name = resource[:zone]
+ # resource[:notify] = [
+ # "Dns_zone[adrift.space]"
+ # ]
+ # puts "notify = #{resource[:notify]}"
+ # end
+
def self.instances
puts "Instances"
[ new(type: :A,
value: '1.2.3.4',
+ name: "Test",
+ zone: 'adrift.space',
),
]
end
def create
- puts "Create"
# context.notice("Creating #{name} with #{should}")
zone = get_zone(resource[:zone])
type = resource[:type]
@@ -81,15 +91,6 @@ Puppet::Type.type(:dns_record).provide(:zonefile) do
end
end
- def flush
- puts "record flush"
- end
-
- def self.flush
- puts "recurd self.flush"
- end
-
-
def type
resource[:type]
end
diff --git a/lib/puppet/provider/dns_zone/zonefile.rb b/lib/puppet/provider/dns_zone/zonefile.rb
index 6ed15bd..8be6d72 100644
--- a/lib/puppet/provider/dns_zone/zonefile.rb
+++ b/lib/puppet/provider/dns_zone/zonefile.rb
@@ -1,7 +1,7 @@
require 'zonefile'
require 'puppet/functions/zones'
-Puppet::Type.type(:dns_zone).provide(:zonefile) do
+Puppet::Type.type(:dns_zone).provide :zonefile do
def self.instances
[
@@ -25,17 +25,10 @@ Puppet::Type.type(:dns_zone).provide(:zonefile) do
end
def destroy
- puts "Detroy"
- end
-
- def refresh
- puts ">>> Refresh"
+ puts ">>> Destroy"
end
def exists?
- puts "@property_hash = #{@property_hash}"
- # puts "resource[:refresh] = #{resource.refresh}"
- # puts "self[:refresh] = #{self[:refresh]}"
zone_name = resource[:zone]
File.exists?("/var/named/dynamic/db.#{zone_name}")
end
@@ -44,13 +37,4 @@ Puppet::Type.type(:dns_zone).provide(:zonefile) do
resource[:primary]
end
- def flush
- puts "zone flush"
- end
-
- # zf =
-
- # zf.new_serial
- # puts "#{zf.output}"
-
end
diff --git a/lib/puppet/type/dns_record.rb b/lib/puppet/type/dns_record.rb
index 7f212dd..f8dc00e 100644
--- a/lib/puppet/type/dns_record.rb
+++ b/lib/puppet/type/dns_record.rb
@@ -38,8 +38,8 @@ Puppet::Type.newtype(:dns_record) do
desc "Optional TTL for record"
end
- autonotify(:dns_zone) { parameter(:zone).value }
- autobefore(:dns_zone) { parameter(:zone).value }
- autorequire(:dns_zone) { parameter(:zone).value }
+ autonotify('dns_zone') { [ parameter(:zone).value ] }
+ # autobefore(:dns_zone) { parameter(:zone).value }
+ # autorequire(:dns_zone) { parameter(:zone).value }
end
diff --git a/lib/puppet/type/dns_zone.rb b/lib/puppet/type/dns_zone.rb
index 6cd9aef..9cf8930 100644
--- a/lib/puppet/type/dns_zone.rb
+++ b/lib/puppet/type/dns_zone.rb
@@ -4,7 +4,46 @@ Puppet::Type.newtype(:dns_zone) do
# file = "${path}/dynamic/db.${zone_name}"
# purge = false
- ensurable
+ # ensurable
+
+ newproperty(:ensure) do
+ desc "Ensurable"
+ # newvalues(:present, :absent)
+
+ newvalue(:present, :invalidate_refreshes => true) do
+ provider.create
+ end
+
+ newvalue(:absent) do
+ provider.destroy
+ end
+
+ defaultto :present
+
+ aliasvalue(:true, :present)
+ aliasvalue(:false, :absent)
+
+ def retrieve
+ if provider.exists?
+ :present
+ else
+ :absent
+ end
+ end
+
+ def set(value)
+ if value == :present
+ provider.create
+ else
+ provider.destroy
+ end
+ end
+
+ end
+
+ def refresh
+ provider.create
+ end
newparam(:purge) do
desc "Should all existing records be purged?"