Bug fixes for GCP modules (#63882)
This commit is contained in:
parent
9fe524248c
commit
ffce2d3d2a
2 changed files with 113 additions and 3 deletions
|
@ -78,6 +78,32 @@ options:
|
||||||
required: false
|
required: false
|
||||||
type: dict
|
type: dict
|
||||||
suboptions:
|
suboptions:
|
||||||
|
oidc_token:
|
||||||
|
description:
|
||||||
|
- If specified, Pub/Sub will generate and attach an OIDC JWT token as an Authorization
|
||||||
|
header in the HTTP request for every pushed message.
|
||||||
|
required: false
|
||||||
|
type: dict
|
||||||
|
version_added: '2.10'
|
||||||
|
suboptions:
|
||||||
|
service_account_email:
|
||||||
|
description:
|
||||||
|
- Service account email to be used for generating the OIDC token.
|
||||||
|
- The caller (for subscriptions.create, subscriptions.patch, and subscriptions.modifyPushConfig
|
||||||
|
RPCs) must have the iam.serviceAccounts.actAs permission for the service
|
||||||
|
account.
|
||||||
|
required: true
|
||||||
|
type: str
|
||||||
|
audience:
|
||||||
|
description:
|
||||||
|
- 'Audience to be used when generating OIDC token. The audience claim
|
||||||
|
identifies the recipients that the JWT is intended for. The audience
|
||||||
|
value is a single case-sensitive string. Having multiple values (array)
|
||||||
|
for the audience field is not supported. More info about the OIDC JWT
|
||||||
|
token audience here: U(https://tools.ietf.org/html/rfc7519#section-4.1.3)
|
||||||
|
Note: if not specified, the Push endpoint URL will be used.'
|
||||||
|
required: false
|
||||||
|
type: str
|
||||||
push_endpoint:
|
push_endpoint:
|
||||||
description:
|
description:
|
||||||
- A URL locating the endpoint to which messages should be pushed.
|
- A URL locating the endpoint to which messages should be pushed.
|
||||||
|
@ -262,6 +288,31 @@ pushConfig:
|
||||||
returned: success
|
returned: success
|
||||||
type: complex
|
type: complex
|
||||||
contains:
|
contains:
|
||||||
|
oidcToken:
|
||||||
|
description:
|
||||||
|
- If specified, Pub/Sub will generate and attach an OIDC JWT token as an Authorization
|
||||||
|
header in the HTTP request for every pushed message.
|
||||||
|
returned: success
|
||||||
|
type: complex
|
||||||
|
contains:
|
||||||
|
serviceAccountEmail:
|
||||||
|
description:
|
||||||
|
- Service account email to be used for generating the OIDC token.
|
||||||
|
- The caller (for subscriptions.create, subscriptions.patch, and subscriptions.modifyPushConfig
|
||||||
|
RPCs) must have the iam.serviceAccounts.actAs permission for the service
|
||||||
|
account.
|
||||||
|
returned: success
|
||||||
|
type: str
|
||||||
|
audience:
|
||||||
|
description:
|
||||||
|
- 'Audience to be used when generating OIDC token. The audience claim identifies
|
||||||
|
the recipients that the JWT is intended for. The audience value is a single
|
||||||
|
case-sensitive string. Having multiple values (array) for the audience
|
||||||
|
field is not supported. More info about the OIDC JWT token audience here:
|
||||||
|
U(https://tools.ietf.org/html/rfc7519#section-4.1.3) Note: if not specified,
|
||||||
|
the Push endpoint URL will be used.'
|
||||||
|
returned: success
|
||||||
|
type: str
|
||||||
pushEndpoint:
|
pushEndpoint:
|
||||||
description:
|
description:
|
||||||
- A URL locating the endpoint to which messages should be pushed.
|
- A URL locating the endpoint to which messages should be pushed.
|
||||||
|
@ -368,7 +419,14 @@ def main():
|
||||||
name=dict(required=True, type='str'),
|
name=dict(required=True, type='str'),
|
||||||
topic=dict(required=True, type='dict'),
|
topic=dict(required=True, type='dict'),
|
||||||
labels=dict(type='dict'),
|
labels=dict(type='dict'),
|
||||||
push_config=dict(type='dict', options=dict(push_endpoint=dict(required=True, type='str'), attributes=dict(type='dict'))),
|
push_config=dict(
|
||||||
|
type='dict',
|
||||||
|
options=dict(
|
||||||
|
oidc_token=dict(type='dict', options=dict(service_account_email=dict(required=True, type='str'), audience=dict(type='str'))),
|
||||||
|
push_endpoint=dict(required=True, type='str'),
|
||||||
|
attributes=dict(type='dict'),
|
||||||
|
),
|
||||||
|
),
|
||||||
ack_deadline_seconds=dict(type='int'),
|
ack_deadline_seconds=dict(type='int'),
|
||||||
message_retention_duration=dict(default='604800s', type='str'),
|
message_retention_duration=dict(default='604800s', type='str'),
|
||||||
retain_acked_messages=dict(type='bool'),
|
retain_acked_messages=dict(type='bool'),
|
||||||
|
@ -561,10 +619,37 @@ class SubscriptionPushconfig(object):
|
||||||
self.request = {}
|
self.request = {}
|
||||||
|
|
||||||
def to_request(self):
|
def to_request(self):
|
||||||
return remove_nones_from_dict({u'pushEndpoint': self.request.get('push_endpoint'), u'attributes': self.request.get('attributes')})
|
return remove_nones_from_dict(
|
||||||
|
{
|
||||||
|
u'oidcToken': SubscriptionOidctoken(self.request.get('oidc_token', {}), self.module).to_request(),
|
||||||
|
u'pushEndpoint': self.request.get('push_endpoint'),
|
||||||
|
u'attributes': self.request.get('attributes'),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
def from_response(self):
|
def from_response(self):
|
||||||
return remove_nones_from_dict({u'pushEndpoint': self.request.get(u'pushEndpoint'), u'attributes': self.request.get(u'attributes')})
|
return remove_nones_from_dict(
|
||||||
|
{
|
||||||
|
u'oidcToken': SubscriptionOidctoken(self.request.get(u'oidcToken', {}), self.module).from_response(),
|
||||||
|
u'pushEndpoint': self.request.get(u'pushEndpoint'),
|
||||||
|
u'attributes': self.request.get(u'attributes'),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SubscriptionOidctoken(object):
|
||||||
|
def __init__(self, request, module):
|
||||||
|
self.module = module
|
||||||
|
if request:
|
||||||
|
self.request = request
|
||||||
|
else:
|
||||||
|
self.request = {}
|
||||||
|
|
||||||
|
def to_request(self):
|
||||||
|
return remove_nones_from_dict({u'serviceAccountEmail': self.request.get('service_account_email'), u'audience': self.request.get('audience')})
|
||||||
|
|
||||||
|
def from_response(self):
|
||||||
|
return remove_nones_from_dict({u'serviceAccountEmail': self.request.get(u'serviceAccountEmail'), u'audience': self.request.get(u'audience')})
|
||||||
|
|
||||||
|
|
||||||
class SubscriptionExpirationpolicy(object):
|
class SubscriptionExpirationpolicy(object):
|
||||||
|
|
|
@ -127,6 +127,31 @@ resources:
|
||||||
returned: success
|
returned: success
|
||||||
type: complex
|
type: complex
|
||||||
contains:
|
contains:
|
||||||
|
oidcToken:
|
||||||
|
description:
|
||||||
|
- If specified, Pub/Sub will generate and attach an OIDC JWT token as an
|
||||||
|
Authorization header in the HTTP request for every pushed message.
|
||||||
|
returned: success
|
||||||
|
type: complex
|
||||||
|
contains:
|
||||||
|
serviceAccountEmail:
|
||||||
|
description:
|
||||||
|
- Service account email to be used for generating the OIDC token.
|
||||||
|
- The caller (for subscriptions.create, subscriptions.patch, and subscriptions.modifyPushConfig
|
||||||
|
RPCs) must have the iam.serviceAccounts.actAs permission for the service
|
||||||
|
account.
|
||||||
|
returned: success
|
||||||
|
type: str
|
||||||
|
audience:
|
||||||
|
description:
|
||||||
|
- 'Audience to be used when generating OIDC token. The audience claim
|
||||||
|
identifies the recipients that the JWT is intended for. The audience
|
||||||
|
value is a single case-sensitive string. Having multiple values (array)
|
||||||
|
for the audience field is not supported. More info about the OIDC
|
||||||
|
JWT token audience here: U(https://tools.ietf.org/html/rfc7519#section-4.1.3)
|
||||||
|
Note: if not specified, the Push endpoint URL will be used.'
|
||||||
|
returned: success
|
||||||
|
type: str
|
||||||
pushEndpoint:
|
pushEndpoint:
|
||||||
description:
|
description:
|
||||||
- A URL locating the endpoint to which messages should be pushed.
|
- A URL locating the endpoint to which messages should be pushed.
|
||||||
|
|
Loading…
Reference in a new issue