summaryrefslogtreecommitdiff
path: root/lib/puppet/type/dns_record2.rb
blob: 20747822aa6bcd10f4caa55f4bf7b4ef628d4f52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Puppet::Type.newtype(:dns_record2) do
  @doc = %q{
  }

  #"named-checkconf -j -D -F raw $zonename $zonefile"

  newproperty(:ensure) do
    newvalue(:present) do
      provider.create
    end

    newvalue(:absent) do
      provider.destroy
    end

    defaultto :present

    def retrieve
      if provider.exists?
        :present
      else
        :absent
      end
    end
  end

  def exists?
    provider.exists?
  end

  newparam(:name) do
  end

  newproperty(:type) do
    desc %q{
    Resource Record type, such as A, AAAA, ...

    Only a few types are supported, due to the DNS library only supporting these.
    }
    newvalues(:A,
              :AAAA,
              :CNAME,
              :HINFO,
              :MINFO,
              :MX,
              :NS,
              :PTR,
              :SOA,
              :TXT,
              :WKS,
             )
  end

  newproperty(:value) do
    desc %q{
    DNS payload. For example an IP address.
    }
  end

  newproperty(:key) do
    desc %q{
    DNS key.
    Such as 'www'
    }
  end

  newproperty(:zone) do
    desc %q{
    Zone this record belongs to
    }

    munge do |value|
      if value[-1] == '.'
        value
      else
        "#{value}."
      end
    end
  end

  newproperty(:cls) do
    desc %q{
    }
  end

  newproperty(:ttl) do
  end

  # autobefore('dns::zone') { value(:zone) }
  autonotify('dns_zone2') { [value(:zone)] }
  # autobefore('dns_zone2') { [value(:zone)] }
  # TODO view
end