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/12/02 04:33:16 UTC
[14/40] libcloud git commit: Unit tests for 2.3
http://git-wip-us.apache.org/repos/asf/libcloud/blob/bb1b8104/libcloud/test/loadbalancer/test_dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/test/loadbalancer/test_dimensiondata.py b/libcloud/test/loadbalancer/test_dimensiondata.py
deleted file mode 100644
index 2792d83..0000000
--- a/libcloud/test/loadbalancer/test_dimensiondata.py
+++ /dev/null
@@ -1,619 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-import sys
-from libcloud.utils.py3 import httplib
-
-from libcloud.common.types import InvalidCredsError
-from libcloud.common.dimensiondata import DimensionDataVIPNode, DimensionDataPool
-from libcloud.common.dimensiondata import DimensionDataPoolMember
-from libcloud.loadbalancer.base import LoadBalancer, Member, Algorithm
-from libcloud.loadbalancer.drivers.dimensiondata \
- import DimensionDataLBDriver as DimensionData
-from libcloud.loadbalancer.types import State
-
-from libcloud.test import MockHttp, unittest
-from libcloud.test.file_fixtures import LoadBalancerFileFixtures
-
-from libcloud.test.secrets import DIMENSIONDATA_PARAMS
-
-
-class DimensionDataTests(unittest.TestCase):
-
- def setUp(self):
- DimensionData.connectionCls.conn_classes = (None, DimensionDataMockHttp)
- DimensionDataMockHttp.type = None
- self.driver = DimensionData(*DIMENSIONDATA_PARAMS)
-
- def test_invalid_region(self):
- with self.assertRaises(ValueError):
- self.driver = DimensionData(*DIMENSIONDATA_PARAMS, region='blah')
-
- def test_invalid_creds(self):
- DimensionDataMockHttp.type = 'UNAUTHORIZED'
- with self.assertRaises(InvalidCredsError):
- self.driver.list_balancers()
-
- def test_create_balancer(self):
- self.driver.ex_set_current_network_domain('1234')
- members = []
- members.append(Member(
- id=None,
- ip='1.2.3.4',
- port=80))
-
- balancer = self.driver.create_balancer(
- name='test',
- port=80,
- protocol='http',
- algorithm=Algorithm.ROUND_ROBIN,
- members=members,
- ex_listener_ip_address='5.6.7.8')
- self.assertEqual(balancer.name, 'test')
- self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(balancer.ip, '165.180.12.22')
- self.assertEqual(balancer.port, 80)
- self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
- self.assertEqual(balancer.extra['network_domain_id'], '1234')
- self.assertEqual(balancer.extra['listener_ip_address'], '5.6.7.8')
-
- def test_create_balancer_with_defaults(self):
- self.driver.ex_set_current_network_domain('1234')
-
- balancer = self.driver.create_balancer(
- name='test',
- port=None,
- protocol=None,
- algorithm=None,
- members=None)
- self.assertEqual(balancer.name, 'test')
- self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(balancer.ip, '165.180.12.22')
- self.assertEqual(balancer.port, None)
- self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
- self.assertEqual(balancer.extra['network_domain_id'], '1234')
-
- def test_create_balancer_no_members(self):
- self.driver.ex_set_current_network_domain('1234')
- members = None
-
- balancer = self.driver.create_balancer(
- name='test',
- port=80,
- protocol='http',
- algorithm=Algorithm.ROUND_ROBIN,
- members=members)
- self.assertEqual(balancer.name, 'test')
- self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(balancer.ip, '165.180.12.22')
- self.assertEqual(balancer.port, 80)
- self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
- self.assertEqual(balancer.extra['network_domain_id'], '1234')
-
- def test_create_balancer_empty_members(self):
- self.driver.ex_set_current_network_domain('1234')
- members = []
-
- balancer = self.driver.create_balancer(
- name='test',
- port=80,
- protocol='http',
- algorithm=Algorithm.ROUND_ROBIN,
- members=members)
- self.assertEqual(balancer.name, 'test')
- self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(balancer.ip, '165.180.12.22')
- self.assertEqual(balancer.port, 80)
- self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
- self.assertEqual(balancer.extra['network_domain_id'], '1234')
-
- def test_list_balancers(self):
- bal = self.driver.list_balancers()
- self.assertEqual(bal[0].name, 'myProduction.Virtual.Listener')
- self.assertEqual(bal[0].id, '6115469d-a8bb-445b-bb23-d23b5283f2b9')
- self.assertEqual(bal[0].port, '8899')
- self.assertEqual(bal[0].ip, '165.180.12.22')
- self.assertEqual(bal[0].state, State.RUNNING)
-
- def test_balancer_list_members(self):
- extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- 'network_domain_id': '1234'}
- balancer = LoadBalancer(
- id='234',
- name='test',
- state=State.RUNNING,
- ip='1.2.3.4',
- port=1234,
- driver=self.driver,
- extra=extra
- )
- members = self.driver.balancer_list_members(balancer)
- self.assertEqual(2, len(members))
- self.assertEqual(members[0].ip, '10.0.3.13')
- self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- self.assertEqual(members[0].port, 9889)
-
- def test_balancer_attach_member(self):
- extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- 'network_domain_id': '1234'}
- balancer = LoadBalancer(
- id='234',
- name='test',
- state=State.RUNNING,
- ip='1.2.3.4',
- port=1234,
- driver=self.driver,
- extra=extra
- )
- member = Member(
- id=None,
- ip='112.12.2.2',
- port=80,
- balancer=balancer,
- extra=None)
- member = self.driver.balancer_attach_member(balancer, member)
- self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
-
- def test_balancer_attach_member_without_port(self):
- extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- 'network_domain_id': '1234'}
- balancer = LoadBalancer(
- id='234',
- name='test',
- state=State.RUNNING,
- ip='1.2.3.4',
- port=1234,
- driver=self.driver,
- extra=extra
- )
- member = Member(
- id=None,
- ip='112.12.2.2',
- port=None,
- balancer=balancer,
- extra=None)
- member = self.driver.balancer_attach_member(balancer, member)
- self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- self.assertEqual(member.port, None)
-
- def test_balancer_detach_member(self):
- extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- 'network_domain_id': '1234'}
- balancer = LoadBalancer(
- id='234',
- name='test',
- state=State.RUNNING,
- ip='1.2.3.4',
- port=1234,
- driver=self.driver,
- extra=extra
- )
- member = Member(
- id='3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0',
- ip='112.12.2.2',
- port=80,
- balancer=balancer,
- extra=None)
- result = self.driver.balancer_detach_member(balancer, member)
- self.assertEqual(result, True)
-
- def test_destroy_balancer(self):
- extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- 'network_domain_id': '1234'}
- balancer = LoadBalancer(
- id='234',
- name='test',
- state=State.RUNNING,
- ip='1.2.3.4',
- port=1234,
- driver=self.driver,
- extra=extra
- )
- response = self.driver.destroy_balancer(balancer)
- self.assertEqual(response, True)
-
- def test_set_get_network_domain_id(self):
- self.driver.ex_set_current_network_domain('1234')
- nwd = self.driver.ex_get_current_network_domain()
- self.assertEqual(nwd, '1234')
-
- def test_ex_create_pool_member(self):
- pool = DimensionDataPool(
- id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- name='test',
- description='test',
- status=State.RUNNING,
- health_monitor_id=None,
- load_balance_method=None,
- service_down_action=None,
- slow_ramp_time=None
- )
- node = DimensionDataVIPNode(
- id='2344',
- name='test',
- status=State.RUNNING,
- ip='123.23.3.2'
- )
- member = self.driver.ex_create_pool_member(
- pool=pool,
- node=node,
- port=80
- )
- self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- self.assertEqual(member.name, '10.0.3.13')
- self.assertEqual(member.ip, '123.23.3.2')
-
- def test_ex_create_node(self):
- node = self.driver.ex_create_node(
- network_domain_id='12345',
- name='test',
- ip='123.12.32.2',
- ex_description='',
- connection_limit=25000,
- connection_rate_limit=2000)
- self.assertEqual(node.name, 'myProductionNode.1')
- self.assertEqual(node.id, '9e6b496d-5261-4542-91aa-b50c7f569c54')
-
- def test_ex_create_pool(self, ):
- pool = self.driver.ex_create_pool(
- network_domain_id='1234',
- name='test',
- balancer_method='ROUND_ROBIN',
- ex_description='test',
- service_down_action='NONE',
- slow_ramp_time=30)
- self.assertEqual(pool.id, '9e6b496d-5261-4542-91aa-b50c7f569c54')
- self.assertEqual(pool.name, 'test')
- self.assertEqual(pool.status, State.RUNNING)
-
- def test_ex_create_virtual_listener(self):
- listener = self.driver.ex_create_virtual_listener(
- network_domain_id='12345',
- name='test',
- ex_description='test',
- port=80,
- pool=DimensionDataPool(
- id='1234',
- name='test',
- description='test',
- status=State.RUNNING,
- health_monitor_id=None,
- load_balance_method=None,
- service_down_action=None,
- slow_ramp_time=None
- ))
- self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(listener.name, 'test')
-
- def test_ex_create_virtual_listener_unusual_port(self):
- listener = self.driver.ex_create_virtual_listener(
- network_domain_id='12345',
- name='test',
- ex_description='test',
- port=8900,
- pool=DimensionDataPool(
- id='1234',
- name='test',
- description='test',
- status=State.RUNNING,
- health_monitor_id=None,
- load_balance_method=None,
- service_down_action=None,
- slow_ramp_time=None
- ))
- self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(listener.name, 'test')
-
- def test_ex_create_virtual_listener_without_port(self):
- listener = self.driver.ex_create_virtual_listener(
- network_domain_id='12345',
- name='test',
- ex_description='test',
- pool=DimensionDataPool(
- id='1234',
- name='test',
- description='test',
- status=State.RUNNING,
- health_monitor_id=None,
- load_balance_method=None,
- service_down_action=None,
- slow_ramp_time=None
- ))
- self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(listener.name, 'test')
-
- def test_ex_create_virtual_listener_without_pool(self):
- listener = self.driver.ex_create_virtual_listener(
- network_domain_id='12345',
- name='test',
- ex_description='test')
- self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
- self.assertEqual(listener.name, 'test')
-
- def test_get_balancer(self):
- bal = self.driver.get_balancer('6115469d-a8bb-445b-bb23-d23b5283f2b9')
- self.assertEqual(bal.name, 'myProduction.Virtual.Listener')
- self.assertEqual(bal.id, '6115469d-a8bb-445b-bb23-d23b5283f2b9')
- self.assertEqual(bal.port, '8899')
- self.assertEqual(bal.ip, '165.180.12.22')
- self.assertEqual(bal.state, State.RUNNING)
-
- def test_list_protocols(self):
- protocols = self.driver.list_protocols()
- self.assertNotEqual(0, len(protocols))
-
- def test_ex_get_nodes(self):
- nodes = self.driver.ex_get_nodes()
- self.assertEqual(2, len(nodes))
- self.assertEqual(nodes[0].name, 'ProductionNode.1')
- self.assertEqual(nodes[0].id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
- self.assertEqual(nodes[0].ip, '10.10.10.101')
-
- def test_ex_get_node(self):
- node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
- self.assertEqual(node.name, 'ProductionNode.2')
- self.assertEqual(node.id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
- self.assertEqual(node.ip, '10.10.10.101')
-
- def test_ex_update_node(self):
- node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
- node.connection_limit = '100'
- result = self.driver.ex_update_node(node)
- self.assertEqual(result.connection_limit, '100')
-
- def test_ex_destroy_node(self):
- result = self.driver.ex_destroy_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
- self.assertTrue(result)
-
- def test_ex_set_node_state(self):
- node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
- result = self.driver.ex_set_node_state(node, False)
- self.assertEqual(result.connection_limit, '10000')
-
- def test_ex_get_pools(self):
- pools = self.driver.ex_get_pools()
- self.assertNotEqual(0, len(pools))
- self.assertEqual(pools[0].name, 'myDevelopmentPool.1')
- self.assertEqual(pools[0].id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
-
- def test_ex_get_pool(self):
- pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
- self.assertEqual(pool.name, 'myDevelopmentPool.1')
- self.assertEqual(pool.id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
-
- def test_ex_update_pool(self):
- pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
- pool.slow_ramp_time = '120'
- result = self.driver.ex_update_pool(pool)
- self.assertTrue(result)
-
- def test_ex_destroy_pool(self):
- response = self.driver.ex_destroy_pool(
- pool=DimensionDataPool(
- id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
- name='test',
- description='test',
- status=State.RUNNING,
- health_monitor_id=None,
- load_balance_method=None,
- service_down_action=None,
- slow_ramp_time=None))
- self.assertTrue(response)
-
- def test_get_pool_members(self):
- members = self.driver.ex_get_pool_members('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
- self.assertEqual(2, len(members))
- self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- self.assertEqual(members[0].name, '10.0.3.13')
- self.assertEqual(members[0].status, 'NORMAL')
- self.assertEqual(members[0].ip, '10.0.3.13')
- self.assertEqual(members[0].port, 9889)
- self.assertEqual(members[0].node_id, '3c207269-e75e-11e4-811f-005056806999')
-
- def test_get_pool_member(self):
- member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- self.assertEqual(member.name, '10.0.3.13')
- self.assertEqual(member.status, 'NORMAL')
- self.assertEqual(member.ip, '10.0.3.13')
- self.assertEqual(member.port, 9889)
-
- def test_set_pool_member_state(self):
- member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
- result = self.driver.ex_set_pool_member_state(member, True)
- self.assertTrue(result)
-
- def test_ex_destroy_pool_member(self):
- response = self.driver.ex_destroy_pool_member(
- member=DimensionDataPoolMember(
- id='',
- name='test',
- status=State.RUNNING,
- ip='1.2.3.4',
- port=80,
- node_id='3c207269-e75e-11e4-811f-005056806999'),
- destroy_node=False)
- self.assertTrue(response)
-
- def test_ex_destroy_pool_member_with_node(self):
- response = self.driver.ex_destroy_pool_member(
- member=DimensionDataPoolMember(
- id='',
- name='test',
- status=State.RUNNING,
- ip='1.2.3.4',
- port=80,
- node_id='34de6ed6-46a4-4dae-a753-2f8d3840c6f9'),
- destroy_node=True)
- self.assertTrue(response)
-
- def test_ex_get_default_health_monitors(self):
- monitors = self.driver.ex_get_default_health_monitors(
- '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
- )
- self.assertEqual(len(monitors), 6)
- self.assertEqual(monitors[0].id, '01683574-d487-11e4-811f-005056806999')
- self.assertEqual(monitors[0].name, 'CCDEFAULT.Http')
- self.assertFalse(monitors[0].node_compatible)
- self.assertTrue(monitors[0].pool_compatible)
-
- def test_ex_get_default_persistence_profiles(self):
- profiles = self.driver.ex_get_default_persistence_profiles(
- '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
- )
- self.assertEqual(len(profiles), 4)
- self.assertEqual(profiles[0].id, 'a34ca024-f3db-11e4-b010-005056806999')
- self.assertEqual(profiles[0].name, 'CCDEFAULT.Cookie')
- self.assertEqual(profiles[0].fallback_compatible, False)
- self.assertEqual(len(profiles[0].compatible_listeners), 1)
- self.assertEqual(profiles[0].compatible_listeners[0].type, 'PERFORMANCE_LAYER_4')
-
- def test_ex_get_default_irules(self):
- irules = self.driver.ex_get_default_irules(
- '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
- )
- self.assertEqual(len(irules), 4)
- self.assertEqual(irules[0].id, '2b20cb2c-ffdc-11e4-b010-005056806999')
- self.assertEqual(irules[0].name, 'CCDEFAULT.HttpsRedirect')
- self.assertEqual(len(irules[0].compatible_listeners), 1)
- self.assertEqual(irules[0].compatible_listeners[0].type, 'PERFORMANCE_LAYER_4')
-
-
-class DimensionDataMockHttp(MockHttp):
-
- fixtures = LoadBalancerFileFixtures('dimensiondata')
-
- def _oec_0_9_myaccount_UNAUTHORIZED(self, method, url, body, headers):
- return (httplib.UNAUTHORIZED, "", {}, httplib.responses[httplib.UNAUTHORIZED])
-
- def _oec_0_9_myaccount(self, method, url, body, headers):
- body = self.fixtures.load('oec_0_9_myaccount.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _oec_0_9_myaccount_INPROGRESS(self, method, url, body, headers):
- body = self.fixtures.load('oec_0_9_myaccount.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_virtualListener(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_virtualListener.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_virtualListener_6115469d_a8bb_445b_bb23_d23b5283f2b9(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_virtualListener_6115469d_a8bb_445b_bb23_d23b5283f2b9.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_pool(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_pool.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_pool_4d360b1f_bc2c_4ab7_9884_1f03ba2768f7(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_pool_4d360b1f_bc2c_4ab7_9884_1f03ba2768f7.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_poolMember(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_poolMember.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_poolMember_3dd806a2_c2c8_4c0c_9a4f_5219ea9266c0(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_poolMember_3dd806a2_c2c8_4c0c_9a4f_5219ea9266c0.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createPool(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_createPool.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createNode(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_createNode.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_addPoolMember(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_addPoolMember.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createVirtualListener(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_createVirtualListener.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_removePoolMember(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_removePoolMember.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deleteVirtualListener(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_deleteVirtualListener.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deletePool(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_deletePool.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deleteNode(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_deleteNode.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_node.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_editNode.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_editPool.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_editPoolMember.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultHealthMonitor(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_defaultHealthMonitor.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultPersistenceProfile(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_defaultPersistenceProfile.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
- def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultIrule(self, method, url, body, headers):
- body = self.fixtures.load(
- 'networkDomainVip_defaultIrule.xml')
- return (httplib.OK, body, {}, httplib.responses[httplib.OK])
-
-if __name__ == '__main__':
- sys.exit(unittest.main())
http://git-wip-us.apache.org/repos/asf/libcloud/blob/bb1b8104/libcloud/test/loadbalancer/test_dimensiondata_v2_3.py
----------------------------------------------------------------------
diff --git a/libcloud/test/loadbalancer/test_dimensiondata_v2_3.py b/libcloud/test/loadbalancer/test_dimensiondata_v2_3.py
new file mode 100644
index 0000000..c609e3d
--- /dev/null
+++ b/libcloud/test/loadbalancer/test_dimensiondata_v2_3.py
@@ -0,0 +1,620 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import sys
+from libcloud.utils.py3 import httplib
+
+from libcloud.common.types import InvalidCredsError
+from libcloud.common.dimensiondata import DimensionDataVIPNode, DimensionDataPool
+from libcloud.common.dimensiondata import DimensionDataPoolMember
+from libcloud.loadbalancer.base import LoadBalancer, Member, Algorithm
+from libcloud.loadbalancer.drivers.dimensiondata \
+ import DimensionDataLBDriver as DimensionData
+from libcloud.loadbalancer.types import State
+
+from libcloud.test import MockHttp, unittest
+from libcloud.test.file_fixtures import LoadBalancerFileFixtures
+
+from libcloud.test.secrets import DIMENSIONDATA_PARAMS
+
+
+class DimensionDataTests(unittest.TestCase):
+
+ def setUp(self):
+ DimensionData.connectionCls.active_api_version = '2.3'
+ DimensionData.connectionCls.conn_classes = (None, DimensionDataMockHttp)
+ DimensionDataMockHttp.type = None
+ self.driver = DimensionData(*DIMENSIONDATA_PARAMS)
+
+ def test_invalid_region(self):
+ with self.assertRaises(ValueError):
+ self.driver = DimensionData(*DIMENSIONDATA_PARAMS, region='blah')
+
+ def test_invalid_creds(self):
+ DimensionDataMockHttp.type = 'UNAUTHORIZED'
+ with self.assertRaises(InvalidCredsError):
+ self.driver.list_balancers()
+
+ def test_create_balancer(self):
+ self.driver.ex_set_current_network_domain('1234')
+ members = []
+ members.append(Member(
+ id=None,
+ ip='1.2.3.4',
+ port=80))
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=80,
+ protocol='http',
+ algorithm=Algorithm.ROUND_ROBIN,
+ members=members,
+ ex_listener_ip_address='5.6.7.8')
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, 80)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+ self.assertEqual(balancer.extra['listener_ip_address'], '5.6.7.8')
+
+ def test_create_balancer_with_defaults(self):
+ self.driver.ex_set_current_network_domain('1234')
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=None,
+ protocol=None,
+ algorithm=None,
+ members=None)
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, None)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+
+ def test_create_balancer_no_members(self):
+ self.driver.ex_set_current_network_domain('1234')
+ members = None
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=80,
+ protocol='http',
+ algorithm=Algorithm.ROUND_ROBIN,
+ members=members)
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, 80)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+
+ def test_create_balancer_empty_members(self):
+ self.driver.ex_set_current_network_domain('1234')
+ members = []
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=80,
+ protocol='http',
+ algorithm=Algorithm.ROUND_ROBIN,
+ members=members)
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, 80)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+
+ def test_list_balancers(self):
+ bal = self.driver.list_balancers()
+ self.assertEqual(bal[0].name, 'myProduction.Virtual.Listener')
+ self.assertEqual(bal[0].id, '6115469d-a8bb-445b-bb23-d23b5283f2b9')
+ self.assertEqual(bal[0].port, '8899')
+ self.assertEqual(bal[0].ip, '165.180.12.22')
+ self.assertEqual(bal[0].state, State.RUNNING)
+
+ def test_balancer_list_members(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ members = self.driver.balancer_list_members(balancer)
+ self.assertEqual(2, len(members))
+ self.assertEqual(members[0].ip, '10.0.3.13')
+ self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(members[0].port, 9889)
+
+ def test_balancer_attach_member(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ member = Member(
+ id=None,
+ ip='112.12.2.2',
+ port=80,
+ balancer=balancer,
+ extra=None)
+ member = self.driver.balancer_attach_member(balancer, member)
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+
+ def test_balancer_attach_member_without_port(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ member = Member(
+ id=None,
+ ip='112.12.2.2',
+ port=None,
+ balancer=balancer,
+ extra=None)
+ member = self.driver.balancer_attach_member(balancer, member)
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.port, None)
+
+ def test_balancer_detach_member(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ member = Member(
+ id='3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0',
+ ip='112.12.2.2',
+ port=80,
+ balancer=balancer,
+ extra=None)
+ result = self.driver.balancer_detach_member(balancer, member)
+ self.assertEqual(result, True)
+
+ def test_destroy_balancer(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ response = self.driver.destroy_balancer(balancer)
+ self.assertEqual(response, True)
+
+ def test_set_get_network_domain_id(self):
+ self.driver.ex_set_current_network_domain('1234')
+ nwd = self.driver.ex_get_current_network_domain()
+ self.assertEqual(nwd, '1234')
+
+ def test_ex_create_pool_member(self):
+ pool = DimensionDataPool(
+ id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ )
+ node = DimensionDataVIPNode(
+ id='2344',
+ name='test',
+ status=State.RUNNING,
+ ip='123.23.3.2'
+ )
+ member = self.driver.ex_create_pool_member(
+ pool=pool,
+ node=node,
+ port=80
+ )
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.name, '10.0.3.13')
+ self.assertEqual(member.ip, '123.23.3.2')
+
+ def test_ex_create_node(self):
+ node = self.driver.ex_create_node(
+ network_domain_id='12345',
+ name='test',
+ ip='123.12.32.2',
+ ex_description='',
+ connection_limit=25000,
+ connection_rate_limit=2000)
+ self.assertEqual(node.name, 'myProductionNode.1')
+ self.assertEqual(node.id, '9e6b496d-5261-4542-91aa-b50c7f569c54')
+
+ def test_ex_create_pool(self, ):
+ pool = self.driver.ex_create_pool(
+ network_domain_id='1234',
+ name='test',
+ balancer_method='ROUND_ROBIN',
+ ex_description='test',
+ service_down_action='NONE',
+ slow_ramp_time=30)
+ self.assertEqual(pool.id, '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(pool.name, 'test')
+ self.assertEqual(pool.status, State.RUNNING)
+
+ def test_ex_create_virtual_listener(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test',
+ port=80,
+ pool=DimensionDataPool(
+ id='1234',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ ))
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_ex_create_virtual_listener_unusual_port(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test',
+ port=8900,
+ pool=DimensionDataPool(
+ id='1234',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ ))
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_ex_create_virtual_listener_without_port(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test',
+ pool=DimensionDataPool(
+ id='1234',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ ))
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_ex_create_virtual_listener_without_pool(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test')
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_get_balancer(self):
+ bal = self.driver.get_balancer('6115469d-a8bb-445b-bb23-d23b5283f2b9')
+ self.assertEqual(bal.name, 'myProduction.Virtual.Listener')
+ self.assertEqual(bal.id, '6115469d-a8bb-445b-bb23-d23b5283f2b9')
+ self.assertEqual(bal.port, '8899')
+ self.assertEqual(bal.ip, '165.180.12.22')
+ self.assertEqual(bal.state, State.RUNNING)
+
+ def test_list_protocols(self):
+ protocols = self.driver.list_protocols()
+ self.assertNotEqual(0, len(protocols))
+
+ def test_ex_get_nodes(self):
+ nodes = self.driver.ex_get_nodes()
+ self.assertEqual(2, len(nodes))
+ self.assertEqual(nodes[0].name, 'ProductionNode.1')
+ self.assertEqual(nodes[0].id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertEqual(nodes[0].ip, '10.10.10.101')
+
+ def test_ex_get_node(self):
+ node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertEqual(node.name, 'ProductionNode.2')
+ self.assertEqual(node.id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertEqual(node.ip, '10.10.10.101')
+
+ def test_ex_update_node(self):
+ node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ node.connection_limit = '100'
+ result = self.driver.ex_update_node(node)
+ self.assertEqual(result.connection_limit, '100')
+
+ def test_ex_destroy_node(self):
+ result = self.driver.ex_destroy_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertTrue(result)
+
+ def test_ex_set_node_state(self):
+ node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ result = self.driver.ex_set_node_state(node, False)
+ self.assertEqual(result.connection_limit, '10000')
+
+ def test_ex_get_pools(self):
+ pools = self.driver.ex_get_pools()
+ self.assertNotEqual(0, len(pools))
+ self.assertEqual(pools[0].name, 'myDevelopmentPool.1')
+ self.assertEqual(pools[0].id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+
+ def test_ex_get_pool(self):
+ pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+ self.assertEqual(pool.name, 'myDevelopmentPool.1')
+ self.assertEqual(pool.id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+
+ def test_ex_update_pool(self):
+ pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+ pool.slow_ramp_time = '120'
+ result = self.driver.ex_update_pool(pool)
+ self.assertTrue(result)
+
+ def test_ex_destroy_pool(self):
+ response = self.driver.ex_destroy_pool(
+ pool=DimensionDataPool(
+ id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None))
+ self.assertTrue(response)
+
+ def test_get_pool_members(self):
+ members = self.driver.ex_get_pool_members('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+ self.assertEqual(2, len(members))
+ self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(members[0].name, '10.0.3.13')
+ self.assertEqual(members[0].status, 'NORMAL')
+ self.assertEqual(members[0].ip, '10.0.3.13')
+ self.assertEqual(members[0].port, 9889)
+ self.assertEqual(members[0].node_id, '3c207269-e75e-11e4-811f-005056806999')
+
+ def test_get_pool_member(self):
+ member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.name, '10.0.3.13')
+ self.assertEqual(member.status, 'NORMAL')
+ self.assertEqual(member.ip, '10.0.3.13')
+ self.assertEqual(member.port, 9889)
+
+ def test_set_pool_member_state(self):
+ member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ result = self.driver.ex_set_pool_member_state(member, True)
+ self.assertTrue(result)
+
+ def test_ex_destroy_pool_member(self):
+ response = self.driver.ex_destroy_pool_member(
+ member=DimensionDataPoolMember(
+ id='',
+ name='test',
+ status=State.RUNNING,
+ ip='1.2.3.4',
+ port=80,
+ node_id='3c207269-e75e-11e4-811f-005056806999'),
+ destroy_node=False)
+ self.assertTrue(response)
+
+ def test_ex_destroy_pool_member_with_node(self):
+ response = self.driver.ex_destroy_pool_member(
+ member=DimensionDataPoolMember(
+ id='',
+ name='test',
+ status=State.RUNNING,
+ ip='1.2.3.4',
+ port=80,
+ node_id='34de6ed6-46a4-4dae-a753-2f8d3840c6f9'),
+ destroy_node=True)
+ self.assertTrue(response)
+
+ def test_ex_get_default_health_monitors(self):
+ monitors = self.driver.ex_get_default_health_monitors(
+ '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
+ )
+ self.assertEqual(len(monitors), 6)
+ self.assertEqual(monitors[0].id, '01683574-d487-11e4-811f-005056806999')
+ self.assertEqual(monitors[0].name, 'CCDEFAULT.Http')
+ self.assertFalse(monitors[0].node_compatible)
+ self.assertTrue(monitors[0].pool_compatible)
+
+ def test_ex_get_default_persistence_profiles(self):
+ profiles = self.driver.ex_get_default_persistence_profiles(
+ '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
+ )
+ self.assertEqual(len(profiles), 4)
+ self.assertEqual(profiles[0].id, 'a34ca024-f3db-11e4-b010-005056806999')
+ self.assertEqual(profiles[0].name, 'CCDEFAULT.Cookie')
+ self.assertEqual(profiles[0].fallback_compatible, False)
+ self.assertEqual(len(profiles[0].compatible_listeners), 1)
+ self.assertEqual(profiles[0].compatible_listeners[0].type, 'PERFORMANCE_LAYER_4')
+
+ def test_ex_get_default_irules(self):
+ irules = self.driver.ex_get_default_irules(
+ '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
+ )
+ self.assertEqual(len(irules), 4)
+ self.assertEqual(irules[0].id, '2b20cb2c-ffdc-11e4-b010-005056806999')
+ self.assertEqual(irules[0].name, 'CCDEFAULT.HttpsRedirect')
+ self.assertEqual(len(irules[0].compatible_listeners), 1)
+ self.assertEqual(irules[0].compatible_listeners[0].type, 'PERFORMANCE_LAYER_4')
+
+
+class DimensionDataMockHttp(MockHttp):
+
+ fixtures = LoadBalancerFileFixtures('dimensiondata')
+
+ def _oec_0_9_myaccount_UNAUTHORIZED(self, method, url, body, headers):
+ return (httplib.UNAUTHORIZED, "", {}, httplib.responses[httplib.UNAUTHORIZED])
+
+ def _oec_0_9_myaccount(self, method, url, body, headers):
+ body = self.fixtures.load('oec_0_9_myaccount.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _oec_0_9_myaccount_INPROGRESS(self, method, url, body, headers):
+ body = self.fixtures.load('oec_0_9_myaccount.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_virtualListener(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_virtualListener.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_virtualListener_6115469d_a8bb_445b_bb23_d23b5283f2b9(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_virtualListener_6115469d_a8bb_445b_bb23_d23b5283f2b9.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_pool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_pool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_pool_4d360b1f_bc2c_4ab7_9884_1f03ba2768f7(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_pool_4d360b1f_bc2c_4ab7_9884_1f03ba2768f7.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_poolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_poolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_poolMember_3dd806a2_c2c8_4c0c_9a4f_5219ea9266c0(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_poolMember_3dd806a2_c2c8_4c0c_9a4f_5219ea9266c0.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createPool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_createPool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createNode(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_createNode.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_addPoolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_addPoolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createVirtualListener(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_createVirtualListener.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_removePoolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_removePoolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deleteVirtualListener(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_deleteVirtualListener.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deletePool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_deletePool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deleteNode(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_deleteNode.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_node.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_editNode.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_editPool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_editPoolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultHealthMonitor(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_defaultHealthMonitor.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultPersistenceProfile(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_defaultPersistenceProfile.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_3_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultIrule(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_defaultIrule.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+if __name__ == '__main__':
+ sys.exit(unittest.main())
http://git-wip-us.apache.org/repos/asf/libcloud/blob/bb1b8104/libcloud/test/loadbalancer/test_dimensiondata_v2_4.py
----------------------------------------------------------------------
diff --git a/libcloud/test/loadbalancer/test_dimensiondata_v2_4.py b/libcloud/test/loadbalancer/test_dimensiondata_v2_4.py
new file mode 100644
index 0000000..e3f7217
--- /dev/null
+++ b/libcloud/test/loadbalancer/test_dimensiondata_v2_4.py
@@ -0,0 +1,620 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import sys
+from libcloud.utils.py3 import httplib
+
+from libcloud.common.types import InvalidCredsError
+from libcloud.common.dimensiondata import DimensionDataVIPNode, DimensionDataPool
+from libcloud.common.dimensiondata import DimensionDataPoolMember
+from libcloud.loadbalancer.base import LoadBalancer, Member, Algorithm
+from libcloud.loadbalancer.drivers.dimensiondata \
+ import DimensionDataLBDriver as DimensionData
+from libcloud.loadbalancer.types import State
+
+from libcloud.test import MockHttp, unittest
+from libcloud.test.file_fixtures import LoadBalancerFileFixtures
+
+from libcloud.test.secrets import DIMENSIONDATA_PARAMS
+
+
+class DimensionDataTests(unittest.TestCase):
+
+ def setUp(self):
+ DimensionData.connectionCls.active_api_version = '2.4'
+ DimensionData.connectionCls.conn_classes = (None, DimensionDataMockHttp)
+ DimensionDataMockHttp.type = None
+ self.driver = DimensionData(*DIMENSIONDATA_PARAMS)
+
+ def test_invalid_region(self):
+ with self.assertRaises(ValueError):
+ self.driver = DimensionData(*DIMENSIONDATA_PARAMS, region='blah')
+
+ def test_invalid_creds(self):
+ DimensionDataMockHttp.type = 'UNAUTHORIZED'
+ with self.assertRaises(InvalidCredsError):
+ self.driver.list_balancers()
+
+ def test_create_balancer(self):
+ self.driver.ex_set_current_network_domain('1234')
+ members = []
+ members.append(Member(
+ id=None,
+ ip='1.2.3.4',
+ port=80))
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=80,
+ protocol='http',
+ algorithm=Algorithm.ROUND_ROBIN,
+ members=members,
+ ex_listener_ip_address='5.6.7.8')
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, 80)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+ self.assertEqual(balancer.extra['listener_ip_address'], '5.6.7.8')
+
+ def test_create_balancer_with_defaults(self):
+ self.driver.ex_set_current_network_domain('1234')
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=None,
+ protocol=None,
+ algorithm=None,
+ members=None)
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, None)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+
+ def test_create_balancer_no_members(self):
+ self.driver.ex_set_current_network_domain('1234')
+ members = None
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=80,
+ protocol='http',
+ algorithm=Algorithm.ROUND_ROBIN,
+ members=members)
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, 80)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+
+ def test_create_balancer_empty_members(self):
+ self.driver.ex_set_current_network_domain('1234')
+ members = []
+
+ balancer = self.driver.create_balancer(
+ name='test',
+ port=80,
+ protocol='http',
+ algorithm=Algorithm.ROUND_ROBIN,
+ members=members)
+ self.assertEqual(balancer.name, 'test')
+ self.assertEqual(balancer.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(balancer.ip, '165.180.12.22')
+ self.assertEqual(balancer.port, 80)
+ self.assertEqual(balancer.extra['pool_id'], '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(balancer.extra['network_domain_id'], '1234')
+
+ def test_list_balancers(self):
+ bal = self.driver.list_balancers()
+ self.assertEqual(bal[0].name, 'myProduction.Virtual.Listener')
+ self.assertEqual(bal[0].id, '6115469d-a8bb-445b-bb23-d23b5283f2b9')
+ self.assertEqual(bal[0].port, '8899')
+ self.assertEqual(bal[0].ip, '165.180.12.22')
+ self.assertEqual(bal[0].state, State.RUNNING)
+
+ def test_balancer_list_members(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ members = self.driver.balancer_list_members(balancer)
+ self.assertEqual(2, len(members))
+ self.assertEqual(members[0].ip, '10.0.3.13')
+ self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(members[0].port, 9889)
+
+ def test_balancer_attach_member(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ member = Member(
+ id=None,
+ ip='112.12.2.2',
+ port=80,
+ balancer=balancer,
+ extra=None)
+ member = self.driver.balancer_attach_member(balancer, member)
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+
+ def test_balancer_attach_member_without_port(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ member = Member(
+ id=None,
+ ip='112.12.2.2',
+ port=None,
+ balancer=balancer,
+ extra=None)
+ member = self.driver.balancer_attach_member(balancer, member)
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.port, None)
+
+ def test_balancer_detach_member(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ member = Member(
+ id='3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0',
+ ip='112.12.2.2',
+ port=80,
+ balancer=balancer,
+ extra=None)
+ result = self.driver.balancer_detach_member(balancer, member)
+ self.assertEqual(result, True)
+
+ def test_destroy_balancer(self):
+ extra = {'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ 'network_domain_id': '1234'}
+ balancer = LoadBalancer(
+ id='234',
+ name='test',
+ state=State.RUNNING,
+ ip='1.2.3.4',
+ port=1234,
+ driver=self.driver,
+ extra=extra
+ )
+ response = self.driver.destroy_balancer(balancer)
+ self.assertEqual(response, True)
+
+ def test_set_get_network_domain_id(self):
+ self.driver.ex_set_current_network_domain('1234')
+ nwd = self.driver.ex_get_current_network_domain()
+ self.assertEqual(nwd, '1234')
+
+ def test_ex_create_pool_member(self):
+ pool = DimensionDataPool(
+ id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ )
+ node = DimensionDataVIPNode(
+ id='2344',
+ name='test',
+ status=State.RUNNING,
+ ip='123.23.3.2'
+ )
+ member = self.driver.ex_create_pool_member(
+ pool=pool,
+ node=node,
+ port=80
+ )
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.name, '10.0.3.13')
+ self.assertEqual(member.ip, '123.23.3.2')
+
+ def test_ex_create_node(self):
+ node = self.driver.ex_create_node(
+ network_domain_id='12345',
+ name='test',
+ ip='123.12.32.2',
+ ex_description='',
+ connection_limit=25000,
+ connection_rate_limit=2000)
+ self.assertEqual(node.name, 'myProductionNode.1')
+ self.assertEqual(node.id, '9e6b496d-5261-4542-91aa-b50c7f569c54')
+
+ def test_ex_create_pool(self, ):
+ pool = self.driver.ex_create_pool(
+ network_domain_id='1234',
+ name='test',
+ balancer_method='ROUND_ROBIN',
+ ex_description='test',
+ service_down_action='NONE',
+ slow_ramp_time=30)
+ self.assertEqual(pool.id, '9e6b496d-5261-4542-91aa-b50c7f569c54')
+ self.assertEqual(pool.name, 'test')
+ self.assertEqual(pool.status, State.RUNNING)
+
+ def test_ex_create_virtual_listener(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test',
+ port=80,
+ pool=DimensionDataPool(
+ id='1234',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ ))
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_ex_create_virtual_listener_unusual_port(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test',
+ port=8900,
+ pool=DimensionDataPool(
+ id='1234',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ ))
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_ex_create_virtual_listener_without_port(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test',
+ pool=DimensionDataPool(
+ id='1234',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None
+ ))
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_ex_create_virtual_listener_without_pool(self):
+ listener = self.driver.ex_create_virtual_listener(
+ network_domain_id='12345',
+ name='test',
+ ex_description='test')
+ self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea')
+ self.assertEqual(listener.name, 'test')
+
+ def test_get_balancer(self):
+ bal = self.driver.get_balancer('6115469d-a8bb-445b-bb23-d23b5283f2b9')
+ self.assertEqual(bal.name, 'myProduction.Virtual.Listener')
+ self.assertEqual(bal.id, '6115469d-a8bb-445b-bb23-d23b5283f2b9')
+ self.assertEqual(bal.port, '8899')
+ self.assertEqual(bal.ip, '165.180.12.22')
+ self.assertEqual(bal.state, State.RUNNING)
+
+ def test_list_protocols(self):
+ protocols = self.driver.list_protocols()
+ self.assertNotEqual(0, len(protocols))
+
+ def test_ex_get_nodes(self):
+ nodes = self.driver.ex_get_nodes()
+ self.assertEqual(2, len(nodes))
+ self.assertEqual(nodes[0].name, 'ProductionNode.1')
+ self.assertEqual(nodes[0].id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertEqual(nodes[0].ip, '10.10.10.101')
+
+ def test_ex_get_node(self):
+ node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertEqual(node.name, 'ProductionNode.2')
+ self.assertEqual(node.id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertEqual(node.ip, '10.10.10.101')
+
+ def test_ex_update_node(self):
+ node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ node.connection_limit = '100'
+ result = self.driver.ex_update_node(node)
+ self.assertEqual(result.connection_limit, '100')
+
+ def test_ex_destroy_node(self):
+ result = self.driver.ex_destroy_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ self.assertTrue(result)
+
+ def test_ex_set_node_state(self):
+ node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9')
+ result = self.driver.ex_set_node_state(node, False)
+ self.assertEqual(result.connection_limit, '10000')
+
+ def test_ex_get_pools(self):
+ pools = self.driver.ex_get_pools()
+ self.assertNotEqual(0, len(pools))
+ self.assertEqual(pools[0].name, 'myDevelopmentPool.1')
+ self.assertEqual(pools[0].id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+
+ def test_ex_get_pool(self):
+ pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+ self.assertEqual(pool.name, 'myDevelopmentPool.1')
+ self.assertEqual(pool.id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+
+ def test_ex_update_pool(self):
+ pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+ pool.slow_ramp_time = '120'
+ result = self.driver.ex_update_pool(pool)
+ self.assertTrue(result)
+
+ def test_ex_destroy_pool(self):
+ response = self.driver.ex_destroy_pool(
+ pool=DimensionDataPool(
+ id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
+ name='test',
+ description='test',
+ status=State.RUNNING,
+ health_monitor_id=None,
+ load_balance_method=None,
+ service_down_action=None,
+ slow_ramp_time=None))
+ self.assertTrue(response)
+
+ def test_get_pool_members(self):
+ members = self.driver.ex_get_pool_members('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7')
+ self.assertEqual(2, len(members))
+ self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(members[0].name, '10.0.3.13')
+ self.assertEqual(members[0].status, 'NORMAL')
+ self.assertEqual(members[0].ip, '10.0.3.13')
+ self.assertEqual(members[0].port, 9889)
+ self.assertEqual(members[0].node_id, '3c207269-e75e-11e4-811f-005056806999')
+
+ def test_get_pool_member(self):
+ member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ self.assertEqual(member.name, '10.0.3.13')
+ self.assertEqual(member.status, 'NORMAL')
+ self.assertEqual(member.ip, '10.0.3.13')
+ self.assertEqual(member.port, 9889)
+
+ def test_set_pool_member_state(self):
+ member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
+ result = self.driver.ex_set_pool_member_state(member, True)
+ self.assertTrue(result)
+
+ def test_ex_destroy_pool_member(self):
+ response = self.driver.ex_destroy_pool_member(
+ member=DimensionDataPoolMember(
+ id='',
+ name='test',
+ status=State.RUNNING,
+ ip='1.2.3.4',
+ port=80,
+ node_id='3c207269-e75e-11e4-811f-005056806999'),
+ destroy_node=False)
+ self.assertTrue(response)
+
+ def test_ex_destroy_pool_member_with_node(self):
+ response = self.driver.ex_destroy_pool_member(
+ member=DimensionDataPoolMember(
+ id='',
+ name='test',
+ status=State.RUNNING,
+ ip='1.2.3.4',
+ port=80,
+ node_id='34de6ed6-46a4-4dae-a753-2f8d3840c6f9'),
+ destroy_node=True)
+ self.assertTrue(response)
+
+ def test_ex_get_default_health_monitors(self):
+ monitors = self.driver.ex_get_default_health_monitors(
+ '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
+ )
+ self.assertEqual(len(monitors), 6)
+ self.assertEqual(monitors[0].id, '01683574-d487-11e4-811f-005056806999')
+ self.assertEqual(monitors[0].name, 'CCDEFAULT.Http')
+ self.assertFalse(monitors[0].node_compatible)
+ self.assertTrue(monitors[0].pool_compatible)
+
+ def test_ex_get_default_persistence_profiles(self):
+ profiles = self.driver.ex_get_default_persistence_profiles(
+ '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
+ )
+ self.assertEqual(len(profiles), 4)
+ self.assertEqual(profiles[0].id, 'a34ca024-f3db-11e4-b010-005056806999')
+ self.assertEqual(profiles[0].name, 'CCDEFAULT.Cookie')
+ self.assertEqual(profiles[0].fallback_compatible, False)
+ self.assertEqual(len(profiles[0].compatible_listeners), 1)
+ self.assertEqual(profiles[0].compatible_listeners[0].type, 'PERFORMANCE_LAYER_4')
+
+ def test_ex_get_default_irules(self):
+ irules = self.driver.ex_get_default_irules(
+ '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7'
+ )
+ self.assertEqual(len(irules), 4)
+ self.assertEqual(irules[0].id, '2b20cb2c-ffdc-11e4-b010-005056806999')
+ self.assertEqual(irules[0].name, 'CCDEFAULT.HttpsRedirect')
+ self.assertEqual(len(irules[0].compatible_listeners), 1)
+ self.assertEqual(irules[0].compatible_listeners[0].type, 'PERFORMANCE_LAYER_4')
+
+
+class DimensionDataMockHttp(MockHttp):
+
+ fixtures = LoadBalancerFileFixtures('dimensiondata')
+
+ def _oec_0_9_myaccount_UNAUTHORIZED(self, method, url, body, headers):
+ return (httplib.UNAUTHORIZED, "", {}, httplib.responses[httplib.UNAUTHORIZED])
+
+ def _oec_0_9_myaccount(self, method, url, body, headers):
+ body = self.fixtures.load('oec_0_9_myaccount.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _oec_0_9_myaccount_INPROGRESS(self, method, url, body, headers):
+ body = self.fixtures.load('oec_0_9_myaccount.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_virtualListener(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_virtualListener.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_virtualListener_6115469d_a8bb_445b_bb23_d23b5283f2b9(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_virtualListener_6115469d_a8bb_445b_bb23_d23b5283f2b9.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_pool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_pool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_pool_4d360b1f_bc2c_4ab7_9884_1f03ba2768f7(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_pool_4d360b1f_bc2c_4ab7_9884_1f03ba2768f7.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_poolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_poolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_poolMember_3dd806a2_c2c8_4c0c_9a4f_5219ea9266c0(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_poolMember_3dd806a2_c2c8_4c0c_9a4f_5219ea9266c0.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createPool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_createPool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createNode(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_createNode.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_addPoolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_addPoolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_createVirtualListener(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_createVirtualListener.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_removePoolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_removePoolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deleteVirtualListener(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_deleteVirtualListener.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deletePool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_deletePool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_deleteNode(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_deleteNode.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_node.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_editNode.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_editPool.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_editPoolMember.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultHealthMonitor(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_defaultHealthMonitor.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultPersistenceProfile(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_defaultPersistenceProfile.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_defaultIrule(self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'networkDomainVip_defaultIrule.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+if __name__ == '__main__':
+ sys.exit(unittest.main())