From ecd30aa101d62a0aef81eb0d6cc741f84d7d7652 Mon Sep 17 00:00:00 2001 From: Ryan Phillips Date: Tue, 10 Sep 2013 15:34:37 -0500 Subject: [PATCH 1/2] loadbalancer: add rackspace stats --- libcloud/loadbalancer/drivers/rackspace.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libcloud/loadbalancer/drivers/rackspace.py b/libcloud/loadbalancer/drivers/rackspace.py index 1aa7fd5156..5c79a6810d 100644 --- a/libcloud/loadbalancer/drivers/rackspace.py +++ b/libcloud/loadbalancer/drivers/rackspace.py @@ -1313,6 +1313,12 @@ def ex_list_current_usage(self, balancer): return resp.object + def ex_list_current_stats(self, balancer): + uri = '/loadbalancers/%s/stats' % (balancer.id) + resp = self.connection.request(uri, method='GET') + + return resp.object + def _to_protocols(self, object): protocols = [] for item in object["protocols"]: From 93deb3b41385cfdaf6c4b917f1ad14431011be0f Mon Sep 17 00:00:00 2001 From: Ryan Phillips Date: Tue, 5 Nov 2013 11:00:48 -0600 Subject: [PATCH 2/2] add unit test --- .../v1_0_slug_loadbalancers_8290_stats.json | 1 + libcloud/test/loadbalancer/test_rackspace.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 libcloud/test/loadbalancer/fixtures/rackspace/v1_0_slug_loadbalancers_8290_stats.json diff --git a/libcloud/test/loadbalancer/fixtures/rackspace/v1_0_slug_loadbalancers_8290_stats.json b/libcloud/test/loadbalancer/fixtures/rackspace/v1_0_slug_loadbalancers_8290_stats.json new file mode 100644 index 0000000000..8cf05dde2a --- /dev/null +++ b/libcloud/test/loadbalancer/fixtures/rackspace/v1_0_slug_loadbalancers_8290_stats.json @@ -0,0 +1 @@ +{ "connectTimeOut":10, "connectError":20, "connectFailure":30, "dataTimedOut":40, "keepAliveTimedOut":50, "maxConn":60 } diff --git a/libcloud/test/loadbalancer/test_rackspace.py b/libcloud/test/loadbalancer/test_rackspace.py index 5708f067c2..966a06581c 100644 --- a/libcloud/test/loadbalancer/test_rackspace.py +++ b/libcloud/test/loadbalancer/test_rackspace.py @@ -154,6 +154,14 @@ def test_create_balancer(self): Member(None, '10.1.0.11', 80)) ) + stats = self.driver.ex_list_current_stats(balancer) + self.assertEqual(stats['connectError'], 20) + self.assertEqual(stats['connectTimeOut'], 10) + self.assertEqual(stats['connectFailure'], 30) + self.assertEqual(stats['dataTimedOut'], 40) + self.assertEqual(stats['keepAliveTimedOut'], 50) + self.assertEqual(stats['maxConn'], 60) + self.assertEqual(balancer.name, 'test2') self.assertEqual(balancer.id, '8290') @@ -919,11 +927,16 @@ def _v1_0_slug_loadbalancers_protocols(self, method, url, body, headers): return (httplib.ACCEPTED, body, {}, httplib.responses[httplib.ACCEPTED]) + def _v1_0_slug_loadbalancers_8290_stats(self, method, url, body, headers): + body = self.fixtures.load('v1_0_slug_loadbalancers_8290_stats.json') + return (httplib.ACCEPTED, body, {}, + httplib.responses[httplib.ACCEPTED]) + def _v1_0_slug_loadbalancers_algorithms(self, method, url, body, headers): if method == "GET": body = self.fixtures.load('v1_slug_loadbalancers_algorithms.json') - return (httplib.ACCEPTED, body, {}, - httplib.responses[httplib.ACCEPTED]) + return (httplib.OK, body, {}, + httplib.responses[httplib.OK]) raise NotImplementedError