feat(gandi_livedns): support personal access tokens (#8337)

* fix(gandi_livedns): fix unsafe conditionals in tests

* feat(gandi_livedns): support personal access tokens

Fixes #7639
This commit is contained in:
Gilbert Gilb's 2024-05-18 15:42:11 +02:00 committed by GitHub
parent bb73f28bf5
commit a409f8fc2f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 69 additions and 27 deletions

View file

@ -25,11 +25,19 @@ attributes:
diff_mode:
support: none
options:
personal_access_token:
description:
- Scoped API token.
- One of O(personal_access_token) and O(api_key) must be specified.
type: str
version_added: 9.0.0
api_key:
description:
- Account API token.
- Note that these type of keys are deprecated and might stop working at some point.
Use personal access tokens instead.
- One of O(personal_access_token) and O(api_key) must be specified.
type: str
required: true
record:
description:
- Record to add.
@ -73,7 +81,7 @@ EXAMPLES = r'''
values:
- 127.0.0.1
ttl: 7200
api_key: dummyapitoken
personal_access_token: dummytoken
register: record
- name: Create a mail CNAME record to www.my.com domain
@ -84,7 +92,7 @@ EXAMPLES = r'''
values:
- www
ttl: 7200
api_key: dummyapitoken
personal_access_token: dummytoken
state: present
- name: Change its TTL
@ -95,7 +103,7 @@ EXAMPLES = r'''
values:
- www
ttl: 10800
api_key: dummyapitoken
personal_access_token: dummytoken
state: present
- name: Delete the record
@ -103,8 +111,18 @@ EXAMPLES = r'''
domain: my.com
type: CNAME
record: mail
api_key: dummyapitoken
personal_access_token: dummytoken
state: absent
- name: Use a (deprecated) API Key
community.general.gandi_livedns:
domain: my.com
record: test
type: A
values:
- 127.0.0.1
ttl: 7200
api_key: dummyapikey
'''
RETURN = r'''
@ -151,7 +169,8 @@ from ansible_collections.community.general.plugins.module_utils.gandi_livedns_ap
def main():
module = AnsibleModule(
argument_spec=dict(
api_key=dict(type='str', required=True, no_log=True),
api_key=dict(type='str', no_log=True),
personal_access_token=dict(type='str', no_log=True),
record=dict(type='str', required=True),
state=dict(type='str', default='present', choices=['absent', 'present']),
ttl=dict(type='int'),
@ -163,6 +182,12 @@ def main():
required_if=[
('state', 'present', ['values', 'ttl']),
],
mutually_exclusive=[
('api_key', 'personal_access_token'),
],
required_one_of=[
('api_key', 'personal_access_token'),
],
)
gandi_api = GandiLiveDNSAPI(module)