Merge branch 'do-dns-query-params' of https://github.com/andrewsomething/libcloud into andrewsomething-do-dns-query-params
diff --git a/libcloud/dns/drivers/digitalocean.py b/libcloud/dns/drivers/digitalocean.py
index ef24b94..e393b05 100644
--- a/libcloud/dns/drivers/digitalocean.py
+++ b/libcloud/dns/drivers/digitalocean.py
@@ -20,6 +20,8 @@
'DigitalOceanDNSDriver'
]
+import json
+
from libcloud.utils.py3 import httplib
from libcloud.common.digitalocean import DigitalOcean_v2_BaseDriver
@@ -128,7 +130,7 @@
except Exception:
params['ip_address'] = '127.0.0.1'
- res = self.connection.request('/v2/domains', params=params,
+ res = self.connection.request('/v2/domains', data=json.dumps(params),
method='POST')
return Zone(id=res.object['domain']['name'],
@@ -183,7 +185,7 @@
params['ttl'] = extra['ttl']
res = self.connection.request('/v2/domains/%s/records' % zone.id,
- params=params,
+ data=json.dumps(params),
method='POST')
return Record(id=res.object['domain_record']['id'],
@@ -243,7 +245,7 @@
res = self.connection.request('/v2/domains/%s/records/%s' %
(record.zone.id, record.id),
- params=params,
+ data=json.dumps(params),
method='PUT')
return Record(id=res.object['domain_record']['id'],
diff --git a/libcloud/test/dns/fixtures/digitalocean/_v2_domains_UNPROCESSABLE_ENTITY.json b/libcloud/test/dns/fixtures/digitalocean/_v2_domains_UNPROCESSABLE_ENTITY.json
new file mode 100644
index 0000000..102aa9d
--- /dev/null
+++ b/libcloud/test/dns/fixtures/digitalocean/_v2_domains_UNPROCESSABLE_ENTITY.json
@@ -0,0 +1 @@
+{"id":"unprocessable_entity","message":"Request body malformed."}
diff --git a/libcloud/test/dns/test_digitalocean.py b/libcloud/test/dns/test_digitalocean.py
index 453e9c3..7e2c54e 100644
--- a/libcloud/test/dns/test_digitalocean.py
+++ b/libcloud/test/dns/test_digitalocean.py
@@ -110,7 +110,8 @@
'EMPTY': httplib.OK,
'NOT_FOUND': httplib.NOT_FOUND,
'UNAUTHORIZED': httplib.UNAUTHORIZED,
- 'UPDATE': httplib.OK
+ 'UPDATE': httplib.OK,
+ 'UNPROCESSABLE': httplib.UNPROCESSABLE_ENTITY,
}
def _v2_domains(self, method, url, body, headers):
@@ -119,6 +120,10 @@
httplib.responses[self.response_map[self.type]])
def _v2_domains_CREATE(self, method, url, body, headers):
+ if body is None:
+ body = self.fixtures.load('_v2_domains_UNPROCESSABLE_ENTITY.json')
+ return (self.response_map[self.type], body, {},
+ httplib.responses[self.response_map['UNPROCESSABLE']])
body = self.fixtures.load('_v2_domains_CREATE.json')
return (self.response_map[self.type], body, {},
httplib.responses[self.response_map[self.type]])
@@ -144,6 +149,10 @@
def _v2_domains_testdomain_records_CREATE(self, method, url,
body, headers):
+ if body is None:
+ body = self.fixtures.load('_v2_domains_UNPROCESSABLE_ENTITY.json')
+ return (self.response_map[self.type], body, {},
+ httplib.responses[self.response_map['UNPROCESSABLE']])
body = self.fixtures.load('_v2_domains_testdomain_records_CREATE.json')
return (self.response_map[self.type], body, {},
httplib.responses[self.response_map[self.type]])
@@ -163,6 +172,10 @@
def _v2_domains_testdomain_records_1234564_UPDATE(
self, method, url, body, headers):
+ if body is None:
+ body = self.fixtures.load('_v2_domains_UNPROCESSABLE_ENTITY.json')
+ return (self.response_map[self.type], body, {},
+ httplib.responses[self.response_map['UNPROCESSABLE']])
body = self.fixtures.load(
'_v2_domains_testdomain_records_1234564_UPDATE.json')
return (self.response_map[self.type], body, {},