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 2014/05/12 11:29:00 UTC

git commit: Fix Google DNS to use valid record split character

Repository: libcloud
Updated Branches:
  refs/heads/trunk 0a049c43f -> 08f6c2c45


Fix Google DNS to use valid record split character

Closes #290

Signed-off-by: Tomaz Muraus <to...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/08f6c2c4
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/08f6c2c4
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/08f6c2c4

Branch: refs/heads/trunk
Commit: 08f6c2c45e9e58e173d00662efcd5e06cd21d3cf
Parents: 0a049c4
Author: Eric Johnson <er...@google.com>
Authored: Thu May 8 19:35:19 2014 +0000
Committer: Tomaz Muraus <to...@apache.org>
Committed: Mon May 12 11:28:30 2014 +0200

----------------------------------------------------------------------
 libcloud/dns/drivers/google.py                  | 10 ++--
 .../google/get_zone_does_not_exists.json        |  4 +-
 libcloud/test/dns/fixtures/google/zone.json     |  1 +
 libcloud/test/dns/test_google.py                | 50 ++++++++++----------
 4 files changed, 34 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/08f6c2c4/libcloud/dns/drivers/google.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/google.py b/libcloud/dns/drivers/google.py
index aabc783..44a1231 100644
--- a/libcloud/dns/drivers/google.py
+++ b/libcloud/dns/drivers/google.py
@@ -124,7 +124,7 @@ class GoogleDNSDriver(DNSDriver):
 
         :rtype: :class:`Record`
         """
-        (record_name, record_type) = record_id.split('-')
+        (record_type, record_name) = record_id.split(':', 1)
 
         params = {
             'name': record_name,
@@ -142,7 +142,8 @@ class GoogleDNSDriver(DNSDriver):
                                         zone_id=zone_id)
 
         if len(response['rrsets']) > 0:
-            return self._to_record(response['rrsets'][0], zone_id)
+            zone = self.get_zone(zone_id)
+            return self._to_record(response['rrsets'][0], zone)
 
         raise RecordDoesNotExistError(value='', driver=self.connection.driver,
                                       record_id=record_id)
@@ -319,8 +320,9 @@ class GoogleDNSDriver(DNSDriver):
 
         extra['creationTime'] = r.get('creationTime')
         extra['nameServers'] = r.get('nameServers')
+        extra['id'] = r.get('id')
 
-        return Zone(id=r['id'], domain=r['dnsName'],
+        return Zone(id=r['name'], domain=r['dnsName'],
                     type='master', ttl=0, driver=self, extra=extra)
 
     def _to_records(self, response, zone):
@@ -330,7 +332,7 @@ class GoogleDNSDriver(DNSDriver):
         return records
 
     def _to_record(self, r, zone):
-        record_id = '%s-%s' % (r['name'], r['type'])
+        record_id = '%s:%s' % (r['type'], r['name'])
         return Record(id=record_id, name=r['name'],
                       type=r['type'], data=r, zone=zone,
                       driver=self, extra={})

http://git-wip-us.apache.org/repos/asf/libcloud/blob/08f6c2c4/libcloud/test/dns/fixtures/google/get_zone_does_not_exists.json
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/fixtures/google/get_zone_does_not_exists.json b/libcloud/test/dns/fixtures/google/get_zone_does_not_exists.json
index ddd959d..a38eb6a 100644
--- a/libcloud/test/dns/fixtures/google/get_zone_does_not_exists.json
+++ b/libcloud/test/dns/fixtures/google/get_zone_does_not_exists.json
@@ -4,10 +4,10 @@
    {
     "domain": "global",
     "reason": "notFound",
-    "message": "The 'parameters.managedZone' resource named '2' does not exist."
+    "message": "The 'parameters.managedZone' resource named 'example-com' does not exist."
    }
   ],
   "code": 404,
-  "message": "The 'parameters.managedZone' resource named '2' does not exist."
+  "message": "The 'parameters.managedZone' resource named 'example-com' does not exist."
  }
 }

http://git-wip-us.apache.org/repos/asf/libcloud/blob/08f6c2c4/libcloud/test/dns/fixtures/google/zone.json
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/fixtures/google/zone.json b/libcloud/test/dns/fixtures/google/zone.json
new file mode 100644
index 0000000..a380c6e
--- /dev/null
+++ b/libcloud/test/dns/fixtures/google/zone.json
@@ -0,0 +1 @@
+{"kind": "dns#managedZone", "name": "example-com", "nameServers": ["ns-cloud-e1.googledomains.com.", "ns-cloud-e2.googledomains.com.", "ns-cloud-e3.googledomains.com.", "ns-cloud-e4.googledomains.com."], "creationTime": "2014-03-29T22:45:47.618Z", "dnsName": "example.com.", "id": "1", "description": ""}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/08f6c2c4/libcloud/test/dns/test_google.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_google.py b/libcloud/test/dns/test_google.py
index 2a4b8c7..e6d0595 100644
--- a/libcloud/test/dns/test_google.py
+++ b/libcloud/test/dns/test_google.py
@@ -56,46 +56,48 @@ class GoogleTests(LibcloudTestCase):
         self.assertEqual(len(records), 3)
 
     def test_get_zone(self):
-        zone = self.driver.get_zone(1)
-        self.assertEqual(zone.id, '1')
+        zone = self.driver.get_zone('example-com')
+        self.assertEqual(zone.id, 'example-com')
         self.assertEqual(zone.domain, 'example.com.')
 
     def test_get_zone_does_not_exist(self):
         GoogleDNSMockHttp.type = 'ZONE_DOES_NOT_EXIST'
 
         try:
-            self.driver.get_zone(2)
+            self.driver.get_zone('example-com')
         except ZoneDoesNotExistError:
             e = sys.exc_info()[1]
-            self.assertEqual(e.zone_id, 2)
+            self.assertEqual(e.zone_id, 'example-com')
         else:
             self.fail('Exception not thrown')
 
     def test_get_record(self):
         GoogleDNSMockHttp.type = 'FILTER_ZONES'
         zone = self.driver.list_zones()[0]
-        record = self.driver.get_record(zone.id, "foo.example.com.-A")
+        record = self.driver.get_record(zone.id, "A:foo.example.com.")
+        self.assertEqual(record.id, 'A:foo.example.com.')
         self.assertEqual(record.name, 'foo.example.com.')
         self.assertEqual(record.type, 'A')
+        self.assertEqual(record.zone.id, 'example-com')
 
     def test_get_record_zone_does_not_exist(self):
         GoogleDNSMockHttp.type = 'ZONE_DOES_NOT_EXIST'
 
         try:
-            self.driver.get_record(2, 'a-a')
+            self.driver.get_record('example-com', 'a:a')
         except ZoneDoesNotExistError:
             e = sys.exc_info()[1]
-            self.assertEqual(e.zone_id, 2)
+            self.assertEqual(e.zone_id, 'example-com')
         else:
             self.fail('Exception not thrown')
 
     def test_get_record_record_does_not_exist(self):
         GoogleDNSMockHttp.type = 'RECORD_DOES_NOT_EXIST'
         try:
-            self.driver.get_record(1, "foo-A")
+            self.driver.get_record('example-com', "A:foo")
         except RecordDoesNotExistError:
             e = sys.exc_info()[1]
-            self.assertEqual(e.record_id, 'foo-A')
+            self.assertEqual(e.record_id, 'A:foo')
         else:
             self.fail('Exception not thrown')
 
@@ -107,7 +109,7 @@ class GoogleTests(LibcloudTestCase):
         self.assertEqual(len(zone.extra['nameServers']), 4)
 
     def test_delete_zone(self):
-        zone = self.driver.get_zone(1)
+        zone = self.driver.get_zone('example-com')
         res = self.driver.delete_zone(zone)
         self.assertTrue(res)
 
@@ -128,52 +130,50 @@ class GoogleDNSMockHttp(MockHttpTestCase):
         body = self.fixtures.load('zone_list.json')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _dns_v1beta1_projects_project_name_managedZones_1_rrsets_FILTER_ZONES(
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_rrsets_FILTER_ZONES(
             self, method, url, body, headers):
         body = self.fixtures.load('record.json')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _dns_v1beta1_projects_project_name_managedZones_1_rrsets(
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_rrsets(
             self, method, url, body, headers):
         body = self.fixtures.load('records_list.json')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _dns_v1beta1_projects_project_name_managedZones_1(self, method,
-                                                          url, body,
-                                                          headers):
+    def _dns_v1beta1_projects_project_name_managedZones_example_com(
+            self, method, url, body, headers):
         if method == 'GET':
             body = self.fixtures.load('managed_zones_1.json')
         elif method == 'DELETE':
             body = None
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _dns_v1beta1_projects_project_name_managedZones_2_ZONE_DOES_NOT_EXIST(
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_ZONE_DOES_NOT_EXIST(
             self, method, url, body, headers):
         body = self.fixtures.load('get_zone_does_not_exists.json')
         return (httplib.NOT_FOUND, body, {},
                 httplib.responses[httplib.NOT_FOUND])
 
-    def _dns_v1beta1_projects_project_name_managedZones_3_ZONE_DOES_NOT_EXIST(
-            self, method, url, body, headers):
-        body = self.fixtures.load('get_zone_does_not_exists.json')
-        return (httplib.NOT_FOUND, body, {},
-                httplib.responses[httplib.NOT_FOUND])
-
-    def _dns_v1beta1_projects_project_name_managedZones_1_RECORD_DOES_NOT_EXIST(
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_RECORD_DOES_NOT_EXIST(
             self, method, url, body, headers):
         body = self.fixtures.load('managed_zones_1.json')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _dns_v1beta1_projects_project_name_managedZones_1_rrsets_RECORD_DOES_NOT_EXIST(
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_rrsets_RECORD_DOES_NOT_EXIST(
             self, method, url, body, headers):
         body = self.fixtures.load('no_record.json')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _dns_v1beta1_projects_project_name_managedZones_2_rrsets_ZONE_DOES_NOT_EXIST(
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_rrsets_ZONE_DOES_NOT_EXIST(
             self, method, url, body, headers):
         body = self.fixtures.load('get_zone_does_not_exists.json')
         return (httplib.NOT_FOUND, body, {},
                 httplib.responses[httplib.NOT_FOUND])
 
+    def _dns_v1beta1_projects_project_name_managedZones_example_com_FILTER_ZONES(
+            self, method, url, body, headers):
+        body = self.fixtures.load('zone.json')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
 if __name__ == '__main__':
     sys.exit(unittest.main())