コード例 #1
0
    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
コード例 #2
0
    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)
コード例 #3
0
 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
コード例 #4
0
    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))
コード例 #5
0
    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
コード例 #6
0
    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)     
コード例 #7
0
    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)
コード例 #8
0
 def destroy_vm(self, vm_id):
     cmd = destroyVirtualMachine.destroyVirtualMachineCmd()
     cmd.expunge = True
     cmd.id = vm_id
     return self.apiclient.destroyVirtualMachine(cmd)
コード例 #9
0
 def destroy_vm(self, apiclient, virtualmachineid):
     cmd = destroyVirtualMachine.destroyVirtualMachineCmd()
     cmd.id = virtualmachineid
     cmd.expunge = True
     apiclient.destroyVirtualMachine(cmd)