package org.ovirt.engine.api.restapi.resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.api.model.Template;
import org.ovirt.engine.api.model.Templates;
import org.ovirt.engine.api.resource.StorageDomainTemplateResource;
import org.ovirt.engine.api.resource.StorageDomainTemplatesResource;
import org.ovirt.engine.api.restapi.util.ParametersHelper;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
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 BackendStorageDomainTemplatesResource
extends AbstractBackendStorageDomainContentsResource<Templates, Template, VmTemplate>
implements StorageDomainTemplatesResource {
public BackendStorageDomainTemplatesResource(Guid storageDomainId) {
super(storageDomainId, Template.class, VmTemplate.class);
}
@Override
public Templates list() {
Templates templates = new Templates();
boolean unregistered = ParametersHelper.getBooleanParameter(httpHeaders, uriInfo, UNREGISTERED_CONSTRAINT_PARAMETER, true, false);
if (unregistered) {
List<org.ovirt.engine.core.common.businessentities.VmTemplate> unregisteredTemplates =
getBackendCollection(VdcQueryType.GetUnregisteredVmTemplates,
new IdQueryParameters(storageDomainId));
List<Template> collection = new ArrayList<>();
for (org.ovirt.engine.core.common.businessentities.VmTemplate entity : unregisteredTemplates) {
Template vmTemplate = map(entity);
collection.add(addLinks(populate(vmTemplate, entity)));
}
templates.getTemplates().addAll(collection);
} else {
templates.getTemplates().addAll(getCollection());
}
return templates;
}
@Override
protected Template addParents(Template template) {
template.setStorageDomain(getStorageDomainModel());
return template;
}
@SuppressWarnings("unchecked")
@Override
protected Collection<VmTemplate> getEntitiesFromExportDomain() {
GetAllFromExportDomainQueryParameters params =
new GetAllFromExportDomainQueryParameters(getDataCenterId(storageDomainId), storageDomainId);
Map<VmTemplate, List<DiskImage>> ret = getEntity(HashMap.class,
VdcQueryType.GetTemplatesFromExportDomain,
params,
"Templates under storage domain id : " + storageDomainId.toString());
return ret.keySet();
}
@Override
public StorageDomainTemplateResource getTemplateResource(String id) {
return inject(new BackendStorageDomainTemplateResource(this, id));
}
}