You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2016/03/26 11:05:02 UTC
[6/6] libcloud git commit: Documentation and other small fixes
Documentation and other small fixes
Closes #726
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/03733cc1
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/03733cc1
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/03733cc1
Branch: refs/heads/trunk
Commit: 03733cc124110a02d1f52a9b7f42b311148c8068
Parents: 02ce76d
Author: Jeffrey Dunham <je...@gmail.com>
Authored: Fri Mar 25 13:59:31 2016 -0400
Committer: anthony-shaw <an...@gmail.com>
Committed: Sat Mar 26 21:04:24 2016 +1100
----------------------------------------------------------------------
libcloud/common/dimensiondata.py | 45 ++++++++++++++++++--
...dabe5a7d0e4_server_antiAffinityRule_list.xml | 16 +++----
...4_server_antiAffinityRule_list_PAGINATED.xml | 16 +++----
libcloud/test/compute/test_dimensiondata.py | 21 ++++++++-
4 files changed, 77 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/03733cc1/libcloud/common/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/common/dimensiondata.py b/libcloud/common/dimensiondata.py
index 2557e29..ce8e39e 100644
--- a/libcloud/common/dimensiondata.py
+++ b/libcloud/common/dimensiondata.py
@@ -436,8 +436,35 @@ class DimensionDataConnection(ConnectionUserAndKey):
def paginated_request_with_orgId_api_2(self, action, params=None, data='',
headers=None, method='GET',
- return_generator=False,
- page_count=250):
+ page_size=250):
+ """
+ A paginated request to the MCP2.0 API
+ This essentially calls out to request_with_orgId_api_2 for each page
+ and yields the response to make a generator
+ This generator can be looped through to grab all the pages.
+
+ :param action: The resource to access (i.e. 'network/vlan')
+ :type action: ``str``
+
+ :param params: Parameters to give to the action
+ :type params: ``dict`` or ``None``
+
+ :param data: The data payload to be added to the request
+ :type data: ``str``
+
+ :param headers: Additional header to be added to the request
+ :type headers: ``str`` or ``dict`` or ``None``
+
+ :param method: HTTP Method for the request (i.e. 'GET', 'POST')
+ :type method: ``str``
+
+ :param page_size: The size of each page to be returned
+ Note: Max page size in MCP2.0 is currently 250
+ :type page_size: ``int``
+ """
+ if params is None:
+ params = {}
+ params['pageSize'] = page_size
paged_resp = self.request_with_orgId_api_2(action, params,
data, headers,
@@ -750,9 +777,21 @@ class DimensionDataNatRule(object):
class DimensionDataAntiAffinityRule(object):
"""
- Anti-Affinity Rule
+ Anti-Affinity rule for DimensionData
+
+ An Anti-Affinity rule ensures that servers in the rule will
+ not reside on the same VMware ESX host.
"""
def __init__(self, id, node_list):
+ """
+ Instantiate a new :class:`DimensionDataAntiAffinityRule`
+
+ :param id: The ID of the Anti-Affinity rule
+ :type id: ``str``
+
+ :param node_list: List of node ids that belong in this rule
+ :type node_list: ``list`` of ``str``
+ """
self.id = id
self.node_list = node_list
http://git-wip-us.apache.org/repos/asf/libcloud/blob/03733cc1/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list.xml
index 8179051..290b7e4 100644
--- a/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list.xml
+++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list.xml
@@ -5,16 +5,16 @@
<name>ansible-test-image-rhel6</name>
<description>my new node</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="aafffb27-f16b-4757-9b63-ef7d8acd9c7f" privateIpv4="172.16.1.8" ipv6="2607:f480:111:1423:1b57:e47a:c212:257d" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/> </networkInfo>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="aafffb27-f16b-4757-9b63-ef7d8acd9c7f" privateIpv4="172.16.1.8" ipv6="2607:f480:111:1423:1b57:e47a:c212:257d" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/> </networkInfo>
</networkingDetails>
</serverSummary>
<serverSummary id="5718d174-31d4-4d49-b1c6-fcb0d782f233">
<name>ansible-custom-image-test-UAT</name>
<description>my new node</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="b359cea3-4452-46fe-b30b-b3ce839cde9b" privateIpv4="172.16.1.9" ipv6="2607:f480:111:1423:7fa7:9a9b:ecb9:882e" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="b359cea3-4452-46fe-b30b-b3ce839cde9b" privateIpv4="172.16.1.9" ipv6="2607:f480:111:1423:7fa7:9a9b:ecb9:882e" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/>
</networkInfo>
</networkingDetails>
</serverSummary>
@@ -24,8 +24,8 @@
<name>rhel-ansible-full-test</name>
<description>RHEL Ansible Test</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="e081e784-5768-472c-b7f3-353e1646edc8" privateIpv4="172.16.1.15" ipv6="2607:f480:111:1423:70c9:9216:f7bf:dcf6" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="e081e784-5768-472c-b7f3-353e1646edc8" privateIpv4="172.16.1.15" ipv6="2607:f480:111:1423:70c9:9216:f7bf:dcf6" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/>
</networkInfo>
</networkingDetails>
</serverSummary>
@@ -33,8 +33,8 @@
<name>rhel-ansible-full-test</name>
<description>RHEL Ansible Test</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="3278f833-9535-405c-91b8-0a0470f58aae" privateIpv4="172.16.1.17" ipv6="2607:f480:111:1423:3081:71a8:4c52:a8a" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="3278f833-9535-405c-91b8-0a0470f58aae" privateIpv4="172.16.1.17" ipv6="2607:f480:111:1423:3081:71a8:4c52:a8a" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/>
</networkInfo>
</networkingDetails>
</serverSummary>
http://git-wip-us.apache.org/repos/asf/libcloud/blob/03733cc1/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list_PAGINATED.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list_PAGINATED.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list_PAGINATED.xml
index d765264..fdd5e01 100644
--- a/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list_PAGINATED.xml
+++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list_PAGINATED.xml
@@ -5,16 +5,16 @@
<name>ansible-test-image-rhel6</name>
<description>my new node</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="aafffb27-f16b-4757-9b63-ef7d8acd9c7f" privateIpv4="172.16.1.8" ipv6="2607:f480:111:1423:1b57:e47a:c212:257d" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/> </networkInfo>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="aafffb27-f16b-4757-9b63-ef7d8acd9c7f" privateIpv4="172.16.1.8" ipv6="2607:f480:111:1423:1b57:e47a:c212:257d" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/> </networkInfo>
</networkingDetails>
</serverSummary>
<serverSummary id="5718d174-31d4-4d49-b1c6-fcb0d782f233">
<name>ansible-custom-image-test-UAT</name>
<description>my new node</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="b359cea3-4452-46fe-b30b-b3ce839cde9b" privateIpv4="172.16.1.9" ipv6="2607:f480:111:1423:7fa7:9a9b:ecb9:882e" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="b359cea3-4452-46fe-b30b-b3ce839cde9b" privateIpv4="172.16.1.9" ipv6="2607:f480:111:1423:7fa7:9a9b:ecb9:882e" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/>
</networkInfo>
</networkingDetails>
</serverSummary>
@@ -24,8 +24,8 @@
<name>rhel-ansible-full-test</name>
<description>RHEL Ansible Test</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="e081e784-5768-472c-b7f3-353e1646edc8" privateIpv4="172.16.1.15" ipv6="2607:f480:111:1423:70c9:9216:f7bf:dcf6" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="e081e784-5768-472c-b7f3-353e1646edc8" privateIpv4="172.16.1.15" ipv6="2607:f480:111:1423:70c9:9216:f7bf:dcf6" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/>
</networkInfo>
</networkingDetails>
</serverSummary>
@@ -33,8 +33,8 @@
<name>rhel-ansible-full-test</name>
<description>RHEL Ansible Test</description>
<networkingDetails>
- <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Deloitte Test">
- <primaryNic id="3278f833-9535-405c-91b8-0a0470f58aae" privateIpv4="172.16.1.17" ipv6="2607:f480:111:1423:3081:71a8:4c52:a8a" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="deloitte-test"/>
+ <networkInfo networkDomainId="423c4386-87b4-43c4-9604-88ae237bfc7f" networkDomainName="Jeff Test">
+ <primaryNic id="3278f833-9535-405c-91b8-0a0470f58aae" privateIpv4="172.16.1.17" ipv6="2607:f480:111:1423:3081:71a8:4c52:a8a" vlanId="bd6fbee5-17db-49f8-b1f5-3b213cea3061" vlanName="jeff-test"/>
</networkInfo>
</networkingDetails>
</serverSummary>
http://git-wip-us.apache.org/repos/asf/libcloud/blob/03733cc1/libcloud/test/compute/test_dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_dimensiondata.py b/libcloud/test/compute/test_dimensiondata.py
index 0b81317..cc8a0f8 100644
--- a/libcloud/test/compute/test_dimensiondata.py
+++ b/libcloud/test/compute/test_dimensiondata.py
@@ -19,6 +19,7 @@ except ImportError:
from xml.etree import ElementTree as ET
import sys
+from types import GeneratorType
from libcloud.utils.py3 import httplib
from libcloud.common.types import InvalidCredsError
@@ -91,6 +92,13 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin):
ret = self.driver.list_nodes()
self.assertEqual(len(ret), 9)
+ def test_paginated_mcp2_call_with_page_size(self):
+ # cache org
+ self.driver.connection._get_orgId()
+ DimensionDataMockHttp.type = 'PAGESIZE50'
+ node_list_generator = self.driver.connection.paginated_request_with_orgId_api_2('server/server', page_size=50)
+ self.assertTrue(isinstance(node_list_generator, GeneratorType))
+
# We're making sure here the filters make it to the URL
# See _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_ALLFILTERS for asserts
def test_list_nodes_response_strings_ALLFILTERS(self):
@@ -1171,8 +1179,15 @@ class DimensionDataMockHttp(MockHttp):
'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server.xml')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+ def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_PAGESIZE50(self, method, url, body, headers):
+ if not url.endswith('pageSize=50'):
+ raise ValueError("pageSize is not set as expected")
+ body = self.fixtures.load(
+ 'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_PAGINATED(self, method, url, body, headers):
- if url.endswith('pageNumber=2'):
+ if 'pageNumber=2' in url:
body = self.fixtures.load(
'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server.xml')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
@@ -1229,6 +1244,8 @@ class DimensionDataMockHttp(MockHttp):
assert value == 'FAKE_ID'
elif key == 'state':
assert value == 'FAKE_STATE'
+ elif key == 'pageSize':
+ assert value == '250'
elif key == 'networkDomainId':
pass
else:
@@ -1239,7 +1256,7 @@ class DimensionDataMockHttp(MockHttp):
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_PAGINATED(self, method, url, body, headers):
- if url.endswith('pageNumber=2'):
+ if 'pageNumber=2' in url:
body = self.fixtures.load(
'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_antiAffinityRule_list.xml')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])