diff --git a/changelogs/gcp_pubsub_subscription_bugfix.yaml b/changelogs/gcp_pubsub_subscription_bugfix.yaml new file mode 100644 index 0000000..355570d --- /dev/null +++ b/changelogs/gcp_pubsub_subscription_bugfix.yaml @@ -0,0 +1,2 @@ +bugfixes: + - gcp_pubsub_subscription - improper subscription uprade PATCH request \ No newline at end of file diff --git a/plugins/modules/gcp_pubsub_subscription.py b/plugins/modules/gcp_pubsub_subscription.py index f39583b..4f6b3b9 100644 --- a/plugins/modules/gcp_pubsub_subscription.py +++ b/plugins/modules/gcp_pubsub_subscription.py @@ -634,8 +634,9 @@ def create(module, link): def update(module, link, fetch): auth = GcpSession(module, 'pubsub') params = {'updateMask': updateMask(resource_to_request(module), response_to_hash(module, fetch))} - request = resource_to_request(module) - del request['name'] + subscription = resource_to_request(module) + del subscription['name'] + request = {'subscription': subscription} return return_if_object(module, auth.patch(link, request, params=params)) @@ -651,7 +652,7 @@ def updateMask(request, response): update_mask.append('messageRetentionDuration') if request.get('retainAckedMessages') != response.get('retainAckedMessages'): update_mask.append('retainAckedMessages') - if request.get('expirationPolicy') != response.get('expirationPolicy'): + if request.get('expirationPolicy') and request.get('expirationPolicy') != response.get('expirationPolicy'): update_mask.append('expirationPolicy') if request.get('deadLetterPolicy') != response.get('deadLetterPolicy'): update_mask.append('deadLetterPolicy') @@ -838,7 +839,9 @@ class SubscriptionExpirationpolicy(object): self.request = {} def to_request(self): - return remove_nones_from_dict({u'ttl': self.request.get('ttl')}) + ttl = self.request.get('ttl') + ttl = None if ttl == "" else ttl + return remove_nones_from_dict({u'ttl': ttl}) def from_response(self): return remove_nones_from_dict({u'ttl': self.request.get(u'ttl')})