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 2018/12/13 11:26:18 UTC

[09/45] libcloud git commit: Test failed DRS creation not supported between the selected data centers

Test failed DRS creation not supported between the selected data centers


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

Branch: refs/heads/trunk
Commit: 10c4a31b4ea9b9776ff8fd94553aa294ceb2a1d1
Parents: 62d9eb6
Author: mitch <mi...@itaas.dimensiondata.com>
Authored: Mon Oct 29 13:41:24 2018 -0400
Committer: mitch <mi...@itaas.dimensiondata.com>
Committed: Mon Oct 29 13:41:24 2018 -0400

----------------------------------------------------------------------
 .gitignore                     |   2 +-
 libcloud/drs/drivers/nttcis.py |  47 ++++
 libcloud/utils/xml.py          |  14 --
 tests/conftest.py              |  40 ++++
 tests/lib_create_test.py       | 252 ++++++++++++++++++++
 tests/lib_edit_test.py         | 452 ++++++++++++++++++++++++++++++++++++
 tests/lib_list_test.py         | 393 +++++++++++++++++++++++++++++++
 tests/lib_misc_test.py         |  10 +
 tests/test_lib_list.py         | 344 ---------------------------
 9 files changed, 1195 insertions(+), 359 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 7b71b9b..d5765e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,5 +31,5 @@ lib/
 pip-selfcheck.json
 report.html
 .pytest_cache
-tests/
+
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/libcloud/drs/drivers/nttcis.py
----------------------------------------------------------------------
diff --git a/libcloud/drs/drivers/nttcis.py b/libcloud/drs/drivers/nttcis.py
index 8d4cb37..e368560 100644
--- a/libcloud/drs/drivers/nttcis.py
+++ b/libcloud/drs/drivers/nttcis.py
@@ -4,6 +4,8 @@ from libcloud.common.nttcis import API_ENDPOINTS
 from libcloud.common.nttcis import DEFAULT_REGION
 from libcloud.drs.types import Provider
 from libcloud.drs.base import Driver
+from libcloud.common.nttcis import TYPES_URN
+from libcloud.utils.xml import fixxpath, findtext, findall
 from libcloud.common.types import LibcloudError
 
 
@@ -47,3 +49,48 @@ class NttCisDRSDriver(Driver):
                        self)._ex_connection_class_kwargs()
         kwargs['region'] = self.selected_region
         return kwargs
+
+    def create_consistency_group(self, name, journal_size_gb ,
+                                 source_server_id, target_server_id,
+                                 description=None):
+        """
+        Create a consistency group
+
+        :param name: Name of consistency group
+        :type name: ``str``
+        :param journal_size_gb: Journal size in GB
+        :type journal_size_gb: ``str``
+        :param source_server_id: Id of the server to copy
+        :type source_server_id: ``str``
+        :param target_server_id: Id of the server to receive the copy
+        :type: ``str``
+        :param description: (Optional) Description of consistency group
+        :type: ``str``
+        :return: :class: `NttCisConsistenccyGroup`
+        """
+
+        consistency_group_elm = ET.Element('createConsistencyGroup',
+                                           {'xmlns': TYPES_URN})
+        ET.SubElement(consistency_group_elm, "name").text = name
+        if description is not None:
+            ET.SubElement(
+                consistency_group_elm,"description").text = description
+        ET.SubElement(
+            consistency_group_elm, "journalSizeGb").text = journal_size_gb
+        server_pair = ET.SubElement(consistency_group_elm, "serverPair")
+        ET.SubElement(
+            server_pair, "sourceServerId").text = source_server_id
+        ET.SubElement(
+            server_pair, "targetServerId").text = target_server_id
+        response = self.connection.request_with_orgId_api_2(
+            "consistencyGroup/createConsistencyGroup",
+            method="POST",
+            data=ET.tostring(consistency_group_elm)).object
+        response_code = findtext(response, 'responseCode', TYPES_URN)
+        try:
+            assert response_code in ['IN_PROGRESS', 'OK']
+        except AssertionError:
+            return response_code
+        else:
+            info = findtext(response, "info", TYPES_URN)
+            print(info)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/libcloud/utils/xml.py
----------------------------------------------------------------------
diff --git a/libcloud/utils/xml.py b/libcloud/utils/xml.py
index 3a34d84..55b82a6 100644
--- a/libcloud/utils/xml.py
+++ b/libcloud/utils/xml.py
@@ -47,17 +47,3 @@ def findattr(element, xpath, namespace=None):
 
 def findall(element, xpath, namespace=None):
     return element.findall(fixxpath(xpath=xpath, namespace=namespace))
-
-
-def return_all(parent_element):
-    elem_dict = {}
-    if parent_element.items():
-        elem_dict.update(dict(parent_element.items()))
-    for element in parent_element:
-        if element.items():
-            elem_dict.update(dict(element.items()))
-        elif element.text:
-            elem_dict.update({element.tag.split('}')[1]: element.text})
-        else:
-            elem_dict.update(element.attrib)
-    return elem_dict

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/tests/conftest.py
----------------------------------------------------------------------
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..077e463
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,40 @@
+import pytest
+import libcloud
+
+
+@pytest.fixture(scope="module")
+def compute_driver():
+    cls = libcloud.get_driver(libcloud.DriverType.COMPUTE,
+                              libcloud.DriverType.COMPUTE.NTTCIS)
+    compute_driver = cls('mitchgeo-test', 'Snmpv2c!', region='eu')
+    return compute_driver
+
+
+@pytest.fixture(scope="module")
+def lbdriver():
+    cd = libcloud.get_driver(libcloud.DriverType.COMPUTE,
+                             libcloud.DriverType.COMPUTE.NTTCIS)
+    compute_driver = cd('mitchgeo-test', 'Snmpv2c!', region='eu')
+    net_domain_name = 'sdk_test_1'
+    net_domains = compute_driver.ex_list_network_domains(location='EU6')
+    net_domain_id = [d for d in net_domains if d.name == net_domain_name][0].id
+    cls = libcloud.get_driver(libcloud.DriverType.LOADBALANCER,
+                              libcloud.DriverType.LOADBALANCER.NTTCIS)
+    lbdriver = cls('mitchgeo-test', net_domain_id, 'Snmpv2c!', region='eu')
+    return lbdriver
+
+
+@pytest.fixture(scope="module")
+def na_compute_driver():
+    cls = libcloud.get_driver(libcloud.DriverType.COMPUTE,
+                              libcloud.DriverType.COMPUTE.NTTCIS)
+    na_compute_driver = cls('mitchgeo-test', 'Snmpv2c!', region='na')
+    return na_compute_driver
+
+
+@pytest.fixture(scope="module")
+def drsdriver():
+    cls = libcloud.get_driver(libcloud.DriverType.DRS,
+                              libcloud.DriverType.DRS.NTTCIS)
+    drsdriver = cls('mitchgeo-test', 'Snmpv2c!', region='na')
+    return drsdriver

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/tests/lib_create_test.py
----------------------------------------------------------------------
diff --git a/tests/lib_create_test.py b/tests/lib_create_test.py
new file mode 100644
index 0000000..0b345a8
--- /dev/null
+++ b/tests/lib_create_test.py
@@ -0,0 +1,252 @@
+from pprint import pprint
+import pytest
+import libcloud
+
+from libcloud.compute.drivers.nttcis import NttCisPort, NttCisIpAddress, NttCisPublicIpBlock, NttCisNatRule
+from libcloud.common.nttcis import NttCisFirewallRule, NttCisVlan, NttCisFirewallAddress, NttCisAPIException
+
+
+def test_deploy_vlan(compute_driver, vlan_name='sdk_test2', network_domain_name='sdk_test_1', base_ipv4_addr='10.1.2.0'):
+    # Default network size is 24 bits. Interval and polling times default to 2 and 60.
+    interval = 3
+    timeout = 60
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    result = compute_driver.ex_create_vlan(network_domain, vlan_name, base_ipv4_addr)
+    assert isinstance(result, NttCisVlan)
+    compute_driver.ex_wait_for_state('normal', compute_driver.ex_get_vlan, interval, timeout, result.id)
+    return result
+
+
+def test_deploy_vlan_2(compute_driver, vlan_name='sdk_test_3', network_domain_name='sdk_test_1',
+                     base_ipv4_addr='10.2.0.0', private_ipv4_prefix_size=24):
+    # Default network size is 24 bits. Interval and polling times default to 2 and 60.
+    interval = 3
+    timeout = 60
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    result = compute_driver.ex_create_vlan(network_domain, vlan_name, base_ipv4_addr,
+                                           private_ipv4_prefix_size=private_ipv4_prefix_size)
+    assert isinstance(result, NttCisVlan)
+    compute_driver.ex_wait_for_state('normal', compute_driver.ex_get_vlan, interval, timeout, result.id)
+    return result
+
+
+def test_create_nat_rule(compute_driver):
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    result = compute_driver.ex_create_nat_rule(network_domain, '10.1.1.7', '168.128.13.126')
+    assert isinstance(result, NttCisNatRule)
+
+
+def test_deploy_server(compute_driver):
+    image_id = "81a36aa0-555c-4735-b965-4b64fcf0ac8f"
+    images = compute_driver.list_images(location='EU6')
+    image = [i for i in images if i.id == image_id]
+    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]
+    psswd = 'Snmpv2c!'
+    vlan_name = "sdk_vlan1"
+    vlans = compute_driver.ex_list_vlans()
+    vlan = [v for v in vlans if v.name == vlan_name]
+    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'
+
+
+def test_delete_server(compute_driver):
+    server = compute_driver.list_nodes(ex_name="ubuntu")[0]
+    shut_result = compute_driver.ex_shutdown_graceful(server)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, server.id)
+    result = compute_driver.destroy_node(server)
+    assert result is True
+    compute_driver.ex_wait_for_state('terminated', compute_driver.ex_get_node_by_id, 2, 240, server.id)
+
+
+def test_deploy_firewall_rule_1(compute_driver):
+    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]
+    address_list_name = 'sdk_test_address_list'
+    address_lists = compute_driver.ex_list_ip_address_list('6aafcf08-cb0b-432c-9c64-7371265db086')
+    # using lambda with filter
+
+    # address_list = list(filter(lambda x: address_list_name, address_lists))
+    # address_list_id = address_list[0].id
+
+    # using list comprehension to filter
+
+    address_list = [a for a in address_lists if a.name == address_list_name]
+    address_list_id = address_list[0].id
+
+    port_list_name = 'sdk_test_port_list'
+    port_lists = compute_driver.ex_list_portlist('6aafcf08-cb0b-432c-9c64-7371265db086')
+    port_list = [p for p in port_lists if p.name == port_list_name]
+    port_list_id = port_list[0].id
+    dest_firewall_address = NttCisFirewallAddress(address_list_id=address_list_id, port_list_id=port_list_id)
+    source_firewall_address = NttCisFirewallAddress(any_ip='ANY')
+    rule = compute_driver.ex_create_firewall_rule(net_domain[0], 'sdk_test_firewall_rule_1', 'ACCEPT_DECISIVELY',
+                                                  'IPV4', 'TCP', source_firewall_address, dest_firewall_address, 'LAST')
+    print(rule)
+    assert isinstance(rule, NttCisFirewallRule)
+
+
+def test_deploy_firewall_rule_2(compute_driver):
+    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]
+    source_firewall_address = NttCisFirewallAddress(any_ip='ANY')
+    dest_firewall_address = NttCisFirewallAddress(ip_address='10.2.0.0', ip_prefix_size='16',
+                                                  port_begin='8000', port_end='8080')
+
+    rule = compute_driver.ex_create_firewall_rule(net_domain[0], 'sdk_test_firewall_rule_2', 'ACCEPT_DECISIVELY',
+                                                  'IPV4', 'TCP', source_firewall_address, dest_firewall_address, 'LAST')
+    print(rule)
+    assert isinstance(rule, NttCisFirewallRule)
+
+
+def test_deploy_firewall_rule_3(compute_driver):
+    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]
+    source_firewall_address = NttCisFirewallAddress(any_ip='ANY')
+    dest_firewall_address = NttCisFirewallAddress(ip_address='10.2.0.0', ip_prefix_size='16',
+                                                  port_begin='25')
+    rule_name = 'sdk_test_firewall_rule_2'
+    rules = compute_driver.ex_list_firewall_rules(net_domain[0])
+    rule = [rule for rule in rules if rule.name == rule_name]
+    relative_to = compute_driver.ex_get_firewall_rule(net_domain[0], rule[0].id)
+    rule = compute_driver.ex_create_firewall_rule(net_domain[0], 'sdk_test_firewall_rule_3', 'ACCEPT_DECISIVELY',
+                                                  'IPV4', 'TCP', source_firewall_address, dest_firewall_address,
+                                                  'BEFORE', position_relative_to_rule=relative_to)
+    print(rule)
+    assert isinstance(rule, NttCisFirewallRule)
+
+
+def test_create_port_list(compute_driver):
+    """
+    An optional named argument, child_portlist_list, which takes the id of an existing
+    port list to include in this port list.
+    """
+    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]
+    port_list_name = 'sdk_test_port_list'
+    description = 'A test port list'
+    port_list = [NttCisPort(begin='8000', end='8080')]
+    result = compute_driver.ex_create_portlist(net_domain[0], port_list_name, description, port_list)
+    assert result is True
+
+
+def test_create_address_list(compute_driver):
+    """
+        An optional named argument, child_ip_address_list, which takes the id of an existing
+        port list to include in this port list.
+        """
+    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]
+    address_list_name = 'sdk_test_address_list'
+    description = 'A test address list'
+    ip_version = 'IPV4'
+    # An optional prefix list can be specified as a named argument, prefix_size=
+    address_list = [NttCisIpAddress('10.2.0.1', end='10.2.0.11')]
+
+    result = compute_driver.ex_create_ip_address_list(net_domain[0], address_list_name,
+                                  description,
+                                  ip_version, address_list)
+    assert result is True
+
+
+def test_create_public_ip_block(compute_driver):
+    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]
+    ip_block = compute_driver.ex_add_public_ip_block_to_network_domain(net_domain)
+    assert isinstance(ip_block, NttCisPublicIpBlock)
+    print(ip_block)
+
+
+def test_create_private_ipv4_address(compute_driver):
+    vlan_name = 'sdk_vlan1'
+    vlan = compute_driver.ex_list_vlans(name=vlan_name)[0]
+    ip = '10.1.1.20'
+    description = 'A test reserved ipv4 address'
+    result = compute_driver.ex_reserve_ip(vlan, ip, description)
+    assert result is True
+
+
+def test_create_ipv6_addresss(compute_driver):
+    vlan_name = 'sdk_vlan1'
+    vlan = compute_driver.ex_list_vlans(name=vlan_name)[0]
+    ipv6 = '2a00:47c0:111:1331:7df0:9beb:43c9:5c'
+    result = compute_driver.ex_reserve_ip(vlan, ipv6)
+    assert result is True
+
+
+def test_import_customer_image(compute_driver):
+    package_name = "bitnami-couchdb-2.1.2-1-r35-linux-centos-7-x86_64.mf"
+    name = "bitnami-couchdb-2.1.2-1-r35-linux-centos-7-x86_64"
+    datacenter_id = 'EU6'
+    is_guest_os_customization = 'false'
+    result = compute_driver.import_image(package_name, name, datacenter_id=datacenter_id,
+                                         is_guest_os_customization=is_guest_os_customization)
+    assert result is True
+
+
+def test_create_load_balancer(lbdriver, compute_driver):
+    member1 = compute_driver.list_nodes(ex_name='web1')[0]
+    member2 = compute_driver.list_nodes(ex_name='web2')[0]
+    members = [member1, member2]
+    name = 'sdk_test_balancer'
+    port = '80'
+    listener_port = '8000'
+    protocol = 'TCP'
+    algorithm = 'LEAST_CONNECTIONS_MEMBER'
+    members = [m for m in members]
+    ex_listener_ip_address = "168.128.13.127"
+    lb = lbdriver.create_balancer(name, listener_port=listener_port, port=port, protocol=protocol,
+                                  algorithm=algorithm, members=members, optimization_profile='TCP',
+                                  ex_listener_ip_address=ex_listener_ip_address)
+
+
+def test_create_vip_node(compute_driver, lbdriver):
+    node_address = '10.1.1.7'
+    node_name = "web1"
+    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]
+    node = lbdriver.ex_create_node(net_domain.id, node_name, node_address)
+    print(node)
+
+
+def test_add_pool_member(compute_driver, lbdriver):
+    pool_name = 'sdk_test_balancer'
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    pools = lbdriver.ex_get_pools(ex_network_domain_id=network_domain.id)
+    pool = [p for p in pools if p.name == pool_name][0]
+    node = lbdriver.ex_get_node("eca8dac3-1417-4fdf-83c3-2b7b848ab171")
+    result = lbdriver.ex_create_pool_member(pool, node, port=80)
+    print(result)
+
+
+def test_create_server_monitor(compute_driver):
+    pass
+
+
+def test_fail_create_drs(na_compute_driver, drsdriver):
+    nodes = na_compute_driver.list_nodes(ex_name='drs_test_1')
+    src_id = nodes[0].id
+    nodes = na_compute_driver.list_nodes(ex_name="drs_test_2")
+    target_id = nodes[0].id
+    with pytest.raises(NttCisAPIException)as excinfo:
+        result = drsdriver.create_consistency_group(
+            "sdk_cg", "100", src_id, target_id, description="A test consistency group")
+    exception_msg = excinfo.value.msg
+    assert exception_msg == 'DRS is not supported between source Data Center NA9 and target Data Center NA12.'

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/tests/lib_edit_test.py
----------------------------------------------------------------------
diff --git a/tests/lib_edit_test.py b/tests/lib_edit_test.py
new file mode 100644
index 0000000..32984ee
--- /dev/null
+++ b/tests/lib_edit_test.py
@@ -0,0 +1,452 @@
+import pytest
+import libcloud
+from libcloud import loadbalancer
+from libcloud.compute.drivers.nttcis import NttCisPort
+from libcloud.common.nttcis import NttCisIpAddress, NttCisVlan, NttCisVIPNode
+from tests.lib_create_test import test_deploy_vlan
+
+
+def test_disable_node_snapshot(compute_driver):
+    node = '040fefdb-78be-4b17-8ef9-86820bad67d9'
+    assert compute_driver.ex_disable_snapshots(node) is True
+
+
+def test_list_windows(compute_driver):
+    loc = 'EU6'
+    service_plan = 'ADVANCED'
+    windows = compute_driver.list_snapshot_windows(loc, service_plan)
+    for window in windows:
+       print(window)
+       assert 'day_of_week' in window
+
+
+def test_enable_snapshot(compute_driver):
+    """
+    This will enable a snapshot window and create an initial
+    snapshot when it has done so. A node object and a window id are required
+    :param compute_driver: The driver object for compute nodes.
+    :return: True or False
+    :rtype: ``bool``
+    """
+    window_id = 'ea646520-4272-11e8-838c-180373fb68df'
+    node = '040fefdb-78be-4b17-8ef9-86820bad67d9'
+    result = compute_driver.ex_enable_snapshots(node, window_id)
+    assert result is True
+
+
+def test_initiate_manual_snapshot_warn(compute_driver):
+    with pytest.raises(RuntimeError, match=r'Found more than one server Id .*'):
+        compute_driver.ex_initiate_manual_snapshot('sdk_server_1', 'dc637783-2bb2-4b92-838a-99a899b5e29b')
+
+
+def test_initiate_manual_snapshot(compute_driver):
+    compute_driver.ex_initiate_manual_snapshot('sdk_server_1', 'dc637783-2bb2-4b92-838a-99a899b5e29b')
+
+
+def test_shutdown_server_1(compute_driver):
+    node = compute_driver.ex_get_node_by_id('040fefdb-78be-4b17-8ef9-86820bad67d9 ')
+    result = compute_driver.ex_shutdown_graceful(node)
+    assert result is True
+
+
+def test_start_server_1(compute_driver):
+    node = compute_driver.ex_get_node_by_id('040fefdb-78be-4b17-8ef9-86820bad67d9 ')
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_shutdown_server_2(compute_driver):
+    nodes = compute_driver.list_nodes(ex_name='sdk_server_1')
+    for node in nodes:
+        result = compute_driver.ex_shutdown_graceful(node)
+        assert result is True
+
+
+def test_start_server_2(compute_driver):
+    nodes = compute_driver.list_nodes(ex_name='sdk_server_1')
+    for node in nodes:
+        result = compute_driver.ex_start_node(node)
+        assert result is True
+
+
+def test_edit_metadata(compute_driver):
+    node = compute_driver.ex_get_node_by_id('040fefdb-78be-4b17-8ef9-86820bad67d9 ')
+    description = 'SDK  Test server'
+    name = 'sdk_server_1'
+    result = compute_driver.ex_edit_metadata(node, name=name, description=description)
+    assert result is True
+
+
+def test_edit_metadata_fails(compute_driver):
+    node = compute_driver.ex_get_node_by_id('040fefdb-78be-4b17-8ef9-86820bad67d9 ')
+    description = 'Test server'
+    ip_address = 'EU6 Ubuntu'
+    with pytest.raises(TypeError):
+        result = compute_driver.ex_edit_metadata(node, ip_address=ip_address, description=description)
+
+
+def test_reconfigure_node(compute_driver):
+    node = compute_driver.ex_get_node_by_id('040fefdb-78be-4b17-8ef9-86820bad67d9')
+    cpu_performance = 'HIGHPERFORMANCE'
+    result = compute_driver.ex_reconfigure_node(node, cpu_performance=cpu_performance)
+    assert result is True
+
+
+def test_edit_vlan(compute_driver):
+    vlan = compute_driver.ex_list_vlans(name='sdk_test2')[0]
+    vlan.name = 'sdk_test_2'
+    vlan.description = "Second test Vlan"
+    result = compute_driver.ex_update_vlan(vlan)
+    assert isinstance(result, NttCisVlan)
+
+
+def test_expand_vlan(compute_driver):
+    vlan = compute_driver.ex_list_vlans(name='sdk_test_3')[0]
+    vlan.private_ipv4_range_size = '23'
+    result = compute_driver.ex_expand_vlan(vlan)
+    assert isinstance(result, NttCisVlan)
+
+
+def test_delete_vlan(compute_driver):
+    vlan = compute_driver.ex_list_vlans(name='sdk_test_3')[0]
+    result = compute_driver.ex_delete_vlan(vlan)
+    assert result is True
+
+
+def test_add_disk_by_node(compute_driver):
+    """
+    Speeds can be specified based on DataCenter
+    :param compute_driver: libcloud.DriverType.COMPUTE.NTTCIS
+    :return: NA
+    """
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    result = compute_driver.ex_add_storage_to_node(20, node)
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 180, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_add_disk_by_controller_id(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    result = compute_driver.ex_add_storage_to_node(20, controller_id=node.extra['scsi_controller'][0].id)
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 180, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_changing_diskspeed(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    disk_id = 'f8a01c24-4768-46be-af75-9fe877f8c588'
+    result = compute_driver.ex_change_storage_speed(disk_id, 'HIGHPERFORMANCE')
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_changing_diskspeed_iops(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    disk_id = 'f8a01c24-4768-46be-af75-9fe877f8c588'
+    result = compute_driver.ex_change_storage_speed(disk_id, 'PROVISIONEDIOPS', iops=60)
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_add_scsi_controller(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    adapter_type = 'VMWARE_PARAVIRTUAL'
+    result = compute_driver.ex_add_scsi_controller_to_node(node.id, adapter_type)
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_remove_scsi_controller(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    result = compute_driver.ex_remove_scsi_controller('f1126751-c6d5-4d64-893c-8902b8481f90')
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_update_vmware_tools(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    result = compute_driver.ex_update_vm_tools(node)
+    assert result is True
+    compute_driver.ex_wait_for_state('running', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+
+
+def test_add_node_to_vlan(compute_driver):
+    vlan = test_deploy_vlan(compute_driver, "test_vlan_create", "6aafcf08-cb0b-432c-9c64-7371265db086", "10.0.2.0")
+    assert isinstance(vlan, NttCisVlan)
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    result = compute_driver.ex_attach_node_to_vlan(node, vlan=vlan)
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_remove_nic(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    result = compute_driver.ex_disable_snapshots(node.id)
+    assert result is True
+    result = compute_driver.ex_destroy_nic("e9cdea1b-c4f2-4769-93a8-57e24248abdd")
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+""""
+No wayt to get nic id's via libcloud
+def test_exchange_nic_vlans(compute_driver):
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    print(node.extra)
+"""
+
+
+def test_change_nic_type(compute_driver):
+    nic_id = "7a27b2b1-7b20-404f-be53-4695023c2734"
+    nic_type = 'VMXNET3'
+    node = compute_driver.ex_get_node_by_id('803e5e00-b22a-450a-8827-066ff15ec977')
+    shut_result = compute_driver.ex_shutdown_graceful(node)
+    assert shut_result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 45, node.id)
+    result = compute_driver.ex_change_nic_network_adapter(nic_id, nic_type)
+    assert result is True
+    compute_driver.ex_wait_for_state('stopped', compute_driver.ex_get_node_by_id, 2, 240, node.id)
+    result = compute_driver.ex_start_node(node)
+    assert result is True
+
+
+def test_edit_firewall_rule(compute_driver):
+    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]
+    rule_name = 'sdk_test_firewall_rule_2'
+    rules = compute_driver.ex_list_firewall_rules(net_domain[0])
+    rule = [rule for rule in rules if rule.name == rule_name]
+    rule[0].destination.port_end = None
+    result = compute_driver.ex_edit_firewall_rule(rule[0])
+    print(compute_driver.ex_get_firewall_rule(net_domain[0].id, rule[0].id))
+    assert result is True
+
+
+def test_delete_firewall_rule(compute_driver):
+    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]
+    rule_name = 'sdk_test_firewall_rule_2'
+    rules = compute_driver.ex_list_firewall_rules(net_domain[0])
+    rule = [rule for rule in rules if rule.name == rule_name]
+    result = compute_driver.ex_delete_firewall_rule(rule[0])
+    assert result is True
+
+
+def test_create_anti_affinity_rule(compute_driver):
+    server1 = compute_driver.ex_get_node_by_id("d0425097-202f-4bba-b268-c7a73b8da129")
+    server2 = compute_driver.ex_get_node_by_id("803e5e00-b22a-450a-8827-066ff15ec977")
+    servers = [server1, server2]
+    result = compute_driver.ex_create_anti_affinity_rule(servers)
+    assert isinstance(result, )
+
+
+def test_delete_anti_affinity_rule(compute_driver):
+    anti_affinity_rule = "40d83160-0fa2-418d-a73e-5f15fe1354fc"
+    result = compute_driver.ex_delete_anti_affinity_rule(anti_affinity_rule)
+    assert result is True
+
+
+def test_delete_port_list(compute_driver):
+    portlists = compute_driver.ex_list_portlist('6aafcf08-cb0b-432c-9c64-7371265db086')
+    port_list_to_delete = [plist for plist in portlists if plist.name == 'sdk_test_port_list']
+    result = compute_driver.ex_delete_portlist(port_list_to_delete[0])
+    assert result is True
+
+
+def test_edit_address_list(compute_driver):
+    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]
+    addr_list = compute_driver.ex_get_ip_address_list(net_domain, 'sdk_test_address_list')
+    assert addr_list[0].ip_version == 'IPV4'
+    ip_address_1 = NttCisIpAddress(begin='190.2.2.100')
+    ip_address_2 = NttCisIpAddress(begin='190.2.2.106', end='190.2.2.108')
+    ip_address_3 = NttCisIpAddress(begin='190.2.2.0', prefix_size='24')
+    ip_address_4 = NttCisIpAddress(begin='10.2.0.0', prefix_size='24')
+    ip_address_collection = [ip_address_1, ip_address_2, ip_address_3, ip_address_4]
+
+    result = compute_driver.ex_edit_ip_address_list("d32aa8d4-831b-4fd6-95da-c639768834f0",
+                                                    ip_address_collection=ip_address_collection)
+    assert result is True
+
+
+def test_delete_public_ip_block(compute_driver):
+    block = compute_driver.ex_get_public_ip_block("813b87a8-18e1-11e5-8d4f-180373fb68df")
+    result = compute_driver.ex_delete_public_ip_block(block)
+    assert result is True
+
+
+def test_edit_address_list_2(compute_driver):
+    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]
+    # An ip address list object can be used as an argument or the id of the address list
+    addr_list = compute_driver.ex_get_ip_address_list(net_domain, 'sdk_test_address_list')
+
+    result = compute_driver.ex_edit_ip_address_list("d32aa8d4-831b-4fd6-95da-c639768834f0",
+                                                    description='nil')
+    assert result is True
+
+
+def test_delete_address_list(compute_driver):
+    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]
+    addresslist_to_delete = compute_driver.ex_get_ip_address_list(net_domain, 'sdk_test_address_list')
+    print(addresslist_to_delete)
+
+
+def test_edit_port_list_1(compute_driver):
+    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]
+    port_list_name = 'sdk_test_port_list'
+    port_lists = compute_driver.ex_list_portlist(net_domain[0])
+    port_list = [port for port in port_lists if port.name == port_list_name][0]
+    port_collection = [NttCisPort(begin='8000', end='8080'), NttCisPort(begin='9000')]
+    result = compute_driver.ex_edit_portlist(port_list.id, port_collection=port_collection)
+    assert result is True
+
+
+def test_unreserve_ip_address(compute_driver):
+    vlan_name = 'sdk_vlan1'
+    vlan = compute_driver.ex_list_vlans(name=vlan_name)[0]
+    ip = '2a00:47c0:111:1331:7df0:9beb:43c9:5c'
+    result = compute_driver.ex_unreserve_ip_addresses(vlan, ip)
+    assert result is True
+
+
+def test_list_locations(compute_driver):
+    locations = compute_driver.list_locations()
+    for location in locations:
+        print(location)
+
+
+def test_delete_nat_rule(compute_driver):
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    rule = compute_driver.ex_get_nat_rule(network_domain, '74f0897f-5536-4c17-84b0-d52b1fb3aea6')
+    result = compute_driver.ex_delete_nat_rule(rule)
+    assert result is True
+
+
+def test_update_health_monitor(compute_driver, lbdriver):
+    pool_name = 'sdk_test_balancer'
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    pools = lbdriver.ex_get_pools(ex_network_domain_id=network_domain.id)
+    pool = [p for p in pools if p.name == pool_name][0]
+    pool.health_monitor_id = '9f79487a-1b6d-11e5-8d4f-180373fb68df'
+    result = lbdriver.ex_update_pool(pool)
+    assert result is True
+
+
+def test_update_node_monitor(compute_driver, lbdriver):
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    nodes = lbdriver.ex_get_nodes(ex_network_domain_id=network_domain.id)
+    #pool = [p for p in pools if p.name == pool_name][0]
+    health_monitor_id = '9f79a126-1b6d-11e5-8d4f-180373fb68df'
+    for node in nodes:
+        node.health_monitor_id = health_monitor_id
+        result = lbdriver.ex_update_node(node)
+        assert isinstance(result, NttCisVIPNode)
+
+
+def test_remove_node(compute_driver, lbdriver):
+    node_name = 'web1'
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    nodes = lbdriver.ex_get_nodes(ex_network_domain_id=network_domain.id)
+    node = [n for n in nodes if n.name == node_name][0]
+    pool_name = "sdk_test_balancer"
+    pools = lbdriver.ex_get_pools(ex_network_domain_id=network_domain.id)
+    pool = [p for p in pools if p.name == pool_name][0]
+    pool_members = lbdriver.ex_get_pool_members(pool.id)
+    pool_member = [pm for pm in pool_members if pm.node_id == node.id][0]
+    result = lbdriver.ex_destroy_pool_member(pool_member)
+    assert result is True
+
+
+def test_delete_node(compute_driver, lbdriver):
+    node_name = 'web1'
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    nodes = lbdriver.ex_get_nodes(ex_network_domain_id=network_domain.id)
+    node = [n for n in nodes if n.name == node_name][0]
+    result = lbdriver.ex_destroy_node(node.id)
+    assert result is True
+
+
+def test_remove_pool(compute_driver, lbdriver):
+    listener_name = "sdk_test_balancer"
+    listeners = lbdriver.list_balancers(ex_network_domain_id=lbdriver.network_domain_id)
+    listener = [l for l in listeners if l.name == listener_name][0]
+    pool_id = None
+    result = lbdriver.ex_update_listener(listener, poolId=pool_id)
+    assert result is True
+
+
+def test_delete_pool(compute_driver, lbdriver):
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    pool_name = "sdk_test_balancer"
+    pools = lbdriver.ex_get_pools(ex_network_domain_id=network_domain.id)
+    pool = [p for p in pools if p.name == pool_name][0]
+    result = lbdriver.ex_destroy_pool(pool)
+    assert result is True
+
+
+def test_delete_listener(compute_driver, lbdriver):
+    listener_name = "sdk_test_balancer"
+    listeners = lbdriver.list_balancers(ex_network_domain_id=lbdriver.network_domain_id)
+    listener = [l for l in listeners if l.name == listener_name][0]
+    result = lbdriver.destroy_balancer(listener)
+    assert result is True

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/tests/lib_list_test.py
----------------------------------------------------------------------
diff --git a/tests/lib_list_test.py b/tests/lib_list_test.py
new file mode 100644
index 0000000..de39a33
--- /dev/null
+++ b/tests/lib_list_test.py
@@ -0,0 +1,393 @@
+import pytest
+import libcloud
+from libcloud import loadbalancer
+
+
+def test_list_node_all(compute_driver):
+    nodes = compute_driver.list_nodes()
+    for node in nodes:
+        print(node)
+        #print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+        #      node.extra['scsi_controller'], node.extra['disks'], node.extra['memoryMb'],
+        #      node.extra['OS_displayName'], node.private_ips, node.extra['ipv6'], node.extra['window'])
+
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_node_location(compute_driver):
+    nodes = compute_driver.list_nodes(ex_location='EU6')
+    print()
+    for node in nodes:
+        print(node)
+        #print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+        #      [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+        #      node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_node_name(compute_driver):
+    nodes = compute_driver.list_nodes(ex_name='sdk_server_1')
+    print()
+    for node in nodes:
+        print(node)
+        #print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+        #      [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+        #      node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_node_ipv6(compute_driver):
+    nodes = compute_driver.list_nodes(ex_ipv6='2a00:47c0:111:1331:6140:e432:729b:eef6')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_node_ipv4(compute_driver):
+    nodes = compute_driver.list_nodes(ex_ipv4='10.1.1.6')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_images(compute_driver):
+    images = compute_driver.list_images(location='EU6')
+    print()
+    for image in images:
+        print(image.id, image.name)
+    assert isinstance(images, list) and len(images) > 0
+
+
+def test_list_os(compute_driver):
+    oss = compute_driver.ex_list_os(location='EU6')
+
+
+def test_list_node_by_image(compute_driver):
+    nodes = compute_driver.list_nodes(ex_image='81a36aa0-555c-4735-b965-4b64fcf0ac8f')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+"""
+    requires retrieving vlan Id first
+"""
+
+def test_list_node_vlan(compute_driver):
+    nodes = compute_driver.list_nodes(ex_vlan='eb05a24e-85a6-46e3-a7c9-f1765737476d')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+"""
+Libcloud docs say this works but it is not in our API docs
+def test_list_node_image(compute_driver):
+    nodes = compute_driver.list_nodes(ex_image='46096745-5a89-472b-9b3b-89a6a07bb60b')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+"""
+
+
+def test_list_node_started(compute_driver):
+    nodes = compute_driver.list_nodes(ex_started='true')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_node_deployed(compute_driver):
+    nodes = compute_driver.list_nodes(ex_deployed='true')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_node_state(compute_driver):
+    nodes = compute_driver.list_nodes(ex_state='NORMAL')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_network_domain_id(compute_driver):
+    nodes = compute_driver.list_nodes(ex_network_domain='6aafcf08-cb0b-432c-9c64-7371265db086')
+    print()
+    for node in nodes:
+        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
+              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
+              node.private_ips, node.extra['ipv6'])
+    assert isinstance(nodes, list) and len(nodes) > 0
+
+
+def test_list_vlans(compute_driver):
+    vlans = compute_driver.ex_list_vlans()
+    print()
+    for vlan in vlans:
+        print(vlan.id, vlan.name, vlan.location.id, vlan.ipv4_gateway, vlan.ipv6_gateway, vlan.ipv6_range_address, vlan.ipv6_range_size,
+              vlan.private_ipv4_range_address, vlan.private_ipv4_range_size, vlan.status)
+    assert isinstance(vlans, list) and len(vlans) > 0
+
+
+def test_list_vlan(compute_driver):
+    vlan = compute_driver.ex_get_vlan('eb05a24e-85a6-46e3-a7c9-f1765737476d')
+    print()
+    print(vlan.id, vlan.name, vlan.location.id, vlan.ipv4_gateway, vlan.ipv6_gateway, vlan.ipv6_range_address, vlan.ipv6_range_size,
+          vlan.private_ipv4_range_address, vlan.private_ipv4_range_size, vlan.status)
+    assert vlan.name == 'sdk_vlan1'
+
+
+def test_list_datacenter_object_creation(compute_driver):
+    datacenter = compute_driver.ex_get_datacenter('EU6')
+
+
+def test_list_firewall_rules(compute_driver):
+    rules = compute_driver.ex_list_firewall_rules('6aafcf08-cb0b-432c-9c64-7371265db086')
+    print()
+    for rule in rules:
+        print("id {}, name {}, action {}. location {}, ip ver {}, protocol {}, any ip {}, ip {}, prefix {},"
+              " port range {} {} , src address {}, src port list {}, dest. any__ip {}, dest address {}, "
+              "dest prefix {}, dest port range {} {}, dest address list id {}"
+              ", dest port list id {}".format(
+                                              rule.id, rule.name, rule.action,
+                                              rule.location.name, rule.ip_version,
+                                              rule.protocol, rule.source.any_ip,
+                                              rule.source.ip_address,
+                                              rule.source.ip_prefix_size,
+                                              rule.source.port_begin, rule.source.port_end,
+                                              rule.source.address_list_id,
+                                              rule.source.port_list_id,
+                                              rule.destination.any_ip,
+                                              rule.destination.ip_address,
+                                              rule.destination.ip_prefix_size,
+                                              rule.destination.port_begin,
+                                              rule.destination.port_end,
+                                              rule.destination.address_list_id,
+                                              rule.destination.port_list_id,
+                                              ))
+
+
+def test_list_address_lists(compute_driver):
+    address_lists = compute_driver.ex_list_ip_address_list('6aafcf08-cb0b-432c-9c64-7371265db086')
+    print()
+    for address_list in address_lists:
+        print(address_list)
+    assert isinstance(address_lists, list) and len(address_lists) > 0
+
+
+def test_list_port_lists(compute_driver):
+    port_lists = compute_driver.ex_list_portlist('6aafcf08-cb0b-432c-9c64-7371265db086')
+    print()
+    for portlist in port_lists:
+        print(portlist)
+    assert isinstance(port_lists, list) and len(port_lists) > 0
+
+
+def test_list_nat_rules(compute_driver):
+    nat_rules = compute_driver.ex_list_nat_rules(compute_driver.ex_get_network_domain('6aafcf08-cb0b-432c-9c64-7371265db086'))
+    print()
+    for nat_rule in nat_rules:
+        print(nat_rule, nat_rule.external_ip, nat_rule.internal_ip)
+    assert isinstance(nat_rules, list) and len(nat_rules) > 0
+
+
+def test_list_balancers(lbdriver):
+    balancers = lbdriver.list_balancers(ex_network_domain_id="6aafcf08-cb0b-432c-9c64-7371265db086")
+    print()
+    for balancer in balancers:
+        print(balancer.id, balancer.ip, balancer.name, balancer.port)
+    assert isinstance(balancers, list)
+
+
+def test_get_listener(lbdriver):
+    listener = lbdriver.get_balancer("59abe126-2bba-48ac-8616-1aba51aabac5")
+    print()
+    print(listener.ip, listener.name, listener.port)
+    assert listener.ip == '168.128.13.127'
+
+
+def test_vip_nodes(lbdriver):
+    vips = lbdriver.ex_get_nodes("6aafcf08-cb0b-432c-9c64-7371265db086")
+    print()
+    for vip in vips:
+        print(vip, vip.ip, vip.name)
+    assert isinstance(vips, list) and len(vips) > 0
+
+
+def test_list_lb_pools(lbdriver):
+    pools = lbdriver.ex_get_pools(ex_network_domain_id="6aafcf08-cb0b-432c-9c64-7371265db086")
+    print()
+    for pool in pools:
+        print(pool.id, pool.name, pool.description, pool.health_monitor_id, pool.load_balance_method, pool.slow_ramp_time, pool.status)
+    assert isinstance(pools, list)
+
+
+def test_list_lb_pool_members(lbdriver):
+    balancer = lbdriver.get_balancer("59abe126-2bba-48ac-8616-1aba51aabac5")
+    pool_members = lbdriver.balancer_list_members(balancer)
+    print()
+    for pool_member in pool_members:
+        print(pool_member)
+    assert isinstance(pool_members, list)
+
+
+def test_get_pool_member(lbdriver):
+    pool_member = lbdriver.ex_get_pool_member("9382e488-7f95-4db0-b2de-0b807aab825b")
+    print()
+    print(pool_member.ip, pool_member.port, pool_member.name)
+    assert pool_member.ip == '10.1.1.8'
+
+
+def test_get_node(lbdriver):
+    node = lbdriver.ex_get_node("5c647a74-d181-4ed8-82d3-55ae443a06dd")
+    print()
+    print(node.name, node.ip, node.connection_limit, node.connection_rate_limit)
+    assert isinstance(node, object)
+
+
+def test_list_snapshots(compute_driver):
+    snapshots = compute_driver.list_snapshots('web1')
+    for snapshot in snapshots:
+        print(snapshot)
+        assert 'expiry_time' in snapshot
+
+
+def test_list_nics(compute_driver):
+    result = compute_driver.ex_list_
+
+
+def test_list_vlans(compute_driver):
+    vlans = compute_driver.ex_list_vlans()
+    print(vlans)
+    assert isinstance(vlans, list)
+
+
+def test_list_anti_affinity_rules(compute_driver):
+    # Could use network domain or node but not both
+    # net_domain = compute_driver.ex_get_network_domain('6aafcf08-cb0b-432c-9c64-7371265db086')
+    node = compute_driver.ex_get_node_by_id("803e5e00-b22a-450a-8827-066ff15ec977")
+    anti_affinity_rules = compute_driver.ex_list_anti_affinity_rules(node=node)
+    assert len(anti_affinity_rules) > 1
+
+
+def test_list_no_anti_affinity_rules(compute_driver):
+    # Could use network domain or node but not both
+    # net_domain = compute_driver.ex_get_network_domain('6aafcf08-cb0b-432c-9c64-7371265db086')
+    node = compute_driver.ex_get_node_by_id("803e5e00-b22a-450a-8827-066ff15ec977")
+    anti_affinity_rules = compute_driver.ex_list_anti_affinity_rules(node=node)
+    assert len(anti_affinity_rules) == 0
+
+
+def test_list_locations(compute_driver):
+    locations = compute_driver.list_locations()
+    for location in locations:
+        print(location)
+
+
+"""
+def test_list_sizes(compute_driver):
+    properties = compute_driver.list_locations()
+    for property in properties:
+        print(property)
+"""
+
+
+def test_images(compute_driver):
+    images = compute_driver.list_images()
+    print()
+    print(images)
+    assert isinstance(images, list) and len(images) > 0
+
+
+def test_list_public_ip_blocks(compute_driver):
+    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]
+    blocks = compute_driver.ex_list_public_ip_blocks(net_domain)
+    print(blocks)
+
+
+def test_list_private_ipv4_addresses_vlan(compute_driver):
+    vlan_name = 'sdk_vlan1'
+    vlan = compute_driver.ex_list_vlans(name=vlan_name)[0]
+    ip_addresses = compute_driver.ex_list_reserved_ipv4(vlan=vlan)
+    for ip_address in ip_addresses:
+        print(ip_address)
+
+
+def test_list_private_ipv4_addresses_datacenter(compute_driver):
+    datacenter_id = 'EU8'
+    ip_addresses = compute_driver.ex_list_reserved_ipv4(datacenter_id=datacenter_id)
+    for ip_address in ip_addresses:
+        print(ip_address)
+
+
+def test_list_private_ipv4_addresses_all(compute_driver):
+    ip_addresses = compute_driver.ex_list_reserved_ipv4()
+    for ip_address in ip_addresses:
+        print(ip_address)
+
+
+def test_list_reserved_ipv6_address_vlan(compute_driver):
+    vlan_name = 'sdk_vlan1'
+    vlan = compute_driver.ex_list_vlans(name=vlan_name)[0]
+    ip_addresses = compute_driver.ex_list_reserved_ipv6(vlan=vlan)
+    for ip_address in ip_addresses:
+        print(ip_address)
+
+
+def test_list_nat_rules(compute_driver):
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    rules = compute_driver.ex_list_nat_rules(network_domain)
+    for rule in rules:
+        print(rule)
+
+
+def test_list_customer_images(compute_driver):
+    location = 'EU6'
+    images = compute_driver.ex_list_customer_images(location)
+    for image in images:
+        print(image, image.extra)
+
+
+def test_get_customer_image(compute_driver):
+    imagee_id = '84da095f-c8c7-4ace-9fb6-eceb1047027c'
+    image = compute_driver.ex_get_image_by_id(imagee_id)
+    print(image, image.extra)
+
+
+def test_list_health_monitors(compute_driver, lbdriver):
+    network_domain_name = "sdk_test_1"
+    network_domains = compute_driver.ex_list_network_domains(location='EU6')
+    network_domain = [nd for nd in network_domains if nd.name == network_domain_name][0]
+    monitors = lbdriver.ex_get_default_health_monitors(network_domain)
+    for monitor in monitors:
+        print(monitor)
+

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/tests/lib_misc_test.py
----------------------------------------------------------------------
diff --git a/tests/lib_misc_test.py b/tests/lib_misc_test.py
new file mode 100644
index 0000000..d8be518
--- /dev/null
+++ b/tests/lib_misc_test.py
@@ -0,0 +1,10 @@
+import pytest
+import libcloud
+from libcloud import loadbalancer
+from libcloud.common.nttcis import NttCisAPIException
+
+
+def test_server_clone_to_image(compute_driver):
+    node = compute_driver.ex_get_node_by_id('040fefdb-78be-4b17-8ef9-86820bad67d9 ')
+    result = compute_driver.ex_clone_node_to_image(node, 'sdk_test_image', image_description='A test image for libcloud')
+    assert result is True

http://git-wip-us.apache.org/repos/asf/libcloud/blob/10c4a31b/tests/test_lib_list.py
----------------------------------------------------------------------
diff --git a/tests/test_lib_list.py b/tests/test_lib_list.py
deleted file mode 100644
index 48550cd..0000000
--- a/tests/test_lib_list.py
+++ /dev/null
@@ -1,344 +0,0 @@
-import pytest
-import libcloud
-from libcloud import loadbalancer
-
-
-def test_list_node_all(compute_driver):
-    nodes = compute_driver.list_nodes()
-    for node in nodes:
-         print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              node.extra['scsi_controller'], node.extra['disks'], node.extra['memoryMb'],
-              node.extra['OS_displayName'], node.private_ips, node.extra['ipv6'], node.extra['window'])
-
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_node_location(compute_driver):
-    nodes = compute_driver.list_nodes(ex_location='EU6')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_node_name(compute_driver):
-    nodes = compute_driver.list_nodes(ex_name='sdk_server_1')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_node_ipv6(compute_driver):
-    nodes = compute_driver.list_nodes(ex_ipv6='2a00:47c0:111:1331:6140:e432:729b:eef6')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_node_ipv4(compute_driver):
-    nodes = compute_driver.list_nodes(ex_ipv4='10.1.1.6')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_images(compute_driver):
-    images = compute_driver.list_images(location='EU6')
-    print()
-    for image in images:
-        print(image.id, image.name)
-    assert isinstance(images, list) and len(images) > 0
-
-
-def test_list_os(compute_driver):
-    oss = compute_driver.ex_list_os(location='EU6')
-
-
-def test_list_node_by_image(compute_driver):
-    nodes = compute_driver.list_nodes(ex_image='81a36aa0-555c-4735-b965-4b64fcf0ac8f')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-"""
-    requires retrieving vlan Id first
-"""
-def test_list_node_vlan(compute_driver):
-    nodes = compute_driver.list_nodes(ex_vlan='eb05a24e-85a6-46e3-a7c9-f1765737476d')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-"""
-Libcloud docs say this works but it is not in our API docs
-def test_list_node_image(compute_driver):
-    nodes = compute_driver.list_nodes(ex_image='46096745-5a89-472b-9b3b-89a6a07bb60b')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-"""
-
-
-def test_list_node_started(compute_driver):
-    nodes = compute_driver.list_nodes(ex_started='true')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_node_deployed(compute_driver):
-    nodes = compute_driver.list_nodes(ex_deployed='true')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_node_state(compute_driver):
-    nodes = compute_driver.list_nodes(ex_state='NORMAL')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_network_domain_id(compute_driver):
-    nodes = compute_driver.list_nodes(ex_network_domain='6aafcf08-cb0b-432c-9c64-7371265db086')
-    print()
-    for node in nodes:
-        print(node.extra['networkDomainId'], node.extra['datacenterId'], node.uuid, node.state, node.name, node.extra['cpu'],
-              [disk for disk in node.extra['disks']], node.extra['memoryMb'], node.extra['OS_displayName'],
-              node.private_ips, node.extra['ipv6'])
-    assert isinstance(nodes, list) and len(nodes) > 0
-
-
-def test_list_vlans(compute_driver):
-    vlans = compute_driver.ex_list_vlans()
-    print()
-    for vlan in vlans:
-        print(vlan.id, vlan.name, vlan.location.id, vlan.ipv4_gateway, vlan.ipv6_gateway, vlan.ipv6_range_address, vlan.ipv6_range_size,
-              vlan.private_ipv4_range_address, vlan.private_ipv4_range_size, vlan.status)
-    assert isinstance(vlans, list) and len(vlans) > 0
-
-
-def test_list_vlan(compute_driver):
-    vlan = compute_driver.ex_get_vlan('eb05a24e-85a6-46e3-a7c9-f1765737476d')
-    print()
-    print(vlan.id, vlan.name, vlan.location.id, vlan.ipv4_gateway, vlan.ipv6_gateway, vlan.ipv6_range_address, vlan.ipv6_range_size,
-          vlan.private_ipv4_range_address, vlan.private_ipv4_range_size, vlan.status)
-    assert vlan.name == 'sdk_vlan1'
-
-
-def test_list_datacenter_object_creation(compute_driver):
-    datacenter = compute_driver.ex_get_datacenter('EU6')
-    
-
-def test_list_firewall_rules(compute_driver):
-    rules = compute_driver.ex_list_firewall_rules('6aafcf08-cb0b-432c-9c64-7371265db086')
-    print()
-    for rule in rules:
-        print("id {}, name {}, action {}. location {}, ip ver {}, protocol {}, any ip {}, ip {}, prefix {},"
-              " port range {} {} , src address {}, src port list {}, dest. any__ip {}, dest address {}, "
-              "dest prefix {}, dest port range {} {}, dest address list id {}"
-              ", dest port list id {}".format(
-                                              rule.id, rule.name, rule.action,
-                                              rule.location.name, rule.ip_version,
-                                              rule.protocol, rule.source.any_ip,
-                                              rule.source.ip_address,
-                                              rule.source.ip_prefix_size,
-                                              rule.source.port_begin, rule.source.port_end,
-                                              rule.source.address_list_id,
-                                              rule.source.port_list_id,
-                                              rule.destination.any_ip,
-                                              rule.destination.ip_address,
-                                              rule.destination.ip_prefix_size,
-                                              rule.destination.port_begin,
-                                              rule.destination.port_end,
-                                              rule.destination.address_list_id,
-                                              rule.destination.port_list_id,
-                                              ))
-
-
-def test_list_address_lists(compute_driver):
-    address_lists = compute_driver.ex_list_ip_address_list('6aafcf08-cb0b-432c-9c64-7371265db086')
-    print()
-    for address_list in address_lists:
-        print(address_list)
-    assert isinstance(address_lists, list) and len(address_lists) > 0
-
-
-def test_list_port_lists(compute_driver):
-    port_lists = compute_driver.ex_list_portlist('6aafcf08-cb0b-432c-9c64-7371265db086')
-    print()
-    for portlist in port_lists:
-        print(portlist)
-    assert isinstance(port_lists, list) and len(port_lists) > 0
-
-
-def test_list_nat_rules(compute_driver):
-    nat_rules = compute_driver.ex_list_nat_rules(compute_driver.ex_get_network_domain('6aafcf08-cb0b-432c-9c64-7371265db086'))
-    print()
-    for nat_rule in nat_rules:
-        print(nat_rule, nat_rule.external_ip, nat_rule.internal_ip)
-    assert isinstance(nat_rules, list) and len(nat_rules) > 0
-
-
-def test_list_balancers(lbdriver):
-    balancers = lbdriver.list_balancers(ex_network_domain_id="6aafcf08-cb0b-432c-9c64-7371265db086")
-    print()
-    for balancer in balancers:
-        print(balancer.id, balancer.ip, balancer.name, balancer.port)
-    assert isinstance(balancers, list)
-
-
-def test_get_listener(lbdriver):
-    listener = lbdriver.get_balancer("59abe126-2bba-48ac-8616-1aba51aabac5")
-    print()
-    print(listener.ip, listener.name, listener.port)
-    assert listener.ip == '168.128.13.127'
-
-
-def test_vip_nodes(lbdriver):
-    vips = lbdriver.ex_get_nodes("6aafcf08-cb0b-432c-9c64-7371265db086")
-    print()
-    for vip in vips:
-        print(vip, vip.ip, vip.name)
-    assert isinstance(vips, list) and len(vips) > 0
-
-
-def test_list_lb_pools(lbdriver):
-    pools = lbdriver.ex_get_pools(ex_network_domain_id="6aafcf08-cb0b-432c-9c64-7371265db086")
-    print()
-    for pool in pools:
-        print(pool.id, pool.name, pool.description, pool.health_monitor_id, pool.load_balance_method, pool.slow_ramp_time, pool.status)
-    assert isinstance(pools, list)
-
-
-def test_list_lb_pool_members(lbdriver):
-    balancer = lbdriver.get_balancer("59abe126-2bba-48ac-8616-1aba51aabac5")
-    pool_members = lbdriver.balancer_list_members(balancer)
-    print()
-    for pool_member in pool_members:
-        print(pool_member)
-    assert isinstance(pool_members, list)
-
-
-def test_get_pool_member(lbdriver):
-    pool_member = lbdriver.ex_get_pool_member("9382e488-7f95-4db0-b2de-0b807aab825b")
-    print()
-    print(pool_member.ip, pool_member.port, pool_member.name)
-    assert pool_member.ip == '10.1.1.8'
-
-
-def test_get_node(lbdriver):
-    node = lbdriver.ex_get_node("5c647a74-d181-4ed8-82d3-55ae443a06dd")
-    print()
-    print(node.name, node.ip, node.connection_limit, node.connection_rate_limit)
-    assert isinstance(node, object)
-
-
-def test_list_snapshots(compute_driver):
-    snapshots = compute_driver.list_snapshots('web1')
-    for snapshot in snapshots:
-        print(snapshot)
-        assert 'expiry_time' in snapshot
-
-
-def test_list_nics(compute_driver):
-    result = compute_driver.ex_list_
-
-
-def test_list_vlans(compute_driver):
-    vlans = compute_driver.ex_list_vlans()
-    print(vlans)
-    assert isinstance(vlans, list)
-
-
-def test_list_anti_affinity_rules(compute_driver):
-    # Could use network domain or node but not both
-    # net_domain = compute_driver.ex_get_network_domain('6aafcf08-cb0b-432c-9c64-7371265db086')
-    node = compute_driver.ex_get_node_by_id("803e5e00-b22a-450a-8827-066ff15ec977")
-    anti_affinity_rules = compute_driver.ex_list_anti_affinity_rules(node=node)
-    assert len(anti_affinity_rules) > 1
-
-
-def test_list_no_anti_affinity_rules(compute_driver):
-    # Could use network domain or node but not both
-    # net_domain = compute_driver.ex_get_network_domain('6aafcf08-cb0b-432c-9c64-7371265db086')
-    node = compute_driver.ex_get_node_by_id("803e5e00-b22a-450a-8827-066ff15ec977")
-    anti_affinity_rules = compute_driver.ex_list_anti_affinity_rules(node=node)
-    assert len(anti_affinity_rules) == 0
-
-
-
-"""
-def test_list_sizes(compute_driver):
-    properties = compute_driver.list_locations()
-    for property in properties:
-        print(property)
-"""
-
-
-def test_images(compute_driver):
-    images = compute_driver.list_images()
-    print()
-    print(images)
-    assert isinstance(images, list) and len(images) > 0
-
-
-def test_list_public_ip_blocks(compute_driver):
-    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]
-    blocks = compute_driver.ex_list_public_ip_blocks(net_domain)
-    print(blocks)
-
-
-def test_list_private_ipv4_addresses_vlan(compute_driver):
-    vlan_name = 'sdk_vlan1'
-    vlan = compute_driver.ex_list_vlans(name=vlan_name)[0]
-    ip_addresses = compute_driver.ex_list_reserved_ipv4(vlan=vlan)
-    for ip_address in ip_addresses:
-        print(ip_address)
-
-
-def test_list_private_ipv4_addresses_datacenter(compute_driver):
-    datacenter_id = 'EU8'
-    ip_addresses = compute_driver.ex_list_reserved_ipv4(datacenter_id=datacenter_id)
-    for ip_address in ip_addresses:
-        print(ip_address)
-
-
-def test_list_private_ipv4_addresses_all(compute_driver):
-    ip_addresses = compute_driver.ex_list_reserved_ipv4()
-    for ip_address in ip_addresses:
-        print(ip_address)
\ No newline at end of file