auth method trust also wants addresses
[mirror/dsa-puppet.git] / modules / postgres / manifests / cluster / hba_entry.pp
index 2b6ff62..6831374 100644 (file)
@@ -26,7 +26,7 @@ define postgres::cluster::hba_entry (
   Enum['md5', 'trust'] $method = 'md5',
   String $order = '50',
 ) {
-  $address_methods = ['md5']
+  $address_methods = ['md5', 'trust']
   if $method in $address_methods {
     if !$address {
       fail("Authentication method ${method} needs an address")
@@ -37,29 +37,34 @@ define postgres::cluster::hba_entry (
     }
   }
 
+  # get remaining cluster info and verify consistency
+  ###
   $clusters = $facts['postgresql_clusters']
   if $pg_port {
     $filtered = $clusters.filter |$cluster| { $cluster['port'] == $pg_port }
     if $filtered.length != 1 {
       fail("Did not find exactly one cluster with port ${pg_port}")
     }
+    $cluster = $filtered[0]
   } elsif $pg_cluster and $pg_version {
     $filtered = $clusters.filter |$cluster| { $cluster['version'] == $pg_version and $cluster['cluster'] == $pg_cluster}
     if $filtered.length != 1 {
       fail("Did not find exactly one cluster ${pg_version}/${pg_cluster}")
     }
+    $cluster = $filtered[0]
   } else {
     fail('postgres::cluster::hba_entry needs either the port of both a pg version and cluster name')
   }
-  $real_port    = $filtered['port']
-  $real_version = $filtered['version']
-  $real_cluster = $filtered['cluster']
+  $real_port    = $cluster['port']
+  $real_version = $cluster['version']
+  $real_cluster = $cluster['cluster']
   if $pg_version and $pg_version != $real_version {
     fail("Inconsisten cluster version information: ${pg_version} != ${real_version}")
   }
   if $pg_cluster and $pg_cluster != $real_cluster {
     fail("Inconsisten cluster name information: ${pg_cluster} != ${real_cluster}")
   }
+  ###
 
   if ($address) {
     ferm::rule::simple { "postgres::cluster::hba_entry::${name}":