Added examples to the test/compute/examples/nttcis directory. Start working on loadbalancer test, test_nttcis.py
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/c05f59a2 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/c05f59a2 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/c05f59a2 Branch: refs/heads/trunk Commit: c05f59a2b6463a3074ba1b4c17277b3d4242c2c9 Parents: 43d324d Author: mitch <[email protected]> Authored: Sun Oct 21 12:49:17 2018 -0400 Committer: mitch <[email protected]> Committed: Sun Oct 21 12:49:17 2018 -0400 ---------------------------------------------------------------------- .../Firewall_Create_Complex_Firewall_Rule.py | 2 +- .../nttcis/Firewall_Create_Simple_Rule.py | 2 +- .../nttcis/Nodes_Create_mcp2_Customized.py | 26 + libcloud/common/nttcis.py | 3 +- libcloud/test/loadbalancer/test_nttcis.py | 620 +++++++++++++++++++ tests/lib_create_test.py | 26 +- tests/lib_list_test.py | 5 + 7 files changed, 679 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/c05f59a2/docs/examples/compute/nttcis/Firewall_Create_Complex_Firewall_Rule.py ---------------------------------------------------------------------- diff --git a/docs/examples/compute/nttcis/Firewall_Create_Complex_Firewall_Rule.py b/docs/examples/compute/nttcis/Firewall_Create_Complex_Firewall_Rule.py index cc7f8f5..c96a0ca 100644 --- a/docs/examples/compute/nttcis/Firewall_Create_Complex_Firewall_Rule.py +++ b/docs/examples/compute/nttcis/Firewall_Create_Complex_Firewall_Rule.py @@ -4,7 +4,7 @@ from libcloud.compute.providers import get_driver from libcloud.common.nttcis import NttCisFirewallAddress, NttCisIpAddress, NttCisPort import libcloud.security -# Get dimension data driver +# Get nttcis driver libcloud.security.VERIFY_SSL_CERT = True cls = get_driver(Provider.NTTCIS) driver = cls('myusername', 'mypassword', region='eu') http://git-wip-us.apache.org/repos/asf/libcloud/blob/c05f59a2/docs/examples/compute/nttcis/Firewall_Create_Simple_Rule.py ---------------------------------------------------------------------- diff --git a/docs/examples/compute/nttcis/Firewall_Create_Simple_Rule.py b/docs/examples/compute/nttcis/Firewall_Create_Simple_Rule.py index a14fd6e..d19ffd8 100644 --- a/docs/examples/compute/nttcis/Firewall_Create_Simple_Rule.py +++ b/docs/examples/compute/nttcis/Firewall_Create_Simple_Rule.py @@ -4,7 +4,7 @@ from libcloud.compute.providers import get_driver from libcloud.common.nttcis import NttCisFirewallAddress, NttCisIpAddress, NttCisPort import libcloud.security -# Get dimension data driver +# Get nttcis driver libcloud.security.VERIFY_SSL_CERT = True cls = get_driver(Provider.NTTCIS) driver = cls('myusername', 'mypassword', region='eu') http://git-wip-us.apache.org/repos/asf/libcloud/blob/c05f59a2/docs/examples/compute/nttcis/Nodes_Create_mcp2_Customized.py ---------------------------------------------------------------------- diff --git a/docs/examples/compute/nttcis/Nodes_Create_mcp2_Customized.py b/docs/examples/compute/nttcis/Nodes_Create_mcp2_Customized.py new file mode 100644 index 0000000..8f89986 --- /dev/null +++ b/docs/examples/compute/nttcis/Nodes_Create_mcp2_Customized.py @@ -0,0 +1,26 @@ +from libcloud.compute.types import Provider +from libcloud.compute.providers import get_driver +import libcloud.security + +# Get nttcis driver +libcloud.security.VERIFY_SSL_CERT = True +cls = get_driver(Provider.NTTCIS) +driver = cls('myusername', 'mypassword', region='eu') +image_name = "SLES 12 64-bit" +images = driver.list_images(location='EU6') +image = [i for i in images if i.name == image_name][0] +domain_name = 'test_1' +domains = driver.ex_list_network_domains(location='EU6') +net_domain = [d for d in domains if d.name == domain_name][0] +psswd = 'mypassword123!' +vlan_name = "vlan1" +vlans = driver.ex_list_vlans() +vlan = [v for v in vlans if v.name == vlan_name][0] +new_node = driver.create_node("Suse_12", image, psswd, + ex_description="Customized_Suse server", + ex_network_domain=net_domain, + ex_primary_nic_vlan=vlan, + ex_primary_nic_network_adapter='VMXNET3', + ex_memory_gb=8 + ) +driver.ex_wait_for_state('running', driver.ex_get_node_by_id, 20, 420, new_node.id) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/c05f59a2/libcloud/common/nttcis.py ---------------------------------------------------------------------- diff --git a/libcloud/common/nttcis.py b/libcloud/common/nttcis.py index b1e7c4b..35dd0a9 100644 --- a/libcloud/common/nttcis.py +++ b/libcloud/common/nttcis.py @@ -595,12 +595,11 @@ class NttCisConnection(ConnectionUserAndKey): while cnt < timeout / poll_interval: result = func(*args, **kwargs) if isinstance(result, Node): - object_state = result.state + object_state = result.state.lower() else: # BUG: need to use result.status.lower() or # will never match if client uses lower case object_state = result.status.lower() - if object_state is state or object_state in state: return result sleep(poll_interval) http://git-wip-us.apache.org/repos/asf/libcloud/blob/c05f59a2/libcloud/test/loadbalancer/test_nttcis.py ---------------------------------------------------------------------- diff --git a/libcloud/test/loadbalancer/test_nttcis.py b/libcloud/test/loadbalancer/test_nttcis.py new file mode 100644 index 0000000..49be1b4 --- /dev/null +++ b/libcloud/test/loadbalancer/test_nttcis.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.nttcis import NttCisVIPNode, NttCisPool +from libcloud.common.nttcis import NttCisPoolMember +from libcloud.loadbalancer.base import LoadBalancer, Member, Algorithm +from libcloud.loadbalancer.drivers.nttcis import NttCisLBDriver as NttCis +from libcloud.loadbalancer.types import State + +from libcloud.test import MockHttp, unittest +from libcloud.test.file_fixtures import LoadBalancerFileFixtures + +from libcloud.test.secrets import NTTCIS_PARAMS + + [email protected]() +def driver(): + NttCis.connectionCls.active_api_version = "2.7" + NttCis.connectionCls.conn_class = NttCisMockHttp + NttCisMockHttp.type = None + driver = NttCis(*NTTCIS_PARAMS) + return driver + + +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 NttCisMockHttp(MockHttp): + + fixtures = LoadBalancerFileFixtures('nttcis') + + 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/c05f59a2/tests/lib_create_test.py ---------------------------------------------------------------------- diff --git a/tests/lib_create_test.py b/tests/lib_create_test.py index d222605..93154e4 100644 --- a/tests/lib_create_test.py +++ b/tests/lib_create_test.py @@ -54,7 +54,31 @@ def test_deploy_server(compute_driver): new_node = compute_driver.create_node("ubuntu", image[0], psswd, ex_description="auto_created_server", ex_network_domain=net_domain[0], ex_primary_nic_vlan=vlan[0]) compute_driver.ex_wait_for_state('running', compute_driver.ex_get_node_by_id, 2, 300, new_node.id) - assert new_node.state == 'running' + node = compute_driver.ex_get_node_by_id(new_node.id) + assert node.state == 'running' + + +def test_deploy_customized_server(compute_driver, capsys): + image_name = "SLES 12 64-bit" + images = compute_driver.list_images(location='EU6') + image = [i for i in images if i.name == image_name][0] + domain_name = 'sdk_test_1' + domains = compute_driver.ex_list_network_domains(location='EU6') + net_domain = [d for d in domains if d.name == domain_name][0] + psswd = 'Snmpv2c!' + vlan_name = "sdk_vlan1" + vlans = compute_driver.ex_list_vlans() + vlan = [v for v in vlans if v.name == vlan_name][0] + new_node = compute_driver.create_node("Suse_12", image, psswd, + ex_description="Customized_Suse server", + ex_network_domain=net_domain, + ex_primary_nic_vlan=vlan, + ex_primary_nic_network_adapter='VMXNET3', + ex_memory_gb=8 + ) + compute_driver.ex_wait_for_state('running', compute_driver.ex_get_node_by_id, 2, 600, new_node.id) + node = compute_driver.ex_get_node_by_id(new_node.id) + assert node.state == 'running' def test_delete_server(compute_driver): http://git-wip-us.apache.org/repos/asf/libcloud/blob/c05f59a2/tests/lib_list_test.py ---------------------------------------------------------------------- diff --git a/tests/lib_list_test.py b/tests/lib_list_test.py index 2fe4bda..b64a13c 100644 --- a/tests/lib_list_test.py +++ b/tests/lib_list_test.py @@ -102,6 +102,11 @@ def test_list_node_image(compute_driver): """ +def test_get_node_by_id(compute_driver): + node = compute_driver.ex_get_node_by_id("50db7b25-6dd8-49ea-8b06-942cee5850b7") + print(node) + + def test_list_node_started(compute_driver): nodes = compute_driver.list_nodes(ex_started='true') print()
