diff --git a/lib/puppet/provider/openstack_config/ruby.rb b/lib/puppet/provider/openstack_config/ruby.rb index a09f8223..e5a440b2 100644 --- a/lib/puppet/provider/openstack_config/ruby.rb +++ b/lib/puppet/provider/openstack_config/ruby.rb @@ -53,7 +53,12 @@ Puppet::Type.type(:openstack_config).provide(:ruby) do end def value - config.get_value(section, setting) + val = config.get_value(section, setting) + if !val.kind_of?(Array) + [val] + else + val + end end def section diff --git a/lib/puppet/util/openstackconfig/section.rb b/lib/puppet/util/openstackconfig/section.rb index e75b71a1..b11279a1 100644 --- a/lib/puppet/util/openstackconfig/section.rb +++ b/lib/puppet/util/openstackconfig/section.rb @@ -102,7 +102,7 @@ class OpenStackConfig if value.nil? or @settings[setting_name] == value @settings.delete(setting_name) else - value.eafach do |val| + value.each do |val| @settings[setting_name].delete(val) end end @@ -134,13 +134,19 @@ class OpenStackConfig end def remove_lines(setting_name, value=nil) - @lines.each_with_index do |line, index| - if (match = @@SETTING_REGEX.match(line)) - if match[2] == setting_name - if value.nil? or ( - value.kind_of?(Array) and value.include?(match[4]) - ) - lines.delete_at(index) + if value.kind_of?(Array) + val_arr = value + else + val_arr = [value] + end + val_arr.each do |val| + @lines.each_with_index do |line, index| + if (match = @@SETTING_REGEX.match(line)) + if match[2] == setting_name + if val.nil? or val_arr.include?(match[4]) + @lines.delete_at(index) + break + end end end end