fuel-library/deployment/puppet/osnailyfacter/lib/puppet/parser/functions/get_disks_list_by_role.rb

28 lines
990 B
Ruby

module Puppet::Parser::Functions
newfunction(:get_disks_list_by_role, :type => :rvalue, :doc => <<-EOS
Return a list of disks (node roles are keys) that have the given node role.
example:
get_disks_list_by_role($node_volumes, 'cinder')
EOS
) do |args|
errmsg = "get_disks_list_by_role($node_volumes, 'cinder')"
disks_metadata, role = args
raise(Puppet::ParseError, "#{errmsg}: 1st argument should be an array") unless disks_metadata.is_a?(Array)
raise(Puppet::ParseError, "#{errmsg}: 2nd argument should be node role") unless role.is_a?(String)
disks = Array.new
disks_metadata.each do |disk|
unless disk['volumes'].nil? and disk['volumes'].empty?
disk['volumes'].each do |volume|
unless volume['vg'].nil? or volume['vg'] != role or volume['size'].nil? or volume['size'] == 0
disks << '/dev/' + disk['name']
break
end
end
end
end
return disks
end
end
# vim: set ts=2 sw=2 et :