| Path: | lib/puppet/provider/maillist/mailman.rb |
| Last Update: | Tue Jul 08 15:46:19 +0200 2008 |
Return a list of existing mailman instances.
# File lib/puppet/provider/maillist/mailman.rb, line 12
12: def self.instances
13: list_lists.split("\n").reject { |line| line.include?("matching mailing lists") }.collect do |line|
14: name, description = line.sub(/^\s+/, '').sub(/\s+$/, '').split(/\s+-\s+/)
15: if description.include?("no description available")
16: description = :absent
17: end
18: new(:ensure => :present, :name => name, :description => description)
19: end
20: end
Prefetch our list list, yo.
# File lib/puppet/provider/maillist/mailman.rb, line 23
23: def self.prefetch(lists)
24: instances.each do |prov|
25: if list = lists[prov.name] || lists[prov.name.downcase]
26: list.provider = prov
27: end
28: end
29: end
# File lib/puppet/provider/maillist/mailman.rb, line 31
31: def aliases
32: mailman = self.class.command(:mailman)
33: name = self.name.downcase
34: aliases = {name => "| #{mailman} post #{name}"}
35: %w{admin bounces confirm join leave owner request subscribe unsubscribe}.each do |address|
36: aliases["%s-%s" % [name, address]] = "| %s %s %s" % [mailman, address, name]
37: end
38: aliases
39: end
Create the list.
# File lib/puppet/provider/maillist/mailman.rb, line 42
42: def create
43: args = []
44: if val = @resource[:mailserver]
45: args << "--emailhost" << val
46: end
47: if val = @resource[:webserver]
48: args << "--urlhost" << val
49: end
50:
51: args << self.name
52: if val = @resource[:admin]
53: args << val
54: else
55: raise ArgumentError, "Mailman lists require an administrator email address"
56: end
57: if val = @resource[:password]
58: args << val
59: else
60: raise ArgumentError, "Mailman lists require an administrator password"
61: end
62: newlist(*args)
63: end
Delete the list.
# File lib/puppet/provider/maillist/mailman.rb, line 66
66: def delete(purge = false)
67: args = []
68: if purge
69: args << "--archives"
70: end
71: args << self.name
72: rmlist(*args)
73: end
Does our list exist already?
# File lib/puppet/provider/maillist/mailman.rb, line 76
76: def exists?
77: properties[:ensure] != :absent
78: end
Clear out the cached values.
# File lib/puppet/provider/maillist/mailman.rb, line 81
81: def flush
82: @property_hash.clear
83: end
Look up the current status.
# File lib/puppet/provider/maillist/mailman.rb, line 86
86: def properties
87: if @property_hash.empty?
88: @property_hash = query || {:ensure => :absent}
89: if @property_hash.empty?
90: @property_hash[:ensure] = :absent
91: end
92: end
93: @property_hash.dup
94: end
Remove the list and its archives.
# File lib/puppet/provider/maillist/mailman.rb, line 97
97: def purge
98: delete(true)
99: end
Pull the current state of the list from the full list. We‘re getting some double entendre here.…
# File lib/puppet/provider/maillist/mailman.rb, line 103
103: def query
104: self.class.instances.each do |list|
105: if list.name == self.name or list.name.downcase == self.name
106: return list.properties
107: end
108: end
109: nil
110: end