Author: tomaz
Date: Sun Dec 25 02:36:50 2011
New Revision: 1223041
URL: http://svn.apache.org/viewvc?rev=1223041&view=rev
Log:
Add created and updated attribute to the LoadBalancer extra dictionary in
the Rackspace driver. This patch has been contributed by Mark Everett and is
part of GH-49.
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
libcloud/trunk/test/loadbalancer/test_rackspace.py
Modified: libcloud/trunk/CHANGES
URL:
http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1223041&r1=1223040&r2=1223041&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Sun Dec 25 02:36:50 2011
@@ -76,6 +76,10 @@ Changes with Apache Libcloud in developm
- Add update_balancer method to the Rackspace driver.
[Mark Everett]
+ - Add created and updated attribute to the LoadBalancer extra dictionary in
+ the Rackspace driver.
+ [Mark Everett]
+
Changes with Apache Libcloud 0.7.1:
*) General:
Modified: libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py?rev=1223041&r1=1223040&r2=1223041&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py Sun Dec 25
02:36:50 2011
@@ -15,6 +15,7 @@
import os
import binascii
+from datetime import datetime
try:
import simplejson as json
@@ -197,6 +198,7 @@ class RackspaceConnection(OpenStackBaseC
return state == 'ACTIVE'
+
class RackspaceUKConnection(RackspaceConnection):
auth_url = AUTH_URL_UK
@@ -407,6 +409,12 @@ class RackspaceLBDriver(Driver):
if 'nodes' in el:
extra['members'] = self._to_members(el)
+ if 'created' in el:
+ extra['created'] = self._iso_to_datetime(el['created']['time'])
+
+ if 'updated' in el:
+ extra['updated'] = self._iso_to_datetime(el['updated']['time'])
+
return LoadBalancer(id=el["id"],
name=el["name"],
state=self.LB_STATE_MAP.get(
@@ -518,6 +526,21 @@ class RackspaceLBDriver(Driver):
elif type == "DENY":
return RackspaceAccessRuleType.DENY
+ def _iso_to_datetime(self, isodate):
+ date_formats = ('%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S%z')
+ date = None
+
+ for date_format in date_formats:
+ try:
+ date = datetime.strptime(isodate, date_format)
+ except ValueError:
+ pass
+
+ if date:
+ break
+
+ return date
+
class RackspaceUKLBDriver(RackspaceLBDriver):
connectionCls = RackspaceUKConnection
Modified: libcloud/trunk/test/loadbalancer/test_rackspace.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/test/loadbalancer/test_rackspace.py?rev=1223041&r1=1223040&r2=1223041&view=diff
==============================================================================
--- libcloud/trunk/test/loadbalancer/test_rackspace.py (original)
+++ libcloud/trunk/test/loadbalancer/test_rackspace.py Sun Dec 25 02:36:50 2011
@@ -14,6 +14,7 @@
# limitations under the License.
import sys
+import datetime
import unittest
try:
@@ -148,6 +149,18 @@ class RackspaceLBTests(unittest.TestCase
self.assertEquals('10.1.0.10', members[1].ip)
self.assertEquals('10.1.0.9', members[2].ip)
+ def test_get_balancer_extra_created(self):
+ balancer = self.driver.get_balancer(balancer_id='8290')
+
+ created_8290 = datetime.datetime(2011, 4, 7, 16, 27, 50)
+ self.assertEquals(created_8290, balancer.extra['created'])
+
+ def test_get_balancer_extra_updated(self):
+ balancer = self.driver.get_balancer(balancer_id='8290')
+
+ updated_8290 = datetime.datetime(2011, 4, 7, 16, 28, 12)
+ self.assertEquals(updated_8290, balancer.extra['updated'])
+
def test_get_balancer_algorithm(self):
balancer = self.driver.get_balancer(balancer_id='8290')
self.assertEquals(balancer.extra["algorithm"], Algorithm.RANDOM)