add a pg cluster list facter
authorPeter Palfrader <peter@palfrader.org>
Sat, 28 Sep 2019 14:41:47 +0000 (16:41 +0200)
committerPeter Palfrader <peter@palfrader.org>
Sat, 28 Sep 2019 14:41:47 +0000 (16:41 +0200)
modules/postgres/lib/facter/pg_clusters.rb [new file with mode: 0644]

diff --git a/modules/postgres/lib/facter/pg_clusters.rb b/modules/postgres/lib/facter/pg_clusters.rb
new file mode 100644 (file)
index 0000000..ed1cbce
--- /dev/null
@@ -0,0 +1,28 @@
+# Get an array of all postgresql clusters on this system
+# using pg_lsclusters.
+#
+# Copyright 2019, Peter Palfrader
+#
+Facter.add(:postgresql_clusters) do
+  setcode do
+    clusters = []
+    begin
+      IO.popen(['pg_lsclusters', '-h']) do |f|
+        f.each_line do |line|
+          (version, cluster, port, status, owner, datadir, logfile, _) = line.split()
+          clusters << {
+            'version' => version,
+            'cluster' => cluster,
+            'port' => port,
+            'status' => status.split(',').product([true]).to_h(),
+            'owner' => owner,
+            'datadir' => datadir,
+            'logfile' => logfile,
+          }
+        end
+      end
+    rescue Errno::ENOENT
+    end
+    clusters
+  end
+end