def test_03_delete_vm_snapshots(self): """Test to delete vm snapshots """ list_snapshot_response = VmSnapshot.list(self.apiclient, vmid=self.virtual_machine.id, listall=True) self.assertEqual( isinstance(list_snapshot_response, list), True, "Check list response returns a valid list" ) self.assertNotEqual( list_snapshot_response, None, "Check if snapshot exists in ListSnapshot" ) VmSnapshot.deleteVMSnapshot(self.apiclient, list_snapshot_response[0].id) time.sleep(self.services["sleep"] * 3) list_snapshot_response = VmSnapshot.list(self.apiclient, vmid=self.virtual_machine.id, listall=True) self.assertEqual( list_snapshot_response, None, "Check list vm snapshot has be deleted" )
def test_03_delete_vm_snapshots(self): """Test to delete vm snapshots """ list_snapshot_response = VmSnapshot.list( self.apiclient, virtualmachineid=self.virtual_machine.id, listall=True) self.assertEqual(isinstance(list_snapshot_response, list), True, "Check list response returns a valid list") self.assertNotEqual(list_snapshot_response, None, "Check if snapshot exists in ListSnapshot") VmSnapshot.deleteVMSnapshot(self.apiclient, list_snapshot_response[0].id) time.sleep(30) list_snapshot_response = VmSnapshot.list( self.apiclient, virtualmachineid=self.virtual_machine.id, listall=False) self.debug('list_snapshot_response -------------------- %s' % list_snapshot_response) self.assertIsNone(list_snapshot_response, "snapshot is already deleted")
def test_03_delete_vm_snapshots(self): """Test to delete vm snapshots """ list_snapshot_response = VmSnapshot.list(self.apiclient, vmid=self.virtual_machine.id, listall=True) self.assertEqual( isinstance(list_snapshot_response, list), True, "Check list response returns a valid list" ) self.assertNotEqual( list_snapshot_response, None, "Check if snapshot exists in ListSnapshot" ) VmSnapshot.deleteVMSnapshot(self.apiclient, list_snapshot_response[0].id) time.sleep(self.services["sleep"] * 3) list_snapshot_response = VmSnapshot.list(self.apiclient, vmid=self.virtual_machine.id, listall=True) self.assertEqual( list_snapshot_response, None, "Check list vm snapshot has be deleted" )
def test_02_delete_vm_snapshot_between_reverts(self): '''Delete VM snapshot after revert of one vm snapshot ''' self.virtual_machine.stop(self.apiclient, forced=True) try: cfg.logger.info("revert vm snapshot created with UUID") VmSnapshot.revertToSnapshot(self.apiclient, self.vm_snapshot1.id) except Exception as e: cfg.logger.info(e) self.virtual_machine.start(self.apiclient) time.sleep(20) try: ssh_client = self.virtual_machine.get_ssh_client(reconnect=True) cmds = ["cat %s/%s" % (self.test_dir, self.random_data)] for c in cmds: result = ssh_client.execute(c) except Exception: self.fail("SSH failed for Virtual machine: %s" % self.virtual_machine.ipaddress) self.assertEqual( self.random_data_vm_snapshot1, result[0], "Check the random data is equal with the ramdom file!") cfg.logger.info("Data before taking a snapshot %s \n\ Data after revert of snapshot %s" % (self.random_data_vm_snapshot1, result[0])) vm_snapshot_glid = VmSnapshot.create(self.apiclient, self.virtual_machine.id, False, "TestSnapshot", "Display Text") deleted_vm = VmSnapshot.deleteVMSnapshot( self.apiclient, vmsnapshotid=vm_snapshot_glid.id) self.assertTrue(deleted_vm, "The virtual machine snapshot was not deleted") deleted_vm2 = VmSnapshot.deleteVMSnapshot( self.apiclient, vmsnapshotid=self.vm_snapshot_for_delete.id) self.assertTrue(deleted_vm2, "VM snapshot was not deleted")
def test_02_take_VM_snapshot_with_data_disk(self): self.virtual_machine.start(self.apiClient) data_volume = Volume.create(self.apiClient, self.testdata[TestData.volume_1], account=self.account.name, domainid=self.domain.id, zoneid=self.zone.id, diskofferingid=self.disk_offering.id) self.cleanup = [data_volume] self.virtual_machine.attach_volume(self.apiClient, data_volume) root_volumes = list_volumes(self.apiClient, type="ROOT", listAll="true") sf_util.check_list( root_volumes, 1, self, TestVMSnapshots._should_only_be_one_root_volume_err_msg) root_volume = root_volumes[0] root_volume_id = {'volumeid': root_volume.id} sf_iscsi_name_result = self.cs_api.getVolumeiScsiName(root_volume_id) sf_iscsi_root_volume_name = sf_iscsi_name_result['apivolumeiscsiname'][ 'volumeiScsiName'] sf_util.check_iscsi_name(sf_iscsi_root_volume_name, self) root_volume_path_1 = self._get_path(root_volume_id) data_volumes = list_volumes(self.apiClient, type="DATADISK", listAll="true") sf_util.check_list(data_volumes, 1, self, "There should only be one data volume.") data_volume = data_volumes[0] data_volume_id = {'volumeid': data_volume.id} sf_iscsi_name_result = self.cs_api.getVolumeiScsiName(data_volume_id) sf_iscsi_data_volume_name = sf_iscsi_name_result['apivolumeiscsiname'][ 'volumeiScsiName'] sf_util.check_iscsi_name(sf_iscsi_data_volume_name, self) data_volume_path_1 = self._get_path(data_volume_id) ####################################### ####################################### # STEP 1: Take snapshot of running VM # ####################################### ####################################### vm_snapshot = VmSnapshot.create(self.apiClient, vmid=self.virtual_machine.id, snapshotmemory="false", name="Test Snapshot", description="Test Snapshot Desc") list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self._verify_vm_snapshot(list_vm_snapshots, vm_snapshot) root_volume_path_2 = self._get_path(root_volume_id) self.assertEqual(root_volume_path_1, root_volume_path_2, TestVMSnapshots._path_should_not_have_changed_err_msg) data_volume_path_2 = self._get_path(data_volume_id) self.assertEqual(data_volume_path_1, data_volume_path_2, TestVMSnapshots._path_should_not_have_changed_err_msg) root_volume_xen_sr = self.xen_session.xenapi.SR.get_by_name_label( sf_iscsi_root_volume_name)[0] root_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs( root_volume_xen_sr) sf_util.check_list(root_volume_xen_vdis, 3, self, TestVMSnapshots._should_be_three_vdis_err_msg) root_volume_vdis_after_create = self._get_vdis(root_volume_xen_vdis) vdiSnapshotOf = self.xen_session.xenapi.VDI.get_record( root_volume_vdis_after_create.snapshot_vdi["snapshot_of"]) self.assertEqual(vdiSnapshotOf["uuid"], root_volume_vdis_after_create.active_vdi["uuid"], TestVMSnapshots._snapshot_parent_not_correct_err_msg) data_volume_xen_sr = self.xen_session.xenapi.SR.get_by_name_label( sf_iscsi_data_volume_name)[0] data_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs( data_volume_xen_sr) sf_util.check_list(data_volume_xen_vdis, 3, self, TestVMSnapshots._should_be_three_vdis_err_msg) data_volume_vdis_after_create = self._get_vdis(data_volume_xen_vdis) vdiSnapshotOf = self.xen_session.xenapi.VDI.get_record( data_volume_vdis_after_create.snapshot_vdi["snapshot_of"]) self.assertEqual(vdiSnapshotOf["uuid"], data_volume_vdis_after_create.active_vdi["uuid"], TestVMSnapshots._snapshot_parent_not_correct_err_msg) ####################################### ####################################### ### STEP 2: Revert VM to Snapshot ### ####################################### ####################################### self.virtual_machine.stop(self.apiClient) VmSnapshot.revertToSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") sf_util.check_list( list_vm_snapshots, 1, self, TestVMSnapshots._should_only_be_one_vm_snapshot_err_msg) root_volume_path_3 = self._get_path(root_volume_id) self.assertNotEqual(root_volume_path_1, root_volume_path_3, TestVMSnapshots._path_should_have_changed_err_msg) root_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs( root_volume_xen_sr) sf_util.check_list(root_volume_xen_vdis, 3, self, TestVMSnapshots._should_be_three_vdis_err_msg) root_volume_vdis_after_revert = self._get_vdis(root_volume_xen_vdis) self.assertNotEqual( root_volume_vdis_after_create.active_vdi["uuid"], root_volume_vdis_after_revert.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_not_be_the_same_err_msg) self.assertEqual( root_volume_vdis_after_create.snapshot_vdi["uuid"], root_volume_vdis_after_revert.snapshot_vdi["uuid"], TestVMSnapshots._snapshot_vdis_should_be_the_same_err_msg) self.assertEqual(root_volume_vdis_after_create.base_vdi["uuid"], root_volume_vdis_after_revert.base_vdi["uuid"], TestVMSnapshots._base_vdis_should_be_the_same_err_msg) data_volume_path_3 = self._get_path(data_volume_id) self.assertNotEqual(data_volume_path_1, data_volume_path_3, TestVMSnapshots._path_should_have_changed_err_msg) data_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs( data_volume_xen_sr) sf_util.check_list(data_volume_xen_vdis, 3, self, TestVMSnapshots._should_be_three_vdis_err_msg) data_volume_vdis_after_revert = self._get_vdis(data_volume_xen_vdis) self.assertNotEqual( data_volume_vdis_after_create.active_vdi["uuid"], data_volume_vdis_after_revert.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_not_be_the_same_err_msg) self.assertEqual( data_volume_vdis_after_create.snapshot_vdi["uuid"], data_volume_vdis_after_revert.snapshot_vdi["uuid"], TestVMSnapshots._snapshot_vdis_should_be_the_same_err_msg) self.assertEqual(data_volume_vdis_after_create.base_vdi["uuid"], data_volume_vdis_after_revert.base_vdi["uuid"], TestVMSnapshots._base_vdis_should_be_the_same_err_msg) ####################################### ####################################### ##### STEP 3: Delete VM snapshot ##### ####################################### ####################################### VmSnapshot.deleteVMSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self.assertEqual(list_vm_snapshots, None, TestVMSnapshots._should_be_no_vm_snapshots_err_msg) root_volume_path_4 = self._get_path(root_volume_id) self.assertEqual(root_volume_path_3, root_volume_path_4, TestVMSnapshots._path_should_not_have_changed_err_msg) root_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs( root_volume_xen_sr) sf_util.check_list(root_volume_xen_vdis, 1, self, TestVMSnapshots._should_only_be_one_vdi_err_msg) root_volume_vdis_after_delete = self._get_vdis(root_volume_xen_vdis, True) self.assertEqual( root_volume_vdis_after_revert.active_vdi["uuid"], root_volume_vdis_after_delete.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_be_the_same_err_msg) data_volume_path_4 = self._get_path(data_volume_id) self.assertEqual(data_volume_path_3, data_volume_path_4, TestVMSnapshots._path_should_not_have_changed_err_msg) data_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs( data_volume_xen_sr) sf_util.check_list(data_volume_xen_vdis, 1, self, TestVMSnapshots._should_only_be_one_vdi_err_msg) data_volume_vdis_after_delete = self._get_vdis(data_volume_xen_vdis, True) self.assertEqual( data_volume_vdis_after_revert.active_vdi["uuid"], data_volume_vdis_after_delete.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_be_the_same_err_msg) ####################################### ####################################### ##### STEP 4: Start VM ##### ####################################### ####################################### self.virtual_machine.detach_volume(self.apiClient, data_volume) self.virtual_machine.start(self.apiClient)
def test_01_take_VM_snapshot(self): self.virtual_machine.start(self.apiClient) root_volumes = list_volumes(self.apiClient, type="ROOT", listAll="true") sf_util.check_list( root_volumes, 1, self, TestVMSnapshots._should_only_be_one_root_volume_err_msg) root_volume = root_volumes[0] volume_id = {'volumeid': root_volume.id} sf_iscsi_name_result = self.cs_api.getVolumeiScsiName(volume_id) sf_iscsi_name = sf_iscsi_name_result['apivolumeiscsiname'][ 'volumeiScsiName'] sf_util.check_iscsi_name(sf_iscsi_name, self) root_volume_path_1 = self._get_path(volume_id) ####################################### ####################################### # STEP 1: Take snapshot of running VM # ####################################### ####################################### vm_snapshot = VmSnapshot.create(self.apiClient, vmid=self.virtual_machine.id, snapshotmemory="false", name="Test Snapshot", description="Test Snapshot Desc") list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self._verify_vm_snapshot(list_vm_snapshots, vm_snapshot) root_volume_path_2 = self._get_path(volume_id) self.assertEqual(root_volume_path_1, root_volume_path_2, TestVMSnapshots._path_should_not_have_changed_err_msg) xen_sr = self.xen_session.xenapi.SR.get_by_name_label(sf_iscsi_name)[0] xen_vdis = self.xen_session.xenapi.SR.get_VDIs(xen_sr) sf_util.check_list(xen_vdis, 3, self, TestVMSnapshots._should_be_three_vdis_err_msg) vdis_after_create = self._get_vdis(xen_vdis) vdiSnapshotOf = self.xen_session.xenapi.VDI.get_record( vdis_after_create.snapshot_vdi["snapshot_of"]) self.assertEqual(vdiSnapshotOf["uuid"], vdis_after_create.active_vdi["uuid"], TestVMSnapshots._snapshot_parent_not_correct_err_msg) ####################################### ####################################### ### STEP 2: Revert VM to Snapshot ### ####################################### ####################################### self.virtual_machine.stop(self.apiClient) VmSnapshot.revertToSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") sf_util.check_list( list_vm_snapshots, 1, self, TestVMSnapshots._should_only_be_one_vm_snapshot_err_msg) root_volume_path_3 = self._get_path(volume_id) self.assertNotEqual(root_volume_path_1, root_volume_path_3, TestVMSnapshots._path_should_have_changed_err_msg) xen_vdis = self.xen_session.xenapi.SR.get_VDIs(xen_sr) sf_util.check_list(xen_vdis, 3, self, TestVMSnapshots._should_be_three_vdis_err_msg) vdis_after_revert = self._get_vdis(xen_vdis) self.assertNotEqual( vdis_after_create.active_vdi["uuid"], vdis_after_revert.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_not_be_the_same_err_msg) self.assertEqual( vdis_after_create.snapshot_vdi["uuid"], vdis_after_revert.snapshot_vdi["uuid"], TestVMSnapshots._snapshot_vdis_should_be_the_same_err_msg) self.assertEqual(vdis_after_create.base_vdi["uuid"], vdis_after_revert.base_vdi["uuid"], TestVMSnapshots._base_vdis_should_be_the_same_err_msg) ####################################### ####################################### ##### STEP 3: Delete VM snapshot ##### ####################################### ####################################### VmSnapshot.deleteVMSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self.assertEqual(list_vm_snapshots, None, TestVMSnapshots._should_be_no_vm_snapshots_err_msg) root_volume_path_4 = self._get_path(volume_id) self.assertEqual(root_volume_path_3, root_volume_path_4, TestVMSnapshots._path_should_not_have_changed_err_msg) xen_vdis = self.xen_session.xenapi.SR.get_VDIs(xen_sr) sf_util.check_list(xen_vdis, 1, self, TestVMSnapshots._should_only_be_one_vdi_err_msg) vdis_after_delete = self._get_vdis(xen_vdis, True) self.assertEqual( vdis_after_revert.active_vdi["uuid"], vdis_after_delete.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_be_the_same_err_msg) ####################################### ####################################### ##### STEP 4: Start VM ##### ####################################### ####################################### self.virtual_machine.start(self.apiClient)
def test_02_take_VM_snapshot_with_data_disk(self): self.virtual_machine.start(self.apiClient) data_volume = Volume.create( self.apiClient, self.testdata[TestData.volume_1], account=self.account.name, domainid=self.domain.id, zoneid=self.zone.id, diskofferingid=self.disk_offering.id ) self.cleanup = [data_volume] self.virtual_machine.attach_volume(self.apiClient, data_volume) root_volumes = list_volumes(self.apiClient, type="ROOT", listAll="true") self._check_list(root_volumes, 1, TestVMSnapshots._should_only_be_one_root_volume_err_msg) root_volume = root_volumes[0] root_volume_id = {'volumeid': root_volume.id} sf_iscsi_name_result = self.cs_api.getVolumeiScsiName(root_volume_id) sf_iscsi_root_volume_name = sf_iscsi_name_result['apivolumeiscsiname']['volumeiScsiName'] self._check_iscsi_name(sf_iscsi_root_volume_name) root_volume_path_1 = self._get_path(root_volume_id) data_volumes = list_volumes(self.apiClient, type="DATADISK", listAll="true") self._check_list(data_volumes, 1, "There should only be one data volume.") data_volume = data_volumes[0] data_volume_id = {'volumeid': data_volume.id} sf_iscsi_name_result = self.cs_api.getVolumeiScsiName(data_volume_id) sf_iscsi_data_volume_name = sf_iscsi_name_result['apivolumeiscsiname']['volumeiScsiName'] self._check_iscsi_name(sf_iscsi_data_volume_name) data_volume_path_1 = self._get_path(data_volume_id) ####################################### ####################################### # STEP 1: Take snapshot of running VM # ####################################### ####################################### vm_snapshot = VmSnapshot.create( self.apiClient, vmid=self.virtual_machine.id, snapshotmemory="false", name="Test Snapshot", description="Test Snapshot Desc" ) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self._verify_vm_snapshot(list_vm_snapshots, vm_snapshot) root_volume_path_2 = self._get_path(root_volume_id) self.assertEqual( root_volume_path_1, root_volume_path_2, TestVMSnapshots._path_should_not_have_changed_err_msg ) data_volume_path_2 = self._get_path(data_volume_id) self.assertEqual( data_volume_path_1, data_volume_path_2, TestVMSnapshots._path_should_not_have_changed_err_msg ) root_volume_xen_sr = self.xen_session.xenapi.SR.get_by_name_label(sf_iscsi_root_volume_name)[0] root_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs(root_volume_xen_sr) self._check_list(root_volume_xen_vdis, 3, TestVMSnapshots._should_be_three_vdis_err_msg) root_volume_vdis_after_create = self._get_vdis(root_volume_xen_vdis) vdiSnapshotOf = self.xen_session.xenapi.VDI.get_record(root_volume_vdis_after_create.snapshot_vdi["snapshot_of"]) self.assertEqual( vdiSnapshotOf["uuid"], root_volume_vdis_after_create.active_vdi["uuid"], TestVMSnapshots._snapshot_parent_not_correct_err_msg ) data_volume_xen_sr = self.xen_session.xenapi.SR.get_by_name_label(sf_iscsi_data_volume_name)[0] data_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs(data_volume_xen_sr) self._check_list(data_volume_xen_vdis, 3, TestVMSnapshots._should_be_three_vdis_err_msg) data_volume_vdis_after_create = self._get_vdis(data_volume_xen_vdis) vdiSnapshotOf = self.xen_session.xenapi.VDI.get_record(data_volume_vdis_after_create.snapshot_vdi["snapshot_of"]) self.assertEqual( vdiSnapshotOf["uuid"], data_volume_vdis_after_create.active_vdi["uuid"], TestVMSnapshots._snapshot_parent_not_correct_err_msg ) ####################################### ####################################### ### STEP 2: Revert VM to Snapshot ### ####################################### ####################################### self.virtual_machine.stop(self.apiClient) VmSnapshot.revertToSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self._check_list(list_vm_snapshots, 1, TestVMSnapshots._should_only_be_one_vm_snapshot_err_msg) root_volume_path_3 = self._get_path(root_volume_id) self.assertNotEqual( root_volume_path_1, root_volume_path_3, TestVMSnapshots._path_should_have_changed_err_msg ) root_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs(root_volume_xen_sr) self._check_list(root_volume_xen_vdis, 3, TestVMSnapshots._should_be_three_vdis_err_msg) root_volume_vdis_after_revert = self._get_vdis(root_volume_xen_vdis) self.assertNotEqual( root_volume_vdis_after_create.active_vdi["uuid"], root_volume_vdis_after_revert.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_not_be_the_same_err_msg ) self.assertEqual( root_volume_vdis_after_create.snapshot_vdi["uuid"], root_volume_vdis_after_revert.snapshot_vdi["uuid"], TestVMSnapshots._snapshot_vdis_should_be_the_same_err_msg ) self.assertEqual( root_volume_vdis_after_create.base_vdi["uuid"], root_volume_vdis_after_revert.base_vdi["uuid"], TestVMSnapshots._base_vdis_should_be_the_same_err_msg ) data_volume_path_3 = self._get_path(data_volume_id) self.assertNotEqual( data_volume_path_1, data_volume_path_3, TestVMSnapshots._path_should_have_changed_err_msg ) data_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs(data_volume_xen_sr) self._check_list(data_volume_xen_vdis, 3, TestVMSnapshots._should_be_three_vdis_err_msg) data_volume_vdis_after_revert = self._get_vdis(data_volume_xen_vdis) self.assertNotEqual( data_volume_vdis_after_create.active_vdi["uuid"], data_volume_vdis_after_revert.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_not_be_the_same_err_msg ) self.assertEqual( data_volume_vdis_after_create.snapshot_vdi["uuid"], data_volume_vdis_after_revert.snapshot_vdi["uuid"], TestVMSnapshots._snapshot_vdis_should_be_the_same_err_msg ) self.assertEqual( data_volume_vdis_after_create.base_vdi["uuid"], data_volume_vdis_after_revert.base_vdi["uuid"], TestVMSnapshots._base_vdis_should_be_the_same_err_msg ) ####################################### ####################################### ##### STEP 3: Delete VM snapshot ##### ####################################### ####################################### VmSnapshot.deleteVMSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self.assertEqual( list_vm_snapshots, None, TestVMSnapshots._should_be_no_vm_snapshots_err_msg ) root_volume_path_4 = self._get_path(root_volume_id) self.assertEqual( root_volume_path_3, root_volume_path_4, TestVMSnapshots._path_should_not_have_changed_err_msg ) root_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs(root_volume_xen_sr) self._check_list(root_volume_xen_vdis, 1, TestVMSnapshots._should_only_be_one_vdi_err_msg) root_volume_vdis_after_delete = self._get_vdis(root_volume_xen_vdis, True) self.assertEqual( root_volume_vdis_after_revert.active_vdi["uuid"], root_volume_vdis_after_delete.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_be_the_same_err_msg ) data_volume_path_4 = self._get_path(data_volume_id) self.assertEqual( data_volume_path_3, data_volume_path_4, TestVMSnapshots._path_should_not_have_changed_err_msg ) data_volume_xen_vdis = self.xen_session.xenapi.SR.get_VDIs(data_volume_xen_sr) self._check_list(data_volume_xen_vdis, 1, TestVMSnapshots._should_only_be_one_vdi_err_msg) data_volume_vdis_after_delete = self._get_vdis(data_volume_xen_vdis, True) self.assertEqual( data_volume_vdis_after_revert.active_vdi["uuid"], data_volume_vdis_after_delete.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_be_the_same_err_msg ) ####################################### ####################################### ##### STEP 4: Start VM ##### ####################################### ####################################### self.virtual_machine.detach_volume(self.apiClient, data_volume) self.virtual_machine.start(self.apiClient)
def test_01_take_VM_snapshot(self): self.virtual_machine.start(self.apiClient) root_volumes = list_volumes(self.apiClient, type="ROOT", listAll="true") self._check_list(root_volumes, 1, TestVMSnapshots._should_only_be_one_root_volume_err_msg) root_volume = root_volumes[0] volume_id = {'volumeid': root_volume.id} sf_iscsi_name_result = self.cs_api.getVolumeiScsiName(volume_id) sf_iscsi_name = sf_iscsi_name_result['apivolumeiscsiname']['volumeiScsiName'] self._check_iscsi_name(sf_iscsi_name) root_volume_path_1 = self._get_path(volume_id) ####################################### ####################################### # STEP 1: Take snapshot of running VM # ####################################### ####################################### vm_snapshot = VmSnapshot.create( self.apiClient, vmid=self.virtual_machine.id, snapshotmemory="false", name="Test Snapshot", description="Test Snapshot Desc" ) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self._verify_vm_snapshot(list_vm_snapshots, vm_snapshot) root_volume_path_2 = self._get_path(volume_id) self.assertEqual( root_volume_path_1, root_volume_path_2, TestVMSnapshots._path_should_not_have_changed_err_msg ) xen_sr = self.xen_session.xenapi.SR.get_by_name_label(sf_iscsi_name)[0] xen_vdis = self.xen_session.xenapi.SR.get_VDIs(xen_sr) self._check_list(xen_vdis, 3, TestVMSnapshots._should_be_three_vdis_err_msg) vdis_after_create = self._get_vdis(xen_vdis) vdiSnapshotOf = self.xen_session.xenapi.VDI.get_record(vdis_after_create.snapshot_vdi["snapshot_of"]) self.assertEqual( vdiSnapshotOf["uuid"], vdis_after_create.active_vdi["uuid"], TestVMSnapshots._snapshot_parent_not_correct_err_msg ) ####################################### ####################################### ### STEP 2: Revert VM to Snapshot ### ####################################### ####################################### self.virtual_machine.stop(self.apiClient) VmSnapshot.revertToSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self._check_list(list_vm_snapshots, 1, TestVMSnapshots._should_only_be_one_vm_snapshot_err_msg) root_volume_path_3 = self._get_path(volume_id) self.assertNotEqual( root_volume_path_1, root_volume_path_3, TestVMSnapshots._path_should_have_changed_err_msg ) xen_vdis = self.xen_session.xenapi.SR.get_VDIs(xen_sr) self._check_list(xen_vdis, 3, TestVMSnapshots._should_be_three_vdis_err_msg) vdis_after_revert = self._get_vdis(xen_vdis) self.assertNotEqual( vdis_after_create.active_vdi["uuid"], vdis_after_revert.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_not_be_the_same_err_msg ) self.assertEqual( vdis_after_create.snapshot_vdi["uuid"], vdis_after_revert.snapshot_vdi["uuid"], TestVMSnapshots._snapshot_vdis_should_be_the_same_err_msg ) self.assertEqual( vdis_after_create.base_vdi["uuid"], vdis_after_revert.base_vdi["uuid"], TestVMSnapshots._base_vdis_should_be_the_same_err_msg ) ####################################### ####################################### ##### STEP 3: Delete VM snapshot ##### ####################################### ####################################### VmSnapshot.deleteVMSnapshot(self.apiClient, vmsnapshotid=vm_snapshot.id) list_vm_snapshots = VmSnapshot.list(self.apiClient, listAll="true") self.assertEqual( list_vm_snapshots, None, TestVMSnapshots._should_be_no_vm_snapshots_err_msg ) root_volume_path_4 = self._get_path(volume_id) self.assertEqual( root_volume_path_3, root_volume_path_4, TestVMSnapshots._path_should_not_have_changed_err_msg ) xen_vdis = self.xen_session.xenapi.SR.get_VDIs(xen_sr) self._check_list(xen_vdis, 1, TestVMSnapshots._should_only_be_one_vdi_err_msg) vdis_after_delete = self._get_vdis(xen_vdis, True) self.assertEqual( vdis_after_revert.active_vdi["uuid"], vdis_after_delete.active_vdi["uuid"], TestVMSnapshots._active_vdis_should_be_the_same_err_msg ) ####################################### ####################################### ##### STEP 4: Start VM ##### ####################################### ####################################### self.virtual_machine.start(self.apiClient)
def test_03_list_vm_snapshots_pagination(self): """ @Desc: Test to List VM Snapshots pagination @Steps: Step1: Listing all the VM snapshots for a user Step2: Verifying that list size is 0 Step3: Creating (page size + 1) number of VM snapshots Step4: Listing all the VM snapshots again for a user Step5: Verifying that list size is (page size + 1) Step6: Listing all the VM snapshots in page1 Step7: Verifying that list size is (page size) Step8: Listing all the VM snapshots in page2 Step9: Verifying that list size is 1 Step10: Deleting the VM snapshot present in page 2 Step11: Listing all the volume snapshots in page2 Step12: Verifying that list size is 0 """ if self.hypervisor.lower() in ['kvm', 'hyperv']: raise unittest.SkipTest("This feature is not supported on existing hypervisor. Hence, skipping the test") # Listing all the VM snapshots for a User list_vm_snaps_before = VmSnapshot.list( self.userapiclient, listall=self.services["listall"] ) # Verifying list size is 0 self.assertIsNone( list_vm_snaps_before, "VM snapshots exists for newly created user" ) # Creating pagesize + 1 number of VM snapshots for i in range(0, (self.services["pagesize"] + 1)): snapshot_created = VmSnapshot.create( self.userapiclient, self.virtual_machine.id, ) self.assertIsNotNone( snapshot_created, "Snapshot creation failed" ) # Listing all the VM snapshots for user again list_vm_snaps_after = VmSnapshot.list( self.userapiclient, listall=self.services["listall"] ) status = validateList(list_vm_snaps_after) self.assertEquals( PASS, status[0], "VM snapshot creation failed" ) # Verifying that list size is pagesize + 1 self.assertEquals( self.services["pagesize"] + 1, len(list_vm_snaps_after), "Failed to create pagesize + 1 number of VM snapshots" ) # Listing all the VM snapshots in page 1 list_vm_snaps_page1 = VmSnapshot.list( self.userapiclient, listall=self.services["listall"], page=1, pagesize=self.services["pagesize"] ) status = validateList(list_vm_snaps_page1) self.assertEquals( PASS, status[0], "Failed to list vm snapshots in page 1" ) # Verifying the list size to be equal to pagesize self.assertEquals( self.services["pagesize"], len(list_vm_snaps_page1), "Size of vm snapshots in page 1 is not matching" ) # Listing all the vm snapshots in page 2 list_vm_snaps_page2 = VmSnapshot.list( self.userapiclient, listall=self.services["listall"], page=2, pagesize=self.services["pagesize"] ) status = validateList(list_vm_snaps_page2) self.assertEquals( PASS, status[0], "Failed to list vm snapshots in page 2" ) # Verifying the list size to be equal to pagesize self.assertEquals( 1, len(list_vm_snaps_page2), "Size of vm snapshots in page 2 is not matching" ) # Deleting the vm snapshot present in page 2 VmSnapshot.deleteVMSnapshot( self.userapiclient, snapshot_created.id ) # Listing all the snapshots in page 2 again list_vm_snaps_page2 = VmSnapshot.list( self.userapiclient, listall=self.services["listall"], page=2, pagesize=self.services["pagesize"] ) # Verifying that list size is 0 self.assertIsNone( list_vm_snaps_page2, "VM snapshot not deleted from page 2" ) # Deleting all the existing VM snapshots list_vm_snaps = VmSnapshot.list( self.userapiclient, listall=self.services["listall"], ) status = validateList(list_vm_snaps) self.assertEquals( PASS, status[0], "All VM snapshots deleted" ) # Verifying that list size is equal to page size self.assertEquals( self.services["pagesize"], len(list_vm_snaps), "VM Snapshots count is not matching" ) # Deleting all the existing VM snapshots for i in range(0, len(list_vm_snaps)): VmSnapshot.deleteVMSnapshot( self.userapiclient, list_vm_snaps[i].id ) return