package org.ovirt.engine.core.bll.exportimport; import java.util.ArrayList; import java.util.List; 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.VM; 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 GetVmsFromExportDomainQuery<P extends GetAllFromExportDomainQueryParameters> extends GetAllFromExportDomainQuery<List<VM>, P> { @Inject private OvfHelper ovfHelper; public GetVmsFromExportDomainQuery(P parameters) { this(parameters, null); } public GetVmsFromExportDomainQuery(P parameters, EngineContext engineContext) { super(parameters, engineContext); } @Override protected List<VM> buildFromOVFs(List<String> ovfList) { List<VM> vms = new ArrayList<>(); for (String ovf : ovfList) { try { if (!ovfHelper.isOvfTemplate(ovf)) { vms.add(ovfHelper.readVmFromOvf(ovf)); } } catch (OvfReaderException ex) { auditLogOvfLoadError(ex.getName(), ex.getMessage()); } } return vms; } private void auditLogOvfLoadError(String machineName, String errorMessage) { AuditLogable logable = new AuditLogableImpl(); logable.addCustomValue("ImportedVmName", machineName).addCustomValue("ErrorMessage", errorMessage); auditLogDirector.log(logable, AuditLogType.IMPORTEXPORT_FAILED_TO_IMPORT_VM); } }