use of org.ovirt.engine.core.compat.KeyValuePairCompat in project ovirt-engine by oVirt.
the class AsyncDataProvider method cacheConfigValues.
/**
* Cache configuration values [raw (not converted) values from vdc_options table].
*/
private void cacheConfigValues(AsyncQuery<Map<KeyValuePairCompat<ConfigValues, String>, Object>> aQuery) {
aQuery.converterCallback = returnValue -> {
if (returnValue != null) {
cachedConfigValuesPreConvert.putAll((HashMap<KeyValuePairCompat<ConfigValues, String>, Object>) returnValue);
}
return cachedConfigValuesPreConvert;
};
Frontend.getInstance().runQuery(QueryType.GetConfigurationValues, new QueryParametersBase(), aQuery);
}
use of org.ovirt.engine.core.compat.KeyValuePairCompat in project ovirt-engine by oVirt.
the class GetConfigurationValuesQuery method executeQueryCommand.
@Override
protected void executeQueryCommand() {
Map<KeyValuePairCompat<ConfigValues, String>, Object> configValuesMap = new HashMap<>();
for (ConfigValues configValue : ConfigValues.values()) {
// Ignore an admin configuration value on filtered mode
if (!shouldReturnValue(configValue) || configValue == ConfigValues.Invalid) {
continue;
}
Map<String, Object> values = Config.getValuesForAllVersions(configValue);
for (Map.Entry<String, Object> entry : values.entrySet()) {
KeyValuePairCompat<ConfigValues, String> key = new KeyValuePairCompat<>(configValue, entry.getKey());
configValuesMap.put(key, entry.getValue());
}
}
getQueryReturnValue().setReturnValue(configValuesMap);
}
use of org.ovirt.engine.core.compat.KeyValuePairCompat in project ovirt-engine by oVirt.
the class ExportVmCommand method updateCopyVmInSpm.
private void updateCopyVmInSpm(Guid storagePoolId, VM vm, Guid storageDomainId) {
HashMap<Guid, KeyValuePairCompat<String, List<Guid>>> vmsAndMetaDictionary = new HashMap<>();
List<DiskImage> vmImages = new ArrayList<>();
List<LunDisk> lunDisks = new ArrayList<>();
List<VmNetworkInterface> interfaces = vm.getInterfaces();
if (interfaces != null) {
// TODO remove this when the API changes
interfaces.clear();
interfaces.addAll(vmNetworkInterfaceDao.getAllForVm(vm.getId()));
}
List<Guid> imageGroupIds = new ArrayList<>();
for (Disk disk : getDisksBasedOnImage()) {
DiskImage diskImage = (DiskImage) disk;
diskImage.setParentId(VmTemplateHandler.BLANK_VM_TEMPLATE_ID);
diskImage.setImageTemplateId(VmTemplateHandler.BLANK_VM_TEMPLATE_ID);
diskImage.setStorageIds(new ArrayList<>(Collections.singletonList(storageDomainId)));
DiskImage diskForVolumeInfo = getDiskForVolumeInfo(diskImage);
diskImage.setVolumeFormat(diskForVolumeInfo.getVolumeFormat());
diskImage.setVolumeType(diskForVolumeInfo.getVolumeType());
VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.GetImageInfo, new GetImageInfoVDSCommandParameters(storagePoolId, storageDomainId, diskImage.getId(), diskImage.getImageId()));
if (vdsReturnValue != null && vdsReturnValue.getSucceeded()) {
DiskImage fromVdsm = (DiskImage) vdsReturnValue.getReturnValue();
diskImage.setActualSizeInBytes(fromVdsm.getActualSizeInBytes());
}
vmImages.add(diskImage);
imageGroupIds.add(disk.getId());
}
if (StringUtils.isEmpty(vm.getVmtName())) {
VmTemplate t = vmTemplateDao.get(vm.getVmtGuid());
vm.setVmtName(t.getName());
}
lunDisks.addAll(DisksFilter.filterLunDisks(getVm().getDiskMap().values(), ONLY_NOT_SHAREABLE));
lunDisks.forEach(lun -> lun.getLun().setLunConnections(new ArrayList<>(storageServerConnectionDao.getAllForLun(lun.getLun().getId()))));
getVm().setVmtGuid(VmTemplateHandler.BLANK_VM_TEMPLATE_ID);
FullEntityOvfData fullEntityOvfData = new FullEntityOvfData(vm);
fullEntityOvfData.setClusterName(vm.getClusterName());
fullEntityOvfData.setDiskImages(vmImages);
fullEntityOvfData.setLunDisks(lunDisks);
String vmMeta = ovfManager.exportVm(vm, fullEntityOvfData, clusterUtils.getCompatibilityVersion(vm));
vmsAndMetaDictionary.put(vm.getId(), new KeyValuePairCompat<>(vmMeta, imageGroupIds));
UpdateVMVDSCommandParameters tempVar = new UpdateVMVDSCommandParameters(storagePoolId, vmsAndMetaDictionary);
tempVar.setStorageDomainId(storageDomainId);
runVdsCommand(VDSCommandType.UpdateVM, tempVar);
}
use of org.ovirt.engine.core.compat.KeyValuePairCompat 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());
}
use of org.ovirt.engine.core.compat.KeyValuePairCompat in project ovirt-engine by oVirt.
the class GetStoragePoolInfoVDSCommand method executeIrsBrokerCommand.
@Override
protected void executeIrsBrokerCommand() {
result = getIrsProxy().getStoragePoolInfo(getParameters().getStoragePoolId().toString());
proceedProxyReturnValue();
StoragePool sp = VdsBrokerObjectsBuilder.buildStoragePool(result.storagePoolInfo);
Guid masterId = Guid.Empty;
if (result.storagePoolInfo.containsKey("master_uuid")) {
masterId = new Guid(result.storagePoolInfo.get("master_uuid").toString());
}
sp.setId(getParameters().getStoragePoolId());
ArrayList<StorageDomain> domList = parseStorageDomainList(result.domainsList, masterId);
KeyValuePairCompat<StoragePool, List<StorageDomain>> list = new KeyValuePairCompat<>(sp, domList);
setReturnValue(list);
}
Aggregations