volumes for coccia at ubc
[mirror/dsa-puppet.git] / modules / puppetmaster / lib / puppet / parser / functions / has_static_component.rb
1 module Puppet::Parser::Functions
2   newfunction(:has_static_component, :type => :rvalue) do |args|
3       static_component = args[0]
4       fqdn = lookupvar('fqdn')
5
6       cfg = YAML.load(File.open('/etc/puppet/modules/roles/misc/static-components.yaml').read)
7
8       if cfg.include?('mirrors')
9         if cfg['mirrors'].include?(fqdn)
10           if cfg['mirrors'][fqdn].include?('components-include')
11             if cfg['mirrors'][fqdn]['components-include'].include?(static_component)
12               return true
13             else
14               return false
15             end
16           end
17         end
18       end
19
20       if cfg.include?('components')
21         if cfg['components'].include?(static_component)
22           if cfg['components'][static_component].include?('limit-mirrors')
23             return (cfg['components'][static_component]['limit-mirrors'].include?(fqdn))
24           elsif cfg['components'][static_component].include?('exclude-mirrors')
25             return (not cfg['components'][static_component]['exclude-mirrors'].include?(fqdn))
26           else
27             return true
28           end
29         end
30       end
31
32       err "Static component #{static_component} appears to be not defined"
33       return false
34   end
35 end