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/10/31 03:11:29 UTC
[18/51] [abbrv] libcloud git commit: pep 8ify
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 <mi...@itaas.dimensiondata.com>
Authored: Tue Oct 2 17:28:42 2018 -0400
Committer: mitch <mi...@itaas.dimensiondata.com>
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)