Enforce supported types for hash properties

Change-Id: I39f9cef7007a1b3e47cf53fcec602a87b9ebb81d
This commit is contained in:
Takashi Kajinami 2023-11-26 02:28:46 +09:00
parent 46ba57cd7d
commit 898b5da4c8
2 changed files with 17 additions and 8 deletions

View File

@ -106,9 +106,12 @@ Puppet::Type.newtype(:nova_aggregate) do
validate do |value| validate do |value|
if value.is_a?(Hash) if value.is_a?(Hash)
return true return true
end elsif value.is_a?(String)
value.split(",").each do |kv| value.split(",").each do |kv|
raise ArgumentError, "Key/value pairs must be separated by an =" unless value.include?("=") 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 end
end end
@ -119,8 +122,10 @@ Puppet::Type.newtype(:nova_aggregate) do
munge do |value| munge do |value|
if value.is_a?(Array) if value.is_a?(Array)
return value return value
else elsif value.is_a?(String)
return value.split(",").map{|el| el.strip()}.sort 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 end
end end

View File

@ -145,10 +145,14 @@ Puppet::Type.newtype(:nova_flavor) do
end end
validate do |value| validate do |value|
return true if value.is_a? Hash if value.is_a?(Hash)
return true
value.split(',').each do |property| elsif value.is_a?(String)
raise ArgumentError, "Key/value pairs should be separated by an =" unless property.include?('=') 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 end
end end