[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#926685: unblock: python3-lexicon/3.0.8-2



Package: release.debian.org
Severity: normal
User: release.debian.org@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 <hlieberman@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 <adferrand@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

Reply to: