package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.Action;
import org.ovirt.engine.api.model.Template;
import org.ovirt.engine.api.model.Templates;
import org.ovirt.engine.api.resource.ActionResource;
import org.ovirt.engine.api.resource.StorageDomainContentResource;
import org.ovirt.engine.core.common.action.ImprotVmTemplateParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
public class BackendStorageDomainTemplateResource
extends AbstractBackendStorageDomainContentResource<Templates, Template, VmTemplate>
implements StorageDomainContentResource<Template> {
public BackendStorageDomainTemplateResource(BackendStorageDomainTemplatesResource parent, String templateId) {
super(templateId, parent, Template.class, VmTemplate.class);
}
@Override
protected Template getFromDataDomain() {
return performGet(VdcQueryType.GetVmTemplate, new GetVmTemplateParameters(guid));
}
@Override
public Response doImport(Action action) {
validateParameters(action, "cluster.id|name", "storageDomain.id|name");
Guid destStorageDomainId = getDestStorageDomainId(action);
ImprotVmTemplateParameters params = new ImprotVmTemplateParameters(parent.getDataCenterId(destStorageDomainId),
parent.getStorageDomainId(),
destStorageDomainId,
getClusterId(action),
getEntity());
return doAction(VdcActionType.ImportVmTemplate, params, action);
}
@Override
public ActionResource getActionSubresource(String action, String ids) {
return inject(new BackendActionResource(action, ids));
}
@Override
protected Template addParents(Template template) {
template.setStorageDomain(parent.getStorageDomainModel());
return template;
}
protected VmTemplate getEntity() {
for (VmTemplate entity : parent.getEntitiesFromExportDomain()) {
if (guid.equals(entity.getId())) {
return entity;
}
}
return entityNotFound();
}
}