Puppet::Type.newtype(:dns_record) do @doc = %q{ } ensurable newparam(:zone) do desc "Zone which this record belongs to" isrequired end newparam(:name, :namevar => true) do desc "Hello" end newproperty(:type) do desc "DNS Record type, such as A, or TXT" newvalues(:A, :AAAA, :CNAME, :PTR) isrequired end newproperty(:key) do desc "DNS Name" isrequired end newproperty(:value) do desc "Record contents, valid value depend on type" isrequired end newproperty(:ttl) do desc "Optional TTL for record" # TODO How does newvalues work with an optional parameter? # newvalues /([0-9]+[SsMmHhDdWw]?)+/ end autonotify('dns_zone') { [ parameter(:zone).value ] } end