]> review.fuel-infra Code Review - puppet-modules/puppetlabs-firewall.git/commitdiff
Generate of options to parse in the correct order from @resource_map
authorFrank Ederveen <frank@crystalconsulting.eu>
Thu, 25 Jul 2013 10:26:55 +0000 (11:26 +0100)
committerFrank Ederveen <frank@crystalconsulting.eu>
Thu, 25 Jul 2013 10:26:55 +0000 (11:26 +0100)
lib/puppet/provider/firewall/iptables.rb

index 1e8617e9a5cae78639a8d97c9f18b6db8df40573..a2e3a5d3c2118b9c12152488cf8d222b745a9b6d 100644 (file)
@@ -178,12 +178,27 @@ Puppet::Type.type(:firewall).provide :iptables, :parent => Puppet::Provider::Fir
       end
     end
 
+    ############
+    # Populate parser_list with used value, in the correct order
+    ############
+    map_index={}
+    @resource_map.each_pair do |map_k,map_v|
+      map_v.each do |v|
+        ind=values.index(/\s#{v}/)
+        next unless ind
+        map_index[map_k]=ind
+     end
+    end
+    # Generate parser_list based on the index of the found option
+    parser_list=[]
+    map_index.sort_by{|k,v| v}.each{|mapi| parser_list << mapi.first }
+
     ############
     # MAIN PARSE
     ############
 
     # Here we iterate across our values to generate an array of keys
-    @resource_list.reverse.each do |k|
+    parser_list.reverse.each do |k|
       resource_map_key = @resource_map[k]
       [resource_map_key].flatten.each do |opt|
         if values.slice!(/\s#{opt}/)