Updated a new method to get a specific node, use this when provisioning (better 
performance)

Closes #587


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

Branch: refs/heads/trunk
Commit: d4c28a19d5e0c2e75cec0196c76c9482cce1fe5a
Parents: da7f04e
Author: Anthony Shaw <[email protected]>
Authored: Thu Sep 24 12:48:25 2015 +1000
Committer: Tomaz Muraus <[email protected]>
Committed: Sat Sep 26 22:37:25 2015 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/dimensiondata.py       |  7 +++++-
 ...ver_e75ead52_692f_4314_8725_c8a4f4d13a87.xml | 26 ++++++++++++++++++++
 libcloud/test/compute/test_dimensiondata.py     |  5 ++++
 3 files changed, 37 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/d4c28a19/libcloud/compute/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/dimensiondata.py 
b/libcloud/compute/drivers/dimensiondata.py
index f975b79..e1ce7a8 100644
--- a/libcloud/compute/drivers/dimensiondata.py
+++ b/libcloud/compute/drivers/dimensiondata.py
@@ -152,7 +152,7 @@ class DimensionDataNodeDriver(NodeDriver):
             if info.get('name') == 'serverId':
                 node_id = info.get('value')
 
-        node = list(filter(lambda x: x.id == node_id, self.list_nodes()))[-1]
+        node = self.ex_get_node_by_id(node_id)
 
         if getattr(auth_obj, "generated", False):
             node.extra['password'] = auth_obj.password
@@ -422,6 +422,11 @@ class DimensionDataNodeDriver(NodeDriver):
                                   .object
         return self._to_vlans(response)
 
+    def ex_get_node_by_id(self, id):
+        node = self.connection.request_with_orgId_api_2(
+            'server/server/%s' % id).object
+        return self._to_node(node)
+
     def ex_get_location_by_id(self, id):
         """
         Get location by ID.

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d4c28a19/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
----------------------------------------------------------------------
diff --git 
a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
 
b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
new file mode 100644
index 0000000..dcdb1ae
--- /dev/null
+++ 
b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<server xmlns="urn:didata.com:api:cloud:types" 
id="e75ead52-692f-4314-8725-c8a4f4d13a87" datacenterId="NA5">
+    <name>us-dc2.us.aperture.cloud</name>
+    <description>Domain Controller 2 for us.aperture.cloud.</description>
+    <operatingSystem id="WIN2012S64" displayName="WIN2012S/64" 
family="WINDOWS"/>
+    <cpuCount>2</cpuCount>
+    <memoryGb>2</memoryGb>
+    <disk id="931d9035-251d-432c-8f52-8e9e3e15cbbb" scsiId="0" sizeGb="50" 
speed="STANDARD" state="NORMAL"/>
+    <disk id="f28de371-2b30-46d1-935d-913e1594c91c" scsiId="1" sizeGb="10" 
speed="STANDARD" state="NORMAL"/>
+    <disk id="0033b75f-fb0d-4068-aa21-8fb814587ce2" scsiId="2" sizeGb="10" 
speed="STANDARD" state="NORMAL"/>
+    <disk id="f0c0dacf-33e4-42d4-9d80-3ebf3c899a37" scsiId="3" sizeGb="10" 
speed="STANDARD" state="NORMAL"/>
+    <nic id="fe72ee32-7b9d-11e4-8c14-b8ca3a5d9ef8" privateIpv4="10.192.176.12" 
networkId="4bba37be-506f-11e3-b29c-001517c4643e" networkName="Aperture US1" 
state="NORMAL"/>
+    <sourceImageId>4787337e-0f31-11e3-b29c-001517c4643e</sourceImageId>
+    <createTime>2013-11-29T23:17:09.000Z</createTime>
+    <deployed>true</deployed>
+    <started>false</started>
+    <state>NORMAL</state>
+    <progress>
+    <action>DEPLOY_SERVER</action>
+    <requestTime>2015-03-06T18:05:33.000Z</requestTime>
+    <userName>myuser</userName>
+    </progress>
+    <machineStatus name="vmwareToolsVersionStatus" value="NEED_UPGRADE"/>
+    <machineStatus name="vmwareToolsRunningStatus" value="NOT_RUNNING"/>
+    <machineStatus name="vmwareToolsApiVersion" value="9221"/>
+</server>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d4c28a19/libcloud/test/compute/test_dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_dimensiondata.py 
b/libcloud/test/compute/test_dimensiondata.py
index 3a474df..b5d481d 100644
--- a/libcloud/test/compute/test_dimensiondata.py
+++ b/libcloud/test/compute/test_dimensiondata.py
@@ -393,5 +393,10 @@ class DimensionDataMockHttp(MockHttp):
             
'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_deployServer.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
+    def 
_caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87(self,
 method, url, body, headers):
+        body = self.fixtures.load(
+            
'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
 if __name__ == '__main__':
     sys.exit(unittest.main())

Reply via email to