blob: 5c20ccfa46186e4a9a9564970c21d26d3308062d [file] [log] [blame]
package org.apache.airavata.services.registry.rest.resources;
import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
import org.apache.airavata.registry.api.*;
import org.apache.airavata.registry.api.exception.RegistryException;
import org.apache.airavata.registry.api.exception.gateway.*;
import org.apache.airavata.registry.api.exception.worker.*;
import org.apache.airavata.registry.api.impl.ExperimentDataImpl;
import org.apache.airavata.registry.api.workflow.*;
import org.apache.airavata.services.registry.rest.resourcemappings.*;
import org.apache.airavata.services.registry.rest.utils.DescriptorUtil;
import org.apache.airavata.services.registry.rest.utils.RestServicesConstants;
import javax.servlet.ServletContext;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.net.URI;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* RegistryResource for REST interface of Registry API
*
*/
@Path("/registry/api")
//public class RegistryResource implements ConfigurationRegistryService,
// ProjectsRegistryService, ProvenanceRegistryService, UserWorkflowRegistryService,
// PublishedWorkflowRegistryService, DescriptorRegistryService{
public class RegistryResource {
private AiravataRegistry2 airavataRegistry;
@Context
ServletContext context;
public String getVersion() {
return null;
}
/**
* ---------------------------------Configuration Registry----------------------------------*
*/
@Path("/configuration")
@GET
@Produces(MediaType.TEXT_PLAIN)
public Response getConfiguration(@QueryParam("key") String key) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
Object configuration = airavataRegistry.getConfiguration(key);
if (configuration != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(configuration);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("/configurationlist")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getConfigurationList(@QueryParam("key") String key) {
try {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
List<Object> configurationList = airavataRegistry.getConfigurationList(key);
ConfigurationList list = new ConfigurationList();
Object[] configValList = new Object[configurationList.size()];
for (int i = 0; i < configurationList.size(); i++) {
configValList[i] = configurationList.get(i);
}
list.setConfigValList(configValList);
if (configurationList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(list);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("save/configuration")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response setConfiguration(@FormParam("key") String key,
@FormParam("value") String value,
@FormParam("date") String date) {
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(date);
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
airavataRegistry.setConfiguration(key, value, formattedDate);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/configuration")
@Produces(MediaType.TEXT_PLAIN)
public Response addConfiguration(@FormParam("key") String key,
@FormParam("value") String value,
@FormParam("date") String date) {
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(date);
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
airavataRegistry.addConfiguration(key, value, formattedDate);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/allconfiguration")
@Produces(MediaType.TEXT_PLAIN)
public Response removeAllConfiguration(@QueryParam("key") String key) {
try {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
airavataRegistry.removeAllConfiguration(key);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/configuration")
@Produces(MediaType.TEXT_PLAIN)
public Response removeConfiguration(@QueryParam("key") String key, @QueryParam("value") String value) {
try {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
airavataRegistry.removeConfiguration(key, value);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("gfac/urilist")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getGFacURIs() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<URI> uris = airavataRegistry.getGFacURIs();
URLList list = new URLList();
String[] urs = new String[uris.size()];
for (int i = 0; i < uris.size(); i++) {
urs[i] = uris.get(i).toString();
}
list.setUris(urs);
if (urs.length != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(list);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("workflowinterpreter/urilist")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getWorkflowInterpreterURIs() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<URI> uris = airavataRegistry.getWorkflowInterpreterURIs();
URLList list = new URLList();
String[] urs = new String[uris.size()];
for (int i = 0; i < uris.size(); i++) {
urs[i] = uris.get(i).toString();
}
list.setUris(urs);
if (urs.length != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(list);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("eventingservice/uri")
@Produces(MediaType.TEXT_PLAIN)
public Response getEventingServiceURI() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI eventingServiceURI = airavataRegistry.getEventingServiceURI();
if (eventingServiceURI != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(eventingServiceURI.toString());
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("messagebox/uri")
@Produces(MediaType.TEXT_PLAIN)
public Response getMessageBoxURI() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI eventingServiceURI = airavataRegistry.getMessageBoxURI();
if (eventingServiceURI != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(eventingServiceURI.toString());
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/gfacuri")
@Produces(MediaType.TEXT_PLAIN)
public Response addGFacURI(@FormParam("uri") String uri) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI gfacURI = new URI(uri);
airavataRegistry.addGFacURI(gfacURI);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/workflowinterpreteruri")
@Produces(MediaType.TEXT_PLAIN)
public Response addWorkflowInterpreterURI(@FormParam("uri") String uri) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI interpreterURI = new URI(uri);
airavataRegistry.addWorkflowInterpreterURI(interpreterURI);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/eventinguri")
@Produces(MediaType.TEXT_PLAIN)
public Response setEventingURI(@FormParam("uri") String uri) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI eventingURI = new URI(uri);
airavataRegistry.setEventingURI(eventingURI);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/msgboxuri")
@Produces(MediaType.TEXT_PLAIN)
public Response setMessageBoxURI(@FormParam("uri") String uri) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI msgBoxURI = new URI(uri);
airavataRegistry.setMessageBoxURI(msgBoxURI);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/gfacuri/date")
@Produces(MediaType.TEXT_PLAIN)
public Response addGFacURIByDate(@FormParam("uri") String uri, @FormParam("date") String date) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(date);
URI gfacURI = new URI(uri);
airavataRegistry.addGFacURI(gfacURI, formattedDate);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/workflowinterpreteruri/date")
@Produces(MediaType.TEXT_PLAIN)
public Response addWorkflowInterpreterURI(@FormParam("uri") String uri, @FormParam("date") String date) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(date);
URI interpreterURI = new URI(uri);
airavataRegistry.addWorkflowInterpreterURI(interpreterURI, formattedDate);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/eventinguri/date")
@Produces(MediaType.TEXT_PLAIN)
public Response setEventingURIByDate(@FormParam("uri") String uri, @FormParam("date") String date) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(date);
URI eventingURI = new URI(uri);
airavataRegistry.setEventingURI(eventingURI, formattedDate);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/msgboxuri/date")
@Produces(MediaType.TEXT_PLAIN)
public Response setMessageBoxURIByDate(@FormParam("uri") String uri, @FormParam("date") String date) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(date);
URI msgBoxURI = new URI(uri);
airavataRegistry.setMessageBoxURI(msgBoxURI, formattedDate);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/gfacuri")
@Produces(MediaType.TEXT_PLAIN)
public Response removeGFacURI(@QueryParam("uri") String uri) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI gfacURI = new URI(uri);
airavataRegistry.removeGFacURI(gfacURI);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/allgfacuris")
@Produces(MediaType.TEXT_PLAIN)
public Response removeAllGFacURI() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.removeAllGFacURI();
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/workflowinterpreteruri")
@Produces(MediaType.TEXT_PLAIN)
public Response removeWorkflowInterpreterURI(@QueryParam("uri") String uri) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
URI intURI = new URI(uri);
airavataRegistry.removeWorkflowInterpreterURI(intURI);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/allworkflowinterpreteruris")
@Produces(MediaType.TEXT_PLAIN)
public Response removeAllWorkflowInterpreterURI() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.removeAllWorkflowInterpreterURI();
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/eventinguri")
@Produces(MediaType.TEXT_PLAIN)
public Response unsetEventingURI() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.unsetEventingURI();
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/msgboxuri")
@Produces(MediaType.TEXT_PLAIN)
public Response unsetMessageBoxURI() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.unsetMessageBoxURI();
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (Exception e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
/**
* ---------------------------------Descriptor Registry----------------------------------*
*/
@GET
@Path("hostdescriptor/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isHostDescriptorExists(@QueryParam("descriptorName") String descriptorName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
boolean state;
try {
state = airavataRegistry.isHostDescriptorExists(descriptorName);
if (state) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("hostdescriptor/save/test")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response addHostDescriptor(@FormParam("hostName") String hostName,
@FormParam("hostAddress") String hostAddress,
@FormParam("hostEndpoint") String hostEndpoint,
@FormParam("gatekeeperEndpoint") String gatekeeperEndpoint) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
HostDescription hostDescription = DescriptorUtil.createHostDescription(hostName, hostAddress, hostEndpoint, gatekeeperEndpoint);
airavataRegistry.addHostDescriptor(hostDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
// TODO : Use WEbapplicationExcpetion
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("hostdescriptor/save")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response addJSONHostDescriptor(HostDescriptor host) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
HostDescription hostDescription = DescriptorUtil.createHostDescription(host);
airavataRegistry.addHostDescriptor(hostDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("hostdescriptor/update")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response updateHostDescriptor(HostDescriptor host) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
HostDescription hostDescription = DescriptorUtil.createHostDescription(host);
airavataRegistry.updateHostDescriptor(hostDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("host/description")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getHostDescriptor(@QueryParam("hostName") String hostName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
HostDescription hostDescription = airavataRegistry.getHostDescriptor(hostName);
HostDescriptor hostDescriptor = DescriptorUtil.createHostDescriptor(hostDescription);
if (hostDescription != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(hostDescriptor);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("hostdescriptor/delete")
@Produces(MediaType.TEXT_PLAIN)
public Response removeHostDescriptor(@QueryParam("hostName") String hostName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.removeHostDescriptor(hostName);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/hostdescriptors")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getHostDescriptors() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<HostDescription> hostDescriptionList = airavataRegistry.getHostDescriptors();
HostDescriptionList list = new HostDescriptionList();
HostDescriptor[] hostDescriptions = new HostDescriptor[hostDescriptionList.size()];
for (int i = 0; i < hostDescriptionList.size(); i++) {
HostDescriptor hostDescriptor = DescriptorUtil.createHostDescriptor(hostDescriptionList.get(i));
hostDescriptions[i] = hostDescriptor;
}
list.setHostDescriptions(hostDescriptions);
if (hostDescriptionList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(list);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("servicedescriptor/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isServiceDescriptorExists(@QueryParam("descriptorName") String descriptorName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
boolean state;
try {
state = airavataRegistry.isServiceDescriptorExists(descriptorName);
if (state) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("servicedescriptor/save")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response addJSONServiceDescriptor(ServiceDescriptor service) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(service);
airavataRegistry.addServiceDescriptor(serviceDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("servicedescriptor/update")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response updateServiceDescriptor(ServiceDescriptor service) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(service);
airavataRegistry.updateServiceDescriptor(serviceDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("servicedescriptor/description")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getServiceDescriptor(@QueryParam("serviceName") String serviceName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
if (serviceDescription != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(serviceDescriptor);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("servicedescriptor/delete")
@Produces(MediaType.TEXT_PLAIN)
public Response removeServiceDescriptor(@QueryParam("serviceName") String serviceName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.removeServiceDescriptor(serviceName);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/servicedescriptors")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getServiceDescriptors() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<ServiceDescription> serviceDescriptors = airavataRegistry.getServiceDescriptors();
ServiceDescriptionList list = new ServiceDescriptionList();
ServiceDescriptor[] serviceDescriptions = new ServiceDescriptor[serviceDescriptors.size()];
for (int i = 0; i < serviceDescriptors.size(); i++) {
ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescriptors.get(i));
serviceDescriptions[i] = serviceDescriptor;
}
list.setServiceDescriptions(serviceDescriptions);
if (serviceDescriptors.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(list);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("applicationdescriptor/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isApplicationDescriptorExists(@QueryParam("serviceName") String serviceName,
@QueryParam("hostName") String hostName,
@QueryParam("descriptorName") String descriptorName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
boolean state;
try {
state = airavataRegistry.isApplicationDescriptorExists(serviceName, hostName, descriptorName);
if (state) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("applicationdescriptor/build/save/test")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response addApplicationDescriptorTest(@FormParam("appName") String appName, @FormParam("exeuctableLocation") String exeuctableLocation, @FormParam("scratchWorkingDirectory") String scratchWorkingDirectory, @FormParam("hostName") String hostName,
@FormParam("projAccNumber") String projAccNumber, @FormParam("queueName") String queueName, @FormParam("cpuCount") String cpuCount, @FormParam("nodeCount") String nodeCount, @FormParam("maxMemory") String maxMemory,
@FormParam("serviceName") String serviceName, @FormParam("inputName1") String inputName1, @FormParam("inputType1") String inputType1, @FormParam("outputName") String outputName, @FormParam("outputType") String outputType) throws Exception {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
System.out.println("application descriptor save started ...");
ServiceDescription serv = DescriptorUtil.getServiceDescription(serviceName, inputName1, inputType1, outputName, outputType);
// Creating the descriptor as a temporary measure.
ApplicationDeploymentDescription app = DescriptorUtil.registerApplication(appName, exeuctableLocation, scratchWorkingDirectory,
hostName, projAccNumber, queueName, cpuCount, nodeCount, maxMemory);
try {
if (!airavataRegistry.isHostDescriptorExists(hostName)) {
System.out.println(hostName + " host not exist");
// Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
// return builder.build();
}
if (airavataRegistry.isServiceDescriptorExists(serv.getType().getName())) {
System.out.println(serviceName + " service updated ");
airavataRegistry.updateServiceDescriptor(serv);
} else {
System.out.println(serviceName + " service created ");
airavataRegistry.addServiceDescriptor(serv);
}
if (airavataRegistry.isApplicationDescriptorExists(serv.getType().getName(), hostName, app.getType().getApplicationName().getStringValue())) {
System.out.println(appName + " app already exists. retruning an error");
// Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
// return builder.build();
} else {
System.out.println(appName + " adding the app");
airavataRegistry.addApplicationDescriptor(serv.getType().getName(), hostName, app);
}
// airavataRegistry.addApplicationDescriptor(serviceName, hostName, app);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("applicationdescriptor/build/save")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response addJSONApplicationDescriptor(ApplicationDescriptor applicationDescriptor) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
String hostdescName = applicationDescriptor.getHostdescName();
if (!airavataRegistry.isHostDescriptorExists(hostdescName)) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
ApplicationDeploymentDescription applicationDeploymentDescription = DescriptorUtil.createApplicationDescription(applicationDescriptor);
ServiceDescriptor serviceDescriptor = applicationDescriptor.getServiceDescriptor();
String serviceName;
if (serviceDescriptor != null) {
if (serviceDescriptor.getServiceName() == null) {
serviceName = applicationDescriptor.getName();
serviceDescriptor.setServiceName(serviceName);
} else {
serviceName = serviceDescriptor.getServiceName();
}
ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(serviceDescriptor);
if (!airavataRegistry.isServiceDescriptorExists(serviceName)) {
airavataRegistry.addServiceDescriptor(serviceDescription);
}
} else {
serviceName = applicationDescriptor.getName();
}
airavataRegistry.addApplicationDescriptor(serviceName, hostdescName, applicationDeploymentDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
//
// @POST
// @Path("applicationdescriptor/save")
// @Consumes(MediaType.TEXT_XML)
// @Produces(MediaType.TEXT_PLAIN)
// public Response addApplicationDesc(@FormParam("serviceName") String serviceName,
// @FormParam("hostName") String hostName,
// String application) {
// airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
// try{
// ApplicationDeploymentDescription applicationDeploymentDescription = ApplicationDeploymentDescription.fromXML(application);
// airavataRegistry.addApplicationDescriptor(serviceName, hostName, applicationDeploymentDescription);
// Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
// return builder.build();
// } catch (DescriptorAlreadyExistsException e){
// Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
// return builder.build();
// } catch (XmlException e) {
// Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
// return builder.build();
// } catch (RegistryException e) {
// Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
// return builder.build();
// }
//
// }
@POST
@Path("applicationdescriptor/update")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response udpateApplicationDescriptorByDescriptors(ApplicationDescriptor applicationDescriptor) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
String hostdescName = applicationDescriptor.getHostdescName();
if (!airavataRegistry.isHostDescriptorExists(hostdescName)) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
ApplicationDeploymentDescription applicationDeploymentDescription = DescriptorUtil.createApplicationDescription(applicationDescriptor);
ServiceDescriptor serviceDescriptor = applicationDescriptor.getServiceDescriptor();
String serviceName;
if (serviceDescriptor != null) {
if (serviceDescriptor.getServiceName() == null) {
serviceName = applicationDescriptor.getName();
serviceDescriptor.setServiceName(serviceName);
} else {
serviceName = serviceDescriptor.getServiceName();
}
ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(serviceDescriptor);
if (airavataRegistry.isServiceDescriptorExists(serviceName)) {
airavataRegistry.updateServiceDescriptor(serviceDescription);
} else {
airavataRegistry.addServiceDescriptor(serviceDescription);
}
} else {
serviceName = applicationDescriptor.getName();
}
airavataRegistry.updateApplicationDescriptor(serviceName, hostdescName, applicationDeploymentDescription);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("applicationdescriptor/description")
@Produces("text/xml")
public Response getApplicationDescriptor(@QueryParam("serviceName") String serviceName,
@QueryParam("hostName") String hostName,
@QueryParam("applicationName") String applicationName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
ApplicationDeploymentDescription applicationDeploymentDescription = airavataRegistry.getApplicationDescriptor(serviceName, hostName, applicationName);
ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
applicationDescriptor.setHostdescName(hostName);
ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
applicationDescriptor.setServiceDescriptor(serviceDescriptor);
if (applicationDeploymentDescription != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(applicationDescriptor);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("applicationdescriptors/alldescriptors/host/service")
@Produces("text/xml")
public Response getApplicationDescriptors(@QueryParam("serviceName") String serviceName,
@QueryParam("hostName") String hostName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
ApplicationDeploymentDescription applicationDeploymentDescription = airavataRegistry.getApplicationDescriptors(serviceName, hostName);
ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
applicationDescriptor.setHostdescName(hostName);
ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
applicationDescriptor.setServiceDescriptor(serviceDescriptor);
if (applicationDeploymentDescription != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(applicationDescriptor);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("applicationdescriptor/alldescriptors/service")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getApplicationDescriptors(@QueryParam("serviceName") String serviceName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
Map<String, ApplicationDeploymentDescription> applicationDeploymentDescriptionMap = airavataRegistry.getApplicationDescriptors(serviceName);
ApplicationDescriptorList applicationDescriptorList = new ApplicationDescriptorList();
ApplicationDescriptor[] applicationDescriptors = new ApplicationDescriptor[applicationDeploymentDescriptionMap.size()];
int i = 0;
for (String hostName : applicationDeploymentDescriptionMap.keySet()) {
ApplicationDeploymentDescription applicationDeploymentDescription = applicationDeploymentDescriptionMap.get(hostName);
ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
applicationDescriptor.setHostdescName(hostName);
ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
applicationDescriptor.setServiceDescriptor(serviceDescriptor);
applicationDescriptors[i] = applicationDescriptor;
i++;
}
applicationDescriptorList.setApplicationDescriptors(applicationDescriptors);
if (applicationDeploymentDescriptionMap.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(applicationDescriptorList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (MalformedDescriptorException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("applicationdescriptor/alldescriptors")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getApplicationDescriptors() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
Map<String[], ApplicationDeploymentDescription> applicationDeploymentDescriptionMap = airavataRegistry.getApplicationDescriptors();
ApplicationDescriptorList applicationDescriptorList = new ApplicationDescriptorList();
ApplicationDescriptor[] applicationDescriptors = new ApplicationDescriptor[applicationDeploymentDescriptionMap.size()];
int i = 0;
for (String[] descriptors : applicationDeploymentDescriptionMap.keySet()) {
ApplicationDeploymentDescription applicationDeploymentDescription = applicationDeploymentDescriptionMap.get(descriptors);
ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
applicationDescriptor.setHostdescName(descriptors[1]);
ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(descriptors[0]);
if (serviceDescription == null) {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
applicationDescriptor.setServiceDescriptor(serviceDescriptor);
applicationDescriptors[i] = applicationDescriptor;
i++;
}
applicationDescriptorList.setApplicationDescriptors(applicationDescriptors);
if (applicationDeploymentDescriptionMap.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(applicationDescriptorList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (MalformedDescriptorException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("applicationdescriptor/delete")
@Produces(MediaType.TEXT_PLAIN)
public Response removeApplicationDescriptor(@QueryParam("serviceName") String serviceName,
@QueryParam("hostName") String hostName,
@QueryParam("appName") String appName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.removeApplicationDescriptor(serviceName, hostName, appName);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (DescriptorDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
/**
* ---------------------------------Project Registry----------------------------------*
*/
@GET
@Path("project/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isWorkspaceProjectExists(@QueryParam("projectName") String projectName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
boolean result = airavataRegistry.isWorkspaceProjectExists(projectName);
if (result) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
builder.entity("False");
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("project/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isWorkspaceProjectExists(@FormParam("projectName") String projectName,
@FormParam("createIfNotExists") String createIfNotExists) {
boolean createIfNotExistStatus = false;
if (createIfNotExists.equals("true")) {
createIfNotExistStatus = true;
}
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
boolean result = airavataRegistry.isWorkspaceProjectExists(projectName, createIfNotExistStatus);
if (result) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
builder.entity("False");
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity("False");
return builder.build();
}
}
@POST
@Path("add/project")
@Produces(MediaType.TEXT_PLAIN)
public Response addWorkspaceProject(@FormParam("projectName") String projectName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkspaceProject workspaceProject = new WorkspaceProject(projectName, airavataRegistry);
airavataRegistry.addWorkspaceProject(workspaceProject);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (WorkspaceProjectAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/project")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkspaceProject(@FormParam("projectName") String projectName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkspaceProject workspaceProject = new WorkspaceProject(projectName, airavataRegistry);
airavataRegistry.updateWorkspaceProject(workspaceProject);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (WorkspaceProjectDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@DELETE
@Path("delete/project")
@Produces(MediaType.TEXT_PLAIN)
public Response deleteWorkspaceProject(@QueryParam("projectName") String projectName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.deleteWorkspaceProject(projectName);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (WorkspaceProjectDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/project")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getWorkspaceProject(@QueryParam("projectName") String projectName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkspaceProject workspaceProject = airavataRegistry.getWorkspaceProject(projectName);
if (workspaceProject != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workspaceProject);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
} catch (WorkspaceProjectDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/projects")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getWorkspaceProjects() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<WorkspaceProject> workspaceProjects = airavataRegistry.getWorkspaceProjects();
WorkspaceProjectList workspaceProjectList = new WorkspaceProjectList();
WorkspaceProject[] workspaceProjectSet = new WorkspaceProject[workspaceProjects.size()];
for (int i = 0; i < workspaceProjects.size(); i++) {
workspaceProjectSet[i] = workspaceProjects.get(i);
}
workspaceProjectList.setWorkspaceProjects(workspaceProjectSet);
if (workspaceProjects.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workspaceProjectList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
/**
* ---------------------------------Experiments----------------------------------*
*/
@DELETE
@Path("delete/experiment")
@Produces(MediaType.TEXT_PLAIN)
public Response removeExperiment(@QueryParam("experimentId") String experimentId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.removeExperiment(experimentId);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (ExperimentDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@GET
@Path("get/experiments/all")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getExperiments() throws RegistryException {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<AiravataExperiment> airavataExperimentList = airavataRegistry.getExperiments();
ExperimentList experimentList = new ExperimentList();
AiravataExperiment[] experiments = new AiravataExperiment[airavataExperimentList.size()];
for (int i = 0; i < airavataExperimentList.size(); i++) {
experiments[i] = airavataExperimentList.get(i);
}
experimentList.setExperiments(experiments);
if (airavataExperimentList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/experiments/project")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getExperimentsByProject(@QueryParam("projectName") String projectName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<AiravataExperiment> airavataExperimentList = airavataRegistry.getExperiments(projectName);
ExperimentList experimentList = new ExperimentList();
AiravataExperiment[] experiments = new AiravataExperiment[airavataExperimentList.size()];
for (int i = 0; i < airavataExperimentList.size(); i++) {
experiments[i] = airavataExperimentList.get(i);
}
experimentList.setExperiments(experiments);
if (airavataExperimentList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/experiments/date")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getExperimentsByDate(@QueryParam("fromDate") String fromDate,
@QueryParam("toDate") String toDate) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedFromDate = dateFormat.parse(fromDate);
Date formattedToDate = dateFormat.parse(toDate);
List<AiravataExperiment> airavataExperimentList = airavataRegistry.getExperiments(formattedFromDate, formattedToDate);
ExperimentList experimentList = new ExperimentList();
AiravataExperiment[] experiments = new AiravataExperiment[airavataExperimentList.size()];
for (int i = 0; i < airavataExperimentList.size(); i++) {
experiments[i] = airavataExperimentList.get(i);
}
experimentList.setExperiments(experiments);
if (airavataExperimentList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (ParseException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/experiments/project/date")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getExperimentsByProjectDate(@QueryParam("projectName") String projectName,
@QueryParam("fromDate") String fromDate,
@QueryParam("toDate") String toDate) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedFromDate = dateFormat.parse(fromDate);
Date formattedToDate = dateFormat.parse(toDate);
List<AiravataExperiment> airavataExperimentList = airavataRegistry.getExperiments(projectName, formattedFromDate, formattedToDate);
ExperimentList experimentList = new ExperimentList();
AiravataExperiment[] experiments = new AiravataExperiment[airavataExperimentList.size()];
for (int i = 0; i < airavataExperimentList.size(); i++) {
experiments[i] = airavataExperimentList.get(i);
}
experimentList.setExperiments(experiments);
if (airavataExperimentList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (ParseException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("add/experiment")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public Response addExperiment(@FormParam("projectName") String projectName,
@FormParam("experimentID") String experimentID,
@FormParam("submittedDate") String submittedDate) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
AiravataExperiment experiment = new AiravataExperiment();
experiment.setExperimentId(experimentID);
Gateway gateway = (Gateway) context.getAttribute(RestServicesConstants.GATEWAY);
AiravataUser airavataUser = (AiravataUser) context.getAttribute(RestServicesConstants.REGISTRY_USER);
experiment.setGateway(gateway);
experiment.setUser(airavataUser);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(submittedDate);
experiment.setSubmittedDate(formattedDate);
airavataRegistry.addExperiment(projectName, experiment);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (ExperimentDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
} catch (WorkspaceProjectDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
} catch (ParseException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("experiment/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isExperimentExists(@QueryParam("experimentId") String experimentId) throws RegistryException {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.isExperimentExists(experimentId);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity("True");
return builder.build();
} catch (ExperimentDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
builder.entity("False");
return builder.build();
}
}
@GET
@Path("experiment/notexist/create")
@Produces(MediaType.TEXT_PLAIN)
public Response isExperimentExistsThenCreate(@QueryParam("experimentId") String experimentId,
@QueryParam("createIfNotPresent") String createIfNotPresent) {
boolean createIfNotPresentStatus = false;
if (createIfNotPresent.equals("true")) {
createIfNotPresentStatus = true;
}
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.isExperimentExists(experimentId, createIfNotPresentStatus);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity("True");
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
/**
* --------------------------------- Provenance Registry ----------------------------------*
*/
@POST
@Path("update/experiment")
@Produces(MediaType.TEXT_PLAIN)
public Response updateExperimentExecutionUser(@FormParam("experimentId") String experimentId,
@FormParam("user") String user) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.updateExperimentExecutionUser(experimentId, user);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@GET
@Path("get/experiment/executionuser")
@Produces(MediaType.TEXT_PLAIN)
public Response getExperimentExecutionUser(@QueryParam("experimentId") String experimentId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
String user = airavataRegistry.getExperimentExecutionUser(experimentId);
if (user != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(user);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_MODIFIED);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/experiment/name")
@Produces(MediaType.TEXT_PLAIN)
public Response getExperimentName(@QueryParam("experimentId") String experimentId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
String result = airavataRegistry.getExperimentName(experimentId);
if (result != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(result);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_MODIFIED);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/experimentname")
@Produces(MediaType.TEXT_PLAIN)
public Response updateExperimentName(@FormParam("experimentId") String experimentId,
@FormParam("experimentName") String experimentName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.updateExperimentName(experimentId, experimentName);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@GET
@Path("get/experimentmetadata")
@Produces(MediaType.TEXT_PLAIN)
public Response getExperimentMetadata(@QueryParam("experimentId") String experimentId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
String result = airavataRegistry.getExperimentMetadata(experimentId);
if (result != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(result);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_MODIFIED);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/experimentmetadata")
@Produces(MediaType.TEXT_PLAIN)
public Response updateExperimentMetadata(@FormParam("experimentId") String experimentId,
@FormParam("metadata") String metadata) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.updateExperimentMetadata(experimentId, metadata);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
/**
* --------------------------------- Provenance Registry ----------------------------------*
*/
@GET
@Path("get/workflowtemplatename")
@Produces(MediaType.TEXT_PLAIN)
public Response getWorkflowExecutionTemplateName(@QueryParam("workflowInstanceId") String workflowInstanceId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
String result = airavataRegistry.getWorkflowExecutionTemplateName(workflowInstanceId);
if (result != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(result);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_MODIFIED);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/workflowinstancetemplatename")
@Produces(MediaType.TEXT_PLAIN)
public Response setWorkflowInstanceTemplateName(@FormParam("workflowInstanceId") String workflowInstanceId,
@FormParam("templateName") String templateName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
airavataRegistry.setWorkflowInstanceTemplateName(workflowInstanceId, templateName);
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@GET
@Path("get/experimentworkflowinstances")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getExperimentWorkflowInstances(@QueryParam("experimentId") String experimentId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<WorkflowInstance> experimentWorkflowInstances = airavataRegistry.getExperimentWorkflowInstances(experimentId);
WorkflowInstancesList workflowInstancesList = new WorkflowInstancesList();
WorkflowInstance[] workflowInstanceMappings = new WorkflowInstance[experimentWorkflowInstances.size()];
for (int i = 0; i < experimentWorkflowInstances.size(); i++) {
workflowInstanceMappings[i] = experimentWorkflowInstances.get(i);
}
workflowInstancesList.setWorkflowInstances(workflowInstanceMappings);
if (experimentWorkflowInstances.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowInstancesList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("workflowinstance/exist/check")
@Produces(MediaType.TEXT_PLAIN)
public Response isWorkflowInstanceExists(@QueryParam("instanceId") String instanceId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
Boolean result = airavataRegistry.isWorkflowInstanceExists(instanceId);
if (result) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
builder.entity("False");
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@GET
@Path("workflowinstance/exist/create")
@Produces(MediaType.TEXT_PLAIN)
public Response isWorkflowInstanceExistsThenCreate(@QueryParam("instanceId") String instanceId,
@QueryParam("createIfNotPresent") boolean createIfNotPresent) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
Boolean result = airavataRegistry.isWorkflowInstanceExists(instanceId, createIfNotPresent);
if (result) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@POST
@Path("update/workflowinstancestatus/instanceid")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowInstanceStatusByInstance(@FormParam("instanceId") String instanceId,
@FormParam("executionStatus") String executionStatus) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkflowInstanceStatus.ExecutionStatus status = WorkflowInstanceStatus.ExecutionStatus.valueOf(executionStatus);
airavataRegistry.updateWorkflowInstanceStatus(instanceId, status);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@POST
@Path("update/workflowinstancestatus")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowInstanceStatus(@FormParam("workflowInstanceId") String workflowInstanceId,
@FormParam("executionStatus") String executionStatus,
@FormParam("statusUpdateTime") String statusUpdateTime) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date formattedDate = dateFormat.parse(statusUpdateTime);
WorkflowInstance workflowInstance = airavataRegistry.getWorkflowInstanceData(workflowInstanceId).getWorkflowInstance();
WorkflowInstanceStatus.ExecutionStatus status = WorkflowInstanceStatus.ExecutionStatus.valueOf(executionStatus);
WorkflowInstanceStatus workflowInstanceStatus = new WorkflowInstanceStatus(workflowInstance, status, formattedDate);
airavataRegistry.updateWorkflowInstanceStatus(workflowInstanceStatus);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
} catch (ParseException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@GET
@Path("get/workflowinstancestatus")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getWorkflowInstanceStatus(@QueryParam("instanceId") String instanceId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkflowInstanceStatus workflowInstanceStatus = airavataRegistry.getWorkflowInstanceStatus(instanceId);
if (workflowInstanceStatus != null) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowInstanceStatus);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/workflownodeinput")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowNodeInput(@FormParam("nodeID") String nodeID,
@FormParam("workflowInstanceId") String workflowInstanceID,
@FormParam("data") String data) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkflowInstanceData workflowInstanceData = airavataRegistry.getWorkflowInstanceData(workflowInstanceID);
WorkflowInstanceNode workflowInstanceNode = workflowInstanceData.getNodeData(nodeID).getWorkflowInstanceNode();
airavataRegistry.updateWorkflowNodeInput(workflowInstanceNode, data);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
@POST
@Path("update/workflownodeoutput")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowNodeOutput(@FormParam("nodeID") String nodeID,
@FormParam("workflowInstanceId") String workflowInstanceID,
@FormParam("data") String data) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
WorkflowInstanceData workflowInstanceData = airavataRegistry.getWorkflowInstanceData(workflowInstanceID);
WorkflowInstanceNode workflowInstanceNode = workflowInstanceData.getNodeData(nodeID).getWorkflowInstanceNode();
airavataRegistry.updateWorkflowNodeOutput(workflowInstanceNode, data);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NOT_FOUND);
return builder.build();
}
}
/*
@GET
@Path("search/workflowinstancenodeinput")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response searchWorkflowInstanceNodeInput(@QueryParam("experimentIdRegEx") String experimentIdRegEx,
@QueryParam("workflowNameRegEx") String workflowNameRegEx,
@QueryParam("nodeNameRegEx") String nodeNameRegEx) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<WorkflowNodeIOData> workflowNodeIODataList = airavataRegistry.searchWorkflowInstanceNodeInput(experimentIdRegEx, workflowNameRegEx, nodeNameRegEx);
WorkflowNodeIODataMapping[] workflowNodeIODataCollection = new WorkflowNodeIODataMapping[workflowNodeIODataList.size()];
WorkflowNodeIODataList workflowNodeIOData = new WorkflowNodeIODataList();
for (int i = 0; i < workflowNodeIODataList.size(); i++) {
WorkflowNodeIOData nodeIOData = workflowNodeIODataList.get(i);
WorkflowNodeIODataMapping workflowNodeIODataMapping = new WorkflowNodeIODataMapping();
workflowNodeIODataMapping.setExperimentId(nodeIOData.getExperimentId());
workflowNodeIODataMapping.setWorkflowId(nodeIOData.getWorkflowId());
workflowNodeIODataMapping.setWorkflowInstanceId(nodeIOData.getWorkflowInstanceId());
workflowNodeIODataMapping.setWorkflowName(nodeIOData.getWorkflowName());
workflowNodeIODataMapping.setWorkflowNodeType(nodeIOData.getNodeType().toString());
workflowNodeIODataCollection[i] = workflowNodeIODataMapping;
}
workflowNodeIOData.setWorkflowNodeIOData(workflowNodeIODataCollection);
if (workflowNodeIODataList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowNodeIOData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("search/workflowinstancenodeoutput")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response searchWorkflowInstanceNodeOutput(@QueryParam("experimentIdRegEx") String experimentIdRegEx,
@QueryParam("workflowNameRegEx") String workflowNameRegEx,
@QueryParam("nodeNameRegEx") String nodeNameRegEx) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<WorkflowNodeIOData> workflowNodeIODataList = airavataRegistry.searchWorkflowInstanceNodeOutput(experimentIdRegEx, workflowNameRegEx, nodeNameRegEx);
WorkflowNodeIODataMapping[] workflowNodeIODataCollection = new WorkflowNodeIODataMapping[workflowNodeIODataList.size()];
WorkflowNodeIODataList workflowNodeIOData = new WorkflowNodeIODataList();
for (int i = 0; i < workflowNodeIODataList.size(); i++) {
WorkflowNodeIOData nodeIOData = workflowNodeIODataList.get(i);
WorkflowNodeIODataMapping workflowNodeIODataMapping = new WorkflowNodeIODataMapping();
workflowNodeIODataMapping.setExperimentId(nodeIOData.getExperimentId());
workflowNodeIODataMapping.setWorkflowId(nodeIOData.getWorkflowId());
workflowNodeIODataMapping.setWorkflowInstanceId(nodeIOData.getWorkflowInstanceId());
workflowNodeIODataMapping.setWorkflowName(nodeIOData.getWorkflowName());
workflowNodeIODataMapping.setWorkflowNodeType(nodeIOData.getNodeType().toString());
workflowNodeIODataCollection[i] = workflowNodeIODataMapping;
}
workflowNodeIOData.setWorkflowNodeIOData(workflowNodeIODataCollection);
if (workflowNodeIODataList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowNodeIOData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/workflowinstancenodeinput")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getWorkflowInstanceNodeInput(@QueryParam("workflowInstanceId") String workflowInstanceId,
@QueryParam("nodeType") String nodeType) {
// Airavata JPA Registry method returns null at the moment
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<WorkflowNodeIOData> workflowNodeIODataList = airavataRegistry.getWorkflowInstanceNodeInput(workflowInstanceId, nodeType);
WorkflowNodeIODataMapping[] workflowNodeIODataCollection = new WorkflowNodeIODataMapping[workflowNodeIODataList.size()];
WorkflowNodeIODataList workflowNodeIOData = new WorkflowNodeIODataList();
for (int i = 0; i < workflowNodeIODataList.size(); i++) {
WorkflowNodeIOData nodeIOData = workflowNodeIODataList.get(i);
WorkflowNodeIODataMapping workflowNodeIODataMapping = new WorkflowNodeIODataMapping();
workflowNodeIODataMapping.setExperimentId(nodeIOData.getExperimentId());
workflowNodeIODataMapping.setWorkflowId(nodeIOData.getWorkflowId());
workflowNodeIODataMapping.setWorkflowInstanceId(nodeIOData.getWorkflowInstanceId());
workflowNodeIODataMapping.setWorkflowName(nodeIOData.getWorkflowName());
workflowNodeIODataMapping.setWorkflowNodeType(nodeIOData.getNodeType().toString());
workflowNodeIODataCollection[i] = workflowNodeIODataMapping;
}
workflowNodeIOData.setWorkflowNodeIOData(workflowNodeIODataCollection);
if (workflowNodeIODataList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowNodeIOData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/workflowinstancenodeoutput")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getWorkflowInstanceNodeOutput(@QueryParam("workflowInstanceId") String workflowInstanceId,
@QueryParam("nodeType") String nodeType) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try {
List<WorkflowNodeIOData> workflowNodeIODataList = airavataRegistry.getWorkflowInstanceNodeOutput(workflowInstanceId, nodeType);
WorkflowNodeIODataMapping[] workflowNodeIODataCollection = new WorkflowNodeIODataMapping[workflowNodeIODataList.size()];
WorkflowNodeIODataList workflowNodeIOData = new WorkflowNodeIODataList();
for (int i = 0; i < workflowNodeIODataList.size(); i++) {
WorkflowNodeIOData nodeIOData = workflowNodeIODataList.get(i);
WorkflowNodeIODataMapping workflowNodeIODataMapping = new WorkflowNodeIODataMapping();
workflowNodeIODataMapping.setExperimentId(nodeIOData.getExperimentId());
workflowNodeIODataMapping.setWorkflowId(nodeIOData.getWorkflowId());
workflowNodeIODataMapping.setWorkflowInstanceId(nodeIOData.getWorkflowInstanceId());
workflowNodeIODataMapping.setWorkflowName(nodeIOData.getWorkflowName());
workflowNodeIODataMapping.setWorkflowNodeType(nodeIOData.getNodeType().toString());
workflowNodeIODataCollection[i] = workflowNodeIODataMapping;
}
workflowNodeIOData.setWorkflowNodeIOData(workflowNodeIODataCollection);
if (workflowNodeIODataList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowNodeIOData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
*/
@GET
@Path("get/experiment")
@Produces(MediaType.APPLICATION_XML)
public Response getExperiment(@QueryParam("experimentId") String experimentId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
ExperimentDataImpl experimentData = (ExperimentDataImpl)airavataRegistry.getExperiment(experimentId);
if (experimentData != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/experimentId/user")
@Produces(MediaType.APPLICATION_XML)
public Response getExperimentIdByUser(@QueryParam("username") String username) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
ArrayList<String> experiments = (ArrayList)airavataRegistry.getExperimentIdByUser(username);
ExperimentIDList experimentIDList = new ExperimentIDList();
experimentIDList.setExperimentIDList(experiments);
if (experiments.size() != 0){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentIDList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/experiment/user")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getExperimentByUser(@QueryParam("username") String username) throws RegistryException {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
List<ExperimentData> experimentDataList = airavataRegistry.getExperimentByUser(username);
ExperimentDataList experimentData = new ExperimentDataList();
List<ExperimentDataImpl> experimentDatas = new ArrayList<ExperimentDataImpl>();
for (int i = 0; i < experimentDataList.size(); i ++){
experimentDatas.add((ExperimentDataImpl)experimentDataList.get(i));
}
experimentData.setExperimentDataList(experimentDatas);
if (experimentDataList.size() != 0) {
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(experimentData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@POST
@Path("update/workflownode/status")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowNodeStatus(@FormParam("workflowInstanceId") String workflowInstanceId,
@FormParam("nodeId") String nodeId,
@FormParam("executionStatus") String executionStatus) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceStatus.ExecutionStatus status = WorkflowInstanceStatus.ExecutionStatus.valueOf(executionStatus);
airavataRegistry.updateWorkflowNodeStatus(workflowInstanceId, nodeId, status);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/workflownode/status")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getWorkflowNodeStatus(@QueryParam("workflowInstanceId") String workflowInstanceId,
@QueryParam("nodeId") String nodeId){
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceData workflowInstanceData = airavataRegistry.getWorkflowInstanceData(workflowInstanceId);
WorkflowInstanceNode workflowInstanceNode = workflowInstanceData.getNodeData(nodeId).getWorkflowInstanceNode();
WorkflowInstanceNodeStatus workflowNodeStatus = airavataRegistry.getWorkflowNodeStatus(workflowInstanceNode);
if(workflowNodeStatus != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowNodeStatus);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/workflownode/starttime")
@Produces(MediaType.TEXT_PLAIN)
public Response getWorkflowNodeStartTime(@QueryParam("workflowInstanceId") String workflowInstanceId,
@QueryParam("nodeId") String nodeId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceData workflowInstanceData = airavataRegistry.getWorkflowInstanceData(workflowInstanceId);
WorkflowInstanceNode workflowInstanceNode = workflowInstanceData.getNodeData(nodeId).getWorkflowInstanceNode();
Date workflowNodeStartTime = airavataRegistry.getWorkflowNodeStartTime(workflowInstanceNode);
if(workflowNodeStartTime != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowNodeStartTime.toString());
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/workflow/starttime")
@Produces(MediaType.TEXT_PLAIN)
public Response getWorkflowStartTime(@QueryParam("workflowInstanceId") String workflowInstanceId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceData workflowInstanceData = airavataRegistry.getWorkflowInstanceData(workflowInstanceId);
WorkflowInstance workflowInstance = workflowInstanceData.getWorkflowInstance();
Date workflowStartTime = airavataRegistry.getWorkflowStartTime(workflowInstance);
if(workflowStartTime != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowStartTime.toString());
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("update/workflownode/gramdata")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowNodeGramData(WorkflowNodeGramData workflowNodeGramData) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.updateWorkflowNodeGramData(workflowNodeGramData);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("get/workflowinstancedata")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getWorkflowInstanceData(@QueryParam("workflowInstanceId") String workflowInstanceId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceData workflowInstanceData = airavataRegistry.getWorkflowInstanceData(workflowInstanceId);
if (workflowInstanceData != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowInstanceData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
return builder.build();
}
}
@GET
@Path("workflowinstance/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isWorkflowInstanceNodePresent(@QueryParam("workflowInstanceId") String workflowInstanceId,
@QueryParam("nodeId") String nodeId){
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
boolean workflowInstanceNodePresent = airavataRegistry.isWorkflowInstanceNodePresent(workflowInstanceId, nodeId);
if (workflowInstanceNodePresent){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity("False");
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("workflowinstance/nodeData")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getWorkflowInstanceNodeData(@QueryParam("workflowInstanceId") String workflowInstanceId,
@QueryParam("nodeId") String nodeId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceNodeData workflowInstanceNodeData = airavataRegistry.getWorkflowInstanceNodeData(workflowInstanceId, nodeId);
if (workflowInstanceNodeData != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowInstanceNodeData);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("add/workflowinstance")
@Produces(MediaType.TEXT_PLAIN)
public Response addWorkflowInstance(@FormParam("experimentId") String experimentId,
@FormParam("workflowInstanceId") String workflowInstanceId,
@FormParam("templateName") String templateName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.addWorkflowInstance(experimentId, workflowInstanceId, templateName);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("update/workflownodetype")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflowNodeType(@FormParam("workflowInstanceId") String workflowInstanceId,
@FormParam("nodeId") String nodeId,
@FormParam("nodeType") String nodeType) throws RegistryException {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
WorkflowInstanceNodeData workflowInstanceNodeData = airavataRegistry.getWorkflowInstanceData(workflowInstanceId).getNodeData(nodeId);
WorkflowInstanceNode workflowInstanceNode = workflowInstanceNodeData.getWorkflowInstanceNode();
WorkflowNodeType workflowNodeType = new WorkflowNodeType();
//currently from API only service node is being used
workflowNodeType.setNodeType(WorkflowNodeType.WorkflowNode.SERVICENODE);
// workflowNodeType.setNodeType(nodeType);
airavataRegistry.updateWorkflowNodeType(workflowInstanceNode, workflowNodeType);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("add/workflowinstancenode")
@Produces(MediaType.TEXT_PLAIN)
public Response addWorkflowInstanceNode(@FormParam("workflowInstanceId") String workflowInstanceId,
@FormParam("nodeId") String nodeId) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.addWorkflowInstanceNode(workflowInstanceId, nodeId);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
/**---------------------------------User Workflow Registry----------------------------------**/
@GET
@Path("workflow/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isWorkflowExists(@QueryParam("workflowName") String workflowName){
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
boolean workflowExists = airavataRegistry.isWorkflowExists(workflowName);
if (workflowExists){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
}else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity("False");
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("add/workflow")
@Produces(MediaType.TEXT_PLAIN)
public Response addWorkflow(@FormParam("workflowName") String workflowName,
@FormParam("workflowGraphXml") String workflowGraphXml) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.addWorkflow(workflowName, workflowGraphXml);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (UserWorkflowAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("update/workflow")
@Produces(MediaType.TEXT_PLAIN)
public Response updateWorkflow(@FormParam("workflowName") String workflowName,
@FormParam("workflowGraphXml") String workflowGraphXml){
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.updateWorkflow(workflowName, workflowGraphXml);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (UserWorkflowAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("get/workflowgraph")
@Produces(MediaType.TEXT_PLAIN)
public Response getWorkflowGraphXML(@QueryParam("workflowName") String workflowName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
String workflowGraphXML = airavataRegistry.getWorkflowGraphXML(workflowName);
if (workflowGraphXML != null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowGraphXML);
return builder.build();
}else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (UserWorkflowDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("get/workflows")
@Produces(MediaType.TEXT_PLAIN)
public Response getWorkflows() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
Map<String, String> workflows = airavataRegistry.getWorkflows();
WorkflowList workflowList = new WorkflowList();
List<Workflow> workflowsModels = new ArrayList<Workflow>();
for (String workflowName : workflows.keySet()){
Workflow workflow = new Workflow();
workflow.setWorkflowName(workflowName);
workflow.setWorkflowGraph(workflows.get(workflowName));
workflowsModels.add(workflow);
}
workflowList.setWorkflowList(workflowsModels);
if(workflows.size() != 0 ){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("remove/workflow")
@Produces(MediaType.TEXT_PLAIN)
public Response removeWorkflow(@QueryParam("workflowName") String workflowName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.removeWorkflow(workflowName);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (UserWorkflowDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
/**---------------------------------Published Workflow Registry----------------------------------**/
@GET
@Path("publishwf/exist")
@Produces(MediaType.TEXT_PLAIN)
public Response isPublishedWorkflowExists(@QueryParam("workflowname") String workflowname) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
boolean workflowExists = airavataRegistry.isPublishedWorkflowExists(workflowname);
if (workflowExists){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity("True");
return builder.build();
}else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
builder.entity("False");
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("publish/workflow")
@Produces(MediaType.TEXT_PLAIN)
public Response publishWorkflow(@FormParam("workflowName") String workflowName,
@FormParam("publishWorkflowName") String publishWorkflowName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.publishWorkflow(workflowName, publishWorkflowName);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (UserWorkflowDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (PublishedWorkflowAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@POST
@Path("publish/default/workflow")
@Produces(MediaType.TEXT_PLAIN)
public Response publishWorkflow(@FormParam("workflowName") String workflowName){
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.publishWorkflow(workflowName);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (UserWorkflowDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (PublishedWorkflowAlreadyExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("get/publishworkflowgraph")
@Produces(MediaType.TEXT_PLAIN)
public Response getPublishedWorkflowGraphXML(@QueryParam("workflowName") String workflowName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
String publishedWorkflowGraphXML = airavataRegistry.getPublishedWorkflowGraphXML(workflowName);
if (publishedWorkflowGraphXML !=null){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(publishedWorkflowGraphXML);
return builder.build();
}else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (PublishedWorkflowDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("get/publishworkflownames")
@Produces(MediaType.TEXT_PLAIN)
public Response getPublishedWorkflowNames() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
List<String> publishedWorkflowNames = airavataRegistry.getPublishedWorkflowNames();
PublishWorkflowNamesList publishWorkflowNamesList = new PublishWorkflowNamesList();
publishWorkflowNamesList.setPublishWorkflowNames(publishedWorkflowNames);
if (publishedWorkflowNames.size() != 0){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(publishWorkflowNamesList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("get/publishworkflows")
@Produces(MediaType.TEXT_PLAIN)
public Response getPublishedWorkflows() {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
Map<String, String> publishedWorkflows = airavataRegistry.getPublishedWorkflows();
WorkflowList workflowList = new WorkflowList();
List<Workflow> workflowsModels = new ArrayList<Workflow>();
for (String workflowName : publishedWorkflows.keySet()){
Workflow workflow = new Workflow();
workflow.setWorkflowName(workflowName);
workflow.setWorkflowGraph(publishedWorkflows.get(workflowName));
workflowsModels.add(workflow);
}
workflowList.setWorkflowList(workflowsModels);
if(publishedWorkflows.size() != 0 ){
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
builder.entity(workflowList);
return builder.build();
} else {
Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
return builder.build();
}
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
@GET
@Path("remove/publishworkflow")
@Produces(MediaType.TEXT_PLAIN)
public Response removePublishedWorkflow(@QueryParam("workflowName") String workflowName) {
airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
try{
airavataRegistry.removePublishedWorkflow(workflowName);
Response.ResponseBuilder builder = Response.status(Response.Status.OK);
return builder.build();
} catch (PublishedWorkflowDoesNotExistsException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
} catch (RegistryException e) {
Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
builder.entity(e.getMessage());
return builder.build();
}
}
}