def test_09_expunge_vm(self): """Test destroy(expunge) Virtual Machine """ # Validate the following # 1. listVM command should NOT return this VM any more. self.debug("Expunge VM-ID: %s" % self.small_virtual_machine.id) cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = self.small_virtual_machine.id self.apiclient.destroyVirtualMachine(cmd) config = Configurations.list(self.apiclient, name="expunge.delay") expunge_delay = int(config[0].value) time.sleep(expunge_delay * 2) # VM should be destroyed unless expunge thread hasn't run # Wait for two cycles of the expunge thread config = Configurations.list(self.apiclient, name="expunge.interval") expunge_cycle = int(config[0].value) wait_time = expunge_cycle * 2 while wait_time >= 0: list_vm_response = VirtualMachine.list(self.apiclient, id=self.small_virtual_machine.id) if list_vm_response: time.sleep(expunge_cycle) wait_time = wait_time - expunge_cycle else: break self.debug("listVirtualMachines response: %s" % list_vm_response) self.assertEqual(list_vm_response, None, "Check Expunged virtual machine is in listVirtualMachines response") return
def test_11_resize_renamed_volume(self): '''Resize volume which was created with globalid than renamed with uuid''' volume_on_sp_1 = Volume.create( self.apiclient, {"diskname":"StorPoolDisk-3" }, zoneid=self.zone.id, diskofferingid=self.disk_offering.id, ) virtual_machine = VirtualMachine.create( self.apiclient, {"name":"StorPool-%s" % uuid.uuid4() }, zoneid=self.zone.id, templateid=self.template.id, serviceofferingid=self.service_offering.id, hypervisor=self.hypervisor, hostid = self.host_on_local_1.id, rootdisksize=10 ) virtual_machine.attach_volume(self.apiclient, volume_on_sp_1) self.assertEqual(VirtualMachine.RUNNING, virtual_machine.state, "Running") listvol = Volume.list( self.apiclient, virtualmachineid = virtual_machine.id, id= volume_on_sp_1.id ) volume = listvol[0] vol = sptypes.VolumeUpdateDesc(rename = volume.id) name = volume.path.split("/")[3] rename = self.spapi.volumeUpdate(volumeName = "~" + name, json = vol) #resize volume with it's global id self.helper.resizing_volume(volume, globalid=True) volume_with_global_id = self.spapi.volumeList(volumeName = "~" + name) #resize volume that was renamed with uuid self.helper.resizing_volume(volume, globalid=False) volume_with_uuid = self.spapi.volumeList(volumeName = volume.id) self.debug("volume_with_global_id %s" % volume_with_global_id) self.debug("volume_with_uuid %s" % volume_with_uuid) self.assertEqual(volume_with_global_id[0].name, volume_with_uuid[0].name, "Are not the same") cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = virtual_machine.id cmd.expunge = True self.apiclient.destroyVirtualMachine(cmd) volume_on_sp_1.delete(self.apiclient)
def test_01_delete_all_virtual_machines(self): """Test to delete VMs """ virtual_machines = list_virtual_machines(self.apiclient) for v in virtual_machines: try: cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = v.id cmd.expunge = True self.apiclient.destroyVirtualMachine(cmd) except Exception as e: continue
def deleteKubernetesClusterAndVerify(self, cluster_id, verify=True, forced=False): """Delete Kubernetes cluster and check if it is really deleted""" delete_response = {} forceDeleted = False try: delete_response = self.deleteKubernetesCluster(cluster_id) except Exception as e: if forced: cluster = self.listKubernetesCluster(cluster_id) if cluster != None: if cluster.state in [ 'Starting', 'Running', 'Upgrading', 'Scaling' ]: self.stopKubernetesCluster(cluster_id) self.deleteKubernetesCluster(cluster_id) else: forceDeleted = True for cluster_vm in cluster.virtualmachines: cmd = destroyVirtualMachine.destroyVirtualMachineCmd( ) cmd.id = cluster_vm.id cmd.expunge = True self.apiclient.destroyVirtualMachine(cmd) cmd = deleteNetwork.deleteNetworkCmd() cmd.id = cluster.networkid cmd.forced = True self.apiclient.deleteNetwork(cmd) self.dbclient.execute( "update kubernetes_cluster set state='Destroyed', removed=now() where uuid = '%s';" % cluster.id) else: raise Exception("Error: Exception during delete cluster : %s" % e) if verify == True and forceDeleted == False: self.assertEqual( delete_response.success, True, "Check KubernetesCluster delete response {}, {}".format( delete_response.success, True)) db_cluster_removed = self.dbclient.execute( "select removed from kubernetes_cluster where uuid = '%s';" % cluster_id)[0][0] self.assertNotEqual( db_cluster_removed, None, "KubernetesCluster not removed in DB, {}".format( db_cluster_removed))
def test_09_expunge_vm(self): """Test destroy(expunge) Virtual Machine """ # Validate the following # 1. listVM command should NOT return this VM any more. self.debug("Expunge VM-ID: %s" % self.small_virtual_machine.id) cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = self.small_virtual_machine.id self.apiclient.destroyVirtualMachine(cmd) config = Configurations.list( self.apiclient, name='expunge.delay' ) expunge_delay = int(config[0].value) time.sleep(expunge_delay * 2) # VM should be destroyed unless expunge thread hasn't run # Wait for two cycles of the expunge thread config = Configurations.list( self.apiclient, name='expunge.interval' ) expunge_cycle = int(config[0].value) wait_time = expunge_cycle * 4 while wait_time >= 0: list_vm_response = VirtualMachine.list( self.apiclient, id=self.small_virtual_machine.id ) if not list_vm_response: break self.debug("Waiting for VM to expunge") time.sleep(expunge_cycle) wait_time = wait_time - expunge_cycle self.debug("listVirtualMachines response: %s" % list_vm_response) self.assertEqual(list_vm_response, None, "Check Expunged virtual machine is in listVirtualMachines response") return
def test_13_revert_renamed_snapshot(self): '''Revert which was created with globalid than renamed with uuid''' virtual_machine = VirtualMachine.create( self.apiclient, {"name":"StorPool-%s" % uuid.uuid4() }, zoneid=self.zone.id, templateid=self.template.id, serviceofferingid=self.service_offering.id, hypervisor=self.hypervisor, hostid = self.host_on_local_1.id, rootdisksize=10 ) self.assertEqual(VirtualMachine.RUNNING, virtual_machine.state, "Running") listvol = Volume.list( self.apiclient, virtualmachineid = virtual_machine.id, type = "ROOT" ) snapshot = Snapshot.create(self.apiclient, volume_id = listvol[0].id) virtual_machine.stop(self.apiclient, forced = True) globalId = self.storpool_snapshot_globalid(snapshot) sn = sptypes.SnapshotUpdateDesc(rename = snapshot.id) rename = self.spapi.snapshotUpdate(snapshotName = globalId, json = sn) snapshot.validateState( self.apiclient, snapshotstate="backedup", ) Volume.revertToSnapshot(self.apiclient, snapshot.id) virtual_machine.start(self.apiclient) cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = virtual_machine.id cmd.expunge = True self.apiclient.destroyVirtualMachine(cmd) snapshot.delete(self.apiclient)
def test_05_migrate_vm_live_restore(self): """ Restore the VM , Migrate all the volumes and VM. """ global vm global data_disk_1 self.virtual_machine.restore(self.apiclient) self.virtual_machine.getState( self.apiclient, "Running" ) # Migrate the VM and its volumes destinationHost, vol_list = self.get_destination_pools_hosts(vm) vm = self.migrateVm(self.virtual_machine, destinationHost) cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = self.virtual_machine.id cmd.expunge = True self.apiclient.destroyVirtualMachine(cmd) data_disk_1.delete(self.apiclient)
def destroy_vm(self, vm_id): cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.expunge = True cmd.id = vm_id return self.apiclient.destroyVirtualMachine(cmd)
def destroy_vm(self, apiclient, virtualmachineid): cmd = destroyVirtualMachine.destroyVirtualMachineCmd() cmd.id = virtualmachineid cmd.expunge = True apiclient.destroyVirtualMachine(cmd)