Search in sources :

Example 6 with StorageDomainOvfInfo

use of org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo in project ovirt-engine by oVirt.

the class ProcessOvfUpdateForStorageDomainCommandComparatorTest method sorting.

@Test
public void sorting() {
    Guid sdId = Guid.newGuid();
    Guid diskId1 = Guid.createGuidFromString("00000000-0000-0000-0000-000000000001");
    Guid diskId2 = Guid.createGuidFromString("00000000-0000-0000-0000-000000000002");
    List<StorageDomainOvfInfo> expected = new LinkedList<>(Arrays.asList(new StorageDomainOvfInfo(sdId, null, diskId1, StorageDomainOvfInfoStatus.UPDATED, null), new StorageDomainOvfInfo(sdId, null, diskId2, StorageDomainOvfInfoStatus.UPDATED, null), new StorageDomainOvfInfo(sdId, null, diskId1, StorageDomainOvfInfoStatus.UPDATED, new Date(0L)), new StorageDomainOvfInfo(sdId, null, diskId2, StorageDomainOvfInfoStatus.UPDATED, new Date(0L)), new StorageDomainOvfInfo(sdId, null, diskId1, StorageDomainOvfInfoStatus.UPDATED, new Date(1L)), new StorageDomainOvfInfo(sdId, null, diskId2, StorageDomainOvfInfoStatus.UPDATED, new Date(1L))));
    List<StorageDomainOvfInfo> actual = new LinkedList<>(expected);
    Collections.shuffle(actual);
    actual.sort(ProcessOvfUpdateForStorageDomainCommand.OVF_INFO_COMPARATOR);
    assertEquals(expected, actual);
}
Also used : Guid(org.ovirt.engine.core.compat.Guid) StorageDomainOvfInfo(org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo) LinkedList(java.util.LinkedList) Date(java.util.Date) Test(org.junit.Test)

Example 7 with StorageDomainOvfInfo

use of org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo in project ovirt-engine by oVirt.

the class ProcessOvfUpdateForStoragePoolCommandTest method mockAnswers.

private void mockAnswers() {
    doAnswer(invocation -> {
        VM vm = (VM) invocation.getArguments()[0];
        return vm.getId().toString();
    }).when(ovfUpdateProcessHelper).generateVmMetadata(any(), any());
    doAnswer(invocation -> {
        VmTemplate template = (VmTemplate) ((FullEntityOvfData) invocation.getArguments()[0]).getVmBase();
        return template.getId().toString();
    }).when(ovfUpdateProcessHelper).generateVmTemplateMetadata(any());
    doAnswer(invocation -> {
        List<Guid> neededIds = (List<Guid>) invocation.getArguments()[0];
        return neededIds.stream().map(id -> vms.get(id)).collect(Collectors.toList());
    }).when(vmDao).getVmsByIds(any());
    doAnswer(invocation -> {
        List<Guid> neededIds = (List<Guid>) invocation.getArguments()[0];
        return neededIds.stream().map(id -> templates.get(id)).collect(Collectors.toList());
    }).when(vmTemplateDao).getVmTemplatesByIds(any());
    doAnswer(invocation -> {
        Map<Guid, KeyValuePairCompat<String, List<Guid>>> updateMap = (Map<Guid, KeyValuePairCompat<String, List<Guid>>>) invocation.getArguments()[1];
        assertTrue("too many ovfs were sent in one vdsm call", updateMap.size() <= ITEMS_COUNT_PER_UPDATE);
        return true;
    }).when(ovfUpdateProcessHelper).executeUpdateVmInSpmCommand(any(), any(), any());
    doReturn(true).when(ovfUpdateProcessHelper).executeRemoveVmInSpm(any(), any(), any());
    doAnswer(invocation -> {
        List<Guid> ids = (List<Guid>) invocation.getArguments()[0];
        List<Long> values = (List<Long>) invocation.getArguments()[1];
        assertFalse("update of ovf version in db shouldn't be called with an empty value list", values.isEmpty());
        assertTrue("update of ovf version in db shouldn't be called with more items then MAX_ITEMS_PER_SQL_STATEMENT", values.size() <= StorageConstants.OVF_MAX_ITEMS_PER_SQL_STATEMENT);
        assertEquals("the size of the list of ids for update is not the same as the size of the " + "list with the new ovf values", values.size(), ids.size());
        Guid[] ids_array = ids.toArray(new Guid[ids.size()]);
        Long[] values_array = values.toArray(new Long[values.size()]);
        for (int i = 0; i < ids_array.length; i++) {
            executedUpdatedOvfGenerationIdsInDb.put(ids_array[i], values_array[i]);
        }
        return null;
    }).when(vmAndTemplatesGenerationsDao).updateOvfGenerations(any(), any(), any());
    doAnswer(invocation -> {
        StoragePoolStatus desiredStatus = (StoragePoolStatus) invocation.getArguments()[0];
        return buildStoragePoolsList().stream().filter(p -> desiredStatus.equals(p.getStatus())).collect(Collectors.toList());
    }).when(storagePoolDao).getAllByStatus(any());
    doReturn(poolDomainsOvfInfo.values().stream().map(Pair::getSecond).collect(Collectors.toList())).when(storageDomainDao).getAllForStoragePool(any());
    doAnswer(invocation -> {
        Guid domainId = (Guid) invocation.getArguments()[0];
        Pair<List<StorageDomainOvfInfo>, StorageDomain> pair = poolDomainsOvfInfo.get(domainId);
        if (pair != null) {
            return pair.getFirst();
        }
        return null;
    }).when(storageDomainOvfInfoDao).getAllForDomain(any());
}
Also used : ClusterDao(org.ovirt.engine.core.dao.ClusterDao) SnapshotDao(org.ovirt.engine.core.dao.SnapshotDao) VmTemplateDao(org.ovirt.engine.core.dao.VmTemplateDao) VmStaticDao(org.ovirt.engine.core.dao.VmStaticDao) KeyValuePairCompat(org.ovirt.engine.core.compat.KeyValuePairCompat) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Map(java.util.Map) Spy(org.mockito.Spy) Snapshot(org.ovirt.engine.core.common.businessentities.Snapshot) StorageDomainOvfInfoDao(org.ovirt.engine.core.dao.StorageDomainOvfInfoDao) StoragePoolDao(org.ovirt.engine.core.dao.StoragePoolDao) ClassRule(org.junit.ClassRule) Mockito.doReturn(org.mockito.Mockito.doReturn) MockConfigRule.mockConfig(org.ovirt.engine.core.utils.MockConfigRule.mockConfig) Collection(java.util.Collection) VmTemplate(org.ovirt.engine.core.common.businessentities.VmTemplate) StorageConstants(org.ovirt.engine.core.common.constants.StorageConstants) Set(java.util.Set) Mockito.doNothing(org.mockito.Mockito.doNothing) Collectors(java.util.stream.Collectors) DbUser(org.ovirt.engine.core.common.businessentities.aaa.DbUser) VmDao(org.ovirt.engine.core.dao.VmDao) ProcessOvfUpdateParameters(org.ovirt.engine.core.common.action.ProcessOvfUpdateParameters) DbUserDao(org.ovirt.engine.core.dao.DbUserDao) List(java.util.List) Assert.assertFalse(org.junit.Assert.assertFalse) VmAndTemplatesGenerationsDao(org.ovirt.engine.core.dao.VmAndTemplatesGenerationsDao) LabelDao(org.ovirt.engine.core.dao.LabelDao) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) IntStream(java.util.stream.IntStream) MockConfigRule(org.ovirt.engine.core.utils.MockConfigRule) StoragePool(org.ovirt.engine.core.common.businessentities.StoragePool) Mock(org.mockito.Mock) Guid(org.ovirt.engine.core.compat.Guid) StorageDomain(org.ovirt.engine.core.common.businessentities.StorageDomain) StorageDomainOvfInfo(org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo) HashMap(java.util.HashMap) StorageDomainStatus(org.ovirt.engine.core.common.businessentities.StorageDomainStatus) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage) ArrayList(java.util.ArrayList) ImageStatus(org.ovirt.engine.core.common.businessentities.storage.ImageStatus) CollectionUtils(org.apache.commons.collections.CollectionUtils) AffinityGroupDao(org.ovirt.engine.core.dao.scheduling.AffinityGroupDao) StorageDomainOvfInfoStatus(org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfoStatus) LinkedList(java.util.LinkedList) VmStatic(org.ovirt.engine.core.common.businessentities.VmStatic) Pair(org.ovirt.engine.core.common.utils.Pair) Before(org.junit.Before) InjectMocks(org.mockito.InjectMocks) StoragePoolStatus(org.ovirt.engine.core.common.businessentities.StoragePoolStatus) FullEntityOvfData(org.ovirt.engine.core.common.businessentities.storage.FullEntityOvfData) VmTemplateStatus(org.ovirt.engine.core.common.businessentities.VmTemplateStatus) Assert.assertTrue(org.junit.Assert.assertTrue) Mockito.times(org.mockito.Mockito.times) Test(org.junit.Test) ConfigValues(org.ovirt.engine.core.common.config.ConfigValues) PermissionDao(org.ovirt.engine.core.dao.PermissionDao) BaseCommandTest(org.ovirt.engine.core.bll.BaseCommandTest) Mockito.verify(org.mockito.Mockito.verify) Mockito.never(org.mockito.Mockito.never) VM(org.ovirt.engine.core.common.businessentities.VM) StorageDomainDao(org.ovirt.engine.core.dao.StorageDomainDao) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) VMStatus(org.ovirt.engine.core.common.businessentities.VMStatus) StoragePoolIsoMap(org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap) KeyValuePairCompat(org.ovirt.engine.core.compat.KeyValuePairCompat) StoragePoolStatus(org.ovirt.engine.core.common.businessentities.StoragePoolStatus) Guid(org.ovirt.engine.core.compat.Guid) StorageDomain(org.ovirt.engine.core.common.businessentities.StorageDomain) VmTemplate(org.ovirt.engine.core.common.businessentities.VmTemplate) VM(org.ovirt.engine.core.common.businessentities.VM) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) Map(java.util.Map) HashMap(java.util.HashMap) StoragePoolIsoMap(org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap) Pair(org.ovirt.engine.core.common.utils.Pair)

Example 8 with StorageDomainOvfInfo

use of org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo in project ovirt-engine by oVirt.

the class ProcessOvfUpdateForStoragePoolCommandTest method testUpdateCalledForUnupdatedDomain.

@Test
public void testUpdateCalledForUnupdatedDomain() {
    Guid poolId = pool1.getId();
    StorageDomainOvfInfo ovfInfo = poolDomainsOvfInfo.entrySet().iterator().next().getValue().getFirst().get(0);
    ovfInfo.setStatus(StorageDomainOvfInfoStatus.OUTDATED);
    initTestForPool(pool1, Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
    executeCommand();
    verify(command, never()).performOvfUpdate(any());
    Map<Guid, List<Guid>> domainsRequiredUpdateForPool = Collections.singletonMap(poolId, Collections.singletonList(ovfInfo.getStorageDomainId()));
    verifyOvfUpdatedForSupportedPools(Collections.singletonList(poolId), domainsRequiredUpdateForPool);
}
Also used : List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) Guid(org.ovirt.engine.core.compat.Guid) StorageDomainOvfInfo(org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo) Test(org.junit.Test) BaseCommandTest(org.ovirt.engine.core.bll.BaseCommandTest)

Example 9 with StorageDomainOvfInfo

use of org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo in project ovirt-engine by oVirt.

the class StorageHandlingCommandBase method addOvfStoreDiskToDomain.

/**
 * Register all the OVF_STORE disks as floating disks in the engine.
 */
private void addOvfStoreDiskToDomain(DiskImage ovfDisk, Guid storageDomainId) {
    // Setting OVF_STORE disk to be outdated so it will be updated.
    StorageDomainOvfInfo storageDomainOvfInfo = new StorageDomainOvfInfo(storageDomainId, null, ovfDisk.getId(), StorageDomainOvfInfoStatus.OUTDATED, null);
    storageDomainOvfInfoDao.save(storageDomainOvfInfo);
}
Also used : StorageDomainOvfInfo(org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo)

Example 10 with StorageDomainOvfInfo

use of org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo in project ovirt-engine by oVirt.

the class CreateOvfVolumeForStorageDomainCommand method endSuccessfully.

@Override
protected void endSuccessfully() {
    Guid createdDiskId = getActionReturnValue();
    endChildCommand(true);
    StorageDomainOvfInfo storageDomainOvfInfoDb = storageDomainOvfInfoDao.get(createdDiskId);
    if (storageDomainOvfInfoDb == null || storageDomainOvfInfoDb.getStatus() != StorageDomainOvfInfoStatus.DISABLED) {
        return;
    }
    storageDomainOvfInfoDb.setStatus(StorageDomainOvfInfoStatus.OUTDATED);
    storageDomainOvfInfoDao.update(storageDomainOvfInfoDb);
    setSucceeded(true);
}
Also used : Guid(org.ovirt.engine.core.compat.Guid) StorageDomainOvfInfo(org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo)

Aggregations

StorageDomainOvfInfo (org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo)13 Guid (org.ovirt.engine.core.compat.Guid)7 Test (org.junit.Test)6 LinkedList (java.util.LinkedList)3 StorageDomain (org.ovirt.engine.core.common.businessentities.StorageDomain)3 DiskImage (org.ovirt.engine.core.common.businessentities.storage.DiskImage)3 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 List (java.util.List)2 BaseCommandTest (org.ovirt.engine.core.bll.BaseCommandTest)2 StoragePoolIsoMap (org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap)2 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 IntStream (java.util.stream.IntStream)1 CollectionUtils (org.apache.commons.collections.CollectionUtils)1 Assert.assertEquals (org.junit.Assert.assertEquals)1