Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Hello release team, I was recently made aware of a bug in python3-lexicon that causes the certbot dnsimple plugin to be completely broken. I've spoken to the upstreams of both certbot and lexicon, and we've worked out a plan forward. A single backported patch for python3-lexicon will fix the issue for certbot and anything else that's using the DNSimple API. The functional change is a single line, though the patch is slightly bigger to correct the tests as well. Could I get it unblocked for migration into buster? A debdiff is attached. Thanks! unblock python3-lexicon/3.0.8-2 -- System Information: Debian Release: buster/sid APT prefers testing APT policy: (900, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.19.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
diff -Nru lexicon-3.0.8/debian/changelog lexicon-3.0.8/debian/changelog --- lexicon-3.0.8/debian/changelog 2019-01-06 09:24:20.000000000 -0500 +++ lexicon-3.0.8/debian/changelog 2019-04-08 18:07:45.000000000 -0400 @@ -1,3 +1,10 @@ +lexicon (3.0.8-2) unstable; urgency=high + + * Team upload. + * Import dnsimple create fix from upstream (Closes: #926682) + + -- Harlan Lieberman-Berg <hlieber...@debian.org> Mon, 08 Apr 2019 18:07:45 -0400 + lexicon (3.0.8-1) unstable; urgency=medium [ Ana Custura ] diff -Nru lexicon-3.0.8/debian/patches/0004-fix-dnsimple-creates.patch lexicon-3.0.8/debian/patches/0004-fix-dnsimple-creates.patch --- lexicon-3.0.8/debian/patches/0004-fix-dnsimple-creates.patch 1969-12-31 19:00:00.000000000 -0500 +++ lexicon-3.0.8/debian/patches/0004-fix-dnsimple-creates.patch 2019-04-08 18:02:42.000000000 -0400 @@ -0,0 +1,143 @@ +From d0bf4939d49c63026411a306615b6fb13ed0cc22 Mon Sep 17 00:00:00 2001 +From: Adrien Ferrand <adferr...@users.noreply.github.com> +Date: Wed, 3 Apr 2019 23:43:24 +0200 +Subject: [PATCH] Fix create record on dnsimple (#389) + +--- + lexicon/providers/dnsimple.py | 2 +- + ..._calling_delete_record_by_filter_should_remove_record.yaml | 2 +- + ..._record_by_filter_with_fqdn_name_should_remove_record.yaml | 2 +- + ..._record_by_filter_with_full_name_should_remove_record.yaml | 2 +- + ...ling_delete_record_by_identifier_should_remove_record.yaml | 2 +- + ...h_record_set_by_content_should_leave_others_untouched.yaml | 2 +- + ...calling_delete_record_with_record_set_name_remove_all.yaml | 4 ++-- + ...ing_update_record_with_fqdn_name_should_modify_record.yaml | 2 +- + ...ing_update_record_with_full_name_should_modify_record.yaml | 2 +- + 9 files changed, 10 insertions(+), 10 deletions(-) + +Index: python-lexicon/lexicon/providers/dnsimple.py +=================================================================== +--- python-lexicon.orig/lexicon/providers/dnsimple.py ++++ python-lexicon/lexicon/providers/dnsimple.py +@@ -69,7 +69,7 @@ class Provider(BaseProvider): + record['regions'] = self._get_provider_option('regions') + + payload = self._post( +- '{0}/zones/{1}/records'.format(self.account_id, self.domain), record) ++ '/{0}/zones/{1}/records'.format(self.account_id, self.domain), record) + + LOGGER.debug('create_record: %s', 'id' in payload) + return 'id' in payload +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502887,"zone_id":"lexicontest.us","parent_id":null,"name":"delete.testfilt","content":"challengetoken","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:19Z","updated_at":"2018-07-09T05:38:19Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502888,"zone_id":"lexicontest.us","parent_id":null,"name":"delete.testfqdn","content":"challengetoken","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:24Z","updated_at":"2018-07-09T05:38:24Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502889,"zone_id":"lexicontest.us","parent_id":null,"name":"delete.testfull","content":"challengetoken","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:30Z","updated_at":"2018-07-09T05:38:30Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502890,"zone_id":"lexicontest.us","parent_id":null,"name":"delete.testid","content":"challengetoken","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:35Z","updated_at":"2018-07-09T05:38:35Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_with_record_set_by_content_should_leave_others_untouched.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_with_record_set_by_content_should_leave_others_untouched.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_with_record_set_by_content_should_leave_others_untouched.yaml +@@ -113,7 +113,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502891,"zone_id":"lexicontest.us","parent_id":null,"name":"_acme-challenge.deleterecordinset","content":"challengetoken1","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:40Z","updated_at":"2018-07-09T05:38:40Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_with_record_set_name_remove_all.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_with_record_set_name_remove_all.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_delete_record_with_record_set_name_remove_all.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502892,"zone_id":"lexicontest.us","parent_id":null,"name":"_acme-challenge.deleterecordset","content":"challengetoken1","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:46Z","updated_at":"2018-07-09T05:38:46Z"}}'} + headers: +@@ -180,7 +180,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502893,"zone_id":"lexicontest.us","parent_id":null,"name":"_acme-challenge.deleterecordset","content":"challengetoken2","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:38:48Z","updated_at":"2018-07-09T05:38:48Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502895,"zone_id":"lexicontest.us","parent_id":null,"name":"orig.testfqdn","content":"challengetoken","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:46:57Z","updated_at":"2018-07-09T05:46:57Z"}}'} + headers: +Index: python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml +=================================================================== +--- python-lexicon.orig/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml ++++ python-lexicon/tests/fixtures/cassettes/dnsimple/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml +@@ -112,7 +112,7 @@ interactions: + Content-Type: [application/json] + User-Agent: [python-requests/2.19.1] + method: POST +- uri: https://api.sandbox.dnsimple.com/v2731/zones/lexicontest.us/records ++ uri: https://api.sandbox.dnsimple.com/v2/731/zones/lexicontest.us/records + response: + body: {string: '{"data":{"id":502896,"zone_id":"lexicontest.us","parent_id":null,"name":"orig.testfull","content":"challengetoken","ttl":3600,"priority":null,"type":"TXT","regions":["global"],"system_record":false,"created_at":"2018-07-09T05:47:01Z","updated_at":"2018-07-09T05:47:01Z"}}'} + headers: diff -Nru lexicon-3.0.8/debian/patches/series lexicon-3.0.8/debian/patches/series --- lexicon-3.0.8/debian/patches/series 2019-01-06 09:24:20.000000000 -0500 +++ lexicon-3.0.8/debian/patches/series 2019-04-08 18:02:36.000000000 -0400 @@ -1,3 +1,4 @@ 0001-disable-easyname.patch 0002-disable-hetzner.patch 0003-disable-localzone.patch +0004-fix-dnsimple-creates.patch