package org.ovirt.engine.core.bll.exportimport; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import org.ovirt.engine.core.bll.context.EngineContext; import org.ovirt.engine.core.bll.storage.ovfstore.OvfHelper; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogable; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableImpl; import org.ovirt.engine.core.utils.ovf.OvfReaderException; public class GetTemplatesFromExportDomainQuery<P extends GetAllFromExportDomainQueryParameters> extends GetAllFromExportDomainQuery<Map<VmTemplate, List<DiskImage>>, P> { @Inject private OvfHelper ovfHelper; public GetTemplatesFromExportDomainQuery(P parameters) { super(parameters); } public GetTemplatesFromExportDomainQuery(P parameters, EngineContext engineContext) { super(parameters, engineContext); } @Override protected Map<VmTemplate, List<DiskImage>> buildFromOVFs(List<String> ovfList) { Map<VmTemplate, List<DiskImage>> templateDisksMap = new HashMap<>(); for (String ovf : ovfList) { try { if (ovfHelper.isOvfTemplate(ovf)) { VmTemplate vmTemplate = ovfHelper.readVmTemplateFromOvf(ovf); List<DiskImage> templateDisks = new ArrayList<>(vmTemplate.getDiskTemplateMap().values()); templateDisksMap.put(vmTemplate, templateDisks); } } catch (OvfReaderException ex) { auditLogOvfLoadError(ex.getName(), ex.getMessage()); } } return templateDisksMap; } private void auditLogOvfLoadError(String machineName, String errorMessage) { AuditLogable logable = new AuditLogableImpl(); logable.addCustomValue("Template", machineName).addCustomValue("ErrorMessage", errorMessage); auditLogDirector.log(logable, AuditLogType.IMPORTEXPORT_FAILED_TO_IMPORT_TEMPLATE); } }