Add actual postgresl module from puppetlabs
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / lib / facter / postgres_default_version.rb
diff --git a/3rdparty/modules/postgresql/lib/facter/postgres_default_version.rb b/3rdparty/modules/postgresql/lib/facter/postgres_default_version.rb
new file mode 100644 (file)
index 0000000..c10ad2a
--- /dev/null
@@ -0,0 +1,69 @@
+def get_debianfamily_postgres_version
+  case Facter.value('operatingsystem')
+    when "Debian"
+      get_debian_postgres_version()
+    when "Ubuntu"
+      get_ubuntu_postgres_version()
+    else
+      nil
+  end
+end
+
+def get_debian_postgres_version
+  case Facter.value('operatingsystemrelease')
+    # TODO: add more debian versions or better logic here
+    when /^6\./
+      "8.4"
+    when /^wheezy/, /^7\./
+      "9.1"
+    else
+      nil
+  end
+end
+
+def get_ubuntu_postgres_version
+  case Facter.value('operatingsystemrelease')
+    when "11.10", "12.04", "12.10", "13.04"
+      "9.1"
+    when "10.04", "10.10", "11.04"
+      "8.4"
+    else
+      nil
+  end
+end
+
+def get_redhatfamily_postgres_version
+  case Facter.value('operatingsystemrelease')
+    when /^6\./
+      "8.4"
+    when /^5\./
+      "8.1"
+    else
+      nil
+  end
+end
+
+Facter.add("postgres_default_version") do
+  setcode do
+    result =
+      case Facter.value('osfamily')
+        when 'RedHat'
+          get_redhatfamily_postgres_version()
+        when 'Linux'
+          get_redhatfamily_postgres_version()
+        when 'Debian'
+          get_debianfamily_postgres_version()
+        else
+          nil
+      end
+
+    # TODO: not sure if this is really a great idea, but elsewhere in the code
+    # it is useful to be able to distinguish between the case where the fact
+    # does not exist at all (e.g., if pluginsync is not enabled), and the case
+    # where the fact is not known for the OS in question.
+    if result == nil
+      result = 'unknown'
+    end
+    result
+  end
+end