From 6dbdbb458a8ac996ee20c8e50dff60d7c48664b5 Mon Sep 17 00:00:00 2001 From: Frank Ederveen Date: Thu, 25 Jul 2013 11:26:55 +0100 Subject: [PATCH] Generate of options to parse in the correct order from @resource_map --- lib/puppet/provider/firewall/iptables.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/puppet/provider/firewall/iptables.rb b/lib/puppet/provider/firewall/iptables.rb index 1e8617e..a2e3a5d 100644 --- a/lib/puppet/provider/firewall/iptables.rb +++ b/lib/puppet/provider/firewall/iptables.rb @@ -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}/) -- 2.45.2