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/12/26 15:41:00 UTC

libcloud git commit: Added JoyentNodeDriver.ex_get_node()

Repository: libcloud
Updated Branches:
  refs/heads/trunk 0486f77e7 -> 68a3461a6


Added JoyentNodeDriver.ex_get_node()

Joyent didn't have a method for get only one Node.

Because I doesn't want to make a for loop for find a node, I added this method.
Error raising is better too with that, a real Joyent's error message is now raised.

Closes #421

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

Branch: refs/heads/trunk
Commit: 68a3461a6279fb2e526a24f8590607b23045c144
Parents: 0486f77
Author: ZuluPro <mo...@hotmail.com>
Authored: Wed Dec 24 13:05:14 2014 +0100
Committer: Tomaz Muraus <to...@apache.org>
Committed: Fri Dec 26 12:16:06 2014 +0100

----------------------------------------------------------------------
 CHANGES.rst                          |  4 ++++
 libcloud/compute/drivers/joyent.py   | 13 +++++++++++++
 libcloud/test/compute/test_joyent.py | 12 +++++++++++-
 3 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/68a3461a/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index 7ce653c..47a1ab6 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -103,6 +103,10 @@ Compute
   (GITHUB-417)
   [Viktor Petersson]
 
+- Add ``ex_get_node`` method to the Joyent driver.
+  (GITHUB-421)
+  [ZuluPro]
+
 Storage
 ~~~~~~~
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/68a3461a/libcloud/compute/drivers/joyent.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/joyent.py b/libcloud/compute/drivers/joyent.py
index 42bbae2..d1fa9c1 100644
--- a/libcloud/compute/drivers/joyent.py
+++ b/libcloud/compute/drivers/joyent.py
@@ -206,6 +206,19 @@ class JoyentNodeDriver(NodeDriver):
                                          data=data, method='POST')
         return result.status == httplib.ACCEPTED
 
+    def ex_get_node(self, node_id):
+        """
+        Return a Node object based on a node ID.
+
+        :param  node_id: ID of the node
+        :type   node_id: ``str``
+
+        :return:  A Node object for the node
+        :rtype:   :class:`Node`
+        """
+        result = self.connection.request('/my/machines/%s' % (node_id))
+        return self._to_node(result.object)
+
     def _to_node(self, data):
         state = NODE_STATE_MAP[data['state']]
         public_ips = []

http://git-wip-us.apache.org/repos/asf/libcloud/blob/68a3461a/libcloud/test/compute/test_joyent.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_joyent.py b/libcloud/test/compute/test_joyent.py
index 86b2890..90718fc 100644
--- a/libcloud/test/compute/test_joyent.py
+++ b/libcloud/test/compute/test_joyent.py
@@ -100,6 +100,15 @@ class JoyentTestCase(unittest.TestCase):
         node = self.driver.list_nodes()[0]
         self.assertTrue(self.driver.ex_start_node(node))
 
+    def test_ex_get_node(self):
+        node_id = '2fb67f5f-53f2-40ab-9d99-b9ff68cfb2ab'
+        node = self.driver.ex_get_node(node_id)
+        self.assertEqual(node.name, 'testlc')
+
+        missing_node = 'dummy-node'
+        self.assertRaises(Exception, self.driver.ex_get_node,
+                          missing_node, 'all')
+
 
 class JoyentHttp(MockHttp):
     fixtures = ComputeFileFixtures('joyent')
@@ -121,7 +130,8 @@ class JoyentHttp(MockHttp):
 
     def _my_machines_2fb67f5f_53f2_40ab_9d99_b9ff68cfb2ab(self, method, url,
                                                           body, headers):
-        return (httplib.ACCEPTED, '', {}, httplib.responses[httplib.ACCEPTED])
+        body = self.fixtures.load('my_machines_create.json')
+        return (httplib.ACCEPTED, body, {}, httplib.responses[httplib.ACCEPTED])
 
 
 if __name__ == '__main__':