package org.ovirt.engine.api.restapi.resource; import java.util.Collection; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.VM; import org.ovirt.engine.api.model.VMs; import org.ovirt.engine.api.resource.StorageDomainContentResource; import org.ovirt.engine.api.resource.RemovableStorageDomainContentsResource; import org.ovirt.engine.core.common.action.RemoveVmFromImportExportParamenters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParamenters; import org.ovirt.engine.core.common.queries.StorageDomainQueryTopSizeVmsParameters; 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 RemovableStorageDomainContentsResource<VMs, VM> { public BackendStorageDomainVmsResource(Guid storageDomainId) { super(storageDomainId, VM.class, org.ovirt.engine.core.common.businessentities.VM.class); } @Override public VMs list() { VMs vms = new VMs(); 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> getEntitiesFromDataDomain() { return getBackendCollection(VdcQueryType.GetTopSizeVmsFromStorageDomain, new StorageDomainQueryTopSizeVmsParameters(storageDomainId, -1)); } @Override protected Collection<org.ovirt.engine.core.common.businessentities.VM> getEntitiesFromExportDomain() { GetAllFromExportDomainQueryParamenters params = new GetAllFromExportDomainQueryParamenters(getDataCenterId(storageDomainId), storageDomainId); params.setGetAll(true); return getBackendCollection(VdcQueryType.GetVmsFromExportDomain, params); } @Override @SingleEntityResource public StorageDomainContentResource<VM> getStorageDomainContentSubResource(String id) { return inject(new BackendStorageDomainVmResource(this, id)); } @Override public Response performRemove(String id) { org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); vm.setvm_guid(Guid.createGuidFromString(id)); RemoveVmFromImportExportParamenters params = new RemoveVmFromImportExportParamenters( vm, storageDomainId, getDataCenterId(storageDomainId)); return performAction(VdcActionType.RemoveVmFromImportExport, params); } }