pan-net-security / certbot-dns-powerdns

PowerDNS DNS Authenticator plugin for Certbot
25 stars 16 forks source link

TypeError: delete_record() got an unexpected keyword argument 'type' #11

Closed splashx closed 3 years ago

splashx commented 3 years ago

Version 0.6.0 of dns-lexicon introduced a breaking change on nomenclature of type to rtype. This yields the following error on this plugin's version 0.2.0 or earlier due to wide python requirement range in setup.py:

Performing the following challenges:
dns-01 challenge for test.example.org
Cleaning up challenges
Encountered exception during recovery: TypeError: delete_record() got an unexpected keyword argument 'type'
Exiting abnormally:
Traceback (most recent call last):
  File "/private/tmp/certbot-dns-powerdns/.venv/bin/certbot", line 8, in <module>
    sys.exit(main())
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/main.py", line 15, in main
    return internal_main.main(cli_args)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/main.py", line 1435, in main
    return config.func(config, plugins)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/main.py", line 1304, in certonly
    lineage = _get_and_save_cert(le_client, config, domains, certname, lineage)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/main.py", line 140, in _get_and_save_cert
    lineage = le_client.obtain_and_enroll_certificate(domains, certname)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/client.py", line 444, in obtain_and_enroll_certificate
    cert, chain, key, _ = self.obtain_certificate(domains)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/client.py", line 374, in obtain_certificate
    orderr = self._get_order_and_authorizations(csr.data, self.config.allow_subset_of_names)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/client.py", line 424, in _get_order_and_authorizations
    authzr = self.auth_handler.handle_authorizations(orderr, best_effort)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/_internal/auth_handler.py", line 70, in handle_authorizations
    resps = self.auth.perform(achalls)
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/plugins/dns_common.py", line 60, in perform
    self._perform(domain, validation_domain_name, validation)
  File "/private/tmp/certbot-dns-powerdns/certbot_dns_powerdns/dns_powerdns.py", line 54, in _perform
    self._get_powerdns_client().add_txt_record(
  File "/private/tmp/certbot-dns-powerdns/.venv/lib/python3.9/site-packages/certbot/plugins/dns_common_lexicon.py", line 48, in add_txt_record
    self.provider.create_record(type='TXT', name=record_name, content=record_content)
TypeError: create_record() got an unexpected keyword argument 'type'

For now I propose to fix the working range and subsequently pin the requirements so this doesn't happen to other modules - as well as making preparations to newer versions of certbot which will break also plugin name calling (as mentioned alredy in #9 )