Browse Source

compatibility with chef-10 improved

Xabier de Zuazo 11 years ago
parent
commit
2ff8f679ea
4 changed files with 33 additions and 29 deletions
  1. 10 9
      libraries/conf.rb
  2. 1 0
      libraries/plugins.rb
  3. 21 19
      recipes/default.rb
  4. 1 1
      templates/default/conf.d/90-sieve.conf.erb

+ 10 - 9
libraries/conf.rb

@@ -43,7 +43,7 @@ module Dovecot
   <%  unless conf.has_key?("driver") -%>
   driver = <%=   @driver %>
   <%  end -%>
-  <%  conf.sort.each do |key, value|
+  <%  conf.to_hash.sort.each do |key, value|
         unless value.nil?
   -%>
   <%=     key %> = <%= @Dovecot_Conf.value(value) %>
@@ -65,7 +65,7 @@ module Dovecot
 
       template =
 'plugin {
-  <% @conf.sort.each do |key, value|
+  <% @conf.to_hash.sort.each do |key, value|
        unless value.nil?
   -%>
   <%=    key %> = <%= @Dovecot_Conf.value(value) %>
@@ -81,9 +81,10 @@ module Dovecot
     end
 
     def self.namespace(ns)
+
       template =
 'namespace <%= @ns["name"] %> {
-<%   @ns.sort.each do |key, value|
+<%   @ns.to_hash.sort.each do |key, value|
        if key != "name"
   -%>
   <%=    key %> = <%= @Dovecot_Conf.value(value) %>
@@ -103,7 +104,7 @@ module Dovecot
 
       template =
 'protocol <%= @name %> {
-  <% @conf.sort.each do |key, value| -%>
+  <% @conf.to_hash.sort.each do |key, value| -%>
   <%=  key %> = <%= @Dovecot_Conf.value(value) %>
   <% end -%>
 }'
@@ -123,19 +124,19 @@ module Dovecot
   <% if @conf["listeners"].kind_of?(Array) or @conf["listeners"].kind_of?(Hash)
       listeners = @conf["listeners"].kind_of?(Array) ? @conf["listeners"] : [ @conf["listeners"] ]
       listeners.each do |listener|
-        listener.sort.each do |service, values|
+        listener.to_hash.sort.each do |service, values|
           service_proto = service.split(":")[0]
           service_name = service.split(":")[1]
   -%>
   <%=     service_proto %>_listener <%= service_name %> {
-  <%        values.sort.each do |key, value|-%>
+  <%        values.to_hash.sort.each do |key, value|-%>
     <%=       key %> = <%= @Dovecot_Conf.value(value) %>
   <%        end -%>
   }
   <%     end -%>
   <%   end -%>
   <% end -%>
-  <% @conf.sort.each do |key, value|
+  <% @conf.to_hash.sort.each do |key, value|
        if key != "listeners"
   -%>
   <%=    key %> = <%= @Dovecot_Conf.value(value) %>
@@ -155,12 +156,12 @@ module Dovecot
 
     template =
 'map {
-<%     @map.sort.each do |k, v|
+<%     @map.sort.to_hash.each do |k, v|
          if v.kind_of?(Hash)
 -%>
   <%=      k %> {
 <%
-           v.sort.each do |k2, v2|
+           v.to_hash.sort.each do |k2, v2|
 -%>
     <%=      k2 %> = <%= @Dovecot_Conf.value(v2) %>
 <%         end -%>

+ 1 - 0
libraries/plugins.rb

@@ -2,6 +2,7 @@ module Dovecot
   module Plugins
 
     def self.required?(plugin, attrs)
+      attrs = attrs.to_hash
       return true if attrs['conf'].has_key?('mail_plugins') and attrs['conf']['mail_plugins'].include?(plugin)
       attrs['protocols'].sort.each do |protocol, conf|
         return true if conf.kind_of?(Hash) and conf.has_key?('mail_plugins') and conf['mail_plugins'].include?(plugin)

+ 21 - 19
recipes/default.rb

@@ -35,10 +35,10 @@ when 'redhat','centos','scientific','fedora','suse','amazon' then
     node['dovecot']['conf_files']['ldap']
 
   # sieve
-  if Dovecot::Plugins.required?('sieve', node['dovecot'])
-    package 'dovecot-pigeonhole'
-    conf_files += node['dovecot']['conf_files']['sieve']
+  package 'dovecot-pigeonhole' do
+    only_if do Dovecot::Plugins.required?('sieve', node['dovecot']) end
   end
+  conf_files += node['dovecot']['conf_files']['sieve']
 
 when 'debian', 'ubuntu' then
 
@@ -47,35 +47,37 @@ when 'debian', 'ubuntu' then
   package 'dovecot-gssapi'
 
   # imap
-  if Dovecot::Protocols.enabled?('imap', node['dovecot']['protocols'])
-    package 'dovecot-imapd'
-    conf_files += node['dovecot']['conf_files']['imap']
+  package 'dovecot-imapd' do
+    only_if do Dovecot::Protocols.enabled?('imap', node['dovecot']['protocols']) end
   end
+  conf_files += node['dovecot']['conf_files']['imap']
 
   # pop3
-  if Dovecot::Protocols.enabled?('pop3', node['dovecot']['protocols'])
-    package 'dovecot-pop3d'
-    conf_files += node['dovecot']['conf_files']['pop3']
+  package 'dovecot-pop3d' do
+    only_if do  Dovecot::Protocols.enabled?('pop3', node['dovecot']['protocols']) end
   end
+  conf_files += node['dovecot']['conf_files']['pop3']
 
   # lmtp
-  if Dovecot::Protocols.enabled?('lmtp', node['dovecot']['protocols'])
-    package 'dovecot-lmtpd'
-    conf_files += node['dovecot']['conf_files']['lmtp']
+  package 'dovecot-lmtpd' do
+    only_if do Dovecot::Protocols.enabled?('lmtp', node['dovecot']['protocols']) end
   end
+  conf_files += node['dovecot']['conf_files']['lmtp']
 
   # sieve
-  if Dovecot::Plugins.required?('sieve', node['dovecot'])
-    package 'dovecot-sieve'
-    package 'dovecot-managesieved'
-    conf_files += node['dovecot']['conf_files']['sieve']
+  package 'dovecot-sieve' do
+    only_if do Dovecot::Plugins.required?('sieve', node['dovecot']) end
   end
+  package 'dovecot-managesieved' do
+    only_if do Dovecot::Plugins.required?('sieve', node['dovecot']) end
+  end
+  conf_files += node['dovecot']['conf_files']['sieve']
 
   # ldap
-  if node['dovecot']['auth']['ldap'].kind_of?(Array) and node['dovecot']['auth']['ldap'].length > 0
-    package 'dovecot-ldap'
-    conf_files += node['dovecot']['conf_files']['ldap']
+  package 'dovecot-ldap' do
+    only_if do node['dovecot']['auth']['ldap'].kind_of?(Array) and node['dovecot']['auth']['ldap'].length > 0 end
   end
+  conf_files += node['dovecot']['conf_files']['ldap']
 
   # sqlite
   package 'dovecot-sqlite' do

+ 1 - 1
templates/default/conf.d/90-sieve.conf.erb

@@ -8,7 +8,7 @@
 # by adding it to the respective mail_plugins= settings.
 
 <% if @plugins.has_key?('sieve') and @plugins['sieve'].kind_of?(Hash) -%>
-<%=  Dovecot::Conf.plugin('sieve', @plugins['sieve']) %>
+<%= Dovecot::Conf.plugin('sieve', @plugins['sieve']) %>
 <% else -%>
 plugin {
   # The path to the user's main active script. If ManageSieve is used, this the