From e48daadfeafc6ce27c2edc862ea3edc00010c037 Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Sun, 28 Jul 2013 16:46:58 +0100 Subject: [PATCH] Properly parse a PSQL server version, even beta versions. Fixes #6352. --- salt/modules/postgres.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/salt/modules/postgres.py b/salt/modules/postgres.py index 18bc1f4ce99b..b9ac5c8873d9 100644 --- a/salt/modules/postgres.py +++ b/salt/modules/postgres.py @@ -19,6 +19,7 @@ # Import python libs import datetime +import distutils import pipes import logging import csv @@ -101,6 +102,18 @@ def version(user=None, host=None, port=None, maintenance_db=None, return line +def _parsed_version(user=None, host=None, port=None, maintenance_db=None, + password=None, runas=None): + ''' + Returns the sever version properly parsed and int casted for internal usage + ''' + + psql_version = version( + user, host, port, maintenance_db, password, runas + ) + return distutils.version.LooseVersion(psql_version).version + + def _connection_defaults(user=None, host=None, port=None, maintenance_db=None, password=None): ''' @@ -362,13 +375,13 @@ def user_list(user=None, host=None, port=None, maintenance_db=None, ret = {} - ver = version(user=user, - host=host, - port=port, - maintenance_db=maintenance_db, - password=password, - runas=runas).split('.') - if len(ver) >= 2 and int(ver[0]) >= 9 and int(ver[1]) >= 1: + ver = _parsed_version(user=user, + host=host, + port=port, + maintenance_db=maintenance_db, + password=password, + runas=runas) + if len(ver) >= 2 and ver[0] >= 9 and ver[1] >= 1: query = ( 'SELECT rolname as "name", rolsuper as "superuser", ' 'rolinherit as "inherits privileges", '