pep 8ify

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

Branch: refs/heads/trunk
Commit: d776d646d68e8e084acbbf706addf0a5535b4313
Parents: d4ae1ab
Author: mitch <[email protected]>
Authored: Tue Oct 2 17:28:42 2018 -0400
Committer: mitch <[email protected]>
Committed: Tue Oct 2 17:28:42 2018 -0400

----------------------------------------------------------------------
 libcloud/common/nttcis.py               | 184 +++-----------
 libcloud/compute/drivers/nttcis.py      | 342 +++++++++++++++++----------
 libcloud/loadbalancer/drivers/nttcis.py |  66 +++---
 tests/lib_create_test.py                |  19 ++
 tests/lib_list_test.py                  |   4 -
 5 files changed, 305 insertions(+), 310 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/d776d646/libcloud/common/nttcis.py
----------------------------------------------------------------------
diff --git a/libcloud/common/nttcis.py b/libcloud/common/nttcis.py
index d58e2d3..82822e5 100644
--- a/libcloud/common/nttcis.py
+++ b/libcloud/common/nttcis.py
@@ -346,12 +346,12 @@ class NttCisResponse(XmlResponse):
                 if message is not None:
                     break
             raise NttCisAPIException(code=code,
-                                            msg=message,
-                                            driver=self.connection.driver)
+                                     msg=message,
+                                     driver=self.connection.driver)
         if self.status is not httplib.OK:
             raise NttCisAPIException(code=self.status,
-                                            msg=body,
-                                            driver=self.connection.driver)
+                                     msg=body,
+                                     driver=self.connection.driver)
 
         return self.body
 
@@ -416,8 +416,8 @@ class NttCisConnection(ConnectionUserAndKey):
                     .format(self.active_api_version)
 
                 raise NttCisAPIException(code=None,
-                                                msg=msg,
-                                                driver=self.driver)
+                                         msg=msg,
+                                         driver=self.driver)
             elif LooseVersion(api_version) > LooseVersion(
                     self.latest_api_version):
                 msg = 'Unsupported API Version. The version specified is ' \
@@ -426,8 +426,8 @@ class NttCisConnection(ConnectionUserAndKey):
                     .format(self.active_api_version)
 
                 raise NttCisAPIException(code=None,
-                                                msg=msg,
-                                                driver=self.driver)
+                                         msg=msg,
+                                         driver=self.driver)
 
             else:
                 # Overwrite default version using the version user specified
@@ -486,7 +486,6 @@ class NttCisConnection(ConnectionUserAndKey):
             params=params, data=data,
             method=method, headers=headers)
 
-
     def paginated_request_with_orgId_api_2(self, action, params=None, data='',
                                            headers=None, method='GET',
                                            page_size=250):
@@ -597,7 +596,8 @@ class NttCisConnection(ConnectionUserAndKey):
             if isinstance(result, Node):
                 object_state = result.state
             else:
-                # BUG: need to use result.status.lower() or will never match 
if client uses lower case
+                # 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:
@@ -607,8 +607,8 @@ class NttCisConnection(ConnectionUserAndKey):
 
         msg = 'Status check for object %s timed out' % (result)
         raise NttCisAPIException(code=object_state,
-                                        msg=msg,
-                                        driver=self.driver)
+                                 msg=msg,
+                                 driver=self.driver)
 
     def _get_orgId(self):
         """
@@ -812,7 +812,8 @@ class NttCisScsiController(object):
     """
     A class that represents the disk on a server
     """
-    def __init__(self, id: str=None, adapter_type: str=None, bus_number: 
str=None, state: str=None):
+    def __init__(self, id: str=None, adapter_type: str=None,
+                 bus_number: str=None, state: str=None):
         """
         Instantiate a new :class:`DimensionDataServerDisk`
 
@@ -875,8 +876,9 @@ class NttCisSnapshot(object):
     """
     NTTCIS Class representing server snapshots
     """
-    def __init__(self, server_id, service_plan, id=None, window_id=None, 
start_time=None,
-                 state=None, end_time=None, type=None, expiry_time=None, 
action=None):
+    def __init__(self, server_id, service_plan, id=None, window_id=None,
+                 start_time=None, state=None, end_time=None,
+                 type=None, expiry_time=None, action=None):
         self.server_id = server_id
         self.service_plan = service_plan
         self.id = id
@@ -894,15 +896,16 @@ class NttCisSnapshot(object):
                  'id=%s, start_time=%s, '
                  'end_time=%s, self.type=%s, '
                  'self.expiry_timne=%s, self.state=%s>')
-                % (self.id, self.start_time, self.end_time, self.type, 
self.expiry_time, self.state))
+                % (self.id, self.start_time, self.end_time,
+                   self.type, self.expiry_time, self.state))
 
 
 class NttCisReservedIpAddress(object):
     """
     NTTCIS Rerverse IPv4 address
     """
-
-    def __init__(self, datacenter_id, exclusive, vlan_id, ip, 
description=None):
+    def __init__(self, datacenter_id, exclusive, vlan_id, ip,
+                 description=None):
         self.datacenter_id = datacenter_id
         self.exclusive = exclusive
         self.vlan_id = vlan_id
@@ -911,15 +914,16 @@ class NttCisReservedIpAddress(object):
 
     def __repr__(self):
         return (('<NttCisReservedIpAddress '
-                 'datacenterId=%s, exclusiven=%s, vlanId=%s, ipAddress=%s, 
description=-%s') %
-                (self.datacenter_id, self.exclusive, self.vlan_id, self.ip, 
self.description))
+                 'datacenterId=%s, exclusiven=%s, vlanId=%s, ipAddress=%s,'
+                 ' description=-%s') % (self.datacenter_id, self.exclusive,
+                                        self.vlan_id, self.ip,
+                                        self.description))
 
 
 class NttCisFirewallRule(object):
     """
     NTTCIS Firewall Rule for a network domain
     """
-
     def __init__(self, id, name, action, location, network_domain,
                  status, ip_version, protocol, source, destination,
                  enabled):
@@ -947,9 +951,7 @@ class NttCisFirewallRule(object):
 
 """
 class NttCisFirewallAddress(object):
-    
     The source or destination model in a firewall rule
-    
     def __init__(self, any_ip, ip_address, ip_prefix_size,
                  port_begin, port_end, address_list_id,
                  port_list_id):
@@ -961,7 +963,6 @@ class NttCisFirewallAddress(object):
         self.port_end = port_end
         self.address_list_id = address_list_id
         self.port_list_id = port_list_id
-
     def __repr__(self):
         return (
             '<NttCisFirewallAddress: any_ip=%s, ip_address=%s, '
@@ -985,10 +986,14 @@ class NttCisFirewallAddress(object):
                  port_list_id=None):
         """
         param any_ip: used to set ip address to "ANY"
-        :param ip_address: An ip address of either IPv4 decimal notation or an 
IPv6 address
+        :param ip_address: An ip address of either IPv4 decimal
+                           notation or an IPv6 address
         :param ip_prefix_size: An integer denoting prefix size.
-        :param port_begin: integer for an individual port or start of a list  
of ports if not using a port list
-        :param port_end: integer required if using a list of ports (NOT a port 
list but a list starting with port begin)
+        :param port_begin: integer for an individual port or start of a list
+                           of ports if
+                           not using a port list
+        :param port_end: integer required if using a list of ports
+                         (NOT a port list but a list starting with port begin)
         :param address_list_id: An id identifying an address list
         :param port_list_id:  An id identifying a port list
         """
@@ -1427,13 +1432,6 @@ class NttCisBackupDetails(object):
                 % (self.asset_id))
 
 
-class NttCisDataCenter(object):
-    """
-    Class that represents a Cloud Infrastructure Datacenter
-    """
-
-
-
 class NttCisBackupClient(object):
     """
     An object that represents a backup client
@@ -1443,33 +1441,25 @@ class NttCisBackupClient(object):
                  alert=None, running_job=None):
         """
         Initialize an instance of :class:`NttCisBackupClient`
-
         :param id: Unique ID for the client
         :type  id: ``str``
-
         :param type: The type of client that this client is
         :type  type: :class:`NttCisBackupClientType`
-
         :param status: The states of this particular backup client.
                        i.e. (Unregistered)
         :type  status: ``str``
-
         :param schedule_policy: The schedule policy for this client
                                 NOTE: NTTCIS only sends back the name
                                 of the schedule policy, no further details
         :type  schedule_policy: ``str``
-
         :param storage_policy: The storage policy for this client
                                NOTE: NTTCIS only sends back the name
                                of the storage policy, no further details
         :type  storage_policy: ``str``
-
         :param download_url: The download url for this client
         :type  download_url: ``str``
-
         :param alert: The alert configured for this backup client (optional)
         :type  alert: :class:`NttCisBackupClientAlert`
-
         :param alert: The running job for the client (optional)
         :type  alert: :class:`NttCisBackupClientRunningJob`
         """
@@ -1924,113 +1914,3 @@ class NttCisNic(object):
         return ('<NttCisNic: private_ip_v4=%s, vlan=%s,'
                 'network_adapter_name=%s>'
                 % (self.private_ip_v4, self.vlan, self.network_adapter_name))
-
-
-#####  Testing new concept below this line
-
-class XmlListConfig(list):
-
-    def __init__(self, elem_list):
-        for element in elem_list:
-            if element is not None:
-                # treat like dict
-                #print(element.attrib, len(element))
-                if len(element) >= 0 or element[0].tag != element[1].tag:
-                    self.append(XmlDictConfig(element))
-                # treat like list
-                elif element[0].tag == element[1].tag:
-                    if 'property' in element.tag:
-                        self.append({element.attrib.get('name'): 
element.attrib.get('value')})
-                    else:
-                        self.append(element.attrib)
-            elif element.text:
-                text = element.text.strip()
-                if text:
-                    self.append(text)
-
-
-class XmlDictConfig(dict):
-
-    def __init__(self, parent_element):
-        if parent_element.items():
-            if 'property' in parent_element.tag:
-                self.update({parent_element.attrib.get('name'): 
parent_element.attrib.get('value')})
-            else:
-                self.update(dict(parent_element.items()))
-
-        for element in parent_element:
-            if len(element) > 0:
-                # treat like dict - we assume that if the first two tags
-                # in a series are different, then they are all different.
-                if len(element) == 1 or element[0].tag != element[1].tag:
-                    elem_dict = XmlDictConfig(element)
-
-                # treat like list - we assume that if the first two tags
-                # in a series are the same, then the rest are the same.
-                else:
-                    # here, we put the list in dictionary; the key is the
-                    # tag name the list elements all share in common, and
-                    # the value is the list itself
-                    elem_dict = {element[0].tag.split('}')[1]: 
XmlListConfig(element)}
-
-                # if the tag has attributes, add those to the dict
-                if element.items():
-                    elem_dict.update(dict(element.items()))
-                self.update({element.tag.split('}')[1]: elem_dict})
-            # this assumes that if you've got an attribute in a tag,
-            # you won't be having any text. This may or may not be a
-            # good idea -- time will tell. It works for the way we are
-            # currently doing XML configuration files...
-            elif element.items():
-                # It is possible to have duplicate element tags. If so, 
convert to a dict of lists
-                if element.tag in self:
-                    tmp_list = list()
-                    tmp_dict = dict()
-                    if isinstance(self[element.tag], list):
-                        tmp_list.append(element.tag)
-                    else:
-                        for k, v in self[element.tag].items():
-                            if isinstance(k, XmlListConfig):
-                                tmp_list.append(k)
-                            else:
-                                tmp_dict.update({k: v})
-                        tmp_list.append(tmp_dict)
-                        tmp_list.append(dict(element.items()))
-                    self[element.tag] = tmp_list
-                else:
-                    self.update({element.tag.split('}')[1]: 
dict(element.items())})
-            # finally, if there are no child tags and no attributes, extract
-            # the text
-            else:
-                self.update({element.tag.split('}')[1]: element.text})
-
-
-class Generic:
-    def __new__(cls, arg):
-        if isinstance(arg, abc.Mapping):
-            return super().__new__(cls)
-        elif isinstance(arg, abc.MutableSequence):
-            return [cls(item) for item in arg]
-        else:
-            return arg
-
-    def __init__(self, mapping):
-        self.__data = {}
-        for key, value in mapping.items():
-            if iskeyword(key):
-                key += '_'
-            self.__data[key] = value
-
-    def __getattr__(self, name):
-        if hasattr(self.__data, name):
-            return getattr(self.__data, name)
-        else:
-            return Generic(self.__data[name])
-
-    def __repr__(self):
-        values = ','.join("{}={!r}".format(k, v) for k,v in 
self.__data.items())
-        return values
-
-
-def cloud_factory(from_dict: dict):
-    pass

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d776d646/libcloud/compute/drivers/nttcis.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/nttcis.py 
b/libcloud/compute/drivers/nttcis.py
index bce144f..4a1bb6b 100644
--- a/libcloud/compute/drivers/nttcis.py
+++ b/libcloud/compute/drivers/nttcis.py
@@ -24,7 +24,7 @@ from libcloud.compute.base import NodeSize, NodeImage, 
NodeLocation
 from libcloud.common.nttcis import dd_object_to_id
 from libcloud.common.nttcis import NttCisAPIException
 from libcloud.common.nttcis import (NttCisConnection,
-                                           NttCisStatus)
+                                    NttCisStatus)
 from libcloud.common.nttcis import NttCisNetwork
 from libcloud.common.nttcis import NttCisNetworkDomain
 from libcloud.common.nttcis import NttCisVlan
@@ -48,7 +48,6 @@ from libcloud.common.nttcis import NttCisNic
 from libcloud.common.nttcis import NetworkDomainServicePlan
 from libcloud.common.nttcis import NttCisTagKey
 from libcloud.common.nttcis import NttCisTag
-from libcloud.common.nttcis import XmlDictConfig, XmlListConfig, Generic
 from libcloud.common.nttcis import API_ENDPOINTS, DEFAULT_REGION
 from libcloud.common.nttcis import TYPES_URN
 from libcloud.common.nttcis import SERVER_NS, NETWORK_NS, GENERAL_NS
@@ -130,11 +129,11 @@ class NttCisNodeDriver(NodeDriver):
             self.api_version = api_version
 
         super(NttCisNodeDriver, self).__init__(key=key, secret=secret,
-                                                      secure=secure, host=host,
-                                                      port=port,
-                                                      api_version=api_version,
-                                                      region=region,
-                                                      **kwargs)
+                                               secure=secure, host=host,
+                                               port=port,
+                                               api_version=api_version,
+                                               region=region,
+                                               **kwargs)
 
     def _ex_connection_class_kwargs(self):
         """
@@ -284,7 +283,7 @@ class NttCisNodeDriver(NodeDriver):
                     **kwargs
                     ):
         """
-        Create a new DimensionData node in MCP2. However, it is still
+        Create a new NTTCIS node in MCP2. However, it is still
         backward compatible for MCP1 for a limited time. Please consider
         using MCP2 datacenter as MCP1 will phase out soon.
 
@@ -298,7 +297,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = False
-        >>> DimensionData = get_driver(Provider.DIMENSIONDATA)
+        >>> NTTCIS = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Password
@@ -333,7 +332,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Password
@@ -454,7 +453,7 @@ class NttCisNodeDriver(NodeDriver):
                                      will not be configured correctly.
         :type       ex_ipv4_gateway: ``str``
 
-        :keyword    ex_disks: (optional) Dimensiondata disks. Optional disk
+        :keyword    ex_disks: (optional) NTTCIS disks. Optional disk
                             elements can be used to define the disk speed
                             that each disk on the Server; inherited from the
                             source Server Image will be deployed to. It is
@@ -526,7 +525,7 @@ class NttCisNodeDriver(NodeDriver):
                 vlans = kwargs.get('ex_additional_nics_vlan')
                 if isinstance(vlans, (list, tuple)):
                     for v in vlans:
-                        add_nic =NttCisNic(vlan=v)
+                        add_nic = NttCisNic(vlan=v)
                         additional_nics.append(add_nic)
                 else:
                     raise TypeError("ex_additional_nics_vlan must "
@@ -880,7 +879,6 @@ class NttCisNodeDriver(NodeDriver):
             ).object
         )
 
-
     def ex_get_datacneter(self, ex_id):
         """
         List locations (datacenters) available for instantiating servers and
@@ -898,7 +896,6 @@ class NttCisNodeDriver(NodeDriver):
 
         return  
self.connection.request_with_orgId_api_2('infrastructure/datacenter', 
params=params)
 
-
     def list_snapshot_windows(self, location: str, plan: str) -> list:
         """
         List snapshot windows in a given location
@@ -911,8 +908,8 @@ class NttCisNodeDriver(NodeDriver):
         params['datacenterId'] = self._location_to_location_id(location)
         params['servicePlan'] = plan
         return self._to_windows(self.connection.request_with_orgId_api_2(
-                   'infrastructure/snapshotWindow',
-                    params=params).object)
+                                'infrastructure/snapshotWindow',
+                                params=params).object)
 
     def list_networks(self, location=None):
         """
@@ -1018,7 +1015,8 @@ class NttCisNodeDriver(NodeDriver):
                     'urn:guestOsCustomization'
                 ).text = is_guest_os_customization
 
-            if tagkey_name_value_dictionaries is not None and 
len(tagkey_name_value_dictionaries) > 0:
+            if tagkey_name_value_dictionaries is not None and \
+                len(tagkey_name_value_dictionaries) > 0:
                 for k, v in tagkey_name_value_dictionaries.items():
                     tag_elem = ET.SubElement(
                         import_image_elem,
@@ -1123,7 +1121,9 @@ class NttCisNodeDriver(NodeDriver):
             nodes_obj = self._list_nodes_single_page(params)
             yield self._to_nodes(nodes_obj)
 
-    def ex_edit_metadata(self, node: Node, name: str = None, description: str 
= None, drs_eligible: str = None) -> bool:
+    def ex_edit_metadata(self, node: Node, name: str = None,
+                         description: str = None,
+                         drs_eligible: str = None) -> bool:
         request_elem = ET.Element('editServerMetadata', {'xmlns': TYPES_URN, 
'id': node.id})
         if name is not None:
             ET.SubElement(request_elem, 'name').text = name
@@ -1282,7 +1282,8 @@ class NttCisNodeDriver(NodeDriver):
         response_code = findtext(body, 'result', GENERAL_NS)
         return response_code in ['IN_PROGRESS', 'SUCCESS']
 
-    def ex_enable_snapshots(self, node: str, window: str, plan: 
str='ADVANCED', initiate: str = 'true') -> bool:
+    def ex_enable_snapshots(self, node: str, window: str, plan: str='ADVANCED',
+                            initiate: str = 'true') -> bool:
         update_node = ET.Element('enableSnapshotService',
                                  {'xmlns': TYPES_URN})
         window_id = window
@@ -1310,8 +1311,6 @@ class NttCisNodeDriver(NodeDriver):
         return self._to_snapshot(self.connection.request_with_orgId_api_2(
                                  'snapshot/snapshot/%s' % snapshot_id).object)
 
-
-
     def ex_disable_snapshots(self, node: str) -> bool:
         update_node = ET.Element('disableSnapshotService',
                                  {'xmlns': TYPES_URN})
@@ -1325,7 +1324,8 @@ class NttCisNodeDriver(NodeDriver):
         response_code = findtext(result, 'responseCode', TYPES_URN)
         return response_code in ['IN_PROGRESS', 'OK']
 
-    def ex_initiate_manual_snapshot(self, name: str, server_id: str = None) -> 
bool:
+    def ex_initiate_manual_snapshot(self, name: str, server_id: str = None) -> 
\
+                                    bool:
         """
         Initiate a manual snapshot on the fly
         :param node: A node object from which to get the node id
@@ -1338,7 +1338,9 @@ class NttCisNodeDriver(NodeDriver):
             node = self.list_nodes(ex_name=name)
             if len(node) > 1:
                 raise RuntimeError("Found more than one server Id, "
-                                   "please use one the following along with 
name parameter: {}".format([n.id for n in node]))
+                                   "please use one the following along"
+                                   " with name parameter: {}".
+                                   format([n.id for n in node]))
         else:
             node = []
             node.append(self.ex_get_node_by_id(server_id))
@@ -1352,8 +1354,57 @@ class NttCisNodeDriver(NodeDriver):
         response_code = findtext(result, 'responseCode', TYPES_URN)
         return response_code in ['IN_PROGRESS', 'OK']
 
-    def ex_create_snapshot_preview_server(self, ):
-        pass
+    def ex_create_snapshot_preview_server(self, snapshot_id, server_name,
+                                          server_started, nics_connected,
+                                          server_description=None,
+                                          target_cluster_id=None,
+                                          preserve_mac_addresses=None,
+                                          tag_key_name=None,
+                                          tag_key_id=None, tag_value=None):
+        create_preview = ET.Element('createSnapshotPreviewServer',
+                                    {'xmlns': TYPES_URN,
+                                     'snapshotId': snapshot_id})
+        ET.SubElement(create_preview, 'serverName').text = server_name
+        if server_description is not None:
+            ET.SubElement(create_preview, 'serverDescription').text = \
+                          server_description
+        if target_cluster_id is not None:
+            ET.SubElement(create_preview, 'targetClusterId').text = \
+                          target_cluster_id
+        ET.SubElement(create_preview, 'serverStarted').text = \
+                      server_started
+        ET.SubElement(create_preview, 'nicsConnected').text = \
+                      nics_connected
+        if preserve_mac_addresses is not None:
+            ET.SubElement(create_preview, 'preserveMacAddresses').text = \
+                          preserve_mac_addresses
+        if tag_key_name is not None:
+            tag_elem = ET.SubElement(create_preview, 'tag')
+            ET.SubElement(tag_elem, 'tagKeyName').text = tag_key_name
+            ET.SubElement(tag_elem, 'value').text = tag_value
+        elif tag_key_id is not None:
+            tag_elem = ET.SubElement(create_preview, 'tagById')
+            ET.SubElement(create_preview, 'tagKeyId').text = tag_key_name
+            ET.SubElement(tag_elem, 'value').text = tag_value
+        test = ET.tostring(create_preview)
+        result = self.connection.request_with_orgId_api_2(
+            'snapshot/createSnapshotPreviewServer',
+            method='POST',
+            data=ET.tostring(create_preview)).object
+        for info in findall(result, 'info', TYPES_URN):
+            if info.get('name') == 'serverId':
+                return info.get('value')
+
+    def ex_migrate_preview_server(self, preview_id):
+        migrate_preview = ET.Element('migrateSnapshotPreviewServer',
+                                    {'xmlns': TYPES_URN,
+                                     'serverId': preview_id})
+        result = self.connection.request_with_orgId_api_2(
+            'snapshot/migrateSnapshotPreviewServer',
+            method='POST',
+            data=ET.tostring(migrate_preview)).object
+        response_code = findtext(result, 'responseCode', TYPES_URN)
+        return response_code in ['IN_PROGRESS', 'OK']
 
     def ex_create_anti_affinity_rule(self, node_list):
         """
@@ -1395,7 +1446,8 @@ class NttCisNodeDriver(NodeDriver):
         rule_id = anti_affinity_rule
         #rule_id = self._anti_affinity_rule_to_anti_affinity_rule_id(
         #    anti_affinity_rule)
-        update_node = ET.Element('deleteAntiAffinityRule', {"xmlns": 
TYPES_URN})
+        update_node = ET.Element('deleteAntiAffinityRule',
+                                 {"xmlns": TYPES_URN})
         update_node.set('id', rule_id)
         result = self.connection.request_with_orgId_api_2(
             'server/deleteAntiAffinityRule',
@@ -1935,9 +1987,10 @@ class NttCisNodeDriver(NodeDriver):
             params['ipv6Address'] = ipv6_address
         if state is not None:
             params['state'] = state
-        response = self.connection.request_with_orgId_api_2('network/vlan',
-                                                            params=params) \
-                                  .object
+        response = self.connection.request_with_orgId_api_2(
+                                                            'network/vlan',
+                                                            params=params).\
+            object
         return self._to_vlans(response)
 
     def ex_add_public_ip_block_to_network_domain(self, network_domain):
@@ -1985,13 +2038,16 @@ class NttCisNodeDriver(NodeDriver):
 
 
     # 09/10/18 Adding private IPv4 and IPv6  addressing capability
-    def ex_reserve_ip(self, vlan: NttCisVlan, ip: str, description: None) -> 
bool:
+    def ex_reserve_ip(self, vlan: NttCisVlan, ip: str, description: None) ->\
+            bool:
         vlan_id = self._vlan_to_vlan_id(vlan)
         if re.match(r'(\d+\.){3}', ip):
-            private_ip = ET.Element('reservePrivateIpv4Address', {'xmlns': 
TYPES_URN})
+            private_ip = ET.Element('reservePrivateIpv4Address',
+                                    {'xmlns': TYPES_URN})
             resource = 'network/reservePrivateIpv4Address'
         elif re.search(r':', ip):
-            private_ip = ET.Element('reserveIpv6Address', {'xmlns': TYPES_URN})
+            private_ip = ET.Element('reserveIpv6Address',
+                                    {'xmlns': TYPES_URN})
             resource = 'network/reserveIpv6Address'
         ET.SubElement(private_ip, 'vlanId').text = vlan_id
         ET.SubElement(private_ip, 'ipAddress').text = ip
@@ -1999,19 +2055,23 @@ class NttCisNodeDriver(NodeDriver):
             ET.SubElement(private_ip, 'description').text = description
 
         result = self.connection.request_with_orgId_api_2(
-            resource,
-            method='POST',
-            data=ET.tostring(private_ip)).object
+                                                          resource,
+                                                          method='POST',
+                                                          data=ET.tostring(
+                                                              private_ip)
+                                                          ).object
         response_code = findtext(result, 'responseCode', TYPES_URN)
         return response_code in ['IN_PROGRESS', 'OK']
 
     def ex_unreserve_ip_addresses(self, vlan: NttCisVlan, ip: str) -> bool:
         vlan_id = self._vlan_to_vlan_id(vlan)
         if re.match(r'(\d+\.){3}', ip):
-            private_ip = ET.Element('unreservePrivateIpv4Address', {'xmlns': 
TYPES_URN})
+            private_ip = ET.Element('unreservePrivateIpv4Address',
+                                    {'xmlns': TYPES_URN})
             resource = 'network/reservePrivateIpv4Address'
         elif re.search(r':', ip):
-            private_ip = ET.Element('unreserveIpv6Address', {'xmlns': 
TYPES_URN})
+            private_ip = ET.Element('unreserveIpv6Address',
+                                    {'xmlns': TYPES_URN})
             resource = 'network/unreserveIpv6Address'
         ET.SubElement(private_ip, 'vlanId').text = vlan_id
         ET.SubElement(private_ip, 'ipAddress').text = ip
@@ -2023,38 +2083,47 @@ class NttCisNodeDriver(NodeDriver):
         response_code = findtext(result, 'responseCode', TYPES_URN)
         return response_code in ['IN_PROGRESS', 'OK']
 
-    def ex_list_reserved_ipv4(self,  vlan: NttCisVlan=None, datacenter_id: 
str=None):
+    def ex_list_reserved_ipv4(self,  vlan: NttCisVlan=None,
+                              datacenter_id: str=None):
         if vlan is not None:
             vlan_id = self._vlan_to_vlan_id(vlan)
             params = {"vlanId": vlan_id}
             response = self.connection \
-                
.request_with_orgId_api_2('network/reservedPrivateIpv4Address', 
params=params).object
+                .request_with_orgId_api_2('network/reservedPrivateIpv4Address',
+                                          params=params).object
 
         elif datacenter_id is not None:
             params = {'datacenterId': datacenter_id}
             response = self.connection \
-                
.request_with_orgId_api_2('network/reservedPrivateIpv4Address', 
params=params).object
+                .request_with_orgId_api_2('network/reservedPrivateIpv4Address',
+                                          params=params).object
         else:
             response = self.connection \
-                
.request_with_orgId_api_2('network/reservedPrivateIpv4Address').object
+                .request_with_orgId_api_2(
+                                          'network/reservedPrivateIpv4Address'
+            ).object
 
         addresses = self._to_ipv4_addresses(response)
         return addresses
 
-    def ex_list_reserved_ipv6(self,  vlan: NttCisVlan=None, datacenter_id: 
str=None):
+    def ex_list_reserved_ipv6(self,  vlan: NttCisVlan=None,
+                              datacenter_id: str=None):
         if vlan is not None:
             vlan_id = self._vlan_to_vlan_id(vlan)
             params = {"vlanId": vlan_id}
             response = self.connection \
-                .request_with_orgId_api_2('network/reservedIpv6Address', 
params=params).object
+                .request_with_orgId_api_2('network/reservedIpv6Address',
+                                          params=params).object
 
         elif datacenter_id is not None:
             params = {'datacenterId': datacenter_id}
             response = self.connection \
-                .request_with_orgId_api_2('network/reservedIpv6Address', 
params=params).object
+                .request_with_orgId_api_2('network/reservedIpv6Address',
+                                          params=params).object
         else:
             response = self.connection \
-                .request_with_orgId_api_2('network/reservedIpv6Address').object
+                .request_with_orgId_api_2(
+                                          'network/reservedIpv6Address').object
 
         addresses = self._to_ipv6_addresses(response)
         return addresses
@@ -2147,7 +2216,8 @@ class NttCisNodeDriver(NodeDriver):
             else:
                 dest_ip.set('address', rule.destination.ip_address)
                 if rule.destination.ip_prefix_size is not None:
-                    dest_ip.set('prefixSize', rule.destination.ip_prefix_size)
+                    dest_ip.set('prefixSize',
+                                 rule.destination.ip_prefix_size)
         if rule.destination.port_list_id is not None:
             dest_port = ET.SubElement(dest, 'portListId')
             dest_port.text = rule.destination.port_list_id
@@ -2191,8 +2261,11 @@ class NttCisNodeDriver(NodeDriver):
         return rule
     """
 
-    def ex_create_firewall_rule(self, network_domain, name, action, 
ip_version, protocol,
-                                source_addr, destination, position, enabled=1, 
 position_relative_to_rule=None):
+    def ex_create_firewall_rule(self, network_domain, name, action,
+                                ip_version, protocol, 
+                                source_addr, destination,
+                                position, enabled=1,
+                                position_relative_to_rule=None):
         """
         Creates a firewall rule
 
@@ -2317,7 +2390,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get location
@@ -2702,7 +2775,9 @@ class NttCisNodeDriver(NodeDriver):
         response_code = findtext(result, 'responseCode', TYPES_URN)
         return response_code in ['IN_PROGRESS', 'OK']
 
-    def ex_add_scsi_controller_to_node(self, server_id: str, adapter_type: 
str, bus_number: str=None) -> bool:
+    def ex_add_scsi_controller_to_node(self, server_id: str, 
+                                       adapter_type: str,
+                                       bus_number: str=None) -> bool:
         """
         Added 8/27/18:  Adds a SCSI Controller by node id
         :param server_id: server id
@@ -2711,7 +2786,8 @@ class NttCisNodeDriver(NodeDriver):
         :return: whether addition is in progress or 'OK' otherwise false
         """
 
-        update_node = ET.Element('addScsiController', {'xmlns': TYPES_URN})
+        update_node = ET.Element('addScsiController',
+                                 {'xmlns': TYPES_URN})
         ET.SubElement(update_node, 'serverId').text = server_id
         ET.SubElement(update_node, 'adapterType').text = adapter_type
         if bus_number is not None:
@@ -2740,13 +2816,15 @@ class NttCisNodeDriver(NodeDriver):
         return response_code in ['IN_PROGRESS', 'OK']
 
     def ex_add_storage_to_node(self, amount, node=None,
-                               speed='STANDARD', controller_id=None, 
scsi_id=None):
+                               speed='STANDARD', controller_id=None,
+                               scsi_id=None):
         """
         Updated 8/23/18
         Add storage to the node
         One of node or controller_id must be selected
 
-        :param  node: The server to add storage to (required if controller_id 
is not used
+        :param  node: The server to add storage to (required if 
+                      controller_id is not used
         :type   node: :class:`Node`
 
         :param  amount: The amount of storage to add, in GB
@@ -2755,7 +2833,9 @@ class NttCisNodeDriver(NodeDriver):
         :param  speed: The disk speed type
         :type   speed: ``str``
 
-        :param  conrollter_id: The disk may be added using the cotnroller id 
(required if node object is not used)
+        :param  conrollter_id: The disk may be added using the 
+                               cotnroller id (required if node 
+                               object is not used)
         :type   controller_id: ``str``
 
         :param  scsi_id: The target SCSI ID (optional)
@@ -2764,8 +2844,10 @@ class NttCisNodeDriver(NodeDriver):
         :rtype: ``bool``
         """
 
-        if (node is None and controller_id is None) or (node is not None and 
controller_id is not None):
-            raise RuntimeError("Either a node or a controller id must be 
specified")
+        if (node is None and controller_id is None) or \
+           (node is not None and controller_id is not None):
+            raise RuntimeError("Either a node or a controller "
+                               "id must be specified")
 
         update_node = ET.Element('addDisk',
                                  {'xmlns': TYPES_URN})
@@ -2886,8 +2968,8 @@ class NttCisNodeDriver(NodeDriver):
         response_code = findtext(result, 'responseCode', TYPES_URN)
         return response_code in ['IN_PROGRESS', 'OK']
 
-    def ex_reconfigure_node(self, node, memory_gb=None, cpu_count=None, 
cores_per_socket=None,
-                            cpu_performance=None):
+    def ex_reconfigure_node(self, node, memory_gb=None, cpu_count=None, 
+                            cores_per_socket=None, cpu_performance=None):
         """
         Reconfigure the virtual hardware specification of a node
 
@@ -3177,7 +3259,8 @@ class NttCisNodeDriver(NodeDriver):
 
     def ex_get_tag_key_by_name(self, name):
         """
-        NOTICE: Tag key is one of those instances where Libloud handles the 
search of a list for the client code.
+        NOTICE: Tag key is one of those instances where Libloud 
+                handles the search of a list for the client code.
                 This behavior exists inconsistently across libcloud.
         Get a specific tag key by Name
 
@@ -3477,7 +3560,9 @@ class NttCisNodeDriver(NodeDriver):
             % (datacenter_id, start_date, end_date))
         return self._format_csv(result.response)
 
-    def ex_list_ip_address_list(self, ex_network_domain:NttCisIpAddressList) 
-> object:
+    def ex_list_ip_address_list(self, 
+                                ex_network_domain:NttCisIpAddressList) -> \
+        object:
         """
         List IP Address List by network domain ID specified
 
@@ -3488,7 +3573,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get location
@@ -3529,7 +3614,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get location
@@ -3574,12 +3659,12 @@ class NttCisNodeDriver(NodeDriver):
         >>> from pprint import pprint
         >>> from libcloud.compute.types import Provider
         >>> from libcloud.compute.providers import get_driver
-        >>> from libcloud.common.dimensiondata import DimensionDataIpAddress
+        >>> from libcloud.common.nttcis import NttCisIpAddress
         >>> import libcloud.security
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get location
@@ -3592,10 +3677,10 @@ class NttCisNodeDriver(NodeDriver):
                               networkDomainName][0]
         >>>
         >>> # IP Address collection
-        >>> ipAddress_1 = DimensionDataIpAddress(begin='190.2.2.100')
-        >>> ipAddress_2 = DimensionDataIpAddress(begin='190.2.2.106',
+        >>> ipAddress_1 = NttCisIpAddress(begin='190.2.2.100')
+        >>> ipAddress_2 = NttCisIpAddress(begin='190.2.2.106',
                                                  end='190.2.2.108')
-        >>> ipAddress_3 = DimensionDataIpAddress(begin='190.2.2.0',
+        >>> ipAddress_3 = NttCisIpAddress(begin='190.2.2.0',
                                                  prefix_size='24')
         >>> ip_address_collection = [ipAddress_1, ipAddress_2, ipAddress_3]
         >>>
@@ -3702,24 +3787,25 @@ class NttCisNodeDriver(NodeDriver):
                                 ip_address_collection=None,
                                 child_ip_address_lists=None):
         """
-        Edit IP Address List. IP Address list.  Bear in mind you cannot add ip 
addresses to 
+        Edit IP Address List. IP Address list. 
+        Bear in mind you cannot add ip addresses to 
 
         >>> from pprint import pprint
         >>> from libcloud.compute.types import Provider
         >>> from libcloud.compute.providers import get_driver
-        >>> from libcloud.common.dimensiondata import DimensionDataIpAddress
+        >>> from libcloud.common.NTTCIS import NttCisIpAddress
         >>> import libcloud.security
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # IP Address collection
-        >>> ipAddress_1 = DimensionDataIpAddress(begin='190.2.2.100')
-        >>> ipAddress_2 = DimensionDataIpAddress(begin='190.2.2.106',
+        >>> ipAddress_1 = NttCisIpAddress(begin='190.2.2.100')
+        >>> ipAddress_2 = NttCisIpAddress(begin='190.2.2.106',
         >>>                                      end='190.2.2.108')
-        >>> ipAddress_3 = DimensionDataIpAddress(
+        >>> ipAddress_3 = NttCisIpAddress(
         >>>                   begin='190.2.2.0', prefix_size='24')
         >>> ip_address_collection = [ipAddress_1, ipAddress_2, ipAddress_3]
         >>>
@@ -3769,7 +3855,8 @@ class NttCisNodeDriver(NodeDriver):
                     'description'
                 ).text = description
             else:
-                ET.SubElement(edit_ip_address_list, 'description',  
{'xsi:nil': 'true'})
+                ET.SubElement(edit_ip_address_list, 'description',
+                              {'xsi:nil': 'true'})
 
         if ip_address_collection is not None:
             for ip in ip_address_collection:
@@ -3817,7 +3904,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> ip_address_list_id = '5e7c323f-c885-4e4b-9a27-94c44217dbd3'
@@ -3856,7 +3943,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get location
@@ -3897,7 +3984,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get specific portlist by ID
@@ -3924,12 +4011,12 @@ class NttCisNodeDriver(NodeDriver):
         >>> from pprint import pprint
         >>> from libcloud.compute.types import Provider
         >>> from libcloud.compute.providers import get_driver
-        >>> from libcloud.common.dimensiondata import DimensionDataPort
+        >>> from libcloud.common.nttcis import NttCisPort
         >>> import libcloud.security
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Get location
@@ -4027,12 +4114,12 @@ class NttCisNodeDriver(NodeDriver):
         >>> from pprint import pprint
         >>> from libcloud.compute.types import Provider
         >>> from libcloud.compute.providers import get_driver
-        >>> from libcloud.common.dimensiondata import DimensionDataPort
+        >>> from libcloud.common.NTTCIS import DimensionDataPort
         >>> import libcloud.security
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Port Collection
@@ -4086,7 +4173,8 @@ class NttCisNodeDriver(NodeDriver):
                     'description'
                 ).text = description
             else:
-                ET.SubElement(existing_port_address_list, "description", 
{"xsi:nil": "true"})
+                ET.SubElement(existing_port_address_list, "description",
+                              {"xsi:nil": "true"})
 
         if port_collection is not None:
             for port in port_collection:
@@ -4131,7 +4219,7 @@ class NttCisNodeDriver(NodeDriver):
         >>>
         >>> # Get NTTC-CIS driver
         >>> libcloud.security.VERIFY_SSL_CERT = True
-        >>> cls = get_driver(Provider.DIMENSIONDATA)
+        >>> cls = get_driver(Provider.NTTCIS)
         >>> driver = cls('myusername','mypassword', region='dd-au')
         >>>
         >>> # Delete Port List
@@ -4775,7 +4863,8 @@ class NttCisNodeDriver(NodeDriver):
         network_domains = []
         locations = self.list_locations()
         for element in findall(object, 'networkDomain', TYPES_URN):
-            network_domains.append(self._to_network_domain(element, locations))
+            network_domains.append(self._to_network_domain(
+                                                           element, locations))
 
         return network_domains
 
@@ -4898,12 +4987,15 @@ class NttCisNodeDriver(NodeDriver):
         return [self._to_snapshot(el) for el in snapshot_elements]
 
     def _to_snapshot(self, element: ET):
-        return {'id': element.get('id'), 'start_time': findtext(element, 
'startTime', TYPES_URN),
+        return {'id': element.get('id'), 'start_time':
+                findtext(element, 'startTime', TYPES_URN),
                 'end_time': findtext(element, 'endTime', TYPES_URN),
                 'expiry_time':findtext(element, 'expiryTime', TYPES_URN),
                 'type': findtext(element, 'type', TYPES_URN),
-                'state': findtext(element, 'state', TYPES_URN)}
-                #'server_config': 
self.to_snapshot_conf_elems(findtext(element, 'serverConfig', TYPES_URN)}
+                'state': findtext(element, 'state', TYPES_URN),
+                'server_config': self.to_snapshot_conf_elems(
+                    findtext(element, 'serverConfig', TYPES_URN))
+                }
 
     def _to_ipv4_addresses(self, object):
          ipv4_address_elements = object.findall(fixxpath('ipv4', TYPES_URN))
@@ -4919,18 +5011,18 @@ class NttCisNodeDriver(NodeDriver):
                                         element.get('exclusive'),
                                         findtext(element, 'vlanId', TYPES_URN),
                                         findtext(element, 'ipAddress', 
TYPES_URN),
-                                        description=findtext(element, 
'description', TYPES_URN),
-        )
-
-
+                                        description=
+                                        findtext(element, 'description', 
TYPES_URN),)
 
     def _to_windows(self, object):
-        snapshot_window_elements = object.findall(fixxpath('snapshotWindow', 
TYPES_URN))
+        snapshot_window_elements = object.findall(fixxpath(
+                                                  'snapshotWindow', TYPES_URN))
         return [self._to_window(el) for el in snapshot_window_elements]
 
     def _to_window(self, element):
          return {'id': element.get('id'), 'day_of_week': 
element.get('dayOfWeek'),
-                 'start_hour': element.get('startHour'), 
'availability_status': element.get('availabilityStatus')}
+                 'start_hour': element.get('startHour'),
+                 'availability_status': element.get('availabilityStatus')}
 
     def _to_nodes(self, object):
         node_elements = object.findall(fixxpath('server', TYPES_URN))
@@ -4947,14 +5039,20 @@ class NttCisNodeDriver(NodeDriver):
             = element.find(fixxpath('networkInfo', TYPES_URN)) is not None
         cpu_spec = self._to_cpu_spec(element.find(fixxpath('cpu', TYPES_URN)))
 
-        has_snapshot = element.find(fixxpath('snapshotService', TYPES_URN)) is 
not None
-        has_scsi = element.find(fixxpath('scsiController', TYPES_URN)) is not 
None
-        has_sata = element.find(fixxpath('sataController', TYPES_URN)) is not 
None
+        has_snapshot = element.find(fixxpath('snapshotService',
+                                             TYPES_URN)) is not None
+        has_scsi = element.find(fixxpath('scsiController',
+                                         TYPES_URN)) is not None
+        has_sata = element.find(fixxpath('sataController',
+                                         TYPES_URN)) is not None
         has_ide = element.find(fixxpath('ideController')) is not None
         scsi_controllers = []
         disks = []
         if has_scsi:
-            
scsi_controllers.append(self._to_scsi_controllers(element.find(fixxpath('scsiController',
 TYPES_URN))))
+            scsi_controllers.append(
+                                    self._to_scsi_controllers(
+                                        element.find(fixxpath(
+                                        'scsiController', TYPES_URN))))
             for scsi in element.findall(fixxpath('scsiController', TYPES_URN)):
                 disks.extend(self._to_disks(scsi))
         if has_sata:
@@ -4997,8 +5095,10 @@ class NttCisNodeDriver(NodeDriver):
                 if has_network_info else None,
             'datacenterId': element.get('datacenterId'),
             'deployedTime': findtext(element, 'createTime', TYPES_URN),
-            'window': (element.find(fixxpath('snapshotService/window', 
TYPES_URN)).get('dayOfWeek'),
-                       element.find(fixxpath('snapshotService/window', 
TYPES_URN)).get('startHour'))
+            'window': (element.find(fixxpath('snapshotService/window',
+                                             TYPES_URN)).get('dayOfWeek'),
+                       element.find(fixxpath('snapshotService/window',
+                                             TYPES_URN)).get('startHour'))
                        if has_snapshot else None,
             'cpu': cpu_spec,
             'memoryMb': int(findtext(
@@ -5045,34 +5145,22 @@ class NttCisNodeDriver(NodeDriver):
         if element is None:
             return NttCisStatus()
         s = NttCisStatus(action=findtext(element, 'action', TYPES_URN),
-                                request_time=findtext(
-                                    element,
-                                    'requestTime',
-                                    TYPES_URN),
-                                user_name=findtext(
-                                    element,
-                                    'userName',
-                                    TYPES_URN),
-                                number_of_steps=findtext(
-                                    element,
-                                    'numberOfSteps',
-                                    TYPES_URN),
-                                step_name=findtext(
-                                    element,
-                                    'step/name',
-                                    TYPES_URN),
-                                step_number=findtext(
-                                    element,
-                                    'step_number',
-                                    TYPES_URN),
-                                step_percent_complete=findtext(
-                                    element,
-                                    'step/percentComplete',
-                                    TYPES_URN),
-                                failure_reason=findtext(
-                                    element,
-                                    'failureReason',
-                                    TYPES_URN))
+                         request_time=findtext(element, 'requestTime',
+                                               TYPES_URN),
+                         user_name=findtext(element, 'userName', TYPES_URN),
+                         number_of_steps=findtext(element, 'numberOfSteps',
+                                                  TYPES_URN),
+                         step_name=findtext(element, 'step/name', TYPES_URN),
+                         step_number=findtext(element, 'step_number',
+                                              TYPES_URN),
+                         step_percent_complete=findtext(
+                                                        element,
+                                                        'step/percentComplete',
+                                                        TYPES_URN),
+                         failure_reason=findtext(
+                                                element,
+                                                'failureReason',
+                                                TYPES_URN))
         return s
 
     def _to_ip_address_lists(self, object):

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d776d646/libcloud/loadbalancer/drivers/nttcis.py
----------------------------------------------------------------------
diff --git a/libcloud/loadbalancer/drivers/nttcis.py 
b/libcloud/loadbalancer/drivers/nttcis.py
index 29e21bf..d7464a9 100644
--- a/libcloud/loadbalancer/drivers/nttcis.py
+++ b/libcloud/loadbalancer/drivers/nttcis.py
@@ -48,8 +48,6 @@ class NttCisLBDriver(Driver):
     type = Provider.NTTCIS
     api_version = 1.0
 
-    #network_domain_id = None
-
     _VALUE_TO_ALGORITHM_MAP = {
         'ROUND_ROBIN': Algorithm.ROUND_ROBIN,
         'LEAST_CONNECTIONS_MEMBER': Algorithm.LEAST_CONNECTIONS_MEMBER,
@@ -72,8 +70,9 @@ class NttCisLBDriver(Driver):
         'REQUIRES_SUPPORT': State.ERROR
     }
 
-    def __init__(self, key, network_domain_id, secret=None, secure=True, 
host=None, port=None,
-                 api_version=None, region=DEFAULT_REGION, **kwargs):
+    def __init__(self, key, network_domain_id, secret=None, secure=True,
+                 host=None, port=None, api_version=None,
+                 region=DEFAULT_REGION, **kwargs):
 
         self.network_domain_id = network_domain_id
 
@@ -100,25 +99,28 @@ class NttCisLBDriver(Driver):
         kwargs['region'] = self.selected_region
         return kwargs
 
-    def create_balancer(self, name, listener_port=None, port=None, 
protocol=None,
-                        algorithm=None, members=None, 
optimization_profile=None,
+    def create_balancer(self, name, listener_port=None, port=None,
+                        protocol=None, algorithm=None, members=None,
+                        optimization_profile=None,
                         ex_listener_ip_address=None):
         """
-        BUG:  libcloud.common.nttcis.NttCisAPIException: 
CONFIGURATION_NOT_SUPPORTED:
-         optimizationProfile is required for type STANDARD and protocol TCP.
-
+        BUG:  libcloud.common.nttcis.NttCisAPIException:
+        CONFIGURATION_NOT_SUPPORTED: optimizationProfile is required for type
+        STANDARD and protocol TCP.
 
         Create a new load balancer instance
 
         :param name: Name of the new load balancer (required)
         :type  name: ``str``
 
-        :param listener_port: An integer in the range of 1-65535. If not 
supplied,
-                     it will be taken to mean 'Any Port'
+        :param listener_port: An integer in the range of 1-65535.
+                              If not supplied, it will be taken to
+                               mean 'Any Port'
         :type  port: ``int
 
         :param port: An integer in the range of 1-65535. If not supplied,
-                     it will be taken to mean 'Any Port'  Assumed that node 
ports will different from listener port.
+                     it will be taken to mean 'Any Port'  Assumed that
+                     node ports will different from listener port.
         :type  port: ``int``
 
         :param protocol: Loadbalancer protocol, defaults to http.
@@ -130,8 +132,10 @@ class NttCisLBDriver(Driver):
         :param algorithm: Load balancing algorithm, defaults to ROUND_ROBIN.
         :type algorithm: :class:`.Algorithm`
 
-        :param optimization_profile: For STANDARD type and protocol TCP an 
optimization type of
-                         TCP, LAN_OPT, WAN_OPT, MOBILE_OPT, or TCP_LEGACY is 
required
+        :param optimization_profile: For STANDARD type and protocol TCP
+                                     an optimization type of TCP, LAN_OPT,
+                                      WAN_OPT, MOBILE_OPT, or TCP_LEGACY is
+                                      required
         :type  protcol: ``str``
 
         :param ex_listener_ip_address: Must be a valid IPv4 in dot-decimal
@@ -193,15 +197,18 @@ class NttCisLBDriver(Driver):
                    'listener_ip_address': ex_listener_ip_address}
         )
 
-    def ex_update_listener(self, virtual_listener: NttCisVirtualListener, 
**kwargs) -> NttCisVirtualListener:
+    def ex_update_listener(self, virtual_listener: NttCisVirtualListener,
+                           **kwargs) -> bool:
         """
         Update a current virtual listener.
         :param virtual_listener: The listener to be updated
         :return: The edited version of the listener
         """
-        edit_listener_elm = ET.Element('editVirtualListener', {'xmlns': 
TYPES_URN,
-                                                               'id': 
virtual_listener.id,
-                                                               'xmlns:xsi': 
"http://www.w3.org/2001/XMLSchema-instance"})
+        edit_listener_elm = ET.Element('editVirtualListener',
+                                       {'xmlns': TYPES_URN,
+                                        'id': virtual_listener.id,
+                                        'xmlns:xsi':
+                                        
"http://www.w3.org/2001/XMLSchema-instance"})
         for k, v in kwargs.items():
             if v is None:
                 ET.SubElement(edit_listener_elm, k, {'xsi:nil': 'true'})
@@ -234,8 +241,8 @@ class NttCisLBDriver(Driver):
 
         return self._to_balancers(
             self.connection
-            .request_with_orgId_api_2('networkDomainVip/virtualListener',
-                                      params=params).object)
+                .request_with_orgId_api_2('networkDomainVip/virtualListener',
+                                          params=params).object)
 
     def get_balancer(self, balancer_id):
         """
@@ -431,7 +438,8 @@ class NttCisLBDriver(Driver):
                        connection_rate_limit=2000):
         """
         Inconsistent use of objects.
-        Either always pass an object and have the method get the id, or always 
pass the id.
+        Either always pass an object and have the method get the id, or
+         always pass the id.
 
         Create a new node
 
@@ -628,7 +636,7 @@ class NttCisLBDriver(Driver):
                                    fallback_persistence_profile=None,
                                    irule=None,
                                    protocol='TCP',
-                                   optimization_profile = None,
+                                   optimization_profile=None,
                                    connection_limit=25000,
                                    connection_rate_limit=2000,
                                    source_port_preservation='PRESERVE'):
@@ -668,8 +676,10 @@ class NttCisLBDriver(Driver):
                          for PERFORMANCE_LAYER_4 choice of ANY, TCP, UDP, HTTP
         :type  protcol: ``str``
 
-        :param optimization_profile: For STANDARD type and protocol TCP an 
optimization type of
-                         TCP, LAN_OPT, WAN_OPT, MOBILE_OPT, or TCP_LEGACY is 
required
+        :param optimization_profile: For STANDARD type and protocol
+                                     TCP an optimization type of TCP, LAN_OPT,
+                                      WAN_OPT, MOBILE_OPT,
+                                       or TCP_LEGACY is required
         :type  protcol: ``str``
 
         :param connection_limit: Maximum number
@@ -692,8 +702,9 @@ class NttCisLBDriver(Driver):
             listener_type = 'STANDARD'
 
         if listener_type == 'STANDARD' and optimization_profile is None:
-            raise ValueError(" CONFIGURATION_NOT_SUPPORTED: 
optimizationProfile is required for type STANDARD and protocol TCP")
-
+            raise ValueError(
+                " CONFIGURATION_NOT_SUPPORTED: optimizationProfile is"
+                " required for type STANDARD and protocol TCP")
 
         create_node_elm = ET.Element('createVirtualListener',
                                      {'xmlns': TYPES_URN})
@@ -724,7 +735,8 @@ class NttCisLBDriver(Driver):
             ET.SubElement(create_node_elm, "persistenceProfileId") \
                 .text = persistence_profile.id
         if optimization_profile is not None:
-            ET.SubElement(create_node_elm, 'optimizationProfile').text = 
optimization_profile
+            ET.SubElement(create_node_elm, 'optimizationProfile').text = \
+                optimization_profile
         if fallback_persistence_profile is not None:
             ET.SubElement(create_node_elm, "fallbackPersistenceProfileId") \
                 .text = fallback_persistence_profile.id

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d776d646/tests/lib_create_test.py
----------------------------------------------------------------------
diff --git a/tests/lib_create_test.py b/tests/lib_create_test.py
index 3beec92..2bf9ab9 100644
--- a/tests/lib_create_test.py
+++ b/tests/lib_create_test.py
@@ -252,3 +252,22 @@ def test_create_and_apply_tag(compute_driver, 
compute_driver_na):
         assert result is True
 
 
+def test_create_preivew_server(compute_driver):
+    snapshot_id = '7118cd30-3184-4a3a-b097-2a2d25b9cb28'
+    preview_server_name = 'web2_snapshot'
+    server_description = 'A server created from latest snapshot at preview 
creation time'
+    server_started = 'true'
+    nics_connected = 'true'
+    tag_name = 'sdk_test_tag'
+    value = 'IT'
+    result = compute_driver.ex_create_snapshot_preview_server(snapshot_id, 
preview_server_name, server_started,
+                                                              
nics_connected=nics_connected,
+                                                              
server_description=server_description,
+                                                              
tag_key_name=tag_name, tag_value=value)
+    print(result)
+
+
+def test_migrate_preview_server(compute_driver):
+    preview_id = "a598375f-40f4-4745-9556-ef8a8625734d"
+    result = compute_driver.ex_migrate_preview_server(preview_id)
+    assert result is True
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d776d646/tests/lib_list_test.py
----------------------------------------------------------------------
diff --git a/tests/lib_list_test.py b/tests/lib_list_test.py
index 77079ef..2fe4bda 100644
--- a/tests/lib_list_test.py
+++ b/tests/lib_list_test.py
@@ -274,10 +274,6 @@ def test_list_snapshots(compute_driver):
         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)

Reply via email to