CLOUDSTACK-7912: Remove hardcoded netscaler info and read it from config file

Signed-off-by: SrikanteswaraRao Talluri <talluri@apache.org>
This commit is contained in:
Gaurav Aradhye 2014-11-14 19:53:25 +05:30 committed by SrikanteswaraRao Talluri
parent d8d60f0172
commit 91ffaaa5a2
6 changed files with 3224 additions and 2986 deletions

View File

@ -49,7 +49,8 @@ from marvin.lib.common import (get_domain,
get_template,
verifyNetworkState,
wait_for_cleanup,
add_netscaler
add_netscaler,
GetNetscalerInfoFromConfig
)
from marvin.lib.utils import (validateList,
@ -1775,11 +1776,18 @@ class TestExternalLoadBalancer(cloudstackTestCase):
cls.testdata["virtual_machine"]["template"] = template.id
cls._cleanup = []
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.testdata["netscaler"] = response[0]
cls.testdata["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(
cls.api_client,
cls.zone.id,
cls.testdata["netscaler_VPX"])
cls.testdata["netscaler"])
cls._cleanup.append(cls.netscaler)
except Exception as e:
raise unittest.SkipTest("Failed to add netscaler device: %s" % e)

View File

@ -17,7 +17,7 @@
""" P1 tests for netscaler load balancing
"""
#Import Local Modules
# Import Local Modules
from nose.plugins.attrib import attr
from marvin.cloudstackTestCase import cloudstackTestCase
from marvin.cloudstackAPI import migrateVirtualMachine
@ -36,12 +36,14 @@ from marvin.lib.base import (Account,
from marvin.lib.common import (get_domain,
get_zone,
get_template,
GetNetscalerInfoFromConfig,
add_netscaler)
from marvin.sshClient import SshClient
import time
class Services:
"""Test netscaler services
"""
@ -73,18 +75,6 @@ class Services:
"publicport": 22,
"protocol": 'TCP',
},
"netscaler": {
"ipaddress": '10.147.40.100',
"username": 'nsroot',
"password": 'nsroot',
"networkdevicetype": 'NetscalerVPXLoadBalancer',
"publicinterface": '1/1',
"privateinterface": '1/1',
"numretries": 2,
"lbdevicededicated": False,
"lbdevicecapacity": 50,
"port": 22,
},
"network_offering_dedicated": {
"name": 'Netscaler',
"displaytext": 'Netscaler',
@ -157,6 +147,7 @@ class Services:
"mode": 'advanced'
}
class TestLbSourceNat(cloudstackTestCase):
@classmethod
@ -174,6 +165,14 @@ class TestLbSourceNat(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -192,13 +191,13 @@ class TestLbSourceNat(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -219,7 +218,7 @@ class TestLbSourceNat(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -236,12 +235,11 @@ class TestLbSourceNat(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_add_lb_on_source_nat(self):
"""Test Create LB rule for sourceNat IP address
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -280,7 +278,7 @@ class TestLbSourceNat(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -316,7 +314,7 @@ class TestLbSourceNat(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -365,6 +363,7 @@ class TestLbSourceNat(cloudstackTestCase):
)
return
class TestLbOnIpWithPf(cloudstackTestCase):
@classmethod
@ -382,6 +381,14 @@ class TestLbOnIpWithPf(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -401,13 +408,13 @@ class TestLbOnIpWithPf(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -428,7 +435,7 @@ class TestLbOnIpWithPf(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -445,12 +452,11 @@ class TestLbOnIpWithPf(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_on_ip_with_pf(self):
"""Test Create LB rule for sourceNat IP address
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -489,7 +495,7 @@ class TestLbOnIpWithPf(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -525,7 +531,7 @@ class TestLbOnIpWithPf(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -594,6 +600,14 @@ class TestPfOnIpWithLb(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -613,13 +627,13 @@ class TestPfOnIpWithLb(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -640,7 +654,7 @@ class TestPfOnIpWithLb(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -657,12 +671,12 @@ class TestPfOnIpWithLb(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_pf_on_ip_with_lb(self):
"""Test Create a port forwarding rule on an Ip address that already has a LB rule.
"""Test Create a port forwarding rule on an Ip address
that already has a LB rule.
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -701,7 +715,7 @@ class TestPfOnIpWithLb(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -737,7 +751,7 @@ class TestPfOnIpWithLb(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -807,6 +821,14 @@ class TestLbOnNonSourceNat(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -826,13 +848,13 @@ class TestLbOnNonSourceNat(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -853,7 +875,7 @@ class TestLbOnNonSourceNat(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -870,12 +892,11 @@ class TestLbOnNonSourceNat(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_on_non_source_nat(self):
"""Test Create LB rule for non-sourceNat IP address
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -914,7 +935,7 @@ class TestLbOnNonSourceNat(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -950,7 +971,7 @@ class TestLbOnNonSourceNat(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -1023,6 +1044,14 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1042,13 +1071,13 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -1069,7 +1098,7 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -1086,12 +1115,11 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_add_multiple_vms_lb(self):
"""Test Add multiple Vms to an existing LB rule.
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -1135,7 +1163,7 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -1171,7 +1199,7 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -1280,10 +1308,11 @@ class TestAddMultipleVmsLb(cloudstackTestCase):
"virtual server must be configured for public IP address"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
class TestMultipleLbRules(cloudstackTestCase):
@classmethod
@ -1301,6 +1330,14 @@ class TestMultipleLbRules(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1320,14 +1357,14 @@ class TestMultipleLbRules(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -1348,7 +1385,7 @@ class TestMultipleLbRules(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -1365,12 +1402,11 @@ class TestMultipleLbRules(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_multiple_lb_publicip(self):
"""Test Create multiple LB rules using different public Ips acquired
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -1410,7 +1446,7 @@ class TestMultipleLbRules(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -1446,7 +1482,7 @@ class TestMultipleLbRules(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -1607,7 +1643,9 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
@classmethod
def setUpClass(cls):
cls._cleanup = []
cls.testClient = super(TestMultipleLbRulesSameIp, cls).getClsTestClient()
cls.testClient = super(
TestMultipleLbRulesSameIp,
cls).getClsTestClient()
cls.api_client = cls.testClient.getApiClient()
cls.services = Services().services
@ -1620,6 +1658,13 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1639,13 +1684,13 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -1666,7 +1711,7 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = Configurations.list(
self.apiclient,
@ -1683,12 +1728,11 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_multiple_lb_same_publicip(self):
"""Test Create multiple LB rules using same public Ips on diff ports
"""
# Validate the following
# 1. Deploy the first VM using a network from the above created
# Network offering.
@ -1729,7 +1773,7 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_1.id
)
@ -1765,7 +1809,7 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% virtual_machine_2.id
)
@ -1943,6 +1987,14 @@ class TestLoadBalancingRule(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1966,7 +2018,7 @@ class TestLoadBalancingRule(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
# Creating network using the network offering created
cls.network = Network.create(
cls.api_client,
@ -2002,13 +2054,13 @@ class TestLoadBalancingRule(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -2023,19 +2075,18 @@ class TestLoadBalancingRule(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
self.debug("Cleanup complete!")
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_01_edit_name_lb_rule(self):
"""Test edit name of LB rule
"""
# Validate the following
# 1. Create an Lb rule for couple of Vms .
# 2. Edit the name of the existing LB rule. When all the existing
@ -2064,34 +2115,36 @@ class TestLoadBalancingRule(cloudstackTestCase):
)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_02_edit_lb_ports(self):
"""Test edit public port of LB rule
"""
# Validate the following
# 1. Create an Lb rule for couple of Vms .
# 2. Edit the public/private of the existing LB rule. When all the
# existing Lbrules are listed, this should not be allowed.
self.debug("Editing public port of the LB rule: %s" % self.lb_rule.name)
self.debug(
"Editing public port of the LB rule: %s" %
self.lb_rule.name)
port = 8888
with self.assertRaises(Exception):
self.lb_rule.update(self.apiclient, publicport=port)
self.debug("Editing private port of the LB rule: %s" % self.lb_rule.name)
self.debug(
"Editing private port of the LB rule: %s" %
self.lb_rule.name)
with self.assertRaises(Exception):
self.lb_rule.update(self.apiclient, privateport=port)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_03_delete_lb_rule(self):
"""Test delete LB rule
"""
# Validate the following
# 1. Delete existing load balancing rule
# 2. In netscaler service and port corresponding to LB rule should get
@ -2134,7 +2187,7 @@ class TestLoadBalancingRule(cloudstackTestCase):
"Virtual server should get deleted after removing LB rule"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -2156,6 +2209,14 @@ class TestDeleteCreateLBRule(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -2178,7 +2239,7 @@ class TestDeleteCreateLBRule(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
# Creating network using the network offering created
cls.network = Network.create(
cls.api_client,
@ -2207,13 +2268,13 @@ class TestDeleteCreateLBRule(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -2235,18 +2296,17 @@ class TestDeleteCreateLBRule(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
self.debug("Cleanup complete!")
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_01_create_with_same_public_port(self):
"""Test create LB rule with same public port after deleting rule"""
# Validate the following
# 1. Delete existing rule and create exactly same rule with different
# public port
@ -2284,6 +2344,14 @@ class TestVmWithLb(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -2307,7 +2375,7 @@ class TestVmWithLb(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
# Creating network using the network offering created
cls.network = Network.create(
cls.api_client,
@ -2365,13 +2433,13 @@ class TestVmWithLb(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -2386,18 +2454,17 @@ class TestVmWithLb(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
self.debug("Cleanup complete!")
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_01_delete_public_ip(self):
"""Test delete one public Ip with LB rules"""
# Validate the following
# 1. Associate 2 public Ips and create load balancing rules in it
# 2. Delete one of the public Ip
@ -2458,15 +2525,14 @@ class TestVmWithLb(cloudstackTestCase):
"Virtual server should get deleted after removing LB rule"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_02_stop_user_vm(self):
"""Test stop user VM with LB"""
# Validate the following
# 1. Create 2 instances and add these two for load balancing
# 2. Stop one of the user VM
@ -2531,15 +2597,14 @@ class TestVmWithLb(cloudstackTestCase):
"The server should be present in netscaler after VM stop"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_03_start_user_vm(self):
"""Test start user VM with LB"""
# Validate the following
# 1. Create 2 instances and add these two for load balancing
# 2. Stop one of the user VM
@ -2551,7 +2616,7 @@ class TestVmWithLb(cloudstackTestCase):
self.vm_2.start(self.apiclient)
self.debug("Starting VM: %s" % self.vm_2.name)
self.debug("Sleeping for netscaler to recognize service is up")
time.sleep( 120 )
time.sleep(120)
try:
self.debug(
@ -2604,15 +2669,14 @@ class TestVmWithLb(cloudstackTestCase):
"The server should be present in netscaler after VM stop"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns", "multihost"])
@attr(tags=["advancedns", "multihost"])
def test_04_migrate_user_vm(self):
"""Test migrate user VM with LB"""
# Validate the following
# 1. Create 2 instances and add these two for load balancing
# 2. migrate one Vm to another host.
@ -2717,15 +2781,14 @@ class TestVmWithLb(cloudstackTestCase):
"The server should be present in netscaler after migrate"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_05_reboot_user_vm(self):
"""Test reboot user VM with LB"""
# Validate the following
# 1. Create 2 instances and add these two for load balancing
# 2. Reboot one of the user VM
@ -2736,7 +2799,7 @@ class TestVmWithLb(cloudstackTestCase):
self.vm_2.reboot(self.apiclient)
self.debug("Rebooting VM: %s" % self.vm_2.name)
self.debug("Waiting for Netscaler to get the service up")
time.sleep( 120 )
time.sleep(120)
try:
self.debug(
@ -2805,15 +2868,14 @@ class TestVmWithLb(cloudstackTestCase):
"The server should be present in netscaler after reboot"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_06_destroy_user_vm(self):
"""Test destroy user VM with LB"""
# Validate the following
# 1. Create 2 instances and add these two for load balancing
# 2. Destroy one of the user VM
@ -2888,15 +2950,14 @@ class TestVmWithLb(cloudstackTestCase):
"The server should not be present in netscaler after destroy"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_07_delete_all_public_ip(self):
"""Test delete all public Ip with LB rules"""
# Validate the following
# 1. Associate 2 public Ips and create load balancing rules in it
# 2. Delete all of the public Ip
@ -2957,6 +3018,6 @@ class TestVmWithLb(cloudstackTestCase):
"Virtual server should get deleted after removing LB rule"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return

View File

@ -17,18 +17,29 @@
""" P1 tests for netscaler load balancing
"""
#Import Local Modules
import marvin
# Import Local Modules
from nose.plugins.attrib import attr
from marvin.cloudstackTestCase import *
from marvin.cloudstackAPI import *
from marvin.lib.utils import *
from marvin.lib.base import *
from marvin.lib.common import *
from marvin.cloudstackTestCase import cloudstackTestCase
from marvin.lib.utils import (cleanup_resources)
from marvin.lib.base import (Account,
Network,
VirtualMachine,
ServiceOffering,
NetworkOffering,
PublicIPAddress,
LoadBalancerRule)
from marvin.lib.common import (get_zone,
get_domain,
get_template,
list_configurations,
GetNetscalerInfoFromConfig,
add_netscaler)
from marvin.sshClient import SshClient
import time
class Services:
"""Test netscaler services
"""
@ -60,18 +71,6 @@ class Services:
"publicport": 22,
"protocol": 'TCP',
},
"netscaler": {
"ipaddress": '10.147.60.27',
"username": 'nsroot',
"password": 'nsroot',
"networkdevicetype": 'NetscalerVPXLoadBalancer',
"publicinterface": '1/1',
"privateinterface": '1/1',
"numretries": 2,
"lbdevicededicated": False,
"lbdevicecapacity": 50,
"port": 22,
},
"network_offering": {
"name": 'Netscaler',
"displaytext": 'Netscaler',
@ -93,7 +92,7 @@ class Services:
},
"network": {
"name": "Netscaler",
"displaytext": "Netscaler",
"displaytext": "Netscaler"
},
"lbrule": {
"name": "SSH",
@ -128,6 +127,15 @@ class TestLbWithRoundRobin(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
cls._cleanup = []
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -147,13 +155,13 @@ class TestLbWithRoundRobin(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -174,7 +182,7 @@ class TestLbWithRoundRobin(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = list_configurations(
self.apiclient,
@ -191,7 +199,7 @@ class TestLbWithRoundRobin(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_with_round_robin(self):
"""Test Create LB rule with round robin algorithm
"""
@ -235,7 +243,7 @@ class TestLbWithRoundRobin(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% self.virtual_machine.id
)
@ -293,7 +301,8 @@ class TestLbWithRoundRobin(cloudstackTestCase):
lb_rule.name
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -318,7 +327,7 @@ class TestLbWithRoundRobin(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -340,6 +349,14 @@ class TestLbWithLeastConn(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -348,6 +365,7 @@ class TestLbWithLeastConn(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
@ -358,16 +376,17 @@ class TestLbWithLeastConn(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -388,7 +407,7 @@ class TestLbWithLeastConn(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = list_configurations(
self.apiclient,
@ -405,7 +424,7 @@ class TestLbWithLeastConn(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_with_least_conn(self):
"""Test Create LB rule with least connection algorithm
"""
@ -449,7 +468,7 @@ class TestLbWithLeastConn(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% self.virtual_machine.id
)
@ -515,7 +534,8 @@ class TestLbWithLeastConn(cloudstackTestCase):
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -540,7 +560,7 @@ class TestLbWithLeastConn(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -561,16 +581,24 @@ class TestLbWithSourceIp(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
cls._cleanup = []
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup = [
cls.netscaler
]
cls._cleanup.append(cls.netscaler)
cls.network_offering = NetworkOffering.create(
cls.api_client,
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
@ -580,15 +608,16 @@ class TestLbWithSourceIp(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -609,7 +638,7 @@ class TestLbWithSourceIp(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
interval = list_configurations(
self.apiclient,
@ -626,7 +655,7 @@ class TestLbWithSourceIp(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_with_source_ip(self):
"""Test Create LB rule with source Ip algorithm
"""
@ -670,7 +699,7 @@ class TestLbWithSourceIp(cloudstackTestCase):
)
self.debug(
"Verify listVirtualMachines response for virtual machine: %s" \
"Verify listVirtualMachines response for virtual machine: %s"
% self.virtual_machine.id
)
@ -729,7 +758,8 @@ class TestLbWithSourceIp(cloudstackTestCase):
lb_rule.name
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -754,7 +784,7 @@ class TestLbWithSourceIp(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -776,6 +806,14 @@ class TestLbAlgoRrLc(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -784,6 +822,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
cls.account = Account.create(
@ -792,7 +831,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
cls.network = Network.create(
cls.api_client,
cls.services["network"],
@ -808,6 +847,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
# Spawn an instance in that network
cls.virtual_machine = VirtualMachine.create(
@ -827,7 +867,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
@ -855,7 +895,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_round_robin_to_least_conn(self):
"""Test edit LB rule from round robin to least connection algo
"""
@ -901,7 +941,8 @@ class TestLbAlgoRrLc(cloudstackTestCase):
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -925,7 +966,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
"'ROUNDROBIN' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
self.debug(
@ -934,7 +975,8 @@ class TestLbAlgoRrLc(cloudstackTestCase):
'leastconn'))
lb_rule.update(self.apiclient, algorithm='leastconn')
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -958,7 +1000,7 @@ class TestLbAlgoRrLc(cloudstackTestCase):
"'LEASTCONNECTION' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -980,6 +1022,14 @@ class TestLbAlgoLcRr(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -988,6 +1038,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
cls.account = Account.create(
@ -996,7 +1047,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
cls.network = Network.create(
cls.api_client,
cls.services["network"],
@ -1012,6 +1063,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
# Spawn an instance in that network
cls.virtual_machine = VirtualMachine.create(
@ -1031,7 +1083,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
@ -1059,7 +1111,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_least_conn_to_round_robin(self):
"""Test edit LB rule from least conn to round robin algo
"""
@ -1103,7 +1155,8 @@ class TestLbAlgoLcRr(cloudstackTestCase):
lb_rule.name
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1127,7 +1180,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
"'LEASTCONNECTION' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
self.debug(
@ -1135,7 +1188,8 @@ class TestLbAlgoLcRr(cloudstackTestCase):
lb_rule.name,
'roundrobin'))
lb_rule.update(self.apiclient, algorithm='roundrobin')
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1159,7 +1213,7 @@ class TestLbAlgoLcRr(cloudstackTestCase):
"'ROUNDROBIN' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -1181,6 +1235,14 @@ class TestLbAlgoRrSb(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1189,6 +1251,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
cls.account = Account.create(
@ -1197,7 +1260,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
cls.network = Network.create(
cls.api_client,
cls.services["network"],
@ -1213,6 +1276,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
# Spawn an instance in that network
cls.virtual_machine = VirtualMachine.create(
@ -1233,7 +1297,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
@ -1261,7 +1325,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_round_robin_to_source(self):
"""Test edit LB rule from round robin to source algo
"""
@ -1305,7 +1369,8 @@ class TestLbAlgoRrSb(cloudstackTestCase):
lb_rule.name
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1329,7 +1394,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
"'ROUNDROBIN' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
self.debug(
@ -1338,7 +1403,8 @@ class TestLbAlgoRrSb(cloudstackTestCase):
'source'))
lb_rule.update(self.apiclient, algorithm='source')
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1363,7 +1429,7 @@ class TestLbAlgoRrSb(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -1385,6 +1451,14 @@ class TestLbAlgoSbRr(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1393,6 +1467,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
@ -1402,7 +1477,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
cls.network = Network.create(
cls.api_client,
cls.services["network"],
@ -1418,6 +1493,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
# Spawn an instance in that network
cls.virtual_machine = VirtualMachine.create(
@ -1438,7 +1514,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
@ -1466,7 +1542,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_source_to_round_robin(self):
"""Test edit LB rule from source to round robin algo
"""
@ -1512,7 +1588,8 @@ class TestLbAlgoSbRr(cloudstackTestCase):
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1537,7 +1614,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
self.debug(
@ -1546,7 +1623,8 @@ class TestLbAlgoSbRr(cloudstackTestCase):
'roundrobin'))
lb_rule.update(self.apiclient, algorithm='roundrobin')
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1570,7 +1648,7 @@ class TestLbAlgoSbRr(cloudstackTestCase):
"'ROUNDROBIN' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -1592,6 +1670,14 @@ class TestLbAlgoSbLc(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1600,6 +1686,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
@ -1609,7 +1696,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
cls.network = Network.create(
cls.api_client,
cls.services["network"],
@ -1625,6 +1712,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
# Spawn an instance in that network
cls.virtual_machine = VirtualMachine.create(
@ -1645,7 +1733,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
@ -1673,7 +1761,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_source_to_least_conn(self):
"""Test edit LB rule from source to least conn algo
"""
@ -1719,7 +1807,8 @@ class TestLbAlgoSbLc(cloudstackTestCase):
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1744,7 +1833,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
self.debug(
"Updating LB rule: %s with new algorithm: %s" % (
@ -1752,7 +1841,8 @@ class TestLbAlgoSbLc(cloudstackTestCase):
'leastconn'))
lb_rule.update(self.apiclient, algorithm='leastconn')
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1776,7 +1866,7 @@ class TestLbAlgoSbLc(cloudstackTestCase):
"'LEASTCONNECTION' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@ -1798,6 +1888,14 @@ class TestLbAlgoLcSb(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
@ -1806,6 +1904,7 @@ class TestLbAlgoLcSb(cloudstackTestCase):
cls.services["network_offering"],
conservemode=True
)
cls._cleanup.append(cls.network_offering)
# Enable Network offering
cls.network_offering.update(cls.api_client, state='Enabled')
@ -1815,7 +1914,7 @@ class TestLbAlgoLcSb(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
cls.network = Network.create(
cls.api_client,
cls.services["network"],
@ -1831,6 +1930,7 @@ class TestLbAlgoLcSb(cloudstackTestCase):
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup.append(cls.service_offering)
# Spawn an instance in that network
cls.virtual_machine = VirtualMachine.create(
@ -1850,7 +1950,7 @@ class TestLbAlgoLcSb(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
@ -1878,7 +1978,7 @@ class TestLbAlgoLcSb(cloudstackTestCase):
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_lb_leastconn_to_source(self):
"""Test edit LB rule from round robin to source algo
"""
@ -1923,7 +2023,8 @@ class TestLbAlgoLcSb(cloudstackTestCase):
))
lb_rule.assign(self.apiclient, [self.virtual_machine])
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1947,7 +2048,7 @@ class TestLbAlgoLcSb(cloudstackTestCase):
"'LEASTCONNECTION' algorithm should be configured on NS"
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
self.debug(
@ -1956,7 +2057,8 @@ class TestLbAlgoLcSb(cloudstackTestCase):
'source'))
lb_rule.update(self.apiclient, algorithm='source')
self.debug("SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug(
"SSH into Netscaler to check whether algorithm is configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1981,6 +2083,6 @@ class TestLbAlgoLcSb(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return

View File

@ -17,19 +17,27 @@
""" P1 tests for netscaler load balancing sticky policy
"""
#Import Local Modules
import marvin
# Import Local Modules
from nose.plugins.attrib import attr
from marvin.cloudstackTestCase import *
from marvin.cloudstackAPI import *
from marvin.lib.utils import *
from marvin.lib.base import *
from marvin.lib.common import *
from marvin.cloudstackTestCase import cloudstackTestCase
from marvin.lib.utils import cleanup_resources
from marvin.lib.base import (Account,
LoadBalancerRule,
PublicIPAddress,
Network,
NetworkOffering,
ServiceOffering,
VirtualMachine)
from marvin.lib.common import (get_domain,
get_zone,
get_template,
add_netscaler,
GetNetscalerInfoFromConfig)
from marvin.sshClient import SshClient
import datetime
class Services:
"""Test netscaler services
"""
@ -61,18 +69,6 @@ class Services:
"publicport": 22,
"protocol": 'TCP',
},
"netscaler": {
"ipaddress": '10.147.60.27',
"username": 'nsroot',
"password": 'nsroot',
"networkdevicetype": 'NetscalerVPXLoadBalancer',
"publicinterface": '1/1',
"privateinterface": '1/1',
"numretries": 2,
"lbdevicededicated": False,
"lbdevicecapacity": 50,
"port": 22,
},
"network_offering": {
"name": 'Netscaler',
"displaytext": 'Netscaler',
@ -80,7 +76,7 @@ class Services:
"supportedservices": 'Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat',
"traffictype": 'GUEST',
"availability": 'Optional',
"serviceProviderList" : {
"serviceProviderList": {
"Dhcp": 'VirtualRouter',
"Dns": 'VirtualRouter',
"SourceNat": 'VirtualRouter',
@ -108,7 +104,7 @@ class Services:
# Cent OS 5.3 (64 bit)
"sleep": 60,
"timeout": 10,
"mode":'advanced'
"mode": 'advanced'
}
@ -129,8 +125,19 @@ class TestLbStickyPolicy(cloudstackTestCase):
cls.zone.id,
cls.services["ostype"]
)
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
try:
cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.services["netscaler"])
cls.netscaler = add_netscaler(
cls.api_client,
cls.zone.id,
cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
cls.network_offering = NetworkOffering.create(
cls.api_client,
@ -152,7 +159,7 @@ class TestLbStickyPolicy(cloudstackTestCase):
admin=True,
domainid=cls.domain.id
)
cls._cleanup.insert(0,cls.account)
cls._cleanup.insert(0, cls.account)
# Creating network using the network offering created
cls.network = Network.create(
cls.api_client,
@ -181,13 +188,13 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
cls.tearDownClass()
raise Exception ("Warning: Exception in setUpClass: %s" % e)
raise Exception("Warning: Exception in setUpClass: %s" % e)
return
@classmethod
def tearDownClass(cls):
try:
#Cleanup resources used
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
@ -202,16 +209,17 @@ class TestLbStickyPolicy(cloudstackTestCase):
def tearDown(self):
try:
self.debug("Cleaning up the resources")
#Clean up, terminate the created network offerings
# Clean up, terminate the created network offerings
cleanup_resources(self.apiclient, self.cleanup)
self.debug("Cleanup complete!")
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_01_source_based_roundrobin(self):
"""Test Create a "SourceBased" stick policy for a Lb rule with "RoundRobin" algorithm
"""Test Create a "SourceBased" stick policy for a Lb rule with
"RoundRobin" algorithm
"""
# Validate the following
@ -262,7 +270,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy configured\
properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -293,13 +303,14 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_02_source_based_source_algo(self):
"""Test Create a "SourceBased" stick policy for a Lb rule with "Source" algorithm
"""Test Create a "SourceBased" stick policy for a Lb rule
with "Source" algorithm
"""
# Validate the following
@ -351,7 +362,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -382,11 +395,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_03_source_based_leastconn(self):
"""Test Create a "SourceBased" stick policy for a Lb rule with leastconn algo
"""
@ -440,7 +453,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy configured\
properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -471,11 +486,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_04_lbcookie_based_roundrobin(self):
"""Test Create a "LBCookie" stick policy for a Lb rule with roundrobin algo
"""
@ -531,7 +546,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -562,11 +579,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_05_lbcookie_source_algo(self):
"""Test Create a "LBCookie" stick policy for a Lb rule with "Source" algorithm
"""
@ -622,7 +639,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -653,11 +672,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_06_lbcookie_leastconn(self):
"""Test Create a "LBCookie" stick policy for a Lb rule with leastconn algo
"""
@ -713,7 +732,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -744,11 +765,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_07_appcookie_based_roundrobin(self):
"""Test Create a "AppCookie" stick policy for a Lb rule with roundrobin algo
"""
@ -804,7 +825,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -835,11 +858,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_08_appcookie_source_algo(self):
"""Test Create a "AppCookie" stick policy for a Lb rule with "Source"
"""
@ -895,7 +918,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -926,11 +951,11 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return
@attr(tags = ["advancedns"])
@attr(tags=["advancedns"])
def test_09_appcookie_leastconn(self):
"""Test Create a "AppCookie" stick policy for a Lb rule with leastconn
"""
@ -986,7 +1011,9 @@ class TestLbStickyPolicy(cloudstackTestCase):
except Exception as e:
self.fail("Configure sticky policy failed with exception: %s" % e)
self.debug("SSH into Netscaler to check whether sticky policy configured properly or not?")
self.debug(
"SSH into Netscaler to check whether sticky policy\
configured properly or not?")
self.debug("SSH into netscaler: %s" %
self.services["netscaler"]["ipaddress"])
try:
@ -1017,6 +1044,6 @@ class TestLbStickyPolicy(cloudstackTestCase):
)
except Exception as e:
self.fail("SSH Access failed for %s: %s" % \
self.fail("SSH Access failed for %s: %s" %
(self.services["netscaler"]["ipaddress"], e))
return

View File

@ -40,7 +40,8 @@ from marvin.lib.common import (get_domain,
get_template,
verifyNetworkState,
add_netscaler,
wait_for_cleanup)
wait_for_cleanup,
GetNetscalerInfoFromConfig)
from nose.plugins.attrib import attr
from marvin.codes import PASS, FAIL, FAILED
from marvin.sshClient import SshClient
@ -97,6 +98,13 @@ class TestPersistentNetworks(cloudstackTestCase):
cls.isolated_network_offering_netscaler = cls.createNetworkOffering(
"nw_off_isolated_netscaler")
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
# Configure Netscaler device
# If configuration succeeds, set ns_configured to True so that
# Netscaler tests are executed
@ -105,7 +113,7 @@ class TestPersistentNetworks(cloudstackTestCase):
cls.netscaler = add_netscaler(
cls.api_client,
cls.zone.id,
cls.services["netscaler_VPX"])
cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
cls.ns_configured = True
except Exception:
@ -1500,6 +1508,13 @@ class TestAssignVirtualMachine(cloudstackTestCase):
cls.persistent_network_offering_netscaler = cls.createNetworkOffering(
"nw_off_isolated_persistent_netscaler")
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
# Configure Netscaler device
# If configuration succeeds, set ns_configured to True so that
# Netscaler tests are executed
@ -1508,7 +1523,7 @@ class TestAssignVirtualMachine(cloudstackTestCase):
cls.netscaler = add_netscaler(
cls.api_client,
cls.zone.id,
cls.services["netscaler_VPX"])
cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
cls.ns_configured = True
except Exception:
@ -1964,6 +1979,13 @@ class TestRestartPersistentNetwork(cloudstackTestCase):
cls.api_client,
state="enabled")
response = GetNetscalerInfoFromConfig(
cls.config
)
assert response[0] is not None, response[1]
cls.services["netscaler"] = response[0]
cls.services["netscaler"]["lbdevicededicated"] = False
# Configure Netscaler device
# If configuration succeeds, set ns_configured to True so that
# Netscaler tests are executed
@ -1972,7 +1994,7 @@ class TestRestartPersistentNetwork(cloudstackTestCase):
cls.netscaler = add_netscaler(
cls.api_client,
cls.zone.id,
cls.services["netscaler_VPX"])
cls.services["netscaler"])
cls._cleanup.append(cls.netscaler)
cls.ns_configured = True
except Exception:

View File

@ -1376,3 +1376,21 @@ def isNetworkDeleted(apiclient, networkid, timeout=600):
time.sleep(60)
#end while
return networkDeleted
def GetNetscalerInfoFromConfig(config):
""" Read netscaler data from config file and
return it
Input: Config
Output: [netscalerInfoDict, isExceptionOccured]
"""
try:
netscalerInfo = config.__dict__[
"netscalerDevice"].__dict__
return [netscalerInfo, None]
except KeyError:
exceptionMessage = "Please make sure you have included netscalerDevice\
dict in your config file"
return [None, exceptionMessage]
except Exception as e:
return [None, e]