def test_08_VPC_Network_Restarts_With_InternalDns(self): """ Verify InternalDns on VPC Network with restarts and ping by hostname """ # Validate the following # 1. Create a VPC and Tier network by using DNS network offering. # 2. Deploy vm1 in Tier network network1. # 3. Verify dhcp option 06 and 0f for subnet # 4. Verify dhcp option 06,15 and 0f for vm Interface. # 5. Deploy Vm2. # 6. Verify end to end by pinging with hostname while restarting # VPC and Tier without and with cleanup. cmd = updateZone.updateZoneCmd() cmd.id = self.zone.id cmd.domain = VPC_DOMAIN_NAME self.apiclient.updateZone(cmd) vpc_off = self.create_VpcOffering(self.dnsdata["vpc_offering"]) self.validate_VpcOffering(vpc_off, state="Enabled") vpc = self.create_Vpc(vpc_off, cidr='10.1.0.0/16', cleanup=False) self.debug("Creating Nuage Vsp VPC Network offering...") network_offering = self.create_NetworkOffering( self.dnsdata["vpc_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") network_1 = self.create_Network(network_offering, gateway='10.1.1.1', vpc=vpc) vm_1 = self.create_VM(network_1) # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_vm(vm_1) # Internal DNS check point on VSD self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1) self.verify_vsd_dhcp_option(self.DOMAINNAME, VPC_DOMAIN_NAME, network_1) for nic in vm_1.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, VPC_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True) self.test_data["virtual_machine"]["displayname"] = "vm2" self.test_data["virtual_machine"]["name"] = "vm2" vm_2 = self.create_VM(network_1) self.test_data["virtual_machine"]["displayname"] = "vm1" self.test_data["virtual_machine"]["name"] = "vm1" self.verify_vsd_vm(vm_2) for nic in vm_2.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, VPC_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True) public_ip_1 = self.acquire_PublicIPAddress(network_1, vpc) self.create_StaticNatRule_For_VM(vm_1, public_ip_1, network_1) # Adding Network ACL rule in the Public tier self.debug("Adding Network ACL rule to make the created NAT rule " "(SSH) accessible...") public_ssh_rule = self.create_NetworkAclRule( self.test_data["ingress_rule"], network=network_1) # VSD verification self.verify_vsd_firewall_rule(public_ssh_rule) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC network (cleanup = false) self.debug("Restarting the created VPC network without cleanup...") Network.restart(network_1, self.api_client, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC network (cleanup = true) self.debug("Restarting the created VPC network with cleanup...") Network.restart(network_1, self.api_client, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC (cleanup = false) self.debug("Restarting the VPC without cleanup...") self.restart_Vpc(vpc, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC (cleanup = true) self.debug("Restarting the VPC with cleanup...") self.restart_Vpc(vpc, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME)
def test_nuage_vsp(self): """ Test Nuage VSP SDN plugin with basic Isolated Network functionality """ # 1. Verify that the Nuage VSP network service provider is successfully # created and enabled. # 2. Create and enable Nuage VSP Isolated Network offering, check if it # is successfully created and enabled. # 3. Create an Isolated Network with Nuage VSP Isolated Network # offering, check if it is successfully created and is in the # "Allocated" state. # 4. Deploy a VM in the created Isolated network, check if the Isolated # network state is changed to "Implemented", and both the VM & VR # are successfully deployed and are in the "Running" state. # 5. Verify that the VPC VR has no Public IP and NIC as it is not the # Source NAT service provider. # 6. Deploy one more VM in the created Isolated network, check if the # VM is successfully deployed and is in the "Running" state. # 7. Delete the created Isolated Network after destroying its VMs, # check if the Isolated network is successfully deleted. # 8. Delete all the created objects (cleanup). for zone in self.zones: self.debug("Zone - %s" % zone.name) # Get Zone details self.getZoneDetails(zone=zone) # Configure VSD sessions self.configureVSDSessions() # Creating a network offering self.debug("Creating and enabling Nuage VSP Isolated Network " "offering...") network_offering = self.create_NetworkOffering( self.test_data["nuagevsp"]["isolated_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") # Creating a network self.debug("Creating an Isolated Network with Nuage VSP Isolated " "Network offering...") network = self.create_Network(network_offering) self.validate_Network(network, state="Allocated") # Deploying a VM in the network vm_1 = self.create_VM(network) self.validate_Network(network, state="Implemented") vr = self.get_Router(network) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") # Verifying that the VR has no public IP and NIC self.verify_VRWithoutPublicIPNIC(vr) # VSD verification self.verify_vsd_network(self.domain.id, network) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) # Deploying one more VM in the network vm_2 = self.create_VM(network) self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_vm(vm_2) Network.restart(network, self.api_client, cleanup=True) self.validate_Network(network, state="Implemented") vr = self.get_Router(network) self.verify_vsd_router(vr) # Deleting the network self.debug("Deleting the Isolated Network with Nuage VSP Isolated " "Network offering...") self.delete_VM(vm_1) self.delete_VM(vm_2) self.delete_Network(network) with self.assertRaises(Exception): self.validate_Network(network) self.debug("Isolated Network successfully deleted in CloudStack") # VSD verification with self.assertRaises(Exception): self.verify_vsd_network(self.domain.id, network) self.debug("Isolated Network successfully deleted in VSD")
def test_03_Isolated_Network_restarts(self): """ Verify InternalDns on Isolated Network with restart networks and ping by hostname """ # Validate the following # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS # network offering. # 2. Deploy vm1 in network1. # 3. Verify dhcp option 06 and 0f for subnet # 4. Verify dhcp option 06,15 and 0f for vm Interface. # 5. Deploy VM2 in network1. # 6. Verify end to end by pinging with hostname while restarting # network1 without and with cleanup. cmd = updateZone.updateZoneCmd() cmd.id = self.zone.id cmd.domain = ISOLATED_DOMAIN_NAME self.apiclient.updateZone(cmd) self.debug("Creating and enabling Nuage Vsp Isolated Network " "offering...") network_offering = self.create_NetworkOffering( self.dnsdata["isolated_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") network_1 = self.create_Network(network_offering) vm_1 = self.create_VM(network_1) # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_vm(vm_1) # Internal DNS check point on VSD self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1) self.verify_vsd_dhcp_option(self.DOMAINNAME, ISOLATED_DOMAIN_NAME, network_1) for nic in vm_1.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, ISOLATED_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True) self.test_data["virtual_machine"]["displayname"] = "vm2" self.test_data["virtual_machine"]["name"] = "vm2" vm_2 = self.create_VM(network_1) self.test_data["virtual_machine"]["displayname"] = "vm1" self.test_data["virtual_machine"]["name"] = "vm1" self.verify_vsd_vm(vm_2) for nic in vm_2.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, ISOLATED_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True) public_ip_1 = self.acquire_PublicIPAddress(network_1) self.create_and_verify_fw(vm_1, public_ip_1, network_1) self.vm_verify_ping(vm_1, public_ip_1, vm_2, ISOLATED_DOMAIN_NAME) # Restarting Isolated network (cleanup = false) self.debug("Restarting the created Isolated network without " "cleanup...") Network.restart(network_1, self.api_client, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, ISOLATED_DOMAIN_NAME) # Restarting Isolated network (cleanup = true) self.debug("Restarting the created Isolated network with cleanup...") Network.restart(network_1, self.api_client, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, ISOLATED_DOMAIN_NAME)
def test_03_Isolated_Network_restarts(self): """ Verify InternalDns on Isolated Network with restart networks and ping by hostname """ # Validate the following # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS # network offering. # 2. Deploy vm1 in network1. # 3. Verify dhcp option 06 and 0f for subnet # 4. Verify dhcp option 06,15 and 0f for vm Interface. # 5. Deploy VM2 in network1. # 6. Verify end to end by pinging with hostname while restarting # network1 without and with cleanup. cmd = updateZone.updateZoneCmd() cmd.id = self.zone.id cmd.domain = "isolated.com" self.apiclient.updateZone(cmd) self.debug("Creating and enabling Nuage Vsp Isolated Network " "offering...") network_offering = self.create_NetworkOffering( self.dnsdata["isolated_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") network_1 = self.create_Network(network_offering) vm_1 = self.create_VM(network_1) # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_vm(vm_1) # Internal DNS check point on VSD self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1) self.verify_vsd_dhcp_option(self.DOMAINNAME, "isolated.com", network_1) for nic in vm_1.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option( self.DOMAINNAME, "isolated.com", nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True) self.test_data["virtual_machine"]["displayname"] = "vm2" self.test_data["virtual_machine"]["name"] = "vm2" vm_2 = self.create_VM(network_1) self.test_data["virtual_machine"]["displayname"] = "vm1" self.test_data["virtual_machine"]["name"] = "vm1" self.verify_vsd_vm(vm_2) for nic in vm_2.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option( self.DOMAINNAME, "isolated.com", nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True) public_ip_1 = self.acquire_PublicIPAddress(network_1) self.create_and_verify_fw(vm_1, public_ip_1, network_1) vm_public_ip = public_ip_1.ipaddress.ipaddress try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.isolated.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item) # Restarting Isolated network (cleanup = false) self.debug("Restarting the created Isolated network without " "cleanup...") Network.restart(network_1, self.api_client, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.isolated.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item) # Restarting Isolated network (cleanup = true) self.debug("Restarting the created Isolated network with cleanup...") Network.restart(network_1, self.api_client, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.isolated.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item)
def test_08_VPC_Network_Restarts_With_InternalDns(self): """ Verify InternalDns on VPC Network with restarts and ping by hostname """ # Validate the following # 1. Create a VPC and Tier network by using DNS network offering. # 2. Deploy vm1 in Tier network network1. # 3. Verify dhcp option 06 and 0f for subnet # 4. Verify dhcp option 06,15 and 0f for vm Interface. # 5. Deploy Vm2. # 6. Verify end to end by pinging with hostname while restarting # VPC and Tier without and with cleanup. cmd = updateZone.updateZoneCmd() cmd.id = self.zone.id cmd.domain = "vpc.com" self.apiclient.updateZone(cmd) vpc_off = self.create_VpcOffering(self.dnsdata["vpc_offering"]) self.validate_VpcOffering(vpc_off, state="Enabled") vpc = self.create_Vpc(vpc_off, cidr='10.1.0.0/16', cleanup=False) self.debug("Creating Nuage Vsp VPC Network offering...") network_offering = self.create_NetworkOffering( self.dnsdata["vpc_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") network_1 = self.create_Network( network_offering, gateway='10.1.1.1', vpc=vpc) vm_1 = self.create_VM(network_1) # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_vm(vm_1) # Internal DNS check point on VSD self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1) self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", network_1) for nic in vm_1.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True) self.test_data["virtual_machine"]["displayname"] = "vm2" self.test_data["virtual_machine"]["name"] = "vm2" vm_2 = self.create_VM(network_1) self.test_data["virtual_machine"]["displayname"] = "vm1" self.test_data["virtual_machine"]["name"] = "vm1" self.verify_vsd_vm(vm_2) for nic in vm_2.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True) public_ip_1 = self.acquire_PublicIPAddress(network_1, vpc) self.create_StaticNatRule_For_VM(vm_1, public_ip_1, network_1) # Adding Network ACL rule in the Public tier self.debug("Adding Network ACL rule to make the created NAT rule " "(SSH) accessible...") public_ssh_rule = self.create_NetworkAclRule( self.test_data["ingress_rule"], network=network_1) # VSD verification self.verify_vsd_firewall_rule(public_ssh_rule) vm_public_ip = public_ip_1.ipaddress.ipaddress try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.vpc.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item) # Restarting VPC network (cleanup = false) self.debug("Restarting the created VPC network without cleanup...") Network.restart(network_1, self.api_client, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.vpc.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item) # Restarting VPC network (cleanup = true) self.debug("Restarting the created VPC network with cleanup...") Network.restart(network_1, self.api_client, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.vpc.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item) # Restarting VPC (cleanup = false) self.debug("Restarting the VPC without cleanup...") self.restart_Vpc(vpc, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.vpc.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item) # Restarting VPC (cleanup = true) self.debug("Restarting the VPC with cleanup...") self.restart_Vpc(vpc, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) try: vm_1.ssh_ip = vm_public_ip vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"] vm_1.username = self.test_data["virtual_machine"]["username"] vm_1.password = self.test_data["virtual_machine"]["password"] self.debug("SSHing into VM: %s with %s" % (vm_1.ssh_ip, vm_1.password)) ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip) except Exception as e: self.fail("SSH into VM failed with exception %s" % e) cmd = 'ping -c 2 vm2' self.debug("ping vm2 by hostname with command: " + cmd) outputlist = ssh.execute(cmd) self.debug("command is executed properly " + cmd) completeoutput = str(outputlist).strip('[]') self.debug("complete output is " + completeoutput) expectedlist = ['2 received', 'vm2.vpc.com', vm_2.ipaddress] for item in expectedlist: if item in completeoutput: self.debug("excepted value found in vm: " + item) else: self.fail("excepted value not found in vm: " + item)
def test_01_nuage_Domain_Template_selection_per_VPC(self): """Test Nuage VSP Domain Template selection per VPC """ # 1. Associate an invalid/non-existing Nuage VSP domain template to a # VPC; verify that the association fails. # 2. Associate a valid/existing pre-configured Nuage VSP domain # template to a VPC; verify that the association is successful, VPC # networks (domains) are instantiated from the associated domain # template in VSD. # 3. Verify that the state of such VPC networks (domains) in VSD is not # affected with their restarts in CloudStack with and without # cleanup. # 4. Verify that multiple associations (update) of domain templates to # a VPC goes through till the creation of its first VPC network # (tier). # 5. Verify that the VPC networks (domains) creation fails in VSD when # the associated domain templates to their corresponding VPCs have # been deleted in VSD. # 6. Verify that the VPC networks (domains) creation fails in VSD when # an acl list is associated with them after their corresponding VPCs # have been associated with a pre-configured Nuage VSP domain # template. # 7. Delete all the created objects (cleanup). # Creating VPC vpc_1 = self.create_vpc(self.vpc_offering, cidr='10.1.0.0/16') # Associating pre-configured Nuage VSP Domain Template to VPC with self.assertRaises(Exception): self.validate_NuageVspDomainTemplate("invalid_domain_template") self.debug("There is no domain template with name " "invalid_domain_template in VSD") with self.assertRaises(Exception): self.associate_NuageVspDomainTemplate("invalid_domain_template", vpc_1) self.debug("Association fails as there is no domain template with " "name invalid_domain_template in VSD") self.associate_NuageVspDomainTemplate(self.domain_template_list[0], vpc_1) # Creating VPC networks (tiers) vpc_1_tier_1 = self.create_Network(self.network_offering, gateway='10.1.3.1', vpc=vpc_1) vpc_1_tier_2 = self.create_Network(self.network_offering, gateway='10.1.4.1', vpc=vpc_1) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC networks (tiers) without cleanup Network.restart(vpc_1_tier_1, self.api_client, cleanup=False) Network.restart(vpc_1_tier_2, self.api_client, cleanup=False) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC networks (tiers) with cleanup Network.restart(vpc_1_tier_1, self.api_client, cleanup=True) Network.restart(vpc_1_tier_2, self.api_client, cleanup=True) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC without cleanup self.restart_Vpc(vpc_1, cleanup=False) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC with cleanup self.restart_Vpc(vpc_1, cleanup=True) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Creating VPC vpc_2 = self.create_vpc(self.vpc_offering, cidr='10.1.0.0/16') # Associating pre-configured Nuage VSP Domain Template to VPC self.validate_NuageVspDomainTemplate(self.domain_template_list[0]) self.associate_NuageVspDomainTemplate(self.domain_template_list[0], vpc_2) self.validate_NuageVspDomainTemplate(self.domain_template_list[1]) self.associate_NuageVspDomainTemplate(self.domain_template_list[1], vpc_2) # Deleting the associated pre-configured Nuage VSP domain template enterprise = self._session.user.enterprises.get_first( filter="externalID BEGINSWITH '%s'" % self.account.domainid) domain_template = enterprise.domain_templates.get_first( filter="name is '%s'" % self.domain_template_list[1]) domain_template.delete() # Creating VPC networks (tiers) with self.assertRaises(Exception): self.create_Network(self.network_offering, gateway='10.1.1.1', vpc=vpc_2) self.debug("Corresponding domain creation in VSD fails, but VPC " "(tier) network gets created on CloudStack as the " "associated pre-configured Nuage VSP domain template is no " "longer existing in VSD") for vpc_2_tier in Network.list(self.api_client, vpcid=vpc_2.id): Network(vpc_2_tier.__dict__).delete(self.api_client) # Re-creating the associated pre-configured Nuage VSP domain template new_domain_template = self.vsdk.NUDomainTemplate( name=self.domain_template_list[1], description=self.domain_template_list[1]) enterprise = self._session.user.enterprises.get_first( filter="externalID BEGINSWITH '%s'" % self.account.domainid) enterprise.create_child(new_domain_template) self.cleanup_domain_templates.append( enterprise.domain_templates.get_first( filter="name is '%s'" % self.domain_template_list[1])) vpc_2_tier_1 = self.create_Network(self.network_offering, gateway='10.1.2.1', vpc=vpc_2) vpc_2_tier_2 = self.create_Network(self.network_offering, gateway='10.1.3.1', vpc=vpc_2) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_2_tier_1, vpc_2, domain_template_name=self.domain_template_list[1]) self.verify_vsd_network( self.account.domainid, vpc_2_tier_2, vpc_2, domain_template_name=self.domain_template_list[1]) # Creating VPC vpc_3 = self.create_vpc(self.vpc_offering, cidr='10.1.0.0/16') # Associating pre-configured Nuage VSP Domain Template to VPC self.validate_NuageVspDomainTemplate(self.domain_template_list[0]) self.associate_NuageVspDomainTemplate(self.domain_template_list[0], vpc_3) # Creating an ACL list and an ACL item acl_list = self.create_NetworkAclList(name="acl", description="acl", vpc=vpc_3) self.create_NetworkAclRule(self.test_data["ingress_rule"], acl_list=acl_list) # Creating VPC networks (tiers) with self.assertRaises(Exception): self.create_Network(self.network_offering, gateway='10.1.1.1', vpc=vpc_3, acl_list=acl_list) self.debug("Corresponding domain creation in VSD fails, but VPC " "(tier) network gets created on CloudStack as creation of " "Network ACLs from CloudStack is not supported when the " "VPC is associated with a Nuage VSP pre-configured domain " "template") for vpc_3_tier in Network.list(self.api_client, vpcid=vpc_3.id): Network(vpc_3_tier.__dict__).delete(self.api_client) vpc_3_tier_1 = self.create_Network(self.network_offering, gateway='10.1.2.1', vpc=vpc_3) vpc_3_tier_2 = self.create_Network(self.network_offering, gateway='10.1.3.1', vpc=vpc_3) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_3_tier_1, vpc_3, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_3_tier_2, vpc_3, domain_template_name=self.domain_template_list[0]) # Creating VPC and VPC network (tier) vpc = self.create_vpc(self.vpc_offering, cidr='10.1.0.0/16') vpc_tier = self.create_Network(self.network_offering, vpc=vpc) # VSD verification self.verify_vsd_network(self.account.domainid, vpc_tier, vpc) # Associating pre-configured Nuage VSP Domain Template to VPC self.validate_NuageVspDomainTemplate(self.domain_template_list[0]) with self.assertRaises(Exception): self.associate_NuageVspDomainTemplate(self.domain_template_list[0], vpc) self.debug("Association fails as the corresponding domain and domain " "templates are already created in VSD for the VPC vpc")
def test_01_nuage_Domain_Template_selection_per_VPC(self): """Test Nuage VSP Domain Template selection per VPC """ # 1. Associate an invalid/non-existing Nuage VSP domain template to a # VPC; verify that the association fails. # 2. Associate a valid/existing pre-configured Nuage VSP domain # template to a VPC; verify that the association is successful, VPC # networks (domains) are instantiated from the associated domain # template in VSD. # 3. Verify that the state of such VPC networks (domains) in VSD is not # affected with their restarts in CloudStack with and without # cleanup. # 4. Verify that multiple associations (update) of domain templates to # a VPC goes through till the creation of its first VPC network # (tier). # 5. Verify that the VPC networks (domains) creation fails in VSD when # the associated domain templates to their corresponding VPCs have # been deleted in VSD. # 6. Verify that the VPC networks (domains) creation fails in VSD when # an acl list is associated with them after their corresponding VPCs # have been associated with a pre-configured Nuage VSP domain # template. # 7. Delete all the created objects (cleanup). # Creating VPC vpc_1 = self.create_Vpc(self.vpc_offering, cidr='10.1.0.0/16') # Associating pre-configured Nuage VSP Domain Template to VPC with self.assertRaises(Exception): self.validate_NuageVspDomainTemplate("invalid_domain_template") self.debug("There is no domain template with name " "invalid_domain_template in VSD") with self.assertRaises(Exception): self.associate_NuageVspDomainTemplate( "invalid_domain_template", vpc_1) self.debug("Association fails as there is no domain template with " "name invalid_domain_template in VSD") self.associate_NuageVspDomainTemplate( self.domain_template_list[0], vpc_1) # Creating VPC networks (tiers) vpc_1_tier_1 = self.create_Network( self.network_offering, gateway='10.1.3.1', vpc=vpc_1) vpc_1_tier_2 = self.create_Network( self.network_offering, gateway='10.1.4.1', vpc=vpc_1) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC networks (tiers) without cleanup Network.restart(vpc_1_tier_1, self.api_client, cleanup=False) Network.restart(vpc_1_tier_2, self.api_client, cleanup=False) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC networks (tiers) with cleanup Network.restart(vpc_1_tier_1, self.api_client, cleanup=True) Network.restart(vpc_1_tier_2, self.api_client, cleanup=True) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC without cleanup self.restart_Vpc(vpc_1, cleanup=False) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Restart VPC with cleanup self.restart_Vpc(vpc_1, cleanup=True) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_1_tier_1, vpc_1, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_1_tier_2, vpc_1, domain_template_name=self.domain_template_list[0]) # Creating VPC vpc_2 = self.create_Vpc(self.vpc_offering, cidr='10.1.0.0/16') # Associating pre-configured Nuage VSP Domain Template to VPC self.validate_NuageVspDomainTemplate(self.domain_template_list[0]) self.associate_NuageVspDomainTemplate( self.domain_template_list[0], vpc_2) self.validate_NuageVspDomainTemplate(self.domain_template_list[1]) self.associate_NuageVspDomainTemplate( self.domain_template_list[1], vpc_2) # Deleting the associated pre-configured Nuage VSP domain template enterprise = self._session.user.enterprises.get_first( filter="externalID BEGINSWITH '%s'" % self.account.domainid) domain_template = enterprise.domain_templates.get_first( filter="name is '%s'" % self.domain_template_list[1]) domain_template.delete() # Creating VPC networks (tiers) with self.assertRaises(Exception): self.create_Network( self.network_offering, gateway='10.1.1.1', vpc=vpc_2) self.debug("Corresponding domain creation in VSD fails, but VPC " "(tier) network gets created on CloudStack as the " "associated pre-configured Nuage VSP domain template is no " "longer existing in VSD") # Re-creating the associated pre-configured Nuage VSP domain template new_domain_template = self.vsdk.NUDomainTemplate( name=self.domain_template_list[1], description=self.domain_template_list[1]) enterprise = self._session.user.enterprises.get_first( filter="externalID BEGINSWITH '%s'" % self.account.domainid) enterprise.create_child(new_domain_template) self.cleanup_domain_templates.append( enterprise.domain_templates.get_first( filter="name is '%s'" % self.domain_template_list[1])) vpc_2_tier_1 = self.create_Network( self.network_offering, gateway='10.1.2.1', vpc=vpc_2) vpc_2_tier_2 = self.create_Network( self.network_offering, gateway='10.1.3.1', vpc=vpc_2) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_2_tier_1, vpc_2, domain_template_name=self.domain_template_list[1]) self.verify_vsd_network( self.account.domainid, vpc_2_tier_2, vpc_2, domain_template_name=self.domain_template_list[1]) # Creating VPC vpc_3 = self.create_Vpc(self.vpc_offering, cidr='10.1.0.0/16') # Associating pre-configured Nuage VSP Domain Template to VPC self.validate_NuageVspDomainTemplate(self.domain_template_list[0]) self.associate_NuageVspDomainTemplate( self.domain_template_list[0], vpc_3) # Creating an ACL list and an ACL item acl_list = self.create_NetworkAclList( name="acl", description="acl", vpc=vpc_3) self.create_NetworkAclRule( self.test_data["ingress_rule"], acl_list=acl_list) # Creating VPC networks (tiers) with self.assertRaises(Exception): self.create_Network( self.network_offering, gateway='10.1.1.1', vpc=vpc_3, acl_list=acl_list) self.debug("Corresponding domain creation in VSD fails, but VPC " "(tier) network gets created on CloudStack as creation of " "Network ACLs from CloudStack is not supported when the " "VPC is associated with a Nuage VSP pre-configured domain " "template") vpc_3_tier_1 = self.create_Network( self.network_offering, gateway='10.1.2.1', vpc=vpc_3) vpc_3_tier_2 = self.create_Network( self.network_offering, gateway='10.1.3.1', vpc=vpc_3) # VSD verification self.verify_vsd_network( self.account.domainid, vpc_3_tier_1, vpc_3, domain_template_name=self.domain_template_list[0]) self.verify_vsd_network( self.account.domainid, vpc_3_tier_2, vpc_3, domain_template_name=self.domain_template_list[0]) # Creating VPC and VPC network (tier) vpc = self.create_Vpc(self.vpc_offering, cidr='10.1.0.0/16') vpc_tier = self.create_Network(self.network_offering, vpc=vpc) # VSD verification self.verify_vsd_network(self.account.domainid, vpc_tier, vpc) # Associating pre-configured Nuage VSP Domain Template to VPC self.validate_NuageVspDomainTemplate(self.domain_template_list[0]) with self.assertRaises(Exception): self.associate_NuageVspDomainTemplate( self.domain_template_list[0], vpc) self.debug("Association fails as the corresponding domain and domain " "templates are already created in VSD for the VPC vpc")
def test_08_VPC_Network_Restarts_With_InternalDns(self): """ Verify InternalDns on VPC Network with restarts and ping by hostname """ # Validate the following # 1. Create a VPC and Tier network by using DNS network offering. # 2. Deploy vm1 in Tier network network1. # 3. Verify dhcp option 06 and 0f for subnet # 4. Verify dhcp option 06,15 and 0f for vm Interface. # 5. Deploy Vm2. # 6. Verify end to end by pinging with hostname while restarting # VPC and Tier without and with cleanup. cmd = updateZone.updateZoneCmd() cmd.id = self.zone.id cmd.domain = VPC_DOMAIN_NAME self.apiclient.updateZone(cmd) vpc_off = self.create_VpcOffering(self.dnsdata["vpc_offering"]) self.validate_VpcOffering(vpc_off, state="Enabled") vpc = self.create_Vpc(vpc_off, cidr='10.1.0.0/16', cleanup=False) self.debug("Creating Nuage Vsp VPC Network offering...") network_offering = self.create_NetworkOffering( self.dnsdata["vpc_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") network_1 = self.create_Network( network_offering, gateway='10.1.1.1', vpc=vpc) vm_1 = self.create_VM(network_1) # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_vm(vm_1) # Internal DNS check point on VSD self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1) self.verify_vsd_dhcp_option(self.DOMAINNAME, VPC_DOMAIN_NAME, network_1) for nic in vm_1.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, VPC_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True) self.test_data["virtual_machine"]["displayname"] = "vm2" self.test_data["virtual_machine"]["name"] = "vm2" vm_2 = self.create_VM(network_1) self.test_data["virtual_machine"]["displayname"] = "vm1" self.test_data["virtual_machine"]["name"] = "vm1" self.verify_vsd_vm(vm_2) for nic in vm_2.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option(self.DOMAINNAME, VPC_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True) public_ip_1 = self.acquire_PublicIPAddress(network_1, vpc) self.create_StaticNatRule_For_VM(vm_1, public_ip_1, network_1) # Adding Network ACL rule in the Public tier self.debug("Adding Network ACL rule to make the created NAT rule " "(SSH) accessible...") public_ssh_rule = self.create_NetworkAclRule( self.test_data["ingress_rule"], network=network_1) # VSD verification self.verify_vsd_firewall_rule(public_ssh_rule) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC network (cleanup = false) self.debug("Restarting the created VPC network without cleanup...") Network.restart(network_1, self.api_client, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC network (cleanup = true) self.debug("Restarting the created VPC network with cleanup...") Network.restart(network_1, self.api_client, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC (cleanup = false) self.debug("Restarting the VPC without cleanup...") self.restart_Vpc(vpc, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME) # Restarting VPC (cleanup = true) self.debug("Restarting the VPC with cleanup...") self.restart_Vpc(vpc, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1, vpc) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.vm_verify_ping(vm_1, public_ip_1, vm_2, VPC_DOMAIN_NAME)
def test_03_Isolated_Network_restarts(self): """ Verify InternalDns on Isolated Network with restart networks and ping by hostname """ # Validate the following # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS # network offering. # 2. Deploy vm1 in network1. # 3. Verify dhcp option 06 and 0f for subnet # 4. Verify dhcp option 06,15 and 0f for vm Interface. # 5. Deploy VM2 in network1. # 6. Verify end to end by pinging with hostname while restarting # network1 without and with cleanup. cmd = updateZone.updateZoneCmd() cmd.id = self.zone.id cmd.domain = ISOLATED_DOMAIN_NAME self.apiclient.updateZone(cmd) self.debug("Creating and enabling Nuage Vsp Isolated Network " "offering...") network_offering = self.create_NetworkOffering( self.dnsdata["isolated_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") network_1 = self.create_Network(network_offering) vm_1 = self.create_VM(network_1) # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_vm(vm_1) # Internal DNS check point on VSD self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1) self.verify_vsd_dhcp_option(self.DOMAINNAME, ISOLATED_DOMAIN_NAME, network_1) for nic in vm_1.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option( self.DOMAINNAME, ISOLATED_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True) self.test_data["virtual_machine"]["displayname"] = "vm2" self.test_data["virtual_machine"]["name"] = "vm2" vm_2 = self.create_VM(network_1) self.test_data["virtual_machine"]["displayname"] = "vm1" self.test_data["virtual_machine"]["name"] = "vm1" self.verify_vsd_vm(vm_2) for nic in vm_2.nic: self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True) self.verify_vsd_dhcp_option( self.DOMAINNAME, ISOLATED_DOMAIN_NAME, nic, True) self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True) public_ip_1 = self.acquire_PublicIPAddress(network_1) self.create_and_verify_fw(vm_1, public_ip_1, network_1) self.vm_verify_ping(vm_1, public_ip_1, vm_2, ISOLATED_DOMAIN_NAME) # Restarting Isolated network (cleanup = false) self.debug("Restarting the created Isolated network without " "cleanup...") Network.restart(network_1, self.api_client, cleanup=False) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, ISOLATED_DOMAIN_NAME) # Restarting Isolated network (cleanup = true) self.debug("Restarting the created Isolated network with cleanup...") Network.restart(network_1, self.api_client, cleanup=True) self.validate_Network(network_1, state="Implemented") vr = self.get_Router(network_1) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_network(self.domain.id, network_1) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) self.verify_vsd_vm(vm_2) self.vm_verify_ping(vm_1, public_ip_1, vm_2, ISOLATED_DOMAIN_NAME)
def test_nuage_vsp(self): """ Test Nuage VSP SDN plugin with basic Isolated Network functionality """ # 1. Verify that the Nuage VSP network service provider is successfully # created and enabled. # 2. Create and enable Nuage VSP Isolated Network offering, check if it # is successfully created and enabled. # 3. Create an Isolated Network with Nuage VSP Isolated Network # offering, check if it is successfully created and is in the # "Allocated" state. # 4. Deploy a VM in the created Isolated network, check if the Isolated # network state is changed to "Implemented", and both the VM & VR # are successfully deployed and are in the "Running" state. # 5. Verify that the VPC VR has no Public IP and NIC as it is not the # Source NAT service provider. # 6. Deploy one more VM in the created Isolated network, check if the # VM is successfully deployed and is in the "Running" state. # 7. Delete the created Isolated Network after destroying its VMs, # check if the Isolated network is successfully deleted. # 8. Delete all the created objects (cleanup). for zone in self.zones: self.debug("Zone - %s" % zone.name) # Get Zone details self.getZoneDetails(zone=zone) # Configure VSD sessions self.configureVSDSessions() # Creating a network offering self.debug("Creating and enabling Nuage VSP Isolated Network " "offering...") network_offering = self.create_NetworkOffering( self.test_data["nuagevsp"]["isolated_network_offering"]) self.validate_NetworkOffering(network_offering, state="Enabled") # Creating a network self.debug("Creating an Isolated Network with Nuage VSP Isolated " "Network offering...") network = self.create_Network(network_offering) self.validate_Network(network, state="Allocated") # Deploying a VM in the network vm_1 = self.create_VM(network) self.validate_Network(network, state="Implemented") vr = self.get_Router(network) self.check_Router_state(vr, state="Running") self.check_VM_state(vm_1, state="Running") # Verifying that the VR has no public IP and NIC self.verify_VRWithoutPublicIPNIC(vr) # VSD verification self.verify_vsd_network(self.domain.id, network) self.verify_vsd_router(vr) self.verify_vsd_vm(vm_1) # Deploying one more VM in the network vm_2 = self.create_VM(network) self.check_VM_state(vm_2, state="Running") # VSD verification self.verify_vsd_vm(vm_2) Network.restart(network, self.api_client, cleanup=True) self.validate_Network(network, state="Implemented") vr = self.get_Router(network) self.verify_vsd_router(vr) # Deleting the network self.debug("Deleting the Isolated Network with Nuage VSP Isolated " "Network offering...") self.delete_VM(vm_1) self.delete_VM(vm_2) self.delete_Network(network) with self.assertRaises(Exception): self.validate_Network(network) self.debug("Isolated Network successfully deleted in CloudStack") # VSD verification with self.assertRaises(Exception): self.verify_vsd_network(self.domain.id, network) self.debug("Isolated Network successfully deleted in VSD")