Search in sources :

Example 6 with ExperimentStatusChangeEvent

use of org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent in project airavata by apache.

the class RabbitMQListener method getMessageHandler.

private static MessageHandler getMessageHandler(final BufferedWriter bw) {
    return message -> {
        try {
            long latency = System.currentTimeMillis() - message.getUpdatedTime().getTime();
            bw.write(message.getMessageId() + " :" + latency);
            bw.newLine();
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (message.getType().equals(MessageType.EXPERIMENT)) {
            try {
                ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent();
                TBase messageEvent = message.getEvent();
                byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
                ThriftUtils.createThriftFromBytes(bytes, event);
                System.out.println(" Message Received with message id '" + message.getMessageId() + "' and with message type '" + message.getType() + "' and with state : '" + event.getState().toString() + " for Gateway " + event.getGatewayId());
            } catch (TException e) {
                logger.error(e.getMessage(), e);
            }
        } else if (message.getType().equals(MessageType.PROCESS)) {
        /*try {
                            WorkflowNodeStatusChangeEvent event = new WorkflowNodeStatusChangeEvent();
                            TBase messageEvent = message.getEvent();
                            byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
                            ThriftUtils.createThriftFromBytes(bytes, event);
                            System.out.println(" Message Received with message id '" + message.getMessageId()
                                    + "' and with message type '" + message.getType() + "' and with state : '" + event.getState().toString() +
                                    " for Gateway " + event.getWorkflowNodeIdentity().getGatewayId());
                        } catch (TException e) {
                            logger.error(e.getMessage(), e);
                        }*/
        } else if (message.getType().equals(MessageType.TASK)) {
            try {
                TaskStatusChangeEvent event = new TaskStatusChangeEvent();
                TBase messageEvent = message.getEvent();
                byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
                ThriftUtils.createThriftFromBytes(bytes, event);
                System.out.println(" Message Received with message id '" + message.getMessageId() + "' and with message type '" + message.getType() + "' and with state : '" + event.getState().toString() + " for Gateway " + event.getTaskIdentity().getGatewayId());
            } catch (TException e) {
                logger.error(e.getMessage(), e);
            }
        } else if (message.getType().equals(MessageType.JOB)) {
            try {
                JobStatusChangeEvent event = new JobStatusChangeEvent();
                TBase messageEvent = message.getEvent();
                byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
                ThriftUtils.createThriftFromBytes(bytes, event);
                System.out.println(" Message Received with message id '" + message.getMessageId() + "' and with message type '" + message.getType() + "' and with state : '" + event.getState().toString() + " for Gateway " + event.getJobIdentity().getGatewayId());
            } catch (TException e) {
                logger.error(e.getMessage(), e);
            }
        }
    };
}
Also used : MessageType(org.apache.airavata.model.messaging.event.MessageType) Type(org.apache.airavata.messaging.core.Type) Options(org.apache.commons.cli.Options) LoggerFactory(org.slf4j.LoggerFactory) TaskStatusChangeEvent(org.apache.airavata.model.messaging.event.TaskStatusChangeEvent) ArrayList(java.util.ArrayList) ServerSettings(org.apache.airavata.common.utils.ServerSettings) CommandLine(org.apache.commons.cli.CommandLine) OutputStreamWriter(java.io.OutputStreamWriter) PosixParser(org.apache.commons.cli.PosixParser) TBase(org.apache.thrift.TBase) MessagingFactory(org.apache.airavata.messaging.core.MessagingFactory) ExperimentStatusChangeEvent(org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent) Logger(org.slf4j.Logger) CommandLineParser(org.apache.commons.cli.CommandLineParser) BufferedWriter(java.io.BufferedWriter) TException(org.apache.thrift.TException) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) ThriftUtils(org.apache.airavata.common.utils.ThriftUtils) File(java.io.File) MessageHandler(org.apache.airavata.messaging.core.MessageHandler) List(java.util.List) JobStatusChangeEvent(org.apache.airavata.model.messaging.event.JobStatusChangeEvent) ParseException(org.apache.commons.cli.ParseException) ApplicationSettingsException(org.apache.airavata.common.exception.ApplicationSettingsException) Subscriber(org.apache.airavata.messaging.core.Subscriber) TException(org.apache.thrift.TException) TaskStatusChangeEvent(org.apache.airavata.model.messaging.event.TaskStatusChangeEvent) ExperimentStatusChangeEvent(org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent) JobStatusChangeEvent(org.apache.airavata.model.messaging.event.JobStatusChangeEvent) TBase(org.apache.thrift.TBase) IOException(java.io.IOException)

Example 7 with ExperimentStatusChangeEvent

use of org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent in project airavata by apache.

the class ExperimentExecution method processMessage.

private void processMessage(MessageContext message) {
    if (message.getType().equals(MessageType.EXPERIMENT)) {
        try {
            ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent();
            TBase messageEvent = message.getEvent();
            byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
            ThriftUtils.createThriftFromBytes(bytes, event);
            ExperimentState expState = event.getState();
            String expId = event.getExperimentId();
            String gatewayId = event.getGatewayId();
            if (expState.equals(ExperimentState.COMPLETED)) {
                resultWriter.println("Results for experiment : " + expId + " of gateway Id : " + gatewayId);
                resultWriter.println("=====================================================================");
                resultWriter.println("Status : " + ExperimentState.COMPLETED.toString());
                // check file transfers
                List<OutputDataObjectType> experimentOutputs = airavata.getExperimentOutputs(authzToken, expId);
                int i = 1;
                for (OutputDataObjectType output : experimentOutputs) {
                    System.out.println("################ Experiment : " + expId + " COMPLETES ###################");
                    System.out.println("Output " + i + " : " + output.getValue());
                    resultWriter.println("Output " + i + " : " + output.getValue());
                    i++;
                }
                resultWriter.println("End of Results for Experiment : " + expId);
                resultWriter.println("=====================================================================");
            } else if (expState.equals(ExperimentState.FAILED)) {
                resultWriter.println("Results for experiment : " + expId + " of gateway Id : " + gatewayId);
                resultWriter.println("=====================================================================");
                int j = 1;
                resultWriter.println("Status : " + ExperimentState.FAILED.toString());
                System.out.println("################ Experiment : " + expId + " FAILED ###################");
                ExperimentModel experiment = airavata.getExperiment(authzToken, expId);
                List<ErrorModel> errors = experiment.getErrors();
                if (errors != null && !errors.isEmpty()) {
                    for (ErrorModel errorDetails : errors) {
                        System.out.println(errorDetails.getActualErrorMessage());
                        resultWriter.println("Actual Error : " + j + " : " + errorDetails.getActualErrorMessage());
                        resultWriter.println("User Friendly Message : " + j + " : " + errorDetails.getUserFriendlyMessage());
                    }
                }
                resultWriter.println("End of Results for Experiment : " + expId);
                resultWriter.println("=====================================================================");
            }
        } catch (TException e) {
            logger.error(e.getMessage(), e);
        }
    } else if (message.getType().equals(MessageType.JOB)) {
        try {
            JobStatusChangeEvent event = new JobStatusChangeEvent();
            TBase messageEvent = message.getEvent();
            byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
            ThriftUtils.createThriftFromBytes(bytes, event);
        } catch (TException e) {
            logger.error(e.getMessage(), e);
        }
    }
    resultWriter.flush();
}
Also used : TException(org.apache.thrift.TException) JobStatusChangeEvent(org.apache.airavata.model.messaging.event.JobStatusChangeEvent) ExperimentModel(org.apache.airavata.model.experiment.ExperimentModel) ExperimentState(org.apache.airavata.model.status.ExperimentState) OutputDataObjectType(org.apache.airavata.model.application.io.OutputDataObjectType) ExperimentStatusChangeEvent(org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent) ErrorModel(org.apache.airavata.model.commons.ErrorModel) TBase(org.apache.thrift.TBase)

Aggregations

ExperimentStatusChangeEvent (org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent)7 JobStatusChangeEvent (org.apache.airavata.model.messaging.event.JobStatusChangeEvent)5 TaskStatusChangeEvent (org.apache.airavata.model.messaging.event.TaskStatusChangeEvent)4 TException (org.apache.thrift.TException)4 MessageContext (org.apache.airavata.messaging.core.MessageContext)3 TBase (org.apache.thrift.TBase)3 AiravataException (org.apache.airavata.common.exception.AiravataException)2 ApplicationSettingsException (org.apache.airavata.common.exception.ApplicationSettingsException)2 JobIdentifier (org.apache.airavata.model.messaging.event.JobIdentifier)2 ProcessStatusChangeEvent (org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent)2 TaskOutputChangeEvent (org.apache.airavata.model.messaging.event.TaskOutputChangeEvent)2 BufferedWriter (java.io.BufferedWriter)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 IOException (java.io.IOException)1 OutputStreamWriter (java.io.OutputStreamWriter)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 ServerSettings (org.apache.airavata.common.utils.ServerSettings)1 ThriftUtils (org.apache.airavata.common.utils.ThriftUtils)1