CLOUDSTACK-8253: Code correction and improvement: test_haproxy.py

Signed-off-by: SrikanteswaraRao Talluri <talluri@apache.org>
This commit is contained in:
Gaurav Aradhye 2015-02-12 21:41:43 -08:00 committed by SrikanteswaraRao Talluri
parent dc4578dd44
commit d849a66b47
1 changed files with 305 additions and 288 deletions

View File

@ -20,100 +20,27 @@
from nose.plugins.attrib import attr
from marvin.cloudstackTestCase import cloudstackTestCase
from marvin.lib.base import (
Account,
ServiceOffering,
VirtualMachine,
PublicIPAddress,
Network,
LoadBalancerRule,
Alert,
Router,
Vpn,
NATRule
)
Account,
ServiceOffering,
VirtualMachine,
PublicIPAddress,
Network,
LoadBalancerRule,
Alert,
Router,
Vpn,
FireWallRule
)
from marvin.lib.common import (get_domain,
get_zone,
get_template
)
get_zone,
get_template
)
from marvin.lib.utils import (cleanup_resources,
random_gen)
random_gen)
from marvin.cloudstackAPI import createLBStickinessPolicy
from marvin.sshClient import SshClient
class Services:
"""Test VPN users Services
"""
def __init__(self):
self.services = {
"account": {
"email": "test@test.com",
"firstname": "Test",
"lastname": "User",
"username": "test",
# Random characters are appended for unique
# username
"password": "password",
},
"service_offering": {
"name": "Tiny Instance",
"displaytext": "Tiny Instance",
"cpunumber": 1,
"cpuspeed": 100, # in MHz
"memory": 128, # In MBs
},
"disk_offering": {
"displaytext": "Small Disk Offering",
"name": "Small Disk Offering",
"disksize": 1
},
"virtual_machine": {
"displayname": "TestVM",
"username": "root",
"password": "password",
"ssh_port": 22,
"hypervisor": 'XenServer',
"privateport": 22,
"publicport": 22,
"protocol": 'TCP',
},
"vpn_user": {
"username": "test",
"password": "test",
},
"natrule": {
"privateport": 22,
"publicport": 22,
"protocol": "TCP",
"username":"root",
"password": "password"
},
"network": {
"name": "Test Network",
"displaytext": "Test Network",
"netmask": '255.255.255.0'
},
"lbrule": {
"name": "SSH",
"alg": "roundrobin",
# Algorithm used for load balancing
"privateport": 22,
"publicport": 2222,
"openfirewall": False,
"startport": 22,
"endport": 2222,
"protocol": "TCP",
"cidrlist": '0.0.0.0/0',
},
"ostype": 'CentOS 5.3 (64-bit)',
"sleep": 60,
"timeout": 10,
"mode": 'advanced',
# Networking mode: Advanced, Basic
}
class TestHAProxyStickyness(cloudstackTestCase):
@classmethod
@ -121,23 +48,25 @@ class TestHAProxyStickyness(cloudstackTestCase):
cls.testClient = super(TestHAProxyStickyness, cls).getClsTestClient()
cls.api_client = cls.testClient.getApiClient()
cls.services = Services().services
cls.services = cls.testClient.getParsedTestDataConfig()
# Get Zone, Domain and templates
cls.domain = get_domain(cls.api_client)
cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests())
cls.template = get_template(
cls.api_client,
cls.zone.id,
cls.services["ostype"]
)
cls.api_client,
cls.zone.id,
cls.services["ostype"]
)
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
cls.services["service_offering"]["name"] = "Medium Instance"
cls.services["service_offering"]["cpuspeed"] = "1024"
cls.services["service_offering"]["memory"] = "1024"
cls.service_offering = ServiceOffering.create(
cls.api_client,
cls.services["service_offering"]
)
cls.api_client,
cls.services["service_offering"]
)
cls._cleanup = [cls.service_offering, ]
return
@ -146,6 +75,7 @@ class TestHAProxyStickyness(cloudstackTestCase):
try:
# Cleanup resources used
cleanup_resources(cls.api_client, cls._cleanup)
pass
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@ -154,42 +84,42 @@ class TestHAProxyStickyness(cloudstackTestCase):
self.apiclient = self.testClient.getApiClient()
self.dbclient = self.testClient.getDbConnection()
self.account = Account.create(
self.apiclient,
self.services["account"],
domainid=self.domain.id
)
self.apiclient,
self.services["account"],
domainid=self.domain.id
)
self.virtual_machine = VirtualMachine.create(
self.apiclient,
self.services["virtual_machine"],
templateid=self.template.id,
accountid=self.account.name,
domainid=self.account.domainid,
serviceofferingid=self.service_offering.id
)
self.apiclient,
self.services["virtual_machine"],
templateid=self.template.id,
accountid=self.account.name,
domainid=self.account.domainid,
serviceofferingid=self.service_offering.id
)
self.virtual_machine_2 = VirtualMachine.create(
self.apiclient,
self.services["virtual_machine"],
templateid=self.template.id,
accountid=self.account.name,
domainid=self.account.domainid,
serviceofferingid=self.service_offering.id
)
self.apiclient,
self.services["virtual_machine"],
templateid=self.template.id,
accountid=self.account.name,
domainid=self.account.domainid,
serviceofferingid=self.service_offering.id
)
self.public_ip = PublicIPAddress.create(
self.apiclient,
self.virtual_machine.account,
self.virtual_machine.zoneid,
self.virtual_machine.domainid,
self.services["virtual_machine"]
)
NATRule.create(
self.apiclient,
self.virtual_machine,
self.services["natrule"],
ipaddressid=self.public_ip.ipaddress.id
)
self.apiclient,
self.virtual_machine.account,
self.virtual_machine.zoneid,
self.virtual_machine.domainid,
self.services["virtual_machine"]
)
FireWallRule.create(
self.apiclient,
ipaddressid=self.public_ip.ipaddress.id,
protocol='TCP',
cidrlist=[self.services["fwrule"]["cidr"]],
startport=self.services["fwrule"]["startport"],
endport=self.services["fwrule"]["endport"]
)
self.cleanup = [self.account, ]
return
@ -197,7 +127,6 @@ class TestHAProxyStickyness(cloudstackTestCase):
try:
# Clean up, terminate the created instance, volumes and snapshots
cleanup_resources(self.apiclient, self.cleanup)
pass
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@ -206,11 +135,11 @@ class TestHAProxyStickyness(cloudstackTestCase):
"""Returns a network for account"""
networks = Network.list(
self.apiclient,
account=account.name,
domainid=account.domainid,
listall=True
)
self.apiclient,
account=account.name,
domainid=account.domainid,
listall=True
)
self.assertIsInstance(networks,
list,
"List networks should return a valid response")
@ -220,21 +149,24 @@ class TestHAProxyStickyness(cloudstackTestCase):
"""Create and validate the load balancing rule"""
self.debug("Creating LB rule for IP address: %s" %
public_ip.ipaddress.ipaddress)
public_ip.ipaddress.ipaddress)
objservices = None
if services:
objservices = services
else:
objservices = self.services["lbrule"]
self.services["lbrule"]["publicport"] = 22
self.services["lbrule"]["privateport"] = 22
lb_rule = LoadBalancerRule.create(
self.apiclient,
objservices,
ipaddressid=public_ip.ipaddress.id,
accountid=self.account.name,
networkid=network.id,
domainid=self.account.domainid
)
self.apiclient,
objservices,
ipaddressid=public_ip.ipaddress.id,
accountid=self.account.name,
networkid=network.id,
domainid=self.account.domainid
)
self.debug("Adding virtual machines %s to LB rule" % str(vmarray))
lb_rule.assign(self.apiclient, vmarray)
return lb_rule
@ -243,11 +175,11 @@ class TestHAProxyStickyness(cloudstackTestCase):
"""Configure the stickiness policy on lb rule"""
try:
result = lb_rule.createSticky(
self.apiclient,
methodname=method,
name="-".join([method, random_gen()]),
param=paramDict
)
self.apiclient,
methodname=method,
name="-".join([method, random_gen()]),
param=paramDict
)
self.debug("Response: %s" % result)
return result
except Exception as e:
@ -259,16 +191,19 @@ class TestHAProxyStickyness(cloudstackTestCase):
sticky_policies = lb_rule.listStickyPolicies(self.apiclient,
lbruleid=lb_rule.id,
listall=True)
self.assertIsInstance(sticky_policies,
list,
"List sticky policies should return a valid list")
self.assertIsInstance(
sticky_policies,
list,
"List sticky policies should return a valid list")
sticky_policy = sticky_policies[0]
self.debug("Stickiness policy method: %s" %
sticky_policy.stickinesspolicy[0].methodname)
self.assertEqual(sticky_policy.stickinesspolicy[0].methodname,
method,
"Stickiness policy should have method as - %s" % method)
sticky_policy.stickinesspolicy[0].methodname)
self.assertEqual(
sticky_policy.stickinesspolicy[0].methodname,
method,
"Stickiness policy should have method as - %s" %
method)
hostnames = []
@ -278,10 +213,12 @@ class TestHAProxyStickyness(cloudstackTestCase):
self.debug("hostnames: %s" % hostnames)
self.debug("set(hostnames): %s" % set(hostnames))
#For each ssh, host should be the same, else stickiness policy is not working properly
# For each ssh, host should be the same, else stickiness policy is not
# working properly
if len(hostnames) == len(set(hostnames)):
raise Exception("Stickyness policy: %s not working properly, got hostnames %s"
% (method, hostnames))
raise Exception(
"Stickyness policy: %s not working properly, got hostnames %s" %
(method, hostnames))
return
def delete_Stickiness_policy(self, policy, lb_rule):
@ -295,8 +232,10 @@ class TestHAProxyStickyness(cloudstackTestCase):
sticky_policies = lb_rule.listStickyPolicies(self.apiclient,
lbruleid=lb_rule.id,
listall=True)
self.assertIsInstance(sticky_policies, list,
"List stickiness policies shall return a valid response")
self.assertIsInstance(
sticky_policies,
list,
"List stickiness policies shall return a valid response")
policy = sticky_policies[0]
@ -317,26 +256,25 @@ class TestHAProxyStickyness(cloudstackTestCase):
try:
self.debug("Acquiring public IP for account: %s" %
self.account.name)
self.account.name)
public_ip = PublicIPAddress.create(
self.apiclient,
self.virtual_machine.account,
self.virtual_machine.zoneid,
self.virtual_machine.domainid,
self.services["virtual_machine"]
)
self.apiclient,
self.virtual_machine.account,
self.virtual_machine.zoneid,
self.virtual_machine.domainid,
self.services["virtual_machine"]
)
self.debug("Acquired public IP: %s" %
public_ip.ipaddress.ipaddress)
self.debug("Configuring NAT rule for the acquired public ip")
NATRule.create(
self.apiclient,
self.virtual_machine,
self.services["natrule"],
ipaddressid=public_ip.ipaddress.id
)
public_ip.ipaddress.ipaddress)
FireWallRule.create(
self.apiclient,
ipaddressid=public_ip.ipaddress.id,
protocol='TCP',
cidrlist=[self.services["fwrule"]["cidr"]],
startport=self.services["fwrule"]["startport"],
endport=self.services["fwrule"]["endport"]
)
return public_ip
except Exception as e:
self.fail("Failed to acquire new public IP: %s" % e)
@ -359,19 +297,19 @@ class TestHAProxyStickyness(cloudstackTestCase):
try:
# Assign VPN to Public IP
vpn = Vpn.create(self.apiclient,
self.public_ip.ipaddress.id,
account=self.account.name,
domainid=self.account.domainid)
self.public_ip.ipaddress.id,
account=self.account.name,
domainid=self.account.domainid)
self.debug("Verifying the remote VPN access")
vpns = Vpn.list(self.apiclient,
publicipid=public_ip.ipaddress.id,
listall=True)
publicipid=public_ip.ipaddress.id,
listall=True)
self.assertEqual(
isinstance(vpns, list),
True,
"List VPNs shall return a valid response"
)
isinstance(vpns, list),
True,
"List VPNs shall return a valid response"
)
return vpn
except Exception as e:
self.fail("Failed to create remote VPN access: %s" % e)
@ -379,25 +317,25 @@ class TestHAProxyStickyness(cloudstackTestCase):
def try_ssh(self, ip_addr, hostnames):
try:
self.debug(
"SSH into NAT Rule (Public IP: %s)" % ip_addr)
"SSH into (Public IP: %s)" % ip_addr)
# If Round Robin Algorithm is chosen,
# each ssh command should alternate between VMs
ssh_1 = SshClient(
ip_addr,
22,
self.services["natrule"]["username"],
self.services["natrule"]["password"]
)
ssh_1 = SshClient(
ip_addr,
22,
self.services["configurableData"]["host"]["username"],
self.services["configurableData"]["host"]["password"]
)
hostnames.append(ssh_1.execute("hostname")[0])
self.debug(hostnames)
except Exception as e:
self.fail("%s: SSH failed for VM with IP Address: %s" %
(e, ip_addr))
(e, ip_addr))
return hostnames
@attr(tags=["advanced", "advancedns"],required_hardware="true")
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@attr(speed="slow")
def test_01_create_sticky_policy_default_values(self):
"""Test Configure stickiness policies with default values"""
@ -409,29 +347,36 @@ class TestHAProxyStickyness(cloudstackTestCase):
# listLBStickinessPolicies should show newly created stickiness
self.debug("Creating a load balancing rule on IP: %s" %
self.public_ip.ipaddress.ipaddress)
self.public_ip.ipaddress.ipaddress)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2])
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2])
methods = ["SourceBased", "AppCookie", "LBCookie"]
for method in methods:
self.debug("Creating stickiness policy for the LB rule: %s" %
lb_rule.id)
lb_rule.id)
policies = self.configure_Stickiness_Policy(lb_rule, method=method)
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, method, self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
method,
self.public_ip.ipaddress.ipaddress)
self.debug("Deleting the stickiness policy for lb rule: %s" %
lb_rule.name)
lb_rule.name)
self.delete_Stickiness_policy(policy, lb_rule)
return
@attr(tags=["advanced", "advancedns"],required_hardware="true")
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@attr(speed="slow")
def test_02_create_sticky_policy_custom_values(self):
"""Test Configure stickiness policies with custom values"""
@ -451,30 +396,37 @@ class TestHAProxyStickyness(cloudstackTestCase):
for lb_method in lb_methods:
self.debug("Creating a load balancing rule on IP %s and algo %s" %
(self.public_ip.ipaddress.ipaddress, lb_method))
(self.public_ip.ipaddress.ipaddress, lb_method))
services = self.services["lbrule"]
services["alg"] = lb_method
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2],
services=services)
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2],
services=services)
for method, params in configs.items():
self.debug("Creating stickiness policy for the LB rule: %s" %
lb_rule.id)
lb_rule.id)
policies = self.configure_Stickiness_Policy(lb_rule,
method=method,
paramDict=params)
method=method,
paramDict=params)
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, method, self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
method,
self.public_ip.ipaddress.ipaddress)
self.debug("Deleting the stickiness policy for lb rule: %s" %
lb_rule.name)
lb_rule.name)
self.delete_Stickiness_policy(policy, lb_rule)
self.debug("Deleting the LB rule: %s" % lb_rule.name)
lb_rule.delete(self.apiclient)
@ -501,25 +453,28 @@ class TestHAProxyStickyness(cloudstackTestCase):
"List network should return a valid response")
network = networks[0]
self.debug("Network: %s" % network)
self.assertEqual(hasattr(network, "SupportedStickinessMethods"),
True,
"Network should have SupportedStickinessMethods param")
self.assertEqual(
hasattr(
network,
"SupportedStickinessMethods"),
True,
"Network should have SupportedStickinessMethods param")
self.assertEqual(hasattr(network, "LbCookie"),
True,
"Network should have LbCookie LB method param")
True,
"Network should have LbCookie LB method param")
self.assertEqual(hasattr(network, "AppCookie"),
True,
"Network should have AppCookie LB method param")
True,
"Network should have AppCookie LB method param")
self.assertEqual(hasattr(network, "SourceBased"),
True,
"Network should have SourceBased LB method param")
True,
"Network should have SourceBased LB method param")
return
@attr(tags=["advanced", "advancedns"],required_hardware="true")
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@attr(speed="slow")
def test_04_delete_lb_rule(self):
"""Test LB rule before/after stickiness policy creation"""
@ -542,39 +497,50 @@ class TestHAProxyStickyness(cloudstackTestCase):
for lb_method in lb_methods:
for method, params in configs.items():
self.debug("Creating load balancing rule on IP %s & algo %s" %
(self.public_ip.ipaddress.ipaddress, lb_method))
(self.public_ip.ipaddress.ipaddress, lb_method))
services = self.services["lbrule"]
services["alg"] = lb_method
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2],
services=services)
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2],
services=services)
self.debug(
"Deleting the LB rule before stickiness policy creation")
lb_rule.delete(self.apiclient)
with self.assertRaises(Exception):
LoadBalancerRule.list(self.apiclient,
id=lb_rule.id,
listall=True)
id=lb_rule.id,
listall=True)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2],
services=services)
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2],
services=services)
self.debug("Creating stickiness policy for the LB rule: %s" %
lb_rule.id)
lb_rule.id)
policies = self.configure_Stickiness_Policy(lb_rule,
method=method,
paramDict=params)
method=method,
paramDict=params)
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, method, self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
method,
self.public_ip.ipaddress.ipaddress)
self.debug("Deleting the LB rule: %s" % lb_rule.name)
lb_rule.delete(self.apiclient)
@ -582,7 +548,7 @@ class TestHAProxyStickyness(cloudstackTestCase):
LoadBalancerRule.list(self.apiclient, id=lb_rule.id)
return
@attr(tags=["advanced", "advancedns"],required_hardware="true")
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@attr(speed="slow")
def test_05_error_alerts_after_create(self):
"""Test error/alerts after creating stickiness policy"""
@ -602,44 +568,53 @@ class TestHAProxyStickyness(cloudstackTestCase):
for lb_method in lb_methods:
for method, params in configs.items():
self.debug("Creating load balancing rule on IP %s & algo %s" %
(self.public_ip.ipaddress.ipaddress, lb_method))
(self.public_ip.ipaddress.ipaddress, lb_method))
services = self.services["lbrule"]
services["alg"] = lb_method
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2],
services=services)
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2],
services=services)
self.debug("Creating stickiness policy for the LB rule: %s" %
lb_rule.id)
lb_rule.id)
policies = self.configure_Stickiness_Policy(lb_rule,
method=method,
paramDict=params)
method=method,
paramDict=params)
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, method, self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
method,
self.public_ip.ipaddress.ipaddress)
self.debug("Deleting the LB rule: %s" % lb_rule.name)
lb_rule.delete(self.apiclient)
with self.assertRaises(Exception):
LoadBalancerRule.list(self.apiclient,
id=lb_rule.id,
listall=True)
id=lb_rule.id,
listall=True)
alerts = Alert.list(self.apiclient, keyword="stickiness",
listall=True)
listall=True)
self.debug(
"Create/update/delete should not produce any alert/error")
self.assertEqual(alerts, None,
self.assertEqual(
alerts,
None,
"Create/update/delete should not produce any alert/error")
return
@attr(tags=["advanced", "advancedns"],required_hardware="true")
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@attr(speed="slow")
def test_06_release_ip(self):
"""Test release public IP with stickiness policy"""
@ -664,35 +639,42 @@ class TestHAProxyStickyness(cloudstackTestCase):
self.debug(
"Creating a load balancing rule on IP %s and algo %s" %
(public_ip.ipaddress.ipaddress, lb_method))
(public_ip.ipaddress.ipaddress, lb_method))
services = self.services["lbrule"]
services["alg"] = lb_method
lb_rule = self.create_LB_Rule(public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2],
services=services)
lb_rule = self.create_LB_Rule(
public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2],
services=services)
policies = self.configure_Stickiness_Policy(lb_rule,
method=method,
paramDict=params)
method=method,
paramDict=params)
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, method, public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
method,
public_ip.ipaddress.ipaddress)
self.debug("Releasing public Ip: %s" %
public_ip.ipaddress.ipaddress)
public_ip.ipaddress.ipaddress)
public_ip.delete(self.apiclient)
self.debug("Checking the response of liststickiness policies")
with self.assertRaises(Exception):
lb_rule.listStickyPolicies(self.apiclient,
lbruleid=lb_rule.id,
listall=True)
lbruleid=lb_rule.id,
listall=True)
return
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@ -708,17 +690,24 @@ class TestHAProxyStickyness(cloudstackTestCase):
# listLBStickinessPolicies Api shouldnot show deleted stikiness policy
self.debug("Creating LB rule for account: %s" %
self.account.name)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2])
self.account.name)
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2])
policies = self.configure_Stickiness_Policy(lb_rule, method="LbCookie")
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, "LbCookie", self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
"LbCookie",
self.public_ip.ipaddress.ipaddress)
# removing account from cleanup list as we're deleting account
self.cleanup.pop()
@ -747,12 +736,16 @@ class TestHAProxyStickyness(cloudstackTestCase):
# stikiness policy
self.debug("Creating LB rule for account: %s" % self.account.name)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2])
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2])
self.debug("Fetching routers for the account: %s" %
self.account.name)
self.account.name)
router = self.get_router(self.account)
self.debug("Stopping the router: %s" % router.name)
@ -766,7 +759,10 @@ class TestHAProxyStickyness(cloudstackTestCase):
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, "LbCookie", self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
"LbCookie",
self.public_ip.ipaddress.ipaddress)
return
@attr(tags=["advanced", "advancedns"], required_hardware="true")
@ -780,12 +776,16 @@ class TestHAProxyStickyness(cloudstackTestCase):
# 4. destroy the router.
self.debug("Creating LB rule for account: %s" % self.account.name)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2])
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2])
self.debug("Fetching routers for the account: %s" %
self.account.name)
self.account.name)
router = self.get_router(self.account)
policies = self.configure_Stickiness_Policy(lb_rule, method="LbCookie")
@ -793,7 +793,10 @@ class TestHAProxyStickyness(cloudstackTestCase):
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, "LbCookie", self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
"LbCookie",
self.public_ip.ipaddress.ipaddress)
self.debug("Destroying the router: %s" % router.name)
Router.destroy(self.apiclient, id=router.id)
@ -812,23 +815,33 @@ class TestHAProxyStickyness(cloudstackTestCase):
# listLBStickinessPolicies Api should show created stikiness policy
self.debug("Creating LB rule for account: %s" % self.account.name)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2])
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2])
policies = self.configure_Stickiness_Policy(lb_rule, method="LbCookie")
policy = policies.stickinesspolicy[0]
self.debug("Policy: %s" % str(policy))
self.debug("Validating the stickiness policy")
self.validate_Stickiness_Policy(lb_rule, "LbCookie", self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
"LbCookie",
self.public_ip.ipaddress.ipaddress)
self.debug("Enabling VPN on Public Ip: %s" %
self.public_ip.ipaddress.ipaddress)
self.public_ip.ipaddress.ipaddress)
self.create_VPN(self.public_ip)
self.debug("Validating the stickiness policy after enabling VPN")
self.validate_Stickiness_Policy(lb_rule, "LbCookie", self.public_ip.ipaddress.ipaddress)
self.validate_Stickiness_Policy(
lb_rule,
"LbCookie",
self.public_ip.ipaddress.ipaddress)
return
@attr(tags=["advanced", "advancedns"], required_hardware="false")
@ -844,9 +857,13 @@ class TestHAProxyStickyness(cloudstackTestCase):
# * passing invalid values to valid paramters.
self.debug("Creating LB rule for account: %s" % self.account.name)
lb_rule = self.create_LB_Rule(self.public_ip,
network=self.get_Network(self.account),
vmarray=[self.virtual_machine, self.virtual_machine_2])
lb_rule = self.create_LB_Rule(
self.public_ip,
network=self.get_Network(
self.account),
vmarray=[
self.virtual_machine,
self.virtual_machine_2])
self.debug("Creating stickiness policy with invalid method")
with self.assertRaises(Exception):