diff --git a/changelogs/fragments/285-postgresql_subscription_fix_idempontece.yml b/changelogs/fragments/285-postgresql_subscription_fix_idempontece.yml new file mode 100644 index 00000000..47369d1f --- /dev/null +++ b/changelogs/fragments/285-postgresql_subscription_fix_idempontece.yml @@ -0,0 +1,2 @@ +bugfixes: + - postgresql_subscription - fix idempotence by casting the ``connparams`` dict variable (https://github.com/ansible-collections/community.postgresql/issues/280). diff --git a/plugins/modules/postgresql_subscription.py b/plugins/modules/postgresql_subscription.py index 362df4cd..d27fc3f0 100644 --- a/plugins/modules/postgresql_subscription.py +++ b/plugins/modules/postgresql_subscription.py @@ -265,6 +265,21 @@ def convert_subscr_params(params_dict): return ', '.join(params_list) +def cast_connparams(connparams_dict): + """Cast the passed connparams_dict dictionary + + Returns: + Dictionary + """ + for (param, val) in iteritems(connparams_dict): + try: + connparams_dict[param] = int(val) + except ValueError: + connparams_dict[param] = val + + return connparams_dict + + class PgSubscription(): """Class to work with PostgreSQL subscription. @@ -368,7 +383,7 @@ def update(self, connparams, publications, subsparams, check_mode=True): """Update the subscription. Args: - connparams (str): Connection string in libpq style. + connparams (dict): Connection dict in libpq style. publications (list): Publications on the primary to use. subsparams (dict): Dictionary of optional parameters. @@ -683,6 +698,9 @@ def main(): check_mode=module.check_mode) else: + if connparams: + connparams = cast_connparams(connparams) + changed = subscription.update(connparams, publications, subsparams,