Closed comete-geek closed 11 months ago
Thanks for the report. I don't personally have access to gandi so it'll be up to someone else to put together a PR to handle the change.
Hello,
I open a pull request to fix Header Authorization with the new method for Gandi API. Futhermore, your PAT Token need permission to see and manage your organization otherwise you can't edit zone.
Best regards
I created a PAT and run GANDI_TOKEN=*** octodns-sync --config config.yaml --doit
but get:
2024-01-16T15:23:31 [140324114007872] INFO Manager __init__: config_file=config.yaml, (octoDNS 1.4.0)
2024-01-16T15:23:31 [140324114007872] INFO Manager _config_executor: max_workers=1
2024-01-16T15:23:31 [140324114007872] INFO Manager _config_include_meta: include_meta=False
2024-01-16T15:23:31 [140324114007872] INFO Manager _config_auto_arpa: auto_arpa=False
2024-01-16T15:23:31 [140324114007872] INFO Manager __init__: global_processors=[]
2024-01-16T15:23:31 [140324114007872] INFO Manager __init__: global_post_processors=[]
2024-01-16T15:23:31 [140324114007872] INFO Manager __init__: provider=config (octodns.provider.yaml 1.4.0)
2024-01-16T15:23:31 [140324114007872] INFO Manager __init__: provider=gandi (octodns_gandi 0.0.2+unknown)
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: eligible_zones=[], eligible_targets=[], dry_run=False, force=False, plan_output_fh=<stdout>
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: sources=['config']
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: dynamic zone=*, sources=None
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: adding dynamic zone=turbotux.de.
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: zone=turbotux.de.
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: sources=['config']
2024-01-16T15:23:31 [140324114007872] INFO Manager sync: targets=['gandi']
2024-01-16T15:23:31 [140324114007872] INFO YamlProvider[config] populate: found 1 records, exists=False
2024-01-16T15:23:31 [140324114007872] INFO GandiProvider[gandi] plan: desired=turbotux.de.
Traceback (most recent call last):
File "/nix/store/sffhkqdxq6priaj4p1nzp80ap395l9rg-python3.11-octodns-1.4.0/bin/.octodns-sync-wrapped", line 9, in <module>
sys.exit(main())
^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns/cmds/sync.py", line 57, in main
manager.sync(
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns/manager.py", line 697, in sync
ps, d = future.result()
^^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns/manager.py", line 60, in result
return self.func(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns/manager.py", line 460, in _populate_and_plan
plan = target.plan(zone, processors=processors)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns/provider/base.py", line 226, in plan
exists = self.populate(existing, target=True, lenient=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns_gandi/__init__.py", line 250, in populate
for record in self.zone_records(zone):
^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns_gandi/__init__.py", line 233, in zone_records
self._zone_records[zone.name] = self._client.zone_records(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns_gandi/__init__.py", line 82, in zone_records
records = self._request(
^^^^^^^^^^^^^^
File "/nix/store/i3zfqgyi4qr6kxa8yyqpraypwvddix9r-python3-3.11.7-env/lib/python3.11/site-packages/octodns_gandi/__init__.py", line 65, in _request
raise GandiClientUnauthorized(r)
octodns_gandi.GandiClientUnauthorized: {"message":"You must provide an access token or an API Key. See https://api.gandi.net/docs/authentication/"}
Does this still work?
here's my config
---
providers:
config:
class: octodns.provider.yaml.YamlProvider
directory: ./config
default_ttl: 3600
enforce_order: True
gandi:
class: octodns_gandi.GandiProvider
token: env/GANDI_TOKEN
zones:
'*':
sources:
- config
targets:
- gandi
okay sorry was my fault. i had an .netrc lyring around in $HOME and this totally interacts with all python requests :/
Hello, Gandi says API key is now deprecated (https://news.gandi.net/en/2023/09/pat-jetons-acces-personnels-api-gandi/). I've quickly tested octodns-gandi (0.0.1) with a PAT token without success.
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://api.gandi.net/v5/livedns/domains/mydomain.io/records
Thanks