Refactor hiera lookup for security mirrors slightly
authorTollef Fog Heen <tfheen@err.no>
Fri, 2 Feb 2018 06:42:38 +0000 (07:42 +0100)
committerTollef Fog Heen <tfheen@err.no>
Fri, 2 Feb 2018 06:42:38 +0000 (07:42 +0100)
Since the structure is a list of hashes (for vaguely historical
reasons), we need to unpack the result from hiera before doing the
filtering and selection of the backends.

modules/roles/manifests/security_mirror.pp

index 9122ea2..472a145 100644 (file)
@@ -36,12 +36,12 @@ class roles::security_mirror {
                content => template('roles/security_mirror/security.debian.org.erb')
        }
 
-       $mirrors = hiera_hash('roles::security_mirror',[])
-       notify { "Mirrors: ${mirrors}": }
-       $fastly_mirrors = $mirrors.filter |$h| { $h[1]['fastly-backend'] }
-       notify { "Fastly Mirrors: ${fastly_mirrors}": }
-       $hosts_to_check = $fastly_mirrors.map |$h| { $h[1]['service-hostname'] }
-       notify {" Actual hosts to check Mirrors: ${hosts_to_check}": }
+        # roles is a list of hashes, which needs to be unpacked into a regular hash
+        $mirrors = hiera('roles.security_mirror', [])
+        # unpack $mirrors and construct a hash
+        $m2 = Hash($mirrors.map |$h| { $h.map |$k, $v| { [$k, $v] }[0]})
+        $fastly_mirrors = $m2.filter |$h| { $h[1]['fastly-backend'] }
+        $hosts_to_check = $fastly_mirrors.map |$h| { $h[1]['service-hostname'] }
 
         roles::mirror_health { 'security':
                check_hosts   => $hosts_to_check,