def test_04_delete_lb_rule(self): """Test LB rule before/after stickiness policy creation""" # Validate the following # 1. Create a LB rule with roundrobin, leastconn and source. # listLoadBalancerRules should show newly created load balancer rule # 2. Delete the loadbalancer rule. Delete loadbalancer rule should be # successful # 3. Configure the Source based, app cookie and lb cookie based policy # with custom parameters listLBStickinessPolicies should show newly # created stickiness # 4. Delete load balancer rule. Delete should be successful lb_methods = ["roundrobin", "leastconn", "source"] configs = {"SourceBased": {"tablesize": '100k'}, "AppCookie": {"request-learn": "true"}, "LBCookie": {"nocache": "true"}} 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)) 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) 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) 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) policies = self.configure_Stickiness_Policy(lb_rule, 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.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) return
def test_05_error_alerts_after_create(self): """Test error/alerts after creating stickiness policy""" # Validate the following # 1. Create a LB rule with round Robin/Least connections/Source # listLoadBalancerRules should show newly created load balancer rule # 2. Configure the Stickiness policy to above created LB rule. # listLBStickinessPolicies Api should show newly created stickiness # 3. update & delete stickiness policy see error related to stickiness # 4. No errors should be shown in the logs and alerts lb_methods = ["roundrobin", "leastconn", "source"] configs = {"SourceBased": {"tablesize": '100k'}, "AppCookie": {"request-learn": "true"}, "LBCookie": {"nocache": "true"}} 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)) 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) self.debug("Creating stickiness policy for the LB rule: %s" % lb_rule.id) policies = self.configure_Stickiness_Policy(lb_rule, 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.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) alerts = Alert.list(self.apiclient, keyword="stickiness", listall=True) self.debug( "Create/update/delete should not produce any alert/error") self.assertEqual(alerts, None, "Create/update/delete should not produce any alert/error") return
def test_15_VPC_ReleaseIPForLBRuleCreated(self): """ Test release Ip address that has a LB rule assigned to it. """ # Validate the following # 1. Create a VPC1 with cidr - 10.1.1.1/16 # 2. Create a Network offering - NO1 with all supported services # 3. Add network1(10.1.1.1/24) using N01 to this VPC1. # 2. Create a Network offering - NO1 with all supported services # 5. Deploy vm1 and vm2 in network1 and network 2 primary host. # 6. aquire public ip address # 6. Create a StaticNat Rule rule for vm1 # 7. Use the Create LB rule for vm1 and vm2 in network1. # 8. LB rule creation should fail network_1 = self.create_Network(self.services["network_offering"]) vm_1 = self.create_VM_in_Network(network_1) vm_2 = self.create_VM_in_Network(network_1) public_ip_1 = self.acquire_Public_IP(network_1) lb_rule = self.create_LB_Rule(public_ip_1, network_1, [vm_2, vm_1]) public_ip_1.delete(self.apiclient) with self.assertRaises(Exception): lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule.id, listall=True) return
def create_LB_Rule(self, public_ip, network, vmarray, services=None): self.debug("Creating LB rule for IP address: %s" % public_ip.ipaddress.ipaddress) objservices = None if services: objservices = services else: objservices = self.services["lbrule"] lb_rule = LoadBalancerRule.create(self.apiclient, objservices, ipaddressid=public_ip.ipaddress.id, accountid=self.account.name, networkid=network.id, vpcid=self.vpc.id, domainid=self.account.domainid) self.debug("Adding virtual machines %s and %s to LB rule" % (vmarray[0], vmarray[1])) lb_rule.assign(self.apiclient, vmarray) self.debug("Adding NetworkACl rules to make NAT rule accessible") nwacl_nat = NetworkACL.create(self.apiclient, objservices, networkid=network.id, traffictype='Ingress') self.debug('nwacl_nat=%s' % nwacl_nat.__dict__) return lb_rule
def test_15_VPC_ReleaseIPForLBRuleCreated(self): """ Test release Ip address that has a LB rule assigned to it. """ # Validate the following # 1. Create a VPC1 with cidr - 10.1.1.1/16 # 2. Create a Network offering - NO1 with all supported services # 3. Add network1(10.1.1.1/24) using N01 to this VPC1. # 2. Create a Network offering - NO1 with all supported services # 5. Deploy vm1 and vm2 in network1 and network 2 primary host. # 6. aquire public ip address # 6. Create a StaticNat Rule rule for vm1 # 7. Use the Create LB rule for vm1 and vm2 in network1. # 8. LB rule creation should fail network_1 = self.create_Network(self.services["network_offering"]) vm_1 = self.create_VM_in_Network(network_1) vm_2 = self.create_VM_in_Network(network_1) public_ip_1 = self.acquire_Public_IP(network_1) lb_rule = self.create_LB_Rule(public_ip_1, network_1, [vm_2, vm_1]) public_ip_1.delete(self.apiclient) with self.assertRaises(Exception): lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule.id, listall=True ) return
def create_LB_Rule(self, public_ip, network, vmarray, services=None): self.debug("Creating LB rule for IP address: %s" % public_ip.ipaddress.ipaddress) objservices = None if services: objservices = services else: objservices = self.services["lbrule"] lb_rule = LoadBalancerRule.create( self.apiclient, objservices, ipaddressid=public_ip.ipaddress.id, accountid=self.account.name, networkid=network.id, vpcid=self.vpc.id, domainid=self.account.domainid ) self.debug("Adding virtual machines %s and %s to LB rule" % (vmarray[0], vmarray[1])) lb_rule.assign(self.apiclient, vmarray) self.debug("Adding NetworkACl rules to make NAT rule accessible") nwacl_nat = NetworkACL.create(self.apiclient, objservices, networkid=network.id, traffictype='Ingress' ) self.debug('nwacl_nat=%s' % nwacl_nat.__dict__) return lb_rule
def test_02_VPC_LBRulesAndVMListing(self): """ Test case no 211 and 228: List only VMs suitable for the Virtual Network on VPC for LB Rule """ # Validate the following # 1. Create a VPC with cidr - 10.1.1.1/16 # 2. Create a Network offering - NO1 with all supported services # 3. Add network1(10.1.1.1/24) using N01 to this VPC. # 4. Add network2(10.1.2.1/24) using N01 to this VPC. # 5. Deploy vm1 and vm2 in network1 on primary host. # 6. Deploy vm3 and vm4 in network2 on secondary host. # 7. Use the Create LB rule for vm1 and vm2 in network1. # 9. List LB rule for network1 list vms on network1 for selection of LB rule. network_1 = self.create_Network(self.services["network_offering"]) network_2 = self.create_Network( self.services["network_offering_no_lb"], '10.1.2.1') vm_1 = self.create_VM_in_Network(network_1) vm_2 = self.create_VM_in_Network(network_1) vm_3 = self.create_VM_in_Network(network_2) self.debug('vm_3=%s' % vm_3.id) vm_4 = self.create_VM_in_Network(network_2) self.debug('vm_4=%s' % vm_4.id) public_ip_1 = self.acquire_Public_IP(network_1) lb_rule = self.create_LB_Rule(public_ip_1, network_1, [vm_1, vm_2]) lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule.id, listall=True) self.failIfEqual(lb_rules, None, "Failed to list the LB Rule") vms = VirtualMachine.list(self.apiclient, networkid=network_1.id, listall=True) self.failIfEqual( vms, None, "Failed to list the VMs in network=%s" % network_1.name) return
def test_01_VPC_LBRulesListing(self): """ Test case no 210 and 227: List Load Balancing Rules belonging to a VPC """ # Validate the following # 1. Create a VPC with cidr - 10.1.1.1/16 # 2. Create a Network offering - NO1 with all supported services # 3. Add network1(10.1.1.1/24) using N01 to this VPC. # 4. Add network2(10.1.2.1/24) using N01 to this VPC. # 5. Deploy vm1 and vm2 in network1. # 6. Deploy vm3 and vm4 in network2. # 7. Use the Create LB rule for vm1 and vm2 in network1. # 8. Use the Create LB rule for vm3 amd vm4 in network2. # 11. List LB rule network_1 = self.create_Network(self.services["network_offering"]) network_2 = self.create_Network(self.services["network_offering_no_lb"], '10.1.2.1') self.debug("deploying VMs in network: %s" % network_2.name) vm_1 = self.create_VM_in_Network(network_1) vm_2 = self.create_VM_in_Network(network_1) vm_3 = self.create_VM_in_Network(network_2) vm_4 = self.create_VM_in_Network(network_2) public_ip_1 = self.acquire_Public_IP(network_1) lb_rule1 = self.create_LB_Rule(public_ip_1, network_1, [vm_1, vm_2]) public_ip_2 = self.acquire_Public_IP(network_2) lb_rule2 = self.create_LB_Rule(public_ip_2, network_2, [vm_3, vm_4]) lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule1.id, listall=True ) self.failIfEqual(lb_rules, None, "Failed to list the LB Rule" ) lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule2.id, listall=True ) self.failIfEqual(lb_rules, None, "Failed to list the LB Rule" ) return
def test_01_VPC_LBRulesListing(self): """ Test case no 210 and 227: List Load Balancing Rules belonging to a VPC """ # Validate the following # 1. Create a VPC with cidr - 10.1.1.1/16 # 2. Create a Network offering - NO1 with all supported services # 3. Add network1(10.1.1.1/24) using N01 to this VPC. # 4. Add network2(10.1.2.1/24) using N01 to this VPC. # 5. Deploy vm1 and vm2 in network1. # 6. Deploy vm3 and vm4 in network2. # 7. Use the Create LB rule for vm1 and vm2 in network1. # 8. Use the Create LB rule for vm3 amd vm4 in network2. # 11. List LB rule network_1 = self.create_Network(self.services["network_offering"]) network_2 = self.create_Network( self.services["network_offering_no_lb"], '10.1.2.1') self.debug("deploying VMs in network: %s" % network_2.name) vm_1 = self.create_VM_in_Network(network_1) vm_2 = self.create_VM_in_Network(network_1) vm_3 = self.create_VM_in_Network(network_2) vm_4 = self.create_VM_in_Network(network_2) public_ip_1 = self.acquire_Public_IP(network_1) lb_rule1 = self.create_LB_Rule(public_ip_1, network_1, [vm_1, vm_2]) public_ip_2 = self.acquire_Public_IP(network_2) lb_rule2 = self.create_LB_Rule(public_ip_2, network_2, [vm_3, vm_4]) lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule1.id, listall=True) self.failIfEqual(lb_rules, None, "Failed to list the LB Rule") lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule2.id, listall=True) self.failIfEqual(lb_rules, None, "Failed to list the LB Rule") return
def create_LB_Rule(self, public_ip, network, vmarray, services=None): self.debug("Creating LB rule for IP address: %s" % public_ip.ipaddress.ipaddress) objservices = None if services: objservices = services else: objservices = self.services["lbrule"] lb_rule = LoadBalancerRule.create(self.apiclient, objservices, ipaddressid=public_ip.ipaddress.id, accountid=self.account.name, networkid=network.id, vpcid=self.vpc.id, domainid=self.account.domainid) self.debug("Adding virtual machines %s and %s to LB rule" % (vmarray)) lb_rule.assign(self.apiclient, vmarray) return lb_rule
def create_LB_Rule(self, public_ip, network, vmarray, services=None): self.debug("Creating LB rule for IP address: %s" % public_ip.ipaddress.ipaddress) objservices = None if services: objservices = services else: objservices = self.services["lbrule"] lb_rule = LoadBalancerRule.create( self.apiclient, objservices, ipaddressid=public_ip.ipaddress.id, accountid=self.account.name, networkid=network.id, vpcid=self.vpc.id, domainid=self.account.domainid, ) self.debug("Adding virtual machines %s and %s to LB rule" % (vmarray)) lb_rule.assign(self.apiclient, vmarray) return lb_rule
def test_02_VPC_LBRulesAndVMListing(self): """ Test case no 211 and 228: List only VMs suitable for the Virtual Network on VPC for LB Rule """ # Validate the following # 1. Create a VPC with cidr - 10.1.1.1/16 # 2. Create a Network offering - NO1 with all supported services # 3. Add network1(10.1.1.1/24) using N01 to this VPC. # 4. Add network2(10.1.2.1/24) using N01 to this VPC. # 5. Deploy vm1 and vm2 in network1 on primary host. # 6. Deploy vm3 and vm4 in network2 on secondary host. # 7. Use the Create LB rule for vm1 and vm2 in network1. # 9. List LB rule for network1 list vms on network1 for selection of LB rule. network_1 = self.create_Network(self.services["network_offering"]) network_2 = self.create_Network(self.services["network_offering_no_lb"], '10.1.2.1') vm_1 = self.create_VM_in_Network(network_1) vm_2 = self.create_VM_in_Network(network_1) vm_3 = self.create_VM_in_Network(network_2) self.debug('vm_3=%s' % vm_3.id) vm_4 = self.create_VM_in_Network(network_2) self.debug('vm_4=%s' % vm_4.id) public_ip_1 = self.acquire_Public_IP(network_1) lb_rule = self.create_LB_Rule(public_ip_1, network_1, [vm_1, vm_2]) lb_rules = LoadBalancerRule.list(self.apiclient, id=lb_rule.id, listall=True ) self.failIfEqual(lb_rules, None, "Failed to list the LB Rule" ) vms = VirtualMachine.list(self.apiclient, networkid=network_1.id, listall=True ) self.failIfEqual(vms, None, "Failed to list the VMs in network=%s" % network_1.name ) return