mailman.rb

Path: lib/puppet/provider/maillist/mailman.rb
Last Update: Tue Jul 08 15:46:19 +0200 2008

Required files

puppet/provider/parsedfile  

Methods

aliases   create   delete   exists?   flush   instances   prefetch   properties   purge   query  

Public Class methods

Return a list of existing mailman instances.

[Source]

    # 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.

[Source]

    # 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

Public Instance methods

[Source]

    # 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.

[Source]

    # 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.

[Source]

    # 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?

[Source]

    # File lib/puppet/provider/maillist/mailman.rb, line 76
76:     def exists?
77:         properties[:ensure] != :absent
78:     end

Clear out the cached values.

[Source]

    # File lib/puppet/provider/maillist/mailman.rb, line 81
81:     def flush
82:         @property_hash.clear
83:     end

Look up the current status.

[Source]

    # 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.

[Source]

    # 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.…

[Source]

     # 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

[Validate]