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())
