瀏覽代碼

fix(api): check for existing zones via pdns api

This commit removes the false assumption that pdns api returns 404
for unkown zones. Closes #20
Nils Wisiol 8 年之前
父節點
當前提交
b0ac59d866
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      api/desecapi/pdns.py

+ 8 - 2
api/desecapi/pdns.py

@@ -31,7 +31,7 @@ def _pdns_patch(url, body):
 
 def _pdns_get(url):
     r = requests.get(settings.POWERDNS_API + url, headers=headers)
-    if (r.status_code < 200 or r.status_code >= 300) and r.status_code != 404:
+    if (r.status_code < 200 or r.status_code >= 500):
         raise Exception(r.text)
     return r
 
@@ -85,7 +85,13 @@ def zone_exists(name):
     """
     Returns whether pdns knows a zone with the given name.
     """
-    return _pdns_get('/zones/' + normalize_hostname(name)).status_code != 404
+    reply = _pdns_get('/zones/' + normalize_hostname(name))
+    if reply.status_code == 200:
+        return True
+    elif reply.status_code == 422 and 'Could not find domain' in reply.text:
+        return False
+    else:
+        raise Exception(reply.text)
 
 
 def set_dyn_records(name, a, aaaa):