diff --git a/lib/puppet/type/nova_aggregate.rb b/lib/puppet/type/nova_aggregate.rb index 3c47f6544..8cce20b8a 100644 --- a/lib/puppet/type/nova_aggregate.rb +++ b/lib/puppet/type/nova_aggregate.rb @@ -106,9 +106,12 @@ Puppet::Type.newtype(:nova_aggregate) do validate do |value| if value.is_a?(Hash) return true - end - value.split(",").each do |kv| - raise ArgumentError, "Key/value pairs must be separated by an =" unless value.include?("=") + elsif value.is_a?(String) + value.split(",").each do |kv| + raise ArgumentError, "Key/value pairs must be separated by an =" unless value.include?("=") + end + else + raise ArgumentError, "Invalid metadata #{value}. Requires a String or a Hash, not a #{value.class}" end end end @@ -119,8 +122,10 @@ Puppet::Type.newtype(:nova_aggregate) do munge do |value| if value.is_a?(Array) return value - else + elsif value.is_a?(String) return value.split(",").map{|el| el.strip()}.sort + else + raise ArgumentError, "Invalid hosts #{value}. Requires a String or an Array, not a #{value.class}" end end end diff --git a/lib/puppet/type/nova_flavor.rb b/lib/puppet/type/nova_flavor.rb index 0adae68f3..15c6fa017 100644 --- a/lib/puppet/type/nova_flavor.rb +++ b/lib/puppet/type/nova_flavor.rb @@ -145,10 +145,14 @@ Puppet::Type.newtype(:nova_flavor) do end validate do |value| - return true if value.is_a? Hash - - value.split(',').each do |property| - raise ArgumentError, "Key/value pairs should be separated by an =" unless property.include?('=') + if value.is_a?(Hash) + return true + elsif value.is_a?(String) + value.split(',').each do |property| + raise ArgumentError, "Key/value pairs should be separated by an =" unless property.include?('=') + end + else + raise ArgumentError, "Invalid properties #{value}. Requires a String or a Hash, not a #{value.class}" end end end