--- /dev/null
+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