You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2020/12/27 21:09:23 UTC

[libcloud] 07/10: Update CloudFlare DNS driver to correctly throws "RecordAlreadyExists" error on various error responses.

This is an automated email from the ASF dual-hosted git repository.

tomaz pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/libcloud.git

commit e7c20290ccbada84afaecd6ddf29f30c892d0dbd
Author: Tomaz Muraus <to...@tomaz.me>
AuthorDate: Sun Dec 27 17:52:15 2020 +0100

    Update CloudFlare DNS driver to correctly throws "RecordAlreadyExists"
    error on various error responses.
---
 CHANGES.rst                        | 5 +++++
 libcloud/dns/drivers/cloudflare.py | 9 +++++++++
 2 files changed, 14 insertions(+)

diff --git a/CHANGES.rst b/CHANGES.rst
index 394439a..c2b4ca3 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -192,6 +192,11 @@ DNS
   (GITHUB-1504)
   [Dimitris Galanis - @dimgal1]
 
+- [CloudFlare] Update driver so it correctly throws
+  ``RecordAlreadyExists`` error on various error responses which represent
+  this error.
+  [Tomaz Muraus - @Kami]
+
 Changes in Apache Libcloud 3.2.0
 --------------------------------
 
diff --git a/libcloud/dns/drivers/cloudflare.py b/libcloud/dns/drivers/cloudflare.py
index 607135b..d13e98e 100644
--- a/libcloud/dns/drivers/cloudflare.py
+++ b/libcloud/dns/drivers/cloudflare.py
@@ -96,6 +96,10 @@ class CloudFlareDNSResponse(JsonResponse):
         1061: (ZoneAlreadyExistsError, ['zone_id']),
         1002: (RecordDoesNotExistError, ['record_id']),
         81053: (RecordAlreadyExistsError, ['record_id']),
+        # 81057: The record already exists.
+        81057: (RecordAlreadyExistsError, []),
+        # 81058: A record with those settings already exists.
+        81058: (RecordAlreadyExistsError, ['record_id']),
     }
 
     def success(self):
@@ -132,6 +136,11 @@ class CloudFlareDNSResponse(JsonResponse):
                 'driver': self.connection.driver,
             }
 
+            if error['code'] == 81057:
+                # Record id is not available when creating a record and not updating
+                # it
+                kwargs["record_id"] = "unknown"
+
             merge_valid_keys(kwargs, context, self.connection.context)
 
             raise exception_class(**kwargs)