ed1cbce703bbc3c2dc7e5e64c1ef2abe6dbef858
[mirror/dsa-puppet.git] / modules / postgres / lib / facter / pg_clusters.rb
1 # Get an array of all postgresql clusters on this system
2 # using pg_lsclusters.
3 #
4 # Copyright 2019, Peter Palfrader
5 #
6 Facter.add(:postgresql_clusters) do
7   setcode do
8     clusters = []
9     begin
10       IO.popen(['pg_lsclusters', '-h']) do |f|
11         f.each_line do |line|
12           (version, cluster, port, status, owner, datadir, logfile, _) = line.split()
13           clusters << {
14             'version' => version,
15             'cluster' => cluster,
16             'port' => port,
17             'status' => status.split(',').product([true]).to_h(),
18             'owner' => owner,
19             'datadir' => datadir,
20             'logfile' => logfile,
21           }
22         end
23       end
24     rescue Errno::ENOENT
25     end
26     clusters
27   end
28 end