diff --git a/libcloud/common/dimensiondata.py b/libcloud/common/dimensiondata.py index 5a023b343f..d6792d99d7 100644 --- a/libcloud/common/dimensiondata.py +++ b/libcloud/common/dimensiondata.py @@ -80,6 +80,11 @@ DEFAULT_REGION = 'dd-na' +class NetworkDomainServicePlan(object): + ESSENTIALS = "ESSENTIALS" + ADVANCED = "ADVANCED" + + class DimensionDataResponse(XmlResponse): def parse_error(self): if self.status == httplib.UNAUTHORIZED: @@ -282,12 +287,13 @@ class DimensionDataNetworkDomain(object): DimensionData network domain with location. """ - def __init__(self, id, name, description, location, status): + def __init__(self, id, name, description, location, status, plan): self.id = str(id) self.name = name self.description = description self.location = location self.status = status + self.plan = plan def __repr__(self): return (('') + % (self.id, self.base_ip, self.size, self.location, + self.status)) + + +class DimensionDataFirewallRule(object): + """ + DimensionData Firewall Rule for a network domain + """ + + def __init__(self, id, name, action, location, network_domain, + status, ip_version, protocol, source, destination, + enabled): + self.id = str(id) + self.name = name + self.action = action + self.location = location + self.network_domain = network_domain + self.status = status + self.ip_version = ip_version + self.protocol = protocol + self.source = source + self.destination = destination + self.enabled = enabled + + def __repr__(self): + return (('') + % (self.id, self.name, self.action, self.location, + self.status)) + + +class DimensionDataFirewallAddress(object): + """ + The source or destination model in a firewall rule + """ + def __init__(self, any_ip, ip_address, ip_prefix_size, + port_begin, port_end): + self.any_ip = any_ip + self.ip_address = ip_address + self.ip_prefix_size = ip_prefix_size + self.port_begin = port_begin + self.port_end = port_end + + +class DimensionDataNatRule(object): + """ + An IP NAT rule in a network domain + """ + def __init__(self, id, network_domain, internal_ip, external_ip, status): + self.id = id + self.network_domain = network_domain + self.internal_ip = internal_ip + self.external_ip = external_ip + self.status = status + + def __repr__(self): + return (('') + % (self.id, self.status)) + + class DimensionDataVlan(object): """ DimensionData VLAN. """ - def __init__(self, id, name, description, location, status): + def __init__(self, id, name, description, location, status, + private_ipv4_range_address, private_ipv4_range_size): + """ + Initialize an instance of ``DimensionDataVlan`` + + :param id: The ID of the VLAN + :type id: ``string`` + + :param name: The name of the VLAN + :type name: ``string`` + + :param description: Plan text description of the VLAN + :type description: ``string`` + + :param location: The location (data center) of the VLAN + :type location: ``NodeLocation`` + + :param status: The status of the VLAN + :type status: ``DimensionDataStatus`` + + :param private_ipv4_range_address: The host address of the VLAN + IP space + :type private_ipv4_range_address: ``string`` + + :param private_ipv4_range_address: The size (e.g. '24') of the VLAN + as a CIDR range size + :type private_ipv4_range_address: ``string`` + """ self.id = str(id) self.name = name self.location = location self.description = description self.status = status + self.private_ipv4_range_address = private_ipv4_range_address + self.private_ipv4_range_size = private_ipv4_range_size def __repr__(self): - return (('') % (self.id, self.name, self.description, self.location, self.status)) @@ -320,11 +432,16 @@ class DimensionDataPool(object): DimensionData VIP Pool. """ - def __init__(self, id, name, description, status): + def __init__(self, id, name, description, status, load_balance_method, + health_monitor_id, service_down_action, slow_ramp_time): self.id = str(id) self.name = name self.description = description self.status = status + self.load_balance_method = load_balance_method + self.health_monitor_id = health_monitor_id + self.service_down_action = service_down_action + self.slow_ramp_time = slow_ramp_time def __repr__(self): return ((' + +ADD_PUBLIC_IP_BLOCK +OK +Public IPv4 Address Block has been added successfully to Network Domain. + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createFirewallRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createFirewallRule.xml new file mode 100644 index 0000000000..ac3162ec75 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createFirewallRule.xml @@ -0,0 +1,8 @@ + + +CREATE_FIREWALL_RULE +OK +Request create Firewall Rule 'My.Rule.2' successful + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createNatRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createNatRule.xml new file mode 100644 index 0000000000..ff652a4b8c --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createNatRule.xml @@ -0,0 +1,9 @@ + + +CREATE_NAT_RULE +OK +NAT Rule with Id d31c2db0-be6b-4d50-8744-9a7a534b5fba has been +created. + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteFirewallRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteFirewallRule.xml new file mode 100644 index 0000000000..3016297aa0 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteFirewallRule.xml @@ -0,0 +1,8 @@ + + +DELETE_FIREWALL_RULE +OK +Firewall Rule (Id:84e34850-595d-436e-a885-7cd37edb24a4) has been +deleted + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNatRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNatRule.xml new file mode 100644 index 0000000000..2d2cebce24 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNatRule.xml @@ -0,0 +1,8 @@ + + +DELETE_NAT_RULE +OK +NAT Rule with Id 2187a636-7ebb-49a1-a2ff-5d617f496dce has been +deleted. + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNetworkDomain.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNetworkDomain.xml new file mode 100644 index 0000000000..a3cca2ed2a --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNetworkDomain.xml @@ -0,0 +1,8 @@ + + +DELETE_NETWORK_DOMAIN +IN_PROGRESS +Request to Delete Network Domain (Id: 8cdfd607-f429-4df6-9352- +162cfc0891be) has been accepted and is being processed + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteVlan.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteVlan.xml new file mode 100644 index 0000000000..9eae809721 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteVlan.xml @@ -0,0 +1,8 @@ + + +DELETE_VLAN +IN_PROGRESS +Request to Delete VLAN (Id:0e56433f-d808-4669-821d-812769517ff8) +has been accepted and is being processed + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployNetworkDomain.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployNetworkDomain.xml new file mode 100644 index 0000000000..4269840867 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployNetworkDomain.xml @@ -0,0 +1,8 @@ + + +DEPLOY_NETWORK_DOMAIN +IN_PROGRESS +Request to Deploy Network Domain 'A Network Domain' has been +accepted and is being processed + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml new file mode 100644 index 0000000000..eb37402b18 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml @@ -0,0 +1,9 @@ + + +DEPLOY_VLAN +IN_PROGRESS +Request to deploy VLAN 'Production VLAN' has been accepted and is +being processed. + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editFirewallRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editFirewallRule.xml new file mode 100644 index 0000000000..eff18c4864 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editFirewallRule.xml @@ -0,0 +1,8 @@ + + +EDIT_FIREWALL_RULE +OK +Firewall Rule with id 1aa3d0ce-d95d-4296-8338-9717e0d37ff9 has +been edited + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editNetworkDomain.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editNetworkDomain.xml new file mode 100644 index 0000000000..07d55e5689 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editNetworkDomain.xml @@ -0,0 +1,7 @@ + + +EDIT_NETWORK_DOMAIN +OK +Network Domain 'Development Network Domain' was edited +successfully. + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editVlan.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editVlan.xml new file mode 100644 index 0000000000..10d0010ca9 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editVlan.xml @@ -0,0 +1,7 @@ + + +EDIT_VLAN +OK +VLAN 'test' was edited successfully + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_expandVlan.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_expandVlan.xml new file mode 100644 index 0000000000..03f91125df --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_expandVlan.xml @@ -0,0 +1,8 @@ + + +EXPAND_VLAN +IN_PROGRESS +Request to expand VLAN 'Production VLAN' has been accepted and is +being processed. + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule.xml new file mode 100644 index 0000000000..b09d9639b7 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule.xml @@ -0,0 +1,210 @@ + + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + CCDEFAULT.BlockOutboundMailIPv4 + DROP + IPV4 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + CCDEFAULT.BlockOutboundMailIPv4Secure + DROP + IPV4 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + CCDEFAULT.BlockOutboundMailIPv6 + DROP + IPV6 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + CCDEFAULT.BlockOutboundMailIPv6Secure + DROP + IPV6 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + CCDEFAULT.DenyExternalInboundIPv6 + DROP + IPV6 + IP + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + AllowOctopusTentacleComms6 + ACCEPT_DECISIVELY + IPV6 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + AllowOctopusComms4 + ACCEPT_DECISIVELY + IPV4 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + AllowHTTPSinbound + ACCEPT_DECISIVELY + IPV4 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + AllowHTTPSinbound6 + ACCEPT_DECISIVELY + IPV6 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + Allow8843Inbound + ACCEPT_DECISIVELY + IPV4 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + Allow9443Inbound + ACCEPT_DECISIVELY + IPV4 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + Allow9443Inbound6 + ACCEPT_DECISIVELY + IPV6 + TCP + + + + + + + + true + NORMAL + + + b30c224c-c95b-4cd9-bb8b-bfdfb5486abf + AllowSTSInbound6 + ACCEPT_DECISIVELY + IPV6 + TCP + + + + + + + + true + NORMAL + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule_d0a20f59_77b9_4f28_a63b_e58496b73a6c.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule_d0a20f59_77b9_4f28_a63b_e58496b73a6c.xml new file mode 100644 index 0000000000..876f37d744 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule_d0a20f59_77b9_4f28_a63b_e58496b73a6c.xml @@ -0,0 +1,18 @@ + + +8cdfd607-f429-4df6-9352-162cfc0891be +CCDEFAULT.BlockOutboundMailIPv4 +DROP +IPV4 +TCP + + + + + + + +true +NORMAL + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule.xml new file mode 100644 index 0000000000..7478df6b43 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule.xml @@ -0,0 +1,21 @@ + + + +484174a2-ae74-4658-9e56- +50fc90e086cf +10.0.0.15 +165.180.12.18 +2015-03-06T13:43:45.000Z +NORMAL + + +484174a2-ae74-4658-9e56- +50fc90e086cf +10.0.0.16 +165.180.12.19 +2015-03-06T13:45:10.000Z +NORMAL + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule_2187a636_7ebb_49a1_a2ff_5d617f496dce.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule_2187a636_7ebb_49a1_a2ff_5d617f496dce.xml new file mode 100644 index 0000000000..6bf447d7e3 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule_2187a636_7ebb_49a1_a2ff_5d617f496dce.xml @@ -0,0 +1,9 @@ + + +484174a2-ae74-4658-9e56-50fc90e086cf +10.0.0.16 +165.180.12.19 +2015-03-06T13:45:10.000Z +NORMAL + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_networkDomain_8cdfd607_f429_4df6_9352_162cfc0891be.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_networkDomain_8cdfd607_f429_4df6_9352_162cfc0891be.xml new file mode 100644 index 0000000000..bdd1c6b42f --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_networkDomain_8cdfd607_f429_4df6_9352_162cfc0891be.xml @@ -0,0 +1,9 @@ + + + test + test2 + ESSENTIALS + 168.128.26.20 + 2015-07-15T03:36:00.000Z + NORMAL + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock.xml new file mode 100644 index 0000000000..3a1c1b381d --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock.xml @@ -0,0 +1,10 @@ + + + + 8cdfd607-f429-4df6-9352-162cfc0891be + 168.128.4.18 + 2 + 2015-07-13T04:07:37.000Z + NORMAL + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_4487241a_f0ca_11e3_9315_d4bed9b167ba.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_4487241a_f0ca_11e3_9315_d4bed9b167ba.xml new file mode 100644 index 0000000000..dc8814b47c --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_4487241a_f0ca_11e3_9315_d4bed9b167ba.xml @@ -0,0 +1,8 @@ + + + 8cdfd607-f429-4df6-9352-162cfc0891be + 168.128.4.18 + 2 + 2015-07-13T04:07:37.000Z + NORMAL + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_9945dc4a_bdce_11e4_8c14_b8ca3a5d9ef8.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_9945dc4a_bdce_11e4_8c14_b8ca3a5d9ef8.xml new file mode 100644 index 0000000000..dc8814b47c --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_9945dc4a_bdce_11e4_8c14_b8ca3a5d9ef8.xml @@ -0,0 +1,8 @@ + + + 8cdfd607-f429-4df6-9352-162cfc0891be + 168.128.4.18 + 2 + 2015-07-13T04:07:37.000Z + NORMAL + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_removePublicIpBlock.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_removePublicIpBlock.xml new file mode 100644 index 0000000000..8b6fe34e2a --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_removePublicIpBlock.xml @@ -0,0 +1,8 @@ + + +REMOVE_PUBLIC_IP_BLOCK +OK +Public Ip Block bef4334a-844b-11e4-a91c-0030487e0302 has been +removed successfully + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_vlan_0e56433f_d808_4669_821d_812769517ff8.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_vlan_0e56433f_d808_4669_821d_812769517ff8.xml new file mode 100644 index 0000000000..1b64756907 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_vlan_0e56433f_d808_4669_821d_812769517ff8.xml @@ -0,0 +1,14 @@ + + + +Production VLAN +test2 + +10.0.3.1 + +2607:f480:1111:1153:0:0:0:1 +2015-02-13T10:56:44.000Z +NORMAL + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_addNic.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_addNic.xml new file mode 100644 index 0000000000..56eeb024b2 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_addNic.xml @@ -0,0 +1,9 @@ + + +ADD_NIC +IN_PROGRESS +The request to add NIC for VLAN 'Subsystem VLAN' on Server +'Production Mail Server' has been accepted and is being processed.. + + \ No newline at end of file diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_removeNic.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_removeNic.xml new file mode 100644 index 0000000000..61be4e32f1 --- /dev/null +++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_removeNic.xml @@ -0,0 +1,9 @@ + + +REMOVE_NIC +IN_PROGRESS +Request to Remove NIC 5999db1d-725c-46ba-9d4e-d33991e61ab1 for +VLAN 'Subsystem VLAN' from Server 'Production Mail Server' has been accepted +and is being processed. + \ No newline at end of file diff --git a/libcloud/test/compute/test_dimensiondata.py b/libcloud/test/compute/test_dimensiondata.py index b5d481d900..af436de4e4 100644 --- a/libcloud/test/compute/test_dimensiondata.py +++ b/libcloud/test/compute/test_dimensiondata.py @@ -17,7 +17,7 @@ from libcloud.utils.py3 import httplib from libcloud.common.types import InvalidCredsError -from libcloud.common.dimensiondata import DimensionDataAPIException +from libcloud.common.dimensiondata import DimensionDataAPIException, NetworkDomainServicePlan from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver as DimensionData from libcloud.compute.base import Node, NodeAuthPassword, NodeLocation @@ -196,11 +196,48 @@ def test_ex_reset(self): ret = self.driver.ex_reset(node) self.assertTrue(ret is True) + def test_ex_attach_node_to_vlan(self): + node = self.driver.ex_get_node_by_id('e75ead52-692f-4314-8725-c8a4f4d13a87') + vlan = self.driver.ex_get_vlan('0e56433f-d808-4669-821d-812769517ff8') + ret = self.driver.ex_attach_node_to_vlan(node, vlan) + self.assertTrue(ret) + + def test_ex_destroy_nic(self): + node = self.driver.ex_destroy_nic('a202e51b-41c0-4cfc-add0-b1c62fc0ecf6') + self.assertTrue(node) + def test_list_networks(self): nets = self.driver.list_networks() self.assertEqual(nets[0].name, 'test-net1') self.assertTrue(isinstance(nets[0].location, NodeLocation)) + def test_ex_create_network_domain(self): + location = self.driver.ex_get_location_by_id('NA9') + plan = NetworkDomainServicePlan.ADVANCED + net = self.driver.ex_create_network_domain(location=location, + name='test', + description='test', + service_plan=plan) + self.assertEqual(net.name, 'test') + self.assertTrue(net.id, 'f14a871f-9a25-470c-aef8-51e13202e1aa') + + def test_ex_get_network_domain(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + self.assertEqual(net.id, '8cdfd607-f429-4df6-9352-162cfc0891be') + self.assertEqual(net.description, 'test2') + self.assertEqual(net.name, 'test') + + def test_ex_update_network_domain(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + net.name = 'new name' + net2 = self.driver.ex_update_network_domain(net) + self.assertEqual(net2.name, 'new name') + + def test_ex_delete_network_domain(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + result = self.driver.ex_delete_network_domain(net) + self.assertTrue(result) + def test_ex_list_networks(self): nets = self.driver.ex_list_networks() self.assertEqual(nets[0].name, 'test-net1') @@ -215,6 +252,128 @@ def test_ex_list_vlans(self): vlans = self.driver.ex_list_vlans() self.assertEqual(vlans[0].name, "Primary") + def test_ex_create_vlan(self,): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + vlan = self.driver.ex_create_vlan(network_domain=net, + name='test', + private_ipv4_base_address='10.3.4.0', + private_ipv4_prefix_size='24') + self.assertEqual(vlan.id, 'cee8df03-9117-44cc-baaa-631ffa099683') + + def test_ex_get_vlan(self): + vlan = self.driver.ex_get_vlan('0e56433f-d808-4669-821d-812769517ff8') + self.assertEqual(vlan.id, '0e56433f-d808-4669-821d-812769517ff8') + self.assertEqual(vlan.description, 'test2') + self.assertEqual(vlan.name, 'Production VLAN') + self.assertEqual(vlan.private_ipv4_range_address, '10.0.3.0') + self.assertEqual(vlan.private_ipv4_range_size, '24') + + def test_ex_update_vlan(self): + vlan = self.driver.ex_get_vlan('0e56433f-d808-4669-821d-812769517ff8') + vlan.name = 'new name' + vlan2 = self.driver.ex_update_vlan(vlan) + self.assertEqual(vlan2.name, 'new name') + + def test_ex_delete_vlan(self): + vlan = self.driver.ex_get_vlan('0e56433f-d808-4669-821d-812769517ff8') + result = self.driver.ex_delete_vlan(vlan) + self.assertTrue(result) + + def test_ex_expand_vlan(self): + vlan = self.driver.ex_get_vlan('0e56433f-d808-4669-821d-812769517ff8') + vlan.private_ipv4_range_size = '23' + vlan = self.driver.ex_expand_vlan(vlan) + self.assertEqual(vlan.private_ipv4_range_size, '23') + + def test_ex_add_public_ip_block_to_network_domain(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + block = self.driver.ex_add_public_ip_block_to_network_domain(net) + self.assertEqual(block.id, '9945dc4a-bdce-11e4-8c14-b8ca3a5d9ef8') + + def test_ex_list_public_ip_blocks(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + blocks = self.driver.ex_list_public_ip_blocks(net) + self.assertEqual(blocks[0].base_ip, '168.128.4.18') + self.assertEqual(blocks[0].size, '2') + self.assertEqual(blocks[0].id, '9945dc4a-bdce-11e4-8c14-b8ca3a5d9ef8') + self.assertEqual(blocks[0].location.id, 'NA9') + self.assertEqual(blocks[0].network_domain.id, net.id) + + def test_ex_get_public_ip_block(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + block = self.driver.ex_get_public_ip_block('9945dc4a-bdce-11e4-8c14-b8ca3a5d9ef8') + self.assertEqual(block.base_ip, '168.128.4.18') + self.assertEqual(block.size, '2') + self.assertEqual(block.id, '9945dc4a-bdce-11e4-8c14-b8ca3a5d9ef8') + self.assertEqual(block.location.id, 'NA9') + self.assertEqual(block.network_domain.id, net.id) + + def test_ex_delete_public_ip_block(self): + block = self.driver.ex_get_public_ip_block('9945dc4a-bdce-11e4-8c14-b8ca3a5d9ef8') + result = self.driver.ex_delete_public_ip_block(block) + self.assertTrue(result) + + def test_ex_list_firewall_rules(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rules = self.driver.ex_list_firewall_rules(net) + self.assertEqual(rules[0].id, '756cba02-b0bc-48f4-aea5-9445870b6148') + self.assertEqual(rules[0].network_domain.id, '8cdfd607-f429-4df6-9352-162cfc0891be') + self.assertEqual(rules[0].name, 'CCDEFAULT.BlockOutboundMailIPv4') + self.assertEqual(rules[0].action, 'DROP') + self.assertEqual(rules[0].ip_version, 'IPV4') + self.assertEqual(rules[0].protocol, 'TCP') + self.assertEqual(rules[0].source.ip_address, 'ANY') + self.assertTrue(rules[0].source.any_ip) + self.assertTrue(rules[0].destination.any_ip) + + def test_ex_create_firewall_rule(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rules = self.driver.ex_list_firewall_rules(net) + rule = self.driver.ex_create_firewall_rule(net, rules[0], 'FIRST') + self.assertEqual(rule.id, 'd0a20f59-77b9-4f28-a63b-e58496b73a6c') + + def test_ex_get_firewall_rule(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rule = self.driver.ex_get_firewall_rule(net, 'd0a20f59-77b9-4f28-a63b-e58496b73a6c') + self.assertEqual(rule.id, 'd0a20f59-77b9-4f28-a63b-e58496b73a6c') + + def test_ex_set_firewall_rule_state(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rule = self.driver.ex_get_firewall_rule(net, 'd0a20f59-77b9-4f28-a63b-e58496b73a6c') + result = self.driver.ex_set_firewall_rule_state(rule, False) + self.assertTrue(result) + + def test_ex_delete_firewall_rule(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rule = self.driver.ex_get_firewall_rule(net, 'd0a20f59-77b9-4f28-a63b-e58496b73a6c') + result = self.driver.ex_delete_firewall_rule(rule) + self.assertTrue(result) + + def test_ex_create_nat_rule(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rule = self.driver.ex_create_nat_rule(net, '1.2.3.4', '4.3.2.1') + self.assertEqual(rule.id, 'd31c2db0-be6b-4d50-8744-9a7a534b5fba') + + def test_ex_list_nat_rules(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rules = self.driver.ex_list_nat_rules(net) + self.assertEqual(rules[0].id, '2187a636-7ebb-49a1-a2ff-5d617f496dce') + self.assertEqual(rules[0].internal_ip, '10.0.0.15') + self.assertEqual(rules[0].external_ip, '165.180.12.18') + + def test_ex_get_nat_rule(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rule = self.driver.ex_get_nat_rule(net, '2187a636-7ebb-49a1-a2ff-5d617f496dce') + self.assertEqual(rule.id, '2187a636-7ebb-49a1-a2ff-5d617f496dce') + self.assertEqual(rule.internal_ip, '10.0.0.16') + self.assertEqual(rule.external_ip, '165.180.12.19') + + def test_ex_delete_nat_rule(self): + net = self.driver.ex_get_network_domain('8cdfd607-f429-4df6-9352-162cfc0891be') + rule = self.driver.ex_get_nat_rule(net, '2187a636-7ebb-49a1-a2ff-5d617f496dce') + result = self.driver.ex_delete_nat_rule(rule) + self.assertTrue(result) + class DimensionDataMockHttp(MockHttp): @@ -398,5 +557,131 @@ def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml') return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployNetworkDomain(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployNetworkDomain.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_networkDomain_8cdfd607_f429_4df6_9352_162cfc0891be(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_networkDomain_8cdfd607_f429_4df6_9352_162cfc0891be.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editNetworkDomain(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editNetworkDomain.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNetworkDomain(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNetworkDomain.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_vlan_0e56433f_d808_4669_821d_812769517ff8(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_vlan_0e56433f_d808_4669_821d_812769517ff8.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editVlan(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editVlan.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteVlan(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteVlan.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_expandVlan(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_expandVlan.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_addPublicIpBlock(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_addPublicIpBlock.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_4487241a_f0ca_11e3_9315_d4bed9b167ba(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_4487241a_f0ca_11e3_9315_d4bed9b167ba.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_9945dc4a_bdce_11e4_8c14_b8ca3a5d9ef8(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_publicIpBlock_9945dc4a_bdce_11e4_8c14_b8ca3a5d9ef8.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_removePublicIpBlock(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_removePublicIpBlock.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createFirewallRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createFirewallRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule_d0a20f59_77b9_4f28_a63b_e58496b73a6c(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_firewallRule_d0a20f59_77b9_4f28_a63b_e58496b73a6c.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editFirewallRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_editFirewallRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteFirewallRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteFirewallRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createNatRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_createNatRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule_2187a636_7ebb_49a1_a2ff_5d617f496dce(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_natRule_2187a636_7ebb_49a1_a2ff_5d617f496dce.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNatRule(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deleteNatRule.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_addNic(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_addNic.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_removeNic(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_removeNic.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + if __name__ == '__main__': sys.exit(unittest.main()) diff --git a/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode.xml b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode.xml new file mode 100644 index 0000000000..ae3e2afe85 --- /dev/null +++ b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode.xml @@ -0,0 +1,8 @@ + + +EDIT_NODE +OK +Node 'ProductionNode.2' has been edited successfully. + + \ No newline at end of file diff --git a/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool.xml b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool.xml new file mode 100644 index 0000000000..78eb686b9a --- /dev/null +++ b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool.xml @@ -0,0 +1,9 @@ + + +EDIT_POOL +OK +Pool 'ProductionPool.2' has been updated. + + + \ No newline at end of file diff --git a/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember.xml b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember.xml new file mode 100644 index 0000000000..89ce41dd6f --- /dev/null +++ b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember.xml @@ -0,0 +1,8 @@ + + +EDIT_POOL_MEMBER +OK +Pool Member (10.0.3.13:9889) has been edited. + + \ No newline at end of file diff --git a/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml new file mode 100644 index 0000000000..ace9123bb9 --- /dev/null +++ b/libcloud/test/loadbalancer/fixtures/dimensiondata/caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml @@ -0,0 +1,13 @@ + + +553f26b6-2a73-42c3-a78b-6116f11291d0 +ProductionNode.2 +Production Server 2 +10.10.10.101 +NORMAL +ENABLED + +10000 +2000 +2015-05-27T13:56:13.000Z + \ No newline at end of file diff --git a/libcloud/test/loadbalancer/test_dimensiondata.py b/libcloud/test/loadbalancer/test_dimensiondata.py index 725f153fcc..b28833b7ab 100644 --- a/libcloud/test/loadbalancer/test_dimensiondata.py +++ b/libcloud/test/loadbalancer/test_dimensiondata.py @@ -216,7 +216,11 @@ def test_ex_create_pool_member(self): id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7', name='test', description='test', - status=State.RUNNING + status=State.RUNNING, + health_monitor_id=None, + load_balance_method=None, + service_down_action=None, + slow_ramp_time=None ) node = DimensionDataVIPNode( id='2344', @@ -266,7 +270,11 @@ def test_ex_create_virtual_listener(self): id='1234', name='test', description='test', - status=State.RUNNING + status=State.RUNNING, + health_monitor_id=None, + load_balance_method=None, + service_down_action=None, + slow_ramp_time=None )) self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea') self.assertEqual(listener.name, 'test') @@ -281,7 +289,11 @@ def test_ex_create_virtual_listener_unusual_port(self): id='1234', name='test', description='test', - status=State.RUNNING + status=State.RUNNING, + health_monitor_id=None, + load_balance_method=None, + service_down_action=None, + slow_ramp_time=None )) self.assertEqual(listener.id, '8334f461-0df0-42d5-97eb-f4678eb26bea') self.assertEqual(listener.name, 'test') @@ -305,6 +317,27 @@ def test_ex_get_nodes(self): self.assertEqual(nodes[0].id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9') self.assertEqual(nodes[0].ip, '10.10.10.101') + def test_ex_get_node(self): + node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9') + self.assertEqual(node.name, 'ProductionNode.2') + self.assertEqual(node.id, '34de6ed6-46a4-4dae-a753-2f8d3840c6f9') + self.assertEqual(node.ip, '10.10.10.101') + + def test_ex_update_node(self): + node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9') + node.connection_limit = '100' + result = self.driver.ex_update_node(node) + self.assertEqual(result.connection_limit, '100') + + def test_ex_destroy_node(self): + result = self.driver.ex_destroy_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9') + self.assertTrue(result) + + def test_ex_set_node_state(self): + node = self.driver.ex_get_node('34de6ed6-46a4-4dae-a753-2f8d3840c6f9') + result = self.driver.ex_set_node_state(node, False) + self.assertEqual(result.connection_limit, '10000') + def test_ex_get_pools(self): pools = self.driver.ex_get_pools() self.assertNotEqual(0, len(pools)) @@ -316,13 +349,23 @@ def test_ex_get_pool(self): self.assertEqual(pool.name, 'myDevelopmentPool.1') self.assertEqual(pool.id, '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7') + def test_ex_update_pool(self): + pool = self.driver.ex_get_pool('4d360b1f-bc2c-4ab7-9884-1f03ba2768f7') + pool.slow_ramp_time = '120' + result = self.driver.ex_update_pool(pool) + self.assertTrue(result) + def test_ex_destroy_pool(self): response = self.driver.ex_destroy_pool( pool=DimensionDataPool( id='4d360b1f-bc2c-4ab7-9884-1f03ba2768f7', name='test', description='test', - status=State.RUNNING)) + status=State.RUNNING, + health_monitor_id=None, + load_balance_method=None, + service_down_action=None, + slow_ramp_time=None)) self.assertTrue(response) def test_get_pool_members(self): @@ -343,6 +386,11 @@ def test_get_pool_member(self): self.assertEqual(member.ip, '10.0.3.13') self.assertEqual(member.port, 9889) + def test_set_pool_member_state(self): + member = self.driver.ex_get_pool_member('3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0') + result = self.driver.ex_set_pool_member_state(member, True) + self.assertTrue(result) + def test_ex_destroy_pool_member(self): response = self.driver.ex_destroy_pool_member( member=DimensionDataPoolMember( @@ -458,6 +506,25 @@ def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node(self, m 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node.xml') return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_node_34de6ed6_46a4_4dae_a753_2f8d3840c6f9.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editNode.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPool.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember(self, method, url, body, headers): + body = self.fixtures.load( + 'caas_2_0_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_networkDomainVip_editPoolMember.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) if __name__ == '__main__': sys.exit(unittest.main())