package org.ovirt.engine.api.restapi.resource; import java.util.Collection; import java.util.HashMap; import java.util.Map; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.Template; import org.ovirt.engine.api.model.Templates; import org.ovirt.engine.api.resource.RemovableStorageDomainContentsResource; import org.ovirt.engine.api.resource.StorageDomainContentResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VmTemplateImportExportParameters; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.queries.DiskImageList; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParamenters; import org.ovirt.engine.core.common.queries.StorageDomainQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendStorageDomainTemplatesResource extends AbstractBackendStorageDomainContentsResource<Templates, Template, VmTemplate> implements RemovableStorageDomainContentsResource<Templates, Template> { public BackendStorageDomainTemplatesResource(Guid storageDomainId) { super(storageDomainId, Template.class, VmTemplate.class); } @Override public Templates list() { Templates templates = new Templates(); templates.getTemplates().addAll(getCollection()); return templates; } @Override protected Template addParents(Template template) { template.setStorageDomain(getStorageDomainModel()); return template; } @Override protected Collection<VmTemplate> getEntitiesFromDataDomain() { return getBackendCollection(VdcQueryType.GetVmTemplatesFromStorageDomain, new StorageDomainQueryParametersBase(storageDomainId)); } @SuppressWarnings("unchecked") @Override protected Collection<VmTemplate> getEntitiesFromExportDomain() { GetAllFromExportDomainQueryParamenters params = new GetAllFromExportDomainQueryParamenters(getDataCenterId(storageDomainId), storageDomainId); params.setGetAll(true); Map<VmTemplate, DiskImageList> ret = getEntity(HashMap.class, VdcQueryType.GetTemplatesFromExportDomain, params, "Templates under storage domain id : " + storageDomainId.toString()); return ret.keySet(); } @Override @SingleEntityResource public StorageDomainContentResource<Template> getStorageDomainContentSubResource(String id) { return inject(new BackendStorageDomainTemplateResource(this, id)); } @Override public Response performRemove(String id) { return performAction(VdcActionType.RemoveVmTemplateFromImportExport, new VmTemplateImportExportParameters(asGuid(id), storageDomainId, getDataCenterId(storageDomainId))); } }