package org.ovirt.engine.core.bll;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.bll.storage.domain.GetUnregisteredEntitiesQuery;
import org.ovirt.engine.core.common.businessentities.OvfEntityData;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmEntityType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.utils.ovf.OvfReaderException;
public class GetUnregisteredVmsQuery<P extends IdQueryParameters> extends GetUnregisteredEntitiesQuery<P> {
public GetUnregisteredVmsQuery(P parameters) {
super(parameters);
}
@Override
protected void executeQueryCommand() {
List<OvfEntityData> entityList = getOvfEntityList(VmEntityType.VM);
List<VM> vmList = new ArrayList<>();
for (OvfEntityData ovf : entityList) {
try {
VM vm = ovfHelper.readVmFromOvf(ovf.getOvfData());
// Setting the rest of the VM attributes which are not in the OVF.
vm.setClusterCompatibilityVersion(ovf.getLowestCompVersion());
vm.setClusterArch(ovf.getArchitecture());
vmList.add(vm);
} catch (OvfReaderException e) {
log.debug("failed to parse a given ovf configuration: \n" + ovf.getOvfData(), e);
getQueryReturnValue().setExceptionString("failed to parse a given ovf configuration "
+ e.getMessage());
}
}
getQueryReturnValue().setSucceeded(true);
getQueryReturnValue().setReturnValue(vmList);
}
}