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/02/05 20:44:57 UTC

[1/9] git commit: LIBCLOUD-511: Added support for obtaining console output for OpenStack nodes. New tests are also included.

Updated Branches:
  refs/heads/trunk 71aff983c -> 8e36cb5ec


LIBCLOUD-511: Added support for obtaining console output for OpenStack nodes. New tests are also included.


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

Branch: refs/heads/trunk
Commit: 5e9601f55ffecaad6969372bb04569642ad9863f
Parents: 71aff98
Author: Chris DeRamus <ch...@divvycloud.com>
Authored: Tue Feb 4 08:20:46 2014 -0500
Committer: Tomaz Muraus <to...@apache.org>
Committed: Tue Feb 4 15:16:45 2014 +0100

----------------------------------------------------------------------
 libcloud/compute/drivers/openstack.py           | 25 ++++++++++++++++++++
 .../_servers_12086_console_output.json          |  3 +++
 libcloud/test/compute/test_openstack.py         | 16 +++++++++++++
 3 files changed, 44 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/5e9601f5/libcloud/compute/drivers/openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py
index 137dc30..db5c7f1 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -1572,6 +1572,31 @@ class OpenStack_1_1_NodeDriver(OpenStackNodeDriver):
                                        method='DELETE')
         return resp.status == httplib.ACCEPTED
 
+    def ex_get_console_output(self, node, length=None):
+        """
+        Get console output
+
+        :param      node: node
+        :type       node: :class:`Node`
+
+        :param      length: Optional number of lines to fetch from the
+                            console log
+        :type       length: ``int``
+
+        :return: Dictionary with the output
+        :rtype: ``dict``
+        """
+
+        data = {
+            "os-getConsoleOutput": {
+                "length": length
+            }
+        }
+
+        resp = self.connection.request('/servers/%s/action' % node.id,
+                                       method='POST', data=data).object
+        return resp
+
     def _to_security_group_rules(self, obj):
         return [self._to_security_group_rule(security_group_rule) for
                 security_group_rule in obj]

http://git-wip-us.apache.org/repos/asf/libcloud/blob/5e9601f5/libcloud/test/compute/fixtures/openstack_v1.1/_servers_12086_console_output.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/openstack_v1.1/_servers_12086_console_output.json b/libcloud/test/compute/fixtures/openstack_v1.1/_servers_12086_console_output.json
new file mode 100644
index 0000000..27ffe7d
--- /dev/null
+++ b/libcloud/test/compute/fixtures/openstack_v1.1/_servers_12086_console_output.json
@@ -0,0 +1,3 @@
+{
+    "output": "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/5e9601f5/libcloud/test/compute/test_openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py
index 0df6dd3..a249dfc 100644
--- a/libcloud/test/compute/test_openstack.py
+++ b/libcloud/test/compute/test_openstack.py
@@ -1524,6 +1524,15 @@ class OpenStack_1_1_Tests(unittest.TestCase, TestCaseMixin):
         ret = self.driver.ex_resume_node(node)
         self.assertTrue(ret is True)
 
+    def test_ex_get_console_output(self):
+        node = Node(
+            id='12086', name=None, state=None,
+            public_ips=None, private_ips=None, driver=self.driver,
+        )
+        resp = self.driver.ex_get_console_output(node)
+        expected_output = 'FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE'
+        self.assertEqual(resp['output'], expected_output)
+
 
 class OpenStack_1_1_FactoryMethodTests(OpenStack_1_1_Tests):
     should_list_locations = False
@@ -1862,6 +1871,13 @@ class OpenStack_1_1_MockHttp(MockHttpTestCase):
 
         return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
 
+    def _v1_1_slug_servers_12086_action(self, method, url, body, headers):
+        if method == "POST":
+            body = self.fixtures.load('_servers_12086_console_output.json')
+            return (httplib.ACCEPTED, body, self.json_content_headers, httplib.responses[httplib.OK])
+        else:
+            raise NotImplementedError()
+
 # This exists because the nova compute url in devstack has v2 in there but the v1.1 fixtures
 # work fine.
 


[6/9] git commit: Avoid double split call.

Posted by to...@apache.org.
Avoid double split call.


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

Branch: refs/heads/trunk
Commit: 8f2e551437cc2ab7e8a447fd159e03c1e56171e5
Parents: e010a34
Author: Tomaz Muraus <to...@apache.org>
Authored: Wed Feb 5 14:38:12 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 14:38:12 2014 +0100

----------------------------------------------------------------------
 libcloud/dns/drivers/route53.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/8f2e5514/libcloud/dns/drivers/route53.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/route53.py b/libcloud/dns/drivers/route53.py
index 1df6643..811b7a2 100644
--- a/libcloud/dns/drivers/route53.py
+++ b/libcloud/dns/drivers/route53.py
@@ -301,8 +301,8 @@ class Route53DNSDriver(DNSDriver):
         extra = {'ttl': ttl}
 
         if type == 'MX':
-            priority = int(data.split()[0])
-            data = data.split()[1]
+            split = data.split()
+            priority, data = int(split[0]), split[1]
             extra['priority'] = priority
 
         id = ':'.join((self.RECORD_TYPE_MAP[type], name))


[4/9] git commit: Add additional assert.

Posted by to...@apache.org.
Add additional assert.


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

Branch: refs/heads/trunk
Commit: f93432e6e227f721d07f5ec5343a5e5915d7bce3
Parents: c1cab59
Author: Tomaz Muraus <to...@apache.org>
Authored: Wed Feb 5 14:35:25 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 14:35:25 2014 +0100

----------------------------------------------------------------------
 libcloud/test/dns/test_route53.py | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/f93432e6/libcloud/test/dns/test_route53.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_route53.py b/libcloud/test/dns/test_route53.py
index 5e41dd7..93355ab 100644
--- a/libcloud/test/dns/test_route53.py
+++ b/libcloud/test/dns/test_route53.py
@@ -58,10 +58,15 @@ class Route53Tests(unittest.TestCase):
         self.assertEqual(record.type, RecordType.A)
         self.assertEqual(record.data, '208.111.35.173')
 
-        mx_record = records[3]
-        self.assertEqual(mx_record.type, RecordType.MX)
-        self.assertEqual(mx_record.data, 'ASPMX.L.GOOGLE.COM.')
-        self.assertEqual(mx_record.extra['priority'], 1)
+        record = records[3]
+        self.assertEqual(record.type, RecordType.MX)
+        self.assertEqual(record.data, 'ASPMX.L.GOOGLE.COM.')
+        self.assertEqual(record.extra['priority'], 1)
+
+        record = records[4]
+        self.assertEqual(record.type, RecordType.MX)
+        self.assertEqual(record.data, 'ALT1.ASPMX.L.GOOGLE.COM.')
+        self.assertEqual(record.extra['priority'], 5)
 
     def test_get_zone(self):
         zone = self.driver.get_zone(zone_id='47234')


[7/9] git commit: Update Route53 driver so it also handles SRV records better.

Posted by to...@apache.org.
Update Route53 driver so it also handles SRV records better.


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

Branch: refs/heads/trunk
Commit: 204d56935ceac76c7507f011b548597f696e9a0c
Parents: 8f2e551
Author: Tomaz Muraus <to...@apache.org>
Authored: Wed Feb 5 20:33:37 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 20:36:57 2014 +0100

----------------------------------------------------------------------
 libcloud/dns/drivers/route53.py                     | 10 ++++++++--
 libcloud/test/dns/fixtures/route53/list_records.xml | 16 +++++++++++++++-
 libcloud/test/dns/test_route53.py                   |  9 ++++++++-
 3 files changed, 31 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/204d5693/libcloud/dns/drivers/route53.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/route53.py b/libcloud/dns/drivers/route53.py
index 811b7a2..944449b 100644
--- a/libcloud/dns/drivers/route53.py
+++ b/libcloud/dns/drivers/route53.py
@@ -302,8 +302,14 @@ class Route53DNSDriver(DNSDriver):
 
         if type == 'MX':
             split = data.split()
-            priority, data = int(split[0]), split[1]
-            extra['priority'] = priority
+            priority, data = split
+            extra['priority'] = int(priority)
+        elif type == 'SRV':
+            split = data.split()
+            priority, weight, port, data = split
+            extra['priority'] = int(priority)
+            extra['weight'] = int(weight)
+            extra['port'] = int(port)
 
         id = ':'.join((self.RECORD_TYPE_MAP[type], name))
         record = Record(id=id, name=name, type=type, data=data, zone=zone,

http://git-wip-us.apache.org/repos/asf/libcloud/blob/204d5693/libcloud/test/dns/fixtures/route53/list_records.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/fixtures/route53/list_records.xml b/libcloud/test/dns/fixtures/route53/list_records.xml
index ff6a395..b9638fa 100644
--- a/libcloud/test/dns/fixtures/route53/list_records.xml
+++ b/libcloud/test/dns/fixtures/route53/list_records.xml
@@ -56,7 +56,21 @@
                <Value>10 ASPMX3.GOOGLEMAIL.COM.</Value>
             </ResourceRecord>
          </ResourceRecords>
-      </ResourceRecordSet>
+    </ResourceRecordSet>
+
+    <ResourceRecordSet>
+      <Name>foo.test.com.</Name>
+      <Type>SRV</Type>
+      <TTL>300</TTL>
+      <ResourceRecords>
+        <ResourceRecord>
+          <Value>1 10 5269 xmpp-server.example.com.</Value>
+        </ResourceRecord>
+        <ResourceRecord>
+          <Value>2 12 5060 sip-server.example.com.</Value>
+        </ResourceRecord>
+      </ResourceRecords>
+    </ResourceRecordSet>
 
   </ResourceRecordSets>
 </ListResourceRecordSetsResponse>

http://git-wip-us.apache.org/repos/asf/libcloud/blob/204d5693/libcloud/test/dns/test_route53.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_route53.py b/libcloud/test/dns/test_route53.py
index 93355ab..c512a8b 100644
--- a/libcloud/test/dns/test_route53.py
+++ b/libcloud/test/dns/test_route53.py
@@ -50,7 +50,7 @@ class Route53Tests(unittest.TestCase):
     def test_list_records(self):
         zone = self.driver.list_zones()[0]
         records = self.driver.list_records(zone=zone)
-        self.assertEqual(len(records), 8)
+        self.assertEqual(len(records), 10)
 
         record = records[1]
         self.assertEqual(record.name, 'www')
@@ -68,6 +68,13 @@ class Route53Tests(unittest.TestCase):
         self.assertEqual(record.data, 'ALT1.ASPMX.L.GOOGLE.COM.')
         self.assertEqual(record.extra['priority'], 5)
 
+        record = records[8]
+        self.assertEqual(record.type, RecordType.SRV)
+        self.assertEqual(record.data, 'xmpp-server.example.com.')
+        self.assertEqual(record.extra['priority'], 1)
+        self.assertEqual(record.extra['weight'], 10)
+        self.assertEqual(record.extra['port'], 5269)
+
     def test_get_zone(self):
         zone = self.driver.get_zone(zone_id='47234')
         self.assertEqual(zone.id, '47234')


[3/9] git commit: LIBCLOUD-504: Added support for records with multiple values such as MX/NS records as well an additional fixture and test.

Posted by to...@apache.org.
LIBCLOUD-504: Added support for records with multiple values such as MX/NS records as well an additional fixture and test.

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/8fb0473a
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/8fb0473a
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/8fb0473a

Branch: refs/heads/trunk
Commit: 8fb0473ab9cb59f90c56b0a16960014b658f72bf
Parents: 5e9601f
Author: Chris DeRamus <ch...@divvycloud.com>
Authored: Sun Feb 2 08:04:44 2014 -0500
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 14:33:12 2014 +0100

----------------------------------------------------------------------
 libcloud/dns/drivers/route53.py                 | 17 ++++++++++-----
 .../test/dns/fixtures/route53/list_records.xml  | 23 ++++++++++++++++++++
 libcloud/test/dns/test_route53.py               | 10 ++++++++-
 3 files changed, 43 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/8fb0473a/libcloud/dns/drivers/route53.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/route53.py b/libcloud/dns/drivers/route53.py
index ae128e4..8046bbb 100644
--- a/libcloud/dns/drivers/route53.py
+++ b/libcloud/dns/drivers/route53.py
@@ -289,12 +289,17 @@ class Route53DNSDriver(DNSDriver):
                                                     namespace=NAMESPACE))
         ttl = findtext(element=elem, xpath='TTL', namespace=NAMESPACE)
 
-        # TODO: Support records with multiple values
-        value_elem = elem.findall(
-            fixxpath(xpath='ResourceRecords/ResourceRecord',
-                     namespace=NAMESPACE))[0]
-        data = findtext(element=(value_elem), xpath='Value',
-                        namespace=NAMESPACE)
+        data = ''
+        for record_elem in elem.findall(fixxpath(
+                                        xpath='ResourceRecords/ResourceRecord',
+                                        namespace=NAMESPACE)):
+
+            data += findtext(element=(record_elem),
+                             xpath='Value',
+                             namespace=NAMESPACE) + ' '
+
+        # Strip off the trailing space
+        data = data.rstrip(' ')
 
         extra = {'ttl': ttl}
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/8fb0473a/libcloud/test/dns/fixtures/route53/list_records.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/fixtures/route53/list_records.xml b/libcloud/test/dns/fixtures/route53/list_records.xml
index 039272a..ff6a395 100644
--- a/libcloud/test/dns/fixtures/route53/list_records.xml
+++ b/libcloud/test/dns/fixtures/route53/list_records.xml
@@ -35,6 +35,29 @@
          </ResourceRecords>
       </ResourceRecordSet>
 
+      <ResourceRecordSet>
+         <Name>testdomain.com</Name>
+         <Type>MX</Type>
+         <TTL>3600</TTL>
+         <ResourceRecords>
+            <ResourceRecord>
+               <Value>1 ASPMX.L.GOOGLE.COM.</Value>
+            </ResourceRecord>
+            <ResourceRecord>
+               <Value>5 ALT1.ASPMX.L.GOOGLE.COM.</Value>
+            </ResourceRecord>
+            <ResourceRecord>
+               <Value>5 ALT2.ASPMX.L.GOOGLE.COM.</Value>
+            </ResourceRecord>
+            <ResourceRecord>
+               <Value>10 ASPMX2.GOOGLEMAIL.COM.</Value>
+            </ResourceRecord>
+            <ResourceRecord>
+               <Value>10 ASPMX3.GOOGLEMAIL.COM.</Value>
+            </ResourceRecord>
+         </ResourceRecords>
+      </ResourceRecordSet>
+
   </ResourceRecordSets>
 </ListResourceRecordSetsResponse>
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/8fb0473a/libcloud/test/dns/test_route53.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_route53.py b/libcloud/test/dns/test_route53.py
index 220166e..b5c1cdf 100644
--- a/libcloud/test/dns/test_route53.py
+++ b/libcloud/test/dns/test_route53.py
@@ -50,7 +50,7 @@ class Route53Tests(unittest.TestCase):
     def test_list_records(self):
         zone = self.driver.list_zones()[0]
         records = self.driver.list_records(zone=zone)
-        self.assertEqual(len(records), 3)
+        self.assertEqual(len(records), 4)
 
         record = records[1]
         self.assertEqual(record.name, 'www')
@@ -58,6 +58,14 @@ class Route53Tests(unittest.TestCase):
         self.assertEqual(record.type, RecordType.A)
         self.assertEqual(record.data, '208.111.35.173')
 
+        mx_record = records[3]
+        self.assertEqual(mx_record.type, RecordType.MX)
+        self.assertEqual(mx_record.data, '1 ASPMX.L.GOOGLE.COM. '
+                         '5 ALT1.ASPMX.L.GOOGLE.COM. '
+                         '5 ALT2.ASPMX.L.GOOGLE.COM. '
+                         '10 ASPMX2.GOOGLEMAIL.COM. '
+                         '10 ASPMX3.GOOGLEMAIL.COM.')
+
     def test_get_zone(self):
         zone = self.driver.get_zone(zone_id='47234')
         self.assertEqual(zone.id, '47234')


[5/9] git commit: Update CHANGES.

Posted by to...@apache.org.
Update CHANGES.


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

Branch: refs/heads/trunk
Commit: e010a347020fe101b24ff4a64b84af6b2af38bf8
Parents: f93432e
Author: Tomaz Muraus <to...@apache.org>
Authored: Wed Feb 5 14:37:07 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 14:37:07 2014 +0100

----------------------------------------------------------------------
 CHANGES.rst | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/e010a347/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index ba21984..09ce2cd 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -70,6 +70,11 @@ DNS
   (GITHUB-230)
   [Roy Wellington]
 
+- Update Route53 driver so it supports handling records with multiple values
+  (e.g. MX).
+  (LIBCLOUD-504, GITHUB-237)
+  [Chris DeRamus]
+
 Changes with Apache Libcloud 0.14.0
 -----------------------------------
 


[9/9] git commit: Update CHANGES.

Posted by to...@apache.org.
Update CHANGES.


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

Branch: refs/heads/trunk
Commit: 8e36cb5ecdf4188d4dabaf2270755748293b7c57
Parents: 5af004c
Author: Tomaz Muraus <to...@apache.org>
Authored: Wed Feb 5 20:39:57 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 20:39:57 2014 +0100

----------------------------------------------------------------------
 CHANGES.rst | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/8e36cb5e/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index 09ce2cd..f952d6d 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -75,6 +75,13 @@ DNS
   (LIBCLOUD-504, GITHUB-237)
   [Chris DeRamus]
 
+- Update Route53 driver to better handle SRV records.
+  [Tomaz Muraus]
+
+- Update Route53 driver, make sure "ttl" attribute in the Record extra
+  dictionary is always an int.
+  [Tomaz Muraus]
+
 Changes with Apache Libcloud 0.14.0
 -----------------------------------
 


[8/9] git commit: Make sure TTL is an int.

Posted by to...@apache.org.
Make sure TTL is an int.


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

Branch: refs/heads/trunk
Commit: 5af004cc54a5ab45326f4bc2468c978c94dd30cb
Parents: 204d569
Author: Tomaz Muraus <to...@apache.org>
Authored: Wed Feb 5 20:39:01 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 20:39:01 2014 +0100

----------------------------------------------------------------------
 libcloud/dns/drivers/route53.py   | 2 +-
 libcloud/test/dns/test_route53.py | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/5af004cc/libcloud/dns/drivers/route53.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/route53.py b/libcloud/dns/drivers/route53.py
index 944449b..64f34c0 100644
--- a/libcloud/dns/drivers/route53.py
+++ b/libcloud/dns/drivers/route53.py
@@ -290,7 +290,7 @@ class Route53DNSDriver(DNSDriver):
 
         type = self._string_to_record_type(findtext(element=elem, xpath='Type',
                                                     namespace=NAMESPACE))
-        ttl = findtext(element=elem, xpath='TTL', namespace=NAMESPACE)
+        ttl = int(findtext(element=elem, xpath='TTL', namespace=NAMESPACE))
 
         value_elem = elem.findall(
             fixxpath(xpath='ResourceRecords/ResourceRecord',

http://git-wip-us.apache.org/repos/asf/libcloud/blob/5af004cc/libcloud/test/dns/test_route53.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_route53.py b/libcloud/test/dns/test_route53.py
index c512a8b..bc11125 100644
--- a/libcloud/test/dns/test_route53.py
+++ b/libcloud/test/dns/test_route53.py
@@ -57,6 +57,7 @@ class Route53Tests(unittest.TestCase):
         self.assertEqual(record.id, 'A:www')
         self.assertEqual(record.type, RecordType.A)
         self.assertEqual(record.data, '208.111.35.173')
+        self.assertEqual(record.extra['ttl'], 86400)
 
         record = records[3]
         self.assertEqual(record.type, RecordType.MX)


[2/9] git commit: Changing the flow for processing records with multiple values such as MX records to be broken out into separate Record objects.

Posted by to...@apache.org.
Changing the flow for processing records with multiple values such as MX records to be broken out into separate Record objects.

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/c1cab594
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/c1cab594
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/c1cab594

Branch: refs/heads/trunk
Commit: c1cab59487b7def9ac15e1a856da19e94a6b6f9e
Parents: 8fb0473
Author: Chris DeRamus <ch...@divvycloud.com>
Authored: Sun Feb 2 13:22:30 2014 -0500
Committer: Tomaz Muraus <to...@apache.org>
Committed: Wed Feb 5 14:33:12 2014 +0100

----------------------------------------------------------------------
 libcloud/dns/drivers/route53.py   | 30 ++++++++++++++++--------------
 libcloud/test/dns/test_route53.py |  9 +++------
 2 files changed, 19 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/c1cab594/libcloud/dns/drivers/route53.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/route53.py b/libcloud/dns/drivers/route53.py
index 8046bbb..1df6643 100644
--- a/libcloud/dns/drivers/route53.py
+++ b/libcloud/dns/drivers/route53.py
@@ -276,11 +276,14 @@ class Route53DNSDriver(DNSDriver):
             fixxpath(xpath='ResourceRecordSets/ResourceRecordSet',
                      namespace=NAMESPACE))
         for elem in elems:
-            records.append(self._to_record(elem, zone))
-
+            record_set = elem.findall(fixxpath(
+                                      xpath='ResourceRecords/ResourceRecord',
+                                      namespace=NAMESPACE))
+            for index, record in enumerate(record_set):
+                records.append(self._to_record(elem, zone, index))
         return records
 
-    def _to_record(self, elem, zone):
+    def _to_record(self, elem, zone, index=0):
         name = findtext(element=elem, xpath='Name',
                         namespace=NAMESPACE)
         name = name[:-len(zone.domain) - 1]
@@ -289,20 +292,19 @@ class Route53DNSDriver(DNSDriver):
                                                     namespace=NAMESPACE))
         ttl = findtext(element=elem, xpath='TTL', namespace=NAMESPACE)
 
-        data = ''
-        for record_elem in elem.findall(fixxpath(
-                                        xpath='ResourceRecords/ResourceRecord',
-                                        namespace=NAMESPACE)):
-
-            data += findtext(element=(record_elem),
-                             xpath='Value',
-                             namespace=NAMESPACE) + ' '
-
-        # Strip off the trailing space
-        data = data.rstrip(' ')
+        value_elem = elem.findall(
+            fixxpath(xpath='ResourceRecords/ResourceRecord',
+                     namespace=NAMESPACE))[index]
+        data = findtext(element=(value_elem), xpath='Value',
+                        namespace=NAMESPACE)
 
         extra = {'ttl': ttl}
 
+        if type == 'MX':
+            priority = int(data.split()[0])
+            data = data.split()[1]
+            extra['priority'] = priority
+
         id = ':'.join((self.RECORD_TYPE_MAP[type], name))
         record = Record(id=id, name=name, type=type, data=data, zone=zone,
                         driver=self, extra=extra)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/c1cab594/libcloud/test/dns/test_route53.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_route53.py b/libcloud/test/dns/test_route53.py
index b5c1cdf..5e41dd7 100644
--- a/libcloud/test/dns/test_route53.py
+++ b/libcloud/test/dns/test_route53.py
@@ -50,7 +50,7 @@ class Route53Tests(unittest.TestCase):
     def test_list_records(self):
         zone = self.driver.list_zones()[0]
         records = self.driver.list_records(zone=zone)
-        self.assertEqual(len(records), 4)
+        self.assertEqual(len(records), 8)
 
         record = records[1]
         self.assertEqual(record.name, 'www')
@@ -60,11 +60,8 @@ class Route53Tests(unittest.TestCase):
 
         mx_record = records[3]
         self.assertEqual(mx_record.type, RecordType.MX)
-        self.assertEqual(mx_record.data, '1 ASPMX.L.GOOGLE.COM. '
-                         '5 ALT1.ASPMX.L.GOOGLE.COM. '
-                         '5 ALT2.ASPMX.L.GOOGLE.COM. '
-                         '10 ASPMX2.GOOGLEMAIL.COM. '
-                         '10 ASPMX3.GOOGLEMAIL.COM.')
+        self.assertEqual(mx_record.data, 'ASPMX.L.GOOGLE.COM.')
+        self.assertEqual(mx_record.extra['priority'], 1)
 
     def test_get_zone(self):
         zone = self.driver.get_zone(zone_id='47234')