package org.ovirt.engine.api.restapi.resource; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.ovirt.engine.api.model.Vm; import org.ovirt.engine.api.model.Vms; import org.ovirt.engine.api.resource.StorageDomainVmResource; import org.ovirt.engine.api.resource.StorageDomainVmsResource; import org.ovirt.engine.api.restapi.util.ParametersHelper; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendStorageDomainVmsResource extends AbstractBackendStorageDomainContentsResource<Vms, Vm, org.ovirt.engine.core.common.businessentities.VM> implements StorageDomainVmsResource { public BackendStorageDomainVmsResource(Guid storageDomainId) { super(storageDomainId, Vm.class, org.ovirt.engine.core.common.businessentities.VM.class); } @Override public Vms list() { Vms vms = new Vms(); boolean unregistered = ParametersHelper.getBooleanParameter(httpHeaders, uriInfo, UNREGISTERED_CONSTRAINT_PARAMETER, true, false); if (unregistered) { List<org.ovirt.engine.core.common.businessentities.VM> unregisteredVms = getBackendCollection(VdcQueryType.GetUnregisteredVms, new IdQueryParameters(storageDomainId)); List<Vm> collection = new ArrayList<>(); for (org.ovirt.engine.core.common.businessentities.VM entity : unregisteredVms) { Vm vm = map(entity); collection.add(addLinks(populate(vm, entity))); } vms.getVms().addAll(collection); } else { vms.getVms().addAll(getCollection()); } return vms; } @Override protected Vm addParents(Vm vm) { vm.setStorageDomain(getStorageDomainModel()); return vm; } @Override protected Collection<org.ovirt.engine.core.common.businessentities.VM> getEntitiesFromExportDomain() { GetAllFromExportDomainQueryParameters params = new GetAllFromExportDomainQueryParameters(getDataCenterId(storageDomainId), storageDomainId); return getBackendCollection(VdcQueryType.GetVmsFromExportDomain, params); } @Override public StorageDomainVmResource getVmResource(String id) { return inject(new BackendStorageDomainVmResource(this, id)); } }