From c6b3b120c1b592e3bd8a99d27e50e3c53ce212a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 14 Feb 2022 21:37:15 +0100 Subject: dns_record resources working! --- lib/puppet/provider/dns_record/zonefile.rb | 21 +++++++-------- lib/puppet/provider/dns_zone/zonefile.rb | 20 ++------------- lib/puppet/type/dns_record.rb | 6 ++--- lib/puppet/type/dns_zone.rb | 41 +++++++++++++++++++++++++++++- 4 files changed, 56 insertions(+), 32 deletions(-) (limited to 'lib') 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?" -- cgit v1.2.3