You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ya...@apache.org on 2026/04/01 19:04:49 UTC
(airavata) 16/49: fix: resolve all 200 compilation errors in airavata-api module
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a commit to branch feat/grpc-armeria-migration
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 787bea54c8a2c234f9cd8dff4f0ea05b8f40b917
Author: yasithdev <ya...@icloud.com>
AuthorDate: Tue Mar 31 11:57:32 2026 -0400
fix: resolve all 200 compilation errors in airavata-api module
Migrate remaining Thrift patterns to proto across 50 files:
- Replace Thrift constructors + setters with proto builders
- Update imports from non-proto to proto packages (.proto suffix)
- Replace ThriftUtils serialization with proto parseFrom/toByteArray
- Fix proto enum names (e.g., JobState.UNKNOWN -> JOB_STATE_UNKNOWN)
- Fix proto repeated field accessors (getX -> getXList, getXCount)
- Fix proto boolean accessors (isX -> getX)
- Fix Helix TaskState enum references (not proto TaskState)
- Replace TException with Exception in throws clauses
- Handle DuplicateEntryException as non-throwable proto message
- Add proto UserProfile overload to ThriftDataModelConversion
---
.../compute/repository/ParserRepository.java | 4 +-
.../credential/service/CredentialService.java | 4 +-
.../credential/service/SSHAccountService.java | 2 +-
.../service/provisioning/SSHAccountManager.java | 39 +++---
.../execution/handler/RegistryServerHandler.java | 2 +-
.../handler/RegistryServiceDBEventHandler.java | 29 ++--
.../RegistryServiceDBEventMessagingFactory.java | 16 ++-
.../airavata/execution/mapper/ExecutionMapper.java | 8 +-
.../monitor/AiravataCustomMailParser.java | 2 +-
.../airavata/execution/monitor/LSFEmailParser.java | 2 +-
.../airavata/execution/monitor/MonitoringJob.java | 2 +-
.../airavata/execution/monitor/PBSEmailParser.java | 2 +-
.../execution/monitor/RealtimeJobStatusParser.java | 2 +-
.../execution/monitor/SLURMEmailParser.java | 2 +-
.../airavata/execution/monitor/UGEEmailParser.java | 2 +-
.../orchestrator/OrchestratorClientFactory.java | 6 +-
.../orchestrator/PostWorkflowManager.java | 2 +-
.../execution/orchestrator/PreWorkflowManager.java | 24 +---
.../execution/orchestrator/QueueOperator.java | 2 +-
.../orchestrator/SimpleOrchestratorImpl.java | 2 +-
.../execution/orchestrator/WorkflowManager.java | 11 +-
.../execution/orchestrator/WorkflowOperator.java | 2 +-
.../execution/repository/ExperimentRepository.java | 4 +-
.../scheduler/ExponentialBackOffReScheduler.java | 3 +-
.../execution/service/ExperimentService.java | 34 ++---
.../execution/task/WorkflowCancellationTask.java | 4 +-
.../execution/util/AppCatalogDBInitConfig.java | 7 +-
.../execution/util/ExpCatalogDBInitConfig.java | 18 +--
.../execution/util/ExperimentModelUtil.java | 2 +-
.../airavata/execution/util/QueryConstants.java | 7 +-
.../messaging/handler/DBEventMessageHandler.java | 10 +-
.../messaging/handler/ExperimentConsumer.java | 23 ++--
.../messaging/handler/MessageConsumer.java | 19 +--
.../messaging/handler/ProcessConsumer.java | 26 ++--
.../messaging/handler/RabbitMQListener.java | 72 +++-------
.../airavata/messaging/handler/StatusConsumer.java | 57 ++++----
.../airavata/messaging/handler/TestClient.java | 20 +--
.../airavata/messaging/service/EventPublisher.java | 21 +--
.../messaging/service/RabbitMQPublisher.java | 47 +++----
.../messaging/util/DBEventPublisherUtils.java | 48 ++++---
.../security/service/GatewayGroupsInitializer.java | 25 ++--
.../security/service/KeyCloakSecurityManager.java | 6 +-
.../handler/SharingServiceDBEventHandler.java | 43 +++---
.../airavata/sharing/service/SharingHelper.java | 4 +-
.../sharing/util/AiravataDataMigrator.java | 147 ++++++++++-----------
.../sharing/util/ThriftDataModelConversion.java | 11 ++
.../storage/task/InputDataStagingTask.java | 2 +-
.../storage/task/OutputDataStagingTask.java | 6 +-
.../airavata/storage/util/SSHJStorageAdaptor.java | 6 +-
.../storage/util/StorageResourceAdaptorImpl.java | 2 +-
50 files changed, 378 insertions(+), 463 deletions(-)
diff --git a/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java b/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
index c6ce1310c7..204517d988 100644
--- a/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
+++ b/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
@@ -56,14 +56,14 @@ public class ParserRepository extends AbstractRepository<Parser, ParserEntity, S
ParserEntity parserEntity = ComputeMapper.INSTANCE.parserToEntity(parser);
if (!parser.getInputFilesList().isEmpty()) {
- parserEntity.getInputFilesList().forEach(input -> {
+ parserEntity.getInputFiles().forEach(input -> {
input.setParser(parserEntity);
input.setParserId(parserEntity.getId());
});
}
if (!parser.getOutputFilesList().isEmpty()) {
- parserEntity.getOutputFilesList().forEach(output -> {
+ parserEntity.getOutputFiles().forEach(output -> {
output.setParser(parserEntity);
output.setParserId(parserEntity.getId());
});
diff --git a/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java b/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
index d3089d4056..0e7dac2013 100644
--- a/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
+++ b/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
@@ -30,8 +30,8 @@ import org.apache.airavata.model.credential.store.CredentialSummary;
import org.apache.airavata.model.credential.store.PasswordCredential;
import org.apache.airavata.model.credential.store.SSHCredential;
import org.apache.airavata.model.credential.store.SummaryType;
-import org.apache.airavata.model.group.ResourcePermissionType;
-import org.apache.airavata.model.group.ResourceType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
+import org.apache.airavata.model.group.proto.ResourceType;
import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
import org.apache.airavata.sharing.registry.models.Entity;
import org.apache.airavata.sharing.registry.models.EntitySearchField;
diff --git a/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java b/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
index 824b70c99d..e8d3fea8c4 100644
--- a/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
+++ b/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
@@ -23,7 +23,7 @@ import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
import org.apache.airavata.credential.service.provisioning.SSHAccountManager;
import org.apache.airavata.execution.service.RequestContext;
import org.apache.airavata.execution.service.ServiceException;
-import org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
import org.apache.airavata.model.credential.store.SSHCredential;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java b/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
index c662b292d0..3e9fa9835f 100644
--- a/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
+++ b/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
@@ -27,12 +27,12 @@ import java.util.stream.Collectors;
import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
import org.apache.airavata.credential.store.cpi.CredentialStoreService;
import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.proto.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.proto.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.proto.SSHJobSubmission;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.ComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
import org.apache.airavata.model.credential.store.PasswordCredential;
import org.apache.airavata.model.credential.store.SSHCredential;
import org.apache.airavata.registry.api.exception.RegistryServiceException;
@@ -73,7 +73,7 @@ public class SSHAccountManager {
try {
computeResourcePreference =
registryServiceClient.getGatewayComputeResourcePreference(gatewayId, computeResourceId);
- } catch (TException e) {
+ } catch (Exception e) {
throw new RuntimeException(
"Failed to get ComputeResourcePreference for [" + gatewayId + "] and [" + computeResourceId + "]: "
+ e.getMessage(),
@@ -81,7 +81,7 @@ public class SSHAccountManager {
}
// get the account provisioner and config values for the preferences
- if (!computeResourcePreference.isSetSshAccountProvisioner()) {
+ if (computeResourcePreference.getSshAccountProvisioner().isEmpty()) {
throw new InvalidSetupException("Compute resource [" + computeResourceId
+ "] does not have an SSH Account Provisioner configured for it.");
}
@@ -120,14 +120,14 @@ public class SSHAccountManager {
computeResourceDescription = registryServiceClient.getComputeResource(computeResourceId);
// Find the SSHJobSubmission
for (JobSubmissionInterface jobSubmissionInterface :
- computeResourceDescription.getJobSubmissionInterfaces()) {
+ computeResourceDescription.getJobSubmissionInterfacesList()) {
if (jobSubmissionInterface.getJobSubmissionProtocol() == JobSubmissionProtocol.SSH) {
sshJobSubmission = registryServiceClient.getSSHJobSubmission(
jobSubmissionInterface.getJobSubmissionInterfaceId());
break;
}
}
- } catch (TException e) {
+ } catch (Exception e) {
throw new RuntimeException(
"Failed to retrieve compute resource information for [" + gatewayId + "] and " + "["
+ computeResourceId + "]: " + e.getMessage(),
@@ -140,7 +140,7 @@ public class SSHAccountManager {
}
// get the account provisioner and config values for the preferences
- if (!computeResourcePreference.isSetSshAccountProvisioner()) {
+ if (computeResourcePreference.getSshAccountProvisioner().isEmpty()) {
throw new InvalidSetupException("Compute resource [" + computeResourceId
+ "] does not have an SSH Account Provisioner " + "configured for it.");
}
@@ -205,17 +205,18 @@ public class SSHAccountManager {
e);
}
- UserComputeResourcePreference userComputeResourcePreference = new UserComputeResourcePreference();
- userComputeResourcePreference.setComputeResourceId(computeResourceId);
- userComputeResourcePreference.setLoginUserName(username);
- userComputeResourcePreference.setScratchLocation(scratchLocation);
- userComputeResourcePreference.setValidated(true);
+ UserComputeResourcePreference userComputeResourcePreference = UserComputeResourcePreference.newBuilder()
+ .setComputeResourceId(computeResourceId)
+ .setLoginUserName(username)
+ .setScratchLocation(scratchLocation)
+ .setValidated(true)
+ .build();
return userComputeResourcePreference;
}
private static String getSSHHostname(
ComputeResourceDescription computeResourceDescription, SSHJobSubmission sshJobSubmission) {
- String alternativeSSHHostName = sshJobSubmission.getAlternativeSSHHostName();
+ String alternativeSSHHostName = sshJobSubmission.getAlternativeSshHostName();
if (alternativeSSHHostName != null && !"".equals(alternativeSSHHostName.trim())) {
return alternativeSSHHostName;
} else {
@@ -227,7 +228,7 @@ public class SSHAccountManager {
String gatewayId, ComputeResourcePreference computeResourcePreference) throws InvalidSetupException {
String provisionerName = computeResourcePreference.getSshAccountProvisioner();
Map<ConfigParam, String> provisionerConfig =
- convertConfigParams(provisionerName, computeResourcePreference.getSshAccountProvisionerConfig());
+ convertConfigParams(provisionerName, computeResourcePreference.getSshAccountProvisionerConfigMap());
Map<ConfigParam, String> resolvedConfig =
resolveProvisionerConfig(gatewayId, provisionerName, provisionerConfig);
@@ -253,7 +254,7 @@ public class SSHAccountManager {
+ "] for provisioner [" + provisionerName + "].");
}
resolvedConfig.put(configEntry.getKey(), password.getPassword());
- } catch (TException e) {
+ } catch (Exception e) {
throw new RuntimeException("Failed to get password needed to configure " + provisionerName, e);
}
} else {
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
index de12be6763..a2ccf82386 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
@@ -1069,7 +1069,7 @@ public class RegistryServerHandler {
}
public int getJobCount(
- org.apache.airavata.model.status.JobStatus jobStatus, String gatewayId, double searchBackTimeInMinutes)
+ JobStatus jobStatus, String gatewayId, double searchBackTimeInMinutes)
throws RegistryServiceException, Exception {
List<JobStatus> jobStatusList = jobStatusRepository.getDistinctListofJobStatus(
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
index 6552b1854e..25cd3e8dd4 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
@@ -22,7 +22,7 @@ package org.apache.airavata.execution.handler;
import java.util.List;
import org.apache.airavata.common.exception.AiravataException;
import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
import org.apache.airavata.messaging.util.DBEventPublisherUtils;
@@ -31,7 +31,6 @@ import org.apache.airavata.model.dbevent.proto.CrudType;
import org.apache.airavata.model.dbevent.proto.DBEventMessage;
import org.apache.airavata.model.dbevent.proto.DBEventPublisherContext;
import org.apache.airavata.model.dbevent.proto.EntityType;
-import org.apache.airavata.model.error.proto.DuplicateEntryException;
import org.apache.airavata.model.user.proto.UserProfile;
import org.apache.airavata.model.workspace.proto.Gateway;
import org.apache.airavata.model.workspace.proto.Project;
@@ -58,10 +57,8 @@ public class RegistryServiceDBEventHandler implements MessageHandler {
logger.info("RegistryServiceDBEventHandler | Received a new message!");
try {
- // construct dbeventmessage thrift datamodel
- byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent());
- DBEventMessage dbEventMessage = new DBEventMessage();
- ThriftUtils.createThriftFromBytes(bytes, dbEventMessage);
+ // parse proto dbeventmessage from event
+ DBEventMessage dbEventMessage = (DBEventMessage) messageContext.getEvent();
logger.info("RegistryService received db-event-message from publisher: "
+ dbEventMessage.getPublisherService());
@@ -78,8 +75,7 @@ public class RegistryServiceDBEventHandler implements MessageHandler {
// Gateway related operations
case TENANT: {
// construct gateway datamodel from message
- Gateway gateway = new Gateway();
- ThriftUtils.createThriftFromBytes(publisherContext.getEntityDataModel(), gateway);
+ Gateway gateway = Gateway.parseFrom(publisherContext.getEntityDataModel());
// call service-methods based on CRUD type
switch (publisherContext.getCrudType()) {
@@ -119,8 +115,7 @@ public class RegistryServiceDBEventHandler implements MessageHandler {
// UserProfile related operations
case USER_PROFILE: {
// construct userprofile datamodel from message
- UserProfile userProfile = new UserProfile();
- ThriftUtils.createThriftFromBytes(publisherContext.getEntityDataModel(), userProfile);
+ UserProfile userProfile = UserProfile.parseFrom(publisherContext.getEntityDataModel());
// call service-methods based on CRUD type
switch (publisherContext.getCrudType()) {
@@ -169,11 +164,13 @@ public class RegistryServiceDBEventHandler implements MessageHandler {
}
}
- } catch (DuplicateEntryException ex) {
- // log this exception and proceed (do nothing)
- // this exception is thrown mostly when messages are re-consumed, hence ignore
- logger.warn("DuplicateEntryException while consuming db-event message, ex: " + ex.getMessage(), ex);
} catch (Exception ex) {
+ if (ex.getMessage() != null && ex.getMessage().contains("DuplicateEntry")) {
+ // log this exception and proceed (do nothing)
+ // this exception is thrown mostly when messages are re-consumed, hence ignore
+ logger.warn("DuplicateEntryException while consuming db-event message, ex: " + ex.getMessage(), ex);
+ return;
+ }
throw ex;
}
// send ack for received message
@@ -182,10 +179,6 @@ public class RegistryServiceDBEventHandler implements MessageHandler {
RegistryServiceDBEventMessagingFactory.getDBEventSubscriber().sendAck(messageContext.getDeliveryTag());
} catch (Exception ex) {
logger.error("Error processing message: " + ex, ex);
- } catch (ApplicationSettingsException ex) {
- logger.error("Error fetching application settings: " + ex, ex);
- } catch (AiravataException ex) {
- logger.error("Error sending ack. Message Delivery Tag: " + messageContext.getDeliveryTag(), ex);
} catch (Throwable t) {
// Catch all exceptions types otherwise RabbitMQ's DefaultExceptionHandler will close the channel
logger.error("Failed to handle message: " + t, t);
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
index b9e51dac46..3cc0f04eba 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
@@ -79,12 +79,18 @@ public class RegistryServiceDBEventMessagingFactory {
logger.info("Sending service discovery message. Publisher: " + publisher + ", Subscriber: "
+ DBEventService.REGISTRY.toString());
- DBEventSubscriber dbEventSubscriber = new DBEventSubscriber(DBEventService.REGISTRY.toString());
- DBEventMessageContext dbEventMessageContext = new DBEventMessageContext();
- dbEventMessageContext.setSubscriber(dbEventSubscriber);
+ DBEventSubscriber dbEventSubscriber = DBEventSubscriber.newBuilder()
+ .setSubscriberService(DBEventService.REGISTRY.toString())
+ .build();
+ DBEventMessageContext dbEventMessageContext = DBEventMessageContext.newBuilder()
+ .setSubscriber(dbEventSubscriber)
+ .build();
- DBEventMessage dbEventMessage =
- new DBEventMessage(DBEventType.SUBSCRIBER, dbEventMessageContext, publisher);
+ DBEventMessage dbEventMessage = DBEventMessage.newBuilder()
+ .setDbEventType(DBEventType.SUBSCRIBER)
+ .setMessageContext(dbEventMessageContext)
+ .setPublisherService(publisher)
+ .build();
MessageContext messageContext = new MessageContext(dbEventMessage, MessageType.DB_EVENT, "", "");
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java b/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
index 297b0ec220..c8869f0011 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
@@ -58,7 +58,7 @@ public interface ExecutionMapper {
ExecutionMapper INSTANCE = Mappers.getMapper(ExecutionMapper.class);
// --- Experiment ---
- @Mapping(target = "emailAddressesList", expression = "java(csvToList(entity.getEmailAddresses()))")
+ @Mapping(target = "emailAddressesList", ignore = true)
ExperimentModel experimentToModel(ExperimentEntity entity);
@Mapping(target = "emailAddresses", expression = "java(listToCsv(model.getEmailAddressesList()))")
@@ -70,7 +70,7 @@ public interface ExecutionMapper {
ExperimentSummaryEntity experimentSummaryToEntity(ExperimentSummaryModel model);
// --- Process ---
- @Mapping(target = "emailAddressesList", expression = "java(csvToList(entity.getEmailAddresses()))")
+ @Mapping(target = "emailAddressesList", ignore = true)
ProcessModel processToModel(ProcessEntity entity);
@Mapping(target = "emailAddresses", expression = "java(listToCsv(model.getEmailAddressesList()))")
@@ -194,7 +194,7 @@ public interface ExecutionMapper {
// Map flattened scheduling fields into nested ComputationalResourceSchedulingModel
ComputationalResourceSchedulingModel scheduling = ComputationalResourceSchedulingModel.newBuilder()
.setResourceHostId(entity.getResourceHostId())
- .setTotalCpuCount(entity.getTotalCpuCount())
+ .setTotalCpuCount(entity.getTotalCPUCount())
.setNodeCount(entity.getNodeCount())
.setNumberOfThreads(entity.getNumberOfThreads())
.setQueueName(entity.getQueueName())
@@ -244,7 +244,7 @@ public interface ExecutionMapper {
if (model.hasComputationalResourceScheduling()) {
ComputationalResourceSchedulingModel scheduling = model.getComputationalResourceScheduling();
entity.setResourceHostId(scheduling.getResourceHostId());
- entity.setTotalCpuCount(scheduling.getTotalCpuCount());
+ entity.setTotalCPUCount(scheduling.getTotalCpuCount());
entity.setNodeCount(scheduling.getNodeCount());
entity.setNumberOfThreads(scheduling.getNumberOfThreads());
entity.setQueueName(scheduling.getQueueName());
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
index ed4bdceea1..4944acf070 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
@@ -72,7 +72,7 @@ public class AiravataCustomMailParser implements EmailParser {
return JobState.COMPLETE;
default:
log.error("[EJM]: Job State " + state + " isn't handle by Airavata custom parser");
- return JobState.UNKNOWN;
+ return JobState.JOB_STATE_UNKNOWN;
}
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
index 6cf29e2cda..0d8afeeb15 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
@@ -75,7 +75,7 @@ public class LSFEmailParser implements EmailParser {
case FAILED:
return JobState.FAILED;
default:
- return JobState.UNKNOWN;
+ return JobState.JOB_STATE_UNKNOWN;
}
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
index 4907bee617..ecd5a87990 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
@@ -85,7 +85,7 @@ public class MonitoringJob extends ComputeResourceMonitor implements Job {
// List<GroupComputeResourcePreference> computeResourcePreferenceList =
// groupResourceProfile.getComputePreferences();
- int size = groupResourceProfile.getComputeResourcePoliciesSize();
+ int size = groupResourceProfile.getComputeResourcePoliciesCount();
int chunkSize = size / parallelJobs;
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
index 0b4ec8652b..40a5a19b54 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
@@ -85,7 +85,7 @@ public class PBSEmailParser implements EmailParser {
case ABORTED_BY_PBS_SERVER:
return JobState.FAILED;
default:
- return JobState.UNKNOWN;
+ return JobState.JOB_STATE_UNKNOWN;
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
index 18b7af50cb..187f86aba9 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
@@ -85,7 +85,7 @@ public class RealtimeJobStatusParser {
case "QUEUED" -> JobState.QUEUED;
case "CANCELED" -> JobState.CANCELED;
case "SUSPENDED" -> JobState.SUSPENDED;
- case "UNKNOWN" -> JobState.UNKNOWN;
+ case "UNKNOWN" -> JobState.JOB_STATE_UNKNOWN;
case "NON_CRITICAL_FAIL" -> JobState.NON_CRITICAL_FAIL;
default -> null;
};
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
index 1ade838fde..08d0e62dc9 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
@@ -81,7 +81,7 @@ public class SLURMEmailParser implements EmailParser {
}
default:
log.error("[EJM]: Job State " + state + " isn't handle by SLURM parser");
- return JobState.UNKNOWN;
+ return JobState.JOB_STATE_UNKNOWN;
}
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
index 82ff8fdc97..1ff77a4d94 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
@@ -91,7 +91,7 @@ public class UGEEmailParser implements EmailParser {
case ABORTED:
return JobState.CANCELED;
default:
- return JobState.UNKNOWN;
+ return JobState.JOB_STATE_UNKNOWN;
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
index 895b47c184..c06816b51c 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
@@ -19,7 +19,6 @@
*/
package org.apache.airavata.execution.orchestrator;
-import org.apache.airavata.model.error.proto.AiravataClientException;
import org.apache.airavata.orchestrator.cpi.OrchestratorService;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
@@ -29,15 +28,14 @@ import org.apache.thrift.transport.TTransportException;
public class OrchestratorClientFactory {
- public static OrchestratorService.Client createOrchestratorClient(String serverHost, int serverPort)
- throws AiravataClientException {
+ public static OrchestratorService.Client createOrchestratorClient(String serverHost, int serverPort) {
try {
TTransport transport = new TSocket(serverHost, serverPort);
transport.open();
TProtocol protocol = new TBinaryProtocol(transport);
return new OrchestratorService.Client(protocol);
} catch (TTransportException e) {
- throw new AiravataClientException();
+ throw new RuntimeException("Failed to create orchestrator client", e);
}
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
index 835d7c59f7..aeffa8a5a7 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
@@ -403,7 +403,7 @@ public class PostWorkflowManager implements IServer {
.setExperimentId(experimentId).setGatewayId(gateway).build();
JobStatusChangeEvent jobStatusChangeEvent = JobStatusChangeEvent.newBuilder()
- .setJobState(jobStatus.getJobState()).setJobIdentity(identifier).build();
+ .setState(jobStatus.getJobState()).setJobIdentity(identifier).build();
MessageContext msgCtx = new MessageContext(
jobStatusChangeEvent, MessageType.JOB, AiravataUtils.getId(MessageType.JOB.name()), gateway);
msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
index 05e5aa5634..22a3677619 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
@@ -30,7 +30,6 @@ import org.apache.airavata.common.exception.AiravataException;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.server.CountMonitor;
import org.apache.airavata.common.server.IServer;
-import org.apache.airavata.common.util.ThriftUtils;
import org.apache.airavata.execution.task.CancelCompletingTask;
import org.apache.airavata.execution.task.CompletingTask;
import org.apache.airavata.execution.task.RemoteJobCancellationTask;
@@ -53,7 +52,6 @@ import org.apache.airavata.model.status.proto.ProcessStatus;
import org.apache.airavata.model.task.proto.TaskModel;
import org.apache.airavata.model.task.proto.TaskTypes;
import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.thrift.TBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -325,16 +323,7 @@ public class PreWorkflowManager implements IServer {
+ " and with message type: " + messageContext.getType());
if (messageContext.getType().equals(MessageType.LAUNCHPROCESS)) {
- ProcessSubmitEvent event = new ProcessSubmitEvent();
- TBase messageEvent = messageContext.getEvent();
-
- try {
- byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
- ThriftUtils.createThriftFromBytes(bytes, event);
- } catch (Exception e) {
- logger.error("Failed to fetch process submit event", e);
- subscriber.sendAck(messageContext.getDeliveryTag());
- }
+ ProcessSubmitEvent event = (ProcessSubmitEvent) messageContext.getEvent();
String processId = event.getProcessId();
String experimentId = event.getExperimentId();
@@ -364,16 +353,7 @@ public class PreWorkflowManager implements IServer {
}
} else if (messageContext.getType().equals(MessageType.TERMINATEPROCESS)) {
- ProcessTerminateEvent event = new ProcessTerminateEvent();
- TBase messageEvent = messageContext.getEvent();
-
- try {
- byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
- ThriftUtils.createThriftFromBytes(bytes, event);
- } catch (Exception e) {
- logger.error("Failed to fetch process cancellation event", e);
- subscriber.sendAck(messageContext.getDeliveryTag());
- }
+ ProcessTerminateEvent event = (ProcessTerminateEvent) messageContext.getEvent();
String processId = event.getProcessId();
String gateway = event.getGatewayId();
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
index a9f232340a..cd20b09be4 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
@@ -91,7 +91,7 @@ public class QueueOperator {
if (monitor) {
TaskState taskState = taskDriver.pollForWorkflowState(
- queueName, TaskState.TASK_STATE_COMPLETED, TaskState.TASK_STATE_FAILED, TaskState.STOPPED, TaskState.ABORTED);
+ queueName, TaskState.COMPLETED, TaskState.FAILED, TaskState.STOPPED, TaskState.ABORTED);
logger.info("Queue " + queueName + " finished with state " + taskState.name());
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
index 061276bc1c..ba21a2d9c3 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
@@ -279,7 +279,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator {
if (processModels == null || processModels.isEmpty()) {
ProcessModel processModel = ExperimentModelUtil.cloneProcessFromExperiment(experimentModel);
String processId = registryClient.addProcess(processModel, experimentId);
- processModel.setProcessId(processId);
+ processModel = processModel.toBuilder().setProcessId(processId).build();
processModels = new ArrayList<>();
processModels.add(processModel);
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
index 9eb19d9db7..0b0267ea61 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
@@ -151,11 +151,12 @@ public class WorkflowManager {
public void registerWorkflowForProcess(String processId, String workflowName, String workflowType) {
try {
- ProcessWorkflow processWorkflow = new ProcessWorkflow();
- processWorkflow.setProcessId(processId);
- processWorkflow.setWorkflowId(workflowName);
- processWorkflow.setType(workflowType);
- processWorkflow.setCreationTime(System.currentTimeMillis());
+ ProcessWorkflow processWorkflow = ProcessWorkflow.newBuilder()
+ .setProcessId(processId)
+ .setWorkflowId(workflowName)
+ .setType(workflowType)
+ .setCreationTime(System.currentTimeMillis())
+ .build();
registryHandler.addProcessWorkflow(processWorkflow);
} catch (Exception e) {
logger.error(
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
index d424981f07..1108765a1b 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
@@ -133,7 +133,7 @@ public class WorkflowOperator {
public synchronized TaskState pollForWorkflowCompletion(String workflowName, long timeout)
throws InterruptedException {
return taskDriver.pollForWorkflowState(
- workflowName, timeout, TaskState.TASK_STATE_COMPLETED, TaskState.TASK_STATE_FAILED, TaskState.STOPPED, TaskState.ABORTED);
+ workflowName, timeout, TaskState.COMPLETED, TaskState.FAILED, TaskState.STOPPED, TaskState.ABORTED);
}
public TaskState getWorkflowState(String workflow) {
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java b/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
index c6562e18d9..86674862b5 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
@@ -96,11 +96,11 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
experimentEntity.getUserConfigurationData().setExperimentId(experimentId);
}
- if (experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingListList() != null) {
+ if (experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingList() != null) {
logger.debug(
"Populating the Primary Key of UserConfigurationData.ComputationalResourceSchedulingEntities object for the Experiment");
for (ComputationalResourceSchedulingEntity entity :
- experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingListList()) {
+ experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingList()) {
entity.setExperimentId(experimentId);
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java b/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
index 911d2062b9..f0294e67da 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
@@ -125,8 +125,7 @@ public class ExponentialBackOffReScheduler implements ReScheduler {
private void updateResourceSchedulingModel(
ProcessModel processModel, ExperimentModel experimentModel, RegistryServerHandler registryClient)
- throws Exception, ExperimentNotFoundException, ApplicationSettingsException, ClassNotFoundException,
- IllegalAccessException, InstantiationException, RegistryServiceException {
+ throws Exception {
String selectionPolicyClass = ServerSettings.getComputeResourceSelectionPolicyClass();
ComputeResourceSelectionPolicy policy = (ComputeResourceSelectionPolicy)
Class.forName(selectionPolicyClass).newInstance();
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java b/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
index 9a3602dbca..68a3722b3e 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
@@ -298,15 +298,15 @@ public class ExperimentService {
}
ExperimentStatus status = registryHandler.getExperimentStatus(experimentId);
switch (status.getState()) {
- case COMPLETED:
- case CANCELED:
- case FAILED:
- case CANCELING:
+ case EXPERIMENT_STATE_COMPLETED:
+ case EXPERIMENT_STATE_CANCELED:
+ case EXPERIMENT_STATE_FAILED:
+ case EXPERIMENT_STATE_CANCELING:
logger.warn(
"Can't terminate already {} experiment",
status.getState().name());
return;
- case CREATED:
+ case EXPERIMENT_STATE_CREATED:
logger.warn("Experiment termination is only allowed for launched experiments.");
return;
default:
@@ -340,7 +340,7 @@ public class ExperimentService {
}
if (newExperimentProjectId != null) {
- existingExperiment.setProjectId(newExperimentProjectId);
+ existingExperiment = existingExperiment.toBuilder().setProjectId(newExperimentProjectId).build();
}
// Verify write access to target project
@@ -608,8 +608,8 @@ public class ExperimentService {
}
// For backwards compatibility, if there is no groupResourceProfileId, pick one
- if (!experiment.getUserConfigurationData().isSetGroupResourceProfileId()) {
- List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>
+ if (experiment.getUserConfigurationData().getGroupResourceProfileId().isEmpty()) {
+ List<org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupResourceProfile>
accessibleGroupResourceProfiles = groupResourceProfileService != null
? groupResourceProfileService.getGroupResourceList(ctx, gatewayId)
: List.of();
@@ -620,8 +620,10 @@ public class ExperimentService {
"Experiment {} doesn't have groupResourceProfileId, picking first one user has access to: {}",
experimentId,
groupResourceProfileId);
- experiment.getUserConfigurationData().setGroupResourceProfileId(groupResourceProfileId);
- registryHandler.updateExperimentConfiguration(experimentId, experiment.getUserConfigurationData());
+ UserConfigurationDataModel updatedConfig = experiment.getUserConfigurationData().toBuilder()
+ .setGroupResourceProfileId(groupResourceProfileId).build();
+ registryHandler.updateExperimentConfiguration(experimentId, updatedConfig);
+ experiment = experiment.toBuilder().setUserConfigurationData(updatedConfig).build();
} else {
throw new ServiceAuthorizationException("User " + ctx.getUserId() + " in gateway " + gatewayId
+ " doesn't have access to any group resource profiles.");
@@ -642,11 +644,11 @@ public class ExperimentService {
// Verify user has READ access to Application Deployment
final String appInterfaceId = experiment.getExecutionId();
- org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription
+ org.apache.airavata.model.appcatalog.appinterface.proto.ApplicationInterfaceDescription
applicationInterfaceDescription = registryHandler.getApplicationInterface(appInterfaceId);
- List<String> appModuleIds = applicationInterfaceDescription.getApplicationModules();
+ List<String> appModuleIds = applicationInterfaceDescription.getApplicationModulesList();
String appModuleId = appModuleIds.get(0);
- List<org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription>
+ List<org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription>
applicationDeploymentDescriptions = registryHandler.getApplicationDeployments(appModuleId);
if (!experiment.getUserConfigurationData().getAiravataAutoSchedule()) {
@@ -654,7 +656,7 @@ public class ExperimentService {
.getUserConfigurationData()
.getComputationalResourceScheduling()
.getResourceHostId();
- Optional<org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription>
+ Optional<org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription>
appDeployment = applicationDeploymentDescriptions.stream()
.filter(dep -> dep.getComputeHostId().equals(resourceHostId))
.findFirst();
@@ -674,9 +676,9 @@ public class ExperimentService {
.getUserConfigurationData()
.getAutoScheduledCompResourceSchedulingListList()
.isEmpty()) {
- for (org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel crScheduling :
+ for (org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel crScheduling :
experiment.getUserConfigurationData().getAutoScheduledCompResourceSchedulingListList()) {
- Optional<org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription>
+ Optional<org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription>
appDeployment = applicationDeploymentDescriptions.stream()
.filter(dep -> dep.getComputeHostId().equals(crScheduling.getResourceHostId()))
.findFirst();
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java b/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
index 80acc129f8..3ae5d9e548 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
@@ -118,8 +118,8 @@ public class WorkflowCancellationTask extends AbstractTask {
TaskState newWorkflowState = taskDriver.pollForWorkflowState(
cancellingWorkflowName,
waitTime * 1000,
- TaskState.TASK_STATE_COMPLETED,
- TaskState.TASK_STATE_FAILED,
+ TaskState.COMPLETED,
+ TaskState.FAILED,
TaskState.STOPPED,
TaskState.ABORTED,
TaskState.NOT_STARTED);
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java b/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
index c98b84cbb5..50df908c00 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
@@ -54,9 +54,10 @@ public class AppCatalogDBInitConfig implements DBInitConfig {
GwyResourceProfileRepository gwyResourceProfileRepository = new GwyResourceProfileRepository();
try {
- GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
- gatewayResourceProfile.setGatewayID(ServerSettings.getDefaultUserGateway());
- if (!gwyResourceProfileRepository.isGatewayResourceProfileExists(gatewayResourceProfile.getGatewayID())) {
+ GatewayResourceProfile gatewayResourceProfile = GatewayResourceProfile.newBuilder()
+ .setGatewayId(ServerSettings.getDefaultUserGateway())
+ .build();
+ if (!gwyResourceProfileRepository.isGatewayResourceProfileExists(gatewayResourceProfile.getGatewayId())) {
gwyResourceProfileRepository.addGatewayResourceProfile(gatewayResourceProfile);
}
} catch (Exception e) {
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
index d22e0f14a4..00ac6c652d 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
@@ -60,20 +60,22 @@ public class ExpCatalogDBInitConfig implements DBInitConfig {
GatewayRepository gatewayRepository = new GatewayRepository();
String defaultGatewayId = ServerSettings.getDefaultUserGateway();
if (!gatewayRepository.isGatewayExist(defaultGatewayId)) {
- Gateway gateway = new Gateway();
- gateway.setGatewayId(defaultGatewayId);
- gateway.setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED);
- gateway.setOauthClientId(ServerSettings.getSetting("default.registry.oauth.client.id"));
- gateway.setOauthClientSecret(ServerSettings.getSetting("default.registry.oauth.client.secret"));
+ Gateway gateway = Gateway.newBuilder()
+ .setGatewayId(defaultGatewayId)
+ .setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED)
+ .setOauthClientId(ServerSettings.getSetting("default.registry.oauth.client.id"))
+ .setOauthClientSecret(ServerSettings.getSetting("default.registry.oauth.client.secret"))
+ .build();
gatewayRepository.addGateway(gateway);
}
UserRepository userRepository = new UserRepository();
String defaultUsername = ServerSettings.getDefaultUser();
if (!userRepository.isUserExists(defaultGatewayId, defaultUsername)) {
- UserProfile defaultUser = new UserProfile();
- defaultUser.setUserId(defaultUsername);
- defaultUser.setGatewayId(defaultGatewayId);
+ UserProfile defaultUser = UserProfile.newBuilder()
+ .setUserId(defaultUsername)
+ .setGatewayId(defaultGatewayId)
+ .build();
userRepository.addUser(defaultUser);
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
index 7058041f1f..31fa3b670b 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
@@ -102,7 +102,7 @@ public class ExperimentModelUtil {
builder.setProcessResourceSchedule(scheduling);
builder.setComputeResourceId(scheduling.getResourceHostId());
}
- builder.setUseUserCRPref(configData.getUseUserCrPref());
+ builder.setUseUserCrPref(configData.getUseUserCrPref());
builder.setGroupResourceProfileId(configData.getGroupResourceProfileId());
}
builder.setUserName(experiment.getUserName());
diff --git a/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java b/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
index ae5b37d12f..35fc6082fc 100644
--- a/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
+++ b/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
@@ -22,7 +22,6 @@ package org.apache.airavata.execution.util;
import org.apache.airavata.compute.model.*;
import org.apache.airavata.execution.model.*;
import org.apache.airavata.execution.model.workflow.AiravataWorkflowEntity;
-import org.apache.airavata.model.user.proto.UserProfile;
import org.apache.airavata.storage.model.DataProductEntity;
import org.apache.airavata.storage.model.GridftpEndpointEntity;
import org.apache.airavata.storage.model.StoragePreferenceEntity;
@@ -32,11 +31,11 @@ import org.apache.airavata.storage.model.UserStoragePreferenceEntity;
public interface QueryConstants {
String FIND_USER_PROFILE_BY_USER_ID = "SELECT u FROM UserProfileEntity u " + "where u.userId LIKE :"
- + UserProfile._Fields.USER_ID.getFieldName() + " " + "AND u.gatewayId LIKE :"
- + UserProfile._Fields.GATEWAY_ID.getFieldName() + "";
+ + "userId" + " " + "AND u.gatewayId LIKE :"
+ + "gatewayId" + "";
String FIND_ALL_USER_PROFILES_BY_GATEWAY_ID = "SELECT u FROM UserProfileEntity u " + "where u.gatewayId LIKE :"
- + UserProfile._Fields.GATEWAY_ID.getFieldName() + "";
+ + "gatewayId" + "";
// Application Deployment Queries
String FIND_APPLICATION_DEPLOYMENTS_FOR_GATEWAY_ID =
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
index 91dcca21d2..bc8e411c61 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
@@ -23,14 +23,13 @@ import java.util.Collections;
import java.util.List;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
import org.apache.airavata.messaging.util.DBEventManagerConstants;
import org.apache.airavata.messaging.util.DBEventManagerException;
import org.apache.airavata.messaging.util.DbEventManagerZkUtils;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.dbevent.DBEventMessageContext;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.dbevent.proto.DBEventMessageContext;
import org.apache.airavata.model.messaging.event.proto.MessageType;
import org.apache.curator.framework.CuratorFramework;
import org.slf4j.Logger;
@@ -59,10 +58,7 @@ public class DBEventMessageHandler implements MessageHandler {
log.info("Incoming DB event message. Message Id : " + messageContext.getMessageId());
try {
- byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent());
-
- DBEventMessage dbEventMessage = new DBEventMessage();
- ThriftUtils.createThriftFromBytes(bytes, dbEventMessage);
+ DBEventMessage dbEventMessage = (DBEventMessage) messageContext.getEvent();
DBEventMessageContext dBEventMessageContext = dbEventMessage.getMessageContext();
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
index 3b6cc3a008..a253a01047 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
@@ -27,12 +27,10 @@ import com.rabbitmq.client.Envelope;
import java.io.IOException;
import org.apache.airavata.common.config.ServerSettings;
import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.messaging.event.*;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,19 +52,16 @@ public class ExperimentConsumer extends DefaultConsumer {
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
throws IOException {
- Message message = new Message();
-
try {
- ThriftUtils.createThriftFromBytes(body, message);
+ Message message = Message.parseFrom(body);
long deliveryTag = envelope.getDeliveryTag();
- TBase event = null;
+ Object event = null;
String gatewayId = null;
if (message.getMessageType() == MessageType.EXPERIMENT
|| message.getMessageType() == MessageType.EXPERIMENT_CANCEL) {
- ExperimentSubmitEvent experimentEvent = new ExperimentSubmitEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), experimentEvent);
+ ExperimentSubmitEvent experimentEvent = ExperimentSubmitEvent.parseFrom(message.getEvent());
log.info(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' for experimentId:" + " "
+ experimentEvent.getExperimentId());
@@ -80,8 +75,8 @@ public class ExperimentConsumer extends DefaultConsumer {
} else if (message.getMessageType() == MessageType.INTERMEDIATE_OUTPUTS) {
- ExperimentIntermediateOutputsEvent intermediateOutEvt = new ExperimentIntermediateOutputsEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), intermediateOutEvt);
+ ExperimentIntermediateOutputsEvent intermediateOutEvt =
+ ExperimentIntermediateOutputsEvent.parseFrom(message.getEvent());
log.info(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' for experimentId:" + " "
+ intermediateOutEvt.getExperimentId());
@@ -101,8 +96,8 @@ public class ExperimentConsumer extends DefaultConsumer {
deliveryTag);
sendAck(deliveryTag);
}
- } catch (TException e) {
- String msg = "Failed to de-serialize the thrift message, from routing keys:" + envelope.getRoutingKey();
+ } catch (InvalidProtocolBufferException e) {
+ String msg = "Failed to de-serialize the proto message, from routing keys:" + envelope.getRoutingKey();
log.warn(msg, e);
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
index 58602c7140..a4dbf71e94 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
@@ -21,15 +21,13 @@ package org.apache.airavata.messaging.handler;
import com.rabbitmq.client.*;
import java.io.IOException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.messaging.event.Message;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.messaging.event.proto.Message;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
public class MessageConsumer extends DefaultConsumer {
@@ -50,17 +48,14 @@ public class MessageConsumer extends DefaultConsumer {
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
throws IOException {
- Message message = new Message();
-
try {
logger.info("handleDelivery() -> Handling message delivery. Consumer Tag : " + consumerTag);
- ThriftUtils.createThriftFromBytes(body, message);
+ Message message = Message.parseFrom(body);
- DBEventMessage dBEventMessage = new DBEventMessage();
- ThriftUtils.createThriftFromBytes(message.getEvent(), dBEventMessage);
+ DBEventMessage dBEventMessage = DBEventMessage.parseFrom(message.getEvent());
MessageContext messageContext = new MessageContext(
- (TBase) dBEventMessage,
+ dBEventMessage,
message.getMessageType(),
message.getMessageId(),
"gatewayId",
@@ -68,7 +63,7 @@ public class MessageConsumer extends DefaultConsumer {
handler.onMessage(messageContext);
// sendAck(deliveryTag);
- } catch (TException e) {
+ } catch (InvalidProtocolBufferException e) {
logger.error("handleDelivery() -> Error handling delivery. Consumer Tag : " + consumerTag, e);
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
index 5d0e5e3a5d..771d11b8f2 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
@@ -27,15 +27,13 @@ import com.rabbitmq.client.Envelope;
import java.io.IOException;
import org.apache.airavata.common.config.ServerSettings;
import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.messaging.event.Message;
+import org.apache.airavata.model.messaging.event.proto.Message;
import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessSubmitEvent;
-import org.apache.airavata.model.messaging.event.ProcessTerminateEvent;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.ProcessSubmitEvent;
+import org.apache.airavata.model.messaging.event.proto.ProcessTerminateEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,16 +55,13 @@ public class ProcessConsumer extends DefaultConsumer {
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties basicProperties, byte[] body)
throws IOException {
- Message message = new Message();
-
try {
- ThriftUtils.createThriftFromBytes(body, message);
- TBase event = null;
+ Message message = Message.parseFrom(body);
+ Object event = null;
String gatewayId = null;
long deliveryTag = envelope.getDeliveryTag();
if (message.getMessageType().equals(MessageType.LAUNCHPROCESS)) {
- ProcessSubmitEvent processSubmitEvent = new ProcessSubmitEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), processSubmitEvent);
+ ProcessSubmitEvent processSubmitEvent = ProcessSubmitEvent.parseFrom(message.getEvent());
log.info(" Message Received with message id '" + message.getMessageId()
+ " and with message type:" + message.getMessageType() + ", for processId:"
+ processSubmitEvent.getProcessId()
@@ -79,8 +74,7 @@ public class ProcessConsumer extends DefaultConsumer {
messageContext.setIsRedeliver(envelope.isRedeliver());
handler.onMessage(messageContext);
} else if (message.getMessageType().equals(MessageType.TERMINATEPROCESS)) {
- ProcessTerminateEvent processTerminateEvent = new ProcessTerminateEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), processTerminateEvent);
+ ProcessTerminateEvent processTerminateEvent = ProcessTerminateEvent.parseFrom(message.getEvent());
log.info(" Message Received with message id '" + message.getMessageId()
+ " and with message type:" + message.getMessageType() + ", for processId:"
+ processTerminateEvent.getProcessId());
@@ -99,8 +93,8 @@ public class ProcessConsumer extends DefaultConsumer {
deliveryTag);
sendAck(deliveryTag);
}
- } catch (TException e) {
- String msg = "Failed to de-serialize the thrift message, from routing keys:" + envelope.getRoutingKey();
+ } catch (InvalidProtocolBufferException e) {
+ String msg = "Failed to de-serialize the proto message, from routing keys:" + envelope.getRoutingKey();
log.warn(msg, e);
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
index 3e74cdd14d..60aada5df1 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
@@ -28,22 +28,19 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.airavata.common.config.ServerSettings;
import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
import org.apache.airavata.messaging.service.MessageHandler;
import org.apache.airavata.messaging.service.MessagingFactory;
import org.apache.airavata.messaging.service.Subscriber;
import org.apache.airavata.messaging.service.Type;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.JobStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.JobStatusChangeEvent;
import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.TaskStatusChangeEvent;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -86,56 +83,25 @@ public class RabbitMQListener {
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);
- }
+ ExperimentStatusChangeEvent event = (ExperimentStatusChangeEvent) message.getEvent();
+ 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());
} 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);
- }*/
+ // no-op
} 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);
- }
+ TaskStatusChangeEvent event = (TaskStatusChangeEvent) message.getEvent();
+ 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());
} 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);
- }
+ JobStatusChangeEvent event = (JobStatusChangeEvent) message.getEvent();
+ 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());
}
};
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
index d7dbadeb54..f240ff79d4 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
@@ -25,21 +25,19 @@ import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import java.io.IOException;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.JobStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.Message;
+import org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.JobStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.Message;
import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.ProcessSubmitEvent;
-import org.apache.airavata.model.messaging.event.ProcessTerminateEvent;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.ProcessStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.ProcessSubmitEvent;
+import org.apache.airavata.model.messaging.event.proto.ProcessTerminateEvent;
+import org.apache.airavata.model.messaging.event.proto.TaskOutputChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.TaskStatusChangeEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,54 +62,53 @@ public class StatusConsumer extends DefaultConsumer {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
throws IOException {
- Message message = new Message();
try {
- ThriftUtils.createThriftFromBytes(body, message);
- TBase event = null;
+ Message message = Message.parseFrom(body);
+ Object event = null;
String gatewayId = null;
if (message.getMessageType().equals(MessageType.EXPERIMENT)) {
- ExperimentStatusChangeEvent experimentStatusChangeEvent = new ExperimentStatusChangeEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), experimentStatusChangeEvent);
+ ExperimentStatusChangeEvent experimentStatusChangeEvent =
+ ExperimentStatusChangeEvent.parseFrom(message.getEvent());
log.debug(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' with status "
+ experimentStatusChangeEvent.getState());
event = experimentStatusChangeEvent;
gatewayId = experimentStatusChangeEvent.getGatewayId();
} else if (message.getMessageType().equals(MessageType.PROCESS)) {
- ProcessStatusChangeEvent processStatusChangeEvent = new ProcessStatusChangeEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), processStatusChangeEvent);
+ ProcessStatusChangeEvent processStatusChangeEvent =
+ ProcessStatusChangeEvent.parseFrom(message.getEvent());
log.debug("Message Recieved with message id :" + message.getMessageId() + " and with " + "message type "
+ message.getMessageType() + " with status " + processStatusChangeEvent.getState());
event = processStatusChangeEvent;
gatewayId = processStatusChangeEvent.getProcessIdentity().getGatewayId();
} else if (message.getMessageType().equals(MessageType.TASK)) {
- TaskStatusChangeEvent taskStatusChangeEvent = new TaskStatusChangeEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), taskStatusChangeEvent);
+ TaskStatusChangeEvent taskStatusChangeEvent =
+ TaskStatusChangeEvent.parseFrom(message.getEvent());
log.debug(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' with status "
+ taskStatusChangeEvent.getState());
event = taskStatusChangeEvent;
gatewayId = taskStatusChangeEvent.getTaskIdentity().getGatewayId();
} else if (message.getMessageType() == MessageType.PROCESSOUTPUT) {
- TaskOutputChangeEvent taskOutputChangeEvent = new TaskOutputChangeEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), taskOutputChangeEvent);
+ TaskOutputChangeEvent taskOutputChangeEvent =
+ TaskOutputChangeEvent.parseFrom(message.getEvent());
log.debug(" Message Received with message id '" + message.getMessageId() + "' and with message type '"
+ message.getMessageType());
event = taskOutputChangeEvent;
gatewayId = taskOutputChangeEvent.getTaskIdentity().getGatewayId();
} else if (message.getMessageType().equals(MessageType.JOB)) {
- JobStatusChangeEvent jobStatusChangeEvent = new JobStatusChangeEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), jobStatusChangeEvent);
+ JobStatusChangeEvent jobStatusChangeEvent =
+ JobStatusChangeEvent.parseFrom(message.getEvent());
log.debug(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' with status "
+ jobStatusChangeEvent.getState());
event = jobStatusChangeEvent;
gatewayId = jobStatusChangeEvent.getJobIdentity().getGatewayId();
} else if (message.getMessageType().equals(MessageType.LAUNCHPROCESS)) {
- ProcessSubmitEvent processSubmitEvent = new ProcessSubmitEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), processSubmitEvent);
+ ProcessSubmitEvent processSubmitEvent =
+ ProcessSubmitEvent.parseFrom(message.getEvent());
log.debug(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' for experimentId: "
+ processSubmitEvent.getExperimentId()
@@ -119,8 +116,8 @@ public class StatusConsumer extends DefaultConsumer {
event = processSubmitEvent;
gatewayId = processSubmitEvent.getGatewayId();
} else if (message.getMessageType().equals(MessageType.TERMINATEPROCESS)) {
- ProcessTerminateEvent processTerminateEvent = new ProcessTerminateEvent();
- ThriftUtils.createThriftFromBytes(message.getEvent(), processTerminateEvent);
+ ProcessTerminateEvent processTerminateEvent =
+ ProcessTerminateEvent.parseFrom(message.getEvent());
log.debug(" Message Received with message id '" + message.getMessageId()
+ "' and with message type '" + message.getMessageType() + "' for processId: "
+ processTerminateEvent.getProcessId());
@@ -132,8 +129,8 @@ public class StatusConsumer extends DefaultConsumer {
messageContext.setUpdatedTime(AiravataUtils.getTime(message.getUpdatedTime()));
messageContext.setIsRedeliver(envelope.isRedeliver());
handler.onMessage(messageContext);
- } catch (TException e) {
- String msg = "Failed to de-serialize the thrift message, from routing keys: " + envelope.getRoutingKey();
+ } catch (InvalidProtocolBufferException e) {
+ String msg = "Failed to de-serialize the proto message, from routing keys: " + envelope.getRoutingKey();
log.warn(msg, e);
}
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
index 9eb6895dae..234dd0c6e7 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
@@ -22,14 +22,11 @@ package org.apache.airavata.messaging.handler;
import java.util.ArrayList;
import java.util.List;
import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
import org.apache.airavata.messaging.service.MessageHandler;
import org.apache.airavata.messaging.service.MessagingFactory;
import org.apache.airavata.messaging.service.Type;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,17 +52,10 @@ public class TestClient {
private static MessageHandler getMessageHandler() {
return 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);
- System.out.println(" Message Received with message id '" + message.getMessageId()
- + "' and with message type '" + message.getType() + "' and with state : '"
- + event.getState().toString());
- } catch (TException e) {
- logger.error(e.getMessage(), e);
- }
+ ExperimentStatusChangeEvent event = (ExperimentStatusChangeEvent) message.getEvent();
+ System.out.println(" Message Received with message id '" + message.getMessageId()
+ + "' and with message type '" + message.getType() + "' and with state : '"
+ + event.getState().toString());
}
};
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java b/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
index 034efa489a..abe8be93d4 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
@@ -23,11 +23,11 @@ import java.util.List;
import java.util.UUID;
import org.apache.airavata.common.exception.AiravataException;
import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.model.messaging.event.ExperimentIntermediateOutputsEvent;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.ExperimentSubmitEvent;
+import org.apache.airavata.model.messaging.event.proto.ExperimentIntermediateOutputsEvent;
+import org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.ExperimentSubmitEvent;
import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.status.ExperimentState;
+import org.apache.airavata.model.status.proto.ExperimentState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,7 +46,8 @@ public class EventPublisher {
public void publishExperimentStatus(String experimentId, String gatewayId, ExperimentState state) {
if (statusPublisher == null) return;
try {
- ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(state, experimentId, gatewayId);
+ ExperimentStatusChangeEvent event = ExperimentStatusChangeEvent.newBuilder()
+ .setState(state).setExperimentId(experimentId).setGatewayId(gatewayId).build();
String messageId = AiravataUtils.getId("EXPERIMENT");
MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId);
messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
@@ -59,7 +60,8 @@ public class EventPublisher {
public void publishExperimentLaunch(String experimentId, String gatewayId) {
if (experimentPublisher == null) return;
try {
- ExperimentSubmitEvent event = new ExperimentSubmitEvent(experimentId, gatewayId);
+ ExperimentSubmitEvent event = ExperimentSubmitEvent.newBuilder()
+ .setExperimentId(experimentId).setGatewayId(gatewayId).build();
MessageContext messageContext =
new MessageContext(event, MessageType.EXPERIMENT, "LAUNCH.EXP-" + UUID.randomUUID(), gatewayId);
messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
@@ -72,7 +74,8 @@ public class EventPublisher {
public void publishExperimentCancel(String experimentId, String gatewayId) {
if (experimentPublisher == null) return;
try {
- ExperimentSubmitEvent event = new ExperimentSubmitEvent(experimentId, gatewayId);
+ ExperimentSubmitEvent event = ExperimentSubmitEvent.newBuilder()
+ .setExperimentId(experimentId).setGatewayId(gatewayId).build();
MessageContext messageContext = new MessageContext(
event, MessageType.EXPERIMENT_CANCEL, "CANCEL.EXP-" + UUID.randomUUID(), gatewayId);
messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
@@ -85,8 +88,8 @@ public class EventPublisher {
public void publishIntermediateOutputs(String experimentId, String gatewayId, List<String> outputNames) {
if (experimentPublisher == null) return;
try {
- ExperimentIntermediateOutputsEvent event =
- new ExperimentIntermediateOutputsEvent(experimentId, gatewayId, outputNames);
+ ExperimentIntermediateOutputsEvent event = ExperimentIntermediateOutputsEvent.newBuilder()
+ .setExperimentId(experimentId).setGatewayId(gatewayId).addAllOutputNames(outputNames).build();
MessageContext messageContext = new MessageContext(
event,
MessageType.INTERMEDIATE_OUTPUTS,
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java b/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
index 195fe1fc3f..8f3e58fc75 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
@@ -28,10 +28,10 @@ import com.rabbitmq.client.ShutdownSignalException;
import java.io.IOException;
import java.util.function.Function;
import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.ByteString;
+import com.google.protobuf.MessageLite;
import org.apache.airavata.messaging.util.RabbitMQProperties;
-import org.apache.airavata.model.messaging.event.Message;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,21 +76,16 @@ public class RabbitMQPublisher implements Publisher {
@Override
public void publish(MessageContext messageContext) throws AiravataException {
try {
- byte[] body = ThriftUtils.serializeThriftObject(messageContext.getEvent());
- Message message = new Message();
- message.setEvent(body);
- message.setMessageId(messageContext.getMessageId());
- message.setMessageType(messageContext.getType());
- message.setUpdatedTime(messageContext.getUpdatedTime().getTime());
+ byte[] body = ((MessageLite) messageContext.getEvent()).toByteArray();
+ Message message = Message.newBuilder()
+ .setEvent(ByteString.copyFrom(body))
+ .setMessageId(messageContext.getMessageId())
+ .setMessageType(messageContext.getType())
+ .setUpdatedTime(messageContext.getUpdatedTime().getTime())
+ .build();
String routingKey = routingKeySupplier.apply(messageContext);
- // log.info("publish messageId:" + messageContext.getMessageId() + ", messageType:" +
- // messageContext.getType() + ", to routingKey:" + routingKey);
- byte[] messageBody = ThriftUtils.serializeThriftObject(message);
+ byte[] messageBody = message.toByteArray();
send(messageBody, routingKey);
- } catch (TException e) {
- String msg = "Error while deserializing the object";
- log.error(msg, e);
- throw new AiravataException(msg, e);
} catch (Exception e) {
String msg = "Error while sending to rabbitmq";
log.error(msg, e);
@@ -107,22 +102,16 @@ public class RabbitMQPublisher implements Publisher {
@Override
public void publish(MessageContext messageContext, String routingKey) throws AiravataException {
try {
- byte[] body = ThriftUtils.serializeThriftObject(messageContext.getEvent());
- Message message = new Message();
- message.setEvent(body);
- message.setMessageId(messageContext.getMessageId());
- message.setMessageType(messageContext.getType());
+ byte[] body = ((MessageLite) messageContext.getEvent()).toByteArray();
+ Message.Builder messageBuilder = Message.newBuilder()
+ .setEvent(ByteString.copyFrom(body))
+ .setMessageId(messageContext.getMessageId())
+ .setMessageType(messageContext.getType());
if (messageContext.getUpdatedTime() != null) {
- message.setUpdatedTime(messageContext.getUpdatedTime().getTime());
+ messageBuilder.setUpdatedTime(messageContext.getUpdatedTime().getTime());
}
- // log.info("publish messageId:" + messageContext.getMessageId() + ", messageType:" +
- // messageContext.getType() + ", to routingKey:" + routingKey);
- byte[] messageBody = ThriftUtils.serializeThriftObject(message);
+ byte[] messageBody = messageBuilder.build().toByteArray();
send(messageBody, routingKey);
- } catch (TException e) {
- String msg = "Error while deserializing the object";
- log.error(msg, e);
- throw new AiravataException(msg, e);
} catch (Exception e) {
String msg = "Error while sending to rabbitmq";
log.error(msg, e);
diff --git a/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java b/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
index cfa9d7b65e..2a87e4ce73 100644
--- a/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
+++ b/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
@@ -19,20 +19,19 @@
*/
package org.apache.airavata.messaging.util;
+import com.google.protobuf.MessageLite;
import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.common.util.ThriftUtils;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessagingFactory;
import org.apache.airavata.messaging.service.Publisher;
-import org.apache.airavata.model.dbevent.CrudType;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.dbevent.DBEventMessageContext;
-import org.apache.airavata.model.dbevent.DBEventPublisher;
-import org.apache.airavata.model.dbevent.DBEventPublisherContext;
-import org.apache.airavata.model.dbevent.DBEventType;
-import org.apache.airavata.model.dbevent.EntityType;
+import org.apache.airavata.model.dbevent.proto.CrudType;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.dbevent.proto.DBEventMessageContext;
+import org.apache.airavata.model.dbevent.proto.DBEventPublisher;
+import org.apache.airavata.model.dbevent.proto.DBEventPublisherContext;
+import org.apache.airavata.model.dbevent.proto.DBEventType;
+import org.apache.airavata.model.dbevent.proto.EntityType;
import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.thrift.TBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +54,7 @@ public class DBEventPublisherUtils {
* @param crudType
* @param entityModel
*/
- public void publish(EntityType entityType, CrudType crudType, TBase entityModel) throws AiravataException {
+ public void publish(EntityType entityType, CrudType crudType, MessageLite entityModel) throws AiravataException {
getDbEventPublisher()
.publish(
@@ -89,27 +88,32 @@ public class DBEventPublisherUtils {
* @return
* @throws AiravataException
*/
- private MessageContext getDBEventMessageContext(EntityType entityType, CrudType crudType, TBase entityModel)
+ private MessageContext getDBEventMessageContext(EntityType entityType, CrudType crudType, MessageLite entityModel)
throws AiravataException {
try {
// set the publisherContext
- DBEventMessage dbEventMessage = new DBEventMessage();
- DBEventPublisherContext publisherContext = new DBEventPublisherContext();
- publisherContext.setCrudType(crudType);
- publisherContext.setEntityDataModel(ThriftUtils.serializeThriftObject(entityModel));
- publisherContext.setEntityType(entityType);
+ DBEventPublisherContext publisherContext = DBEventPublisherContext.newBuilder()
+ .setCrudType(crudType)
+ .setEntityDataModel(entityModel.toByteString())
+ .setEntityType(entityType)
+ .build();
// create dbEventPublisher with publisherContext
- DBEventPublisher dbEventPublisher = new DBEventPublisher();
- dbEventPublisher.setPublisherContext(publisherContext);
+ DBEventPublisher dbEventPublisher = DBEventPublisher.newBuilder()
+ .setPublisherContext(publisherContext)
+ .build();
// set messageContext to dbEventPublisher
- DBEventMessageContext dbMessageContext = DBEventMessageContext.publisher(dbEventPublisher);
+ DBEventMessageContext dbMessageContext = DBEventMessageContext.newBuilder()
+ .setPublisher(dbEventPublisher)
+ .build();
// set dbEventMessage with messageContext
- dbEventMessage.setDbEventType(DBEventType.PUBLISHER);
- dbEventMessage.setPublisherService(this.publisherService.toString());
- dbEventMessage.setMessageContext(dbMessageContext);
+ DBEventMessage dbEventMessage = DBEventMessage.newBuilder()
+ .setDbEventType(DBEventType.PUBLISHER)
+ .setPublisherService(this.publisherService.toString())
+ .setMessageContext(dbMessageContext)
+ .build();
// construct and return messageContext
return new MessageContext(dbEventMessage, MessageType.DB_EVENT, "", "");
diff --git a/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java b/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
index bcb3020fd5..735acdf377 100644
--- a/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
+++ b/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
@@ -23,8 +23,8 @@ import org.apache.airavata.common.util.AiravataUtils;
import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
import org.apache.airavata.credential.store.cpi.CredentialStoreService;
import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
import org.apache.airavata.model.credential.store.PasswordCredential;
import org.apache.airavata.execution.handler.RegistryServerHandler;
import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
@@ -74,12 +74,12 @@ public class GatewayGroupsInitializer {
this.credentialStoreClient = credentialStoreClient;
}
- public GatewayGroups initialize(String gatewayId) throws TException {
+ public GatewayGroups initialize(String gatewayId) throws Exception {
logger.info("Creating a GatewayGroups instance for gateway " + gatewayId + " ...");
- GatewayGroups gatewayGroups = new GatewayGroups();
- gatewayGroups.setGatewayId(gatewayId);
+ GatewayGroups.Builder gatewayGroupsBuilder = GatewayGroups.newBuilder()
+ .setGatewayId(gatewayId);
String adminOwnerUsername = getAdminOwnerUsername(registryClient, credentialStoreClient, gatewayId);
String ownerId = adminOwnerUsername + "@" + gatewayId;
@@ -96,11 +96,11 @@ public class GatewayGroupsInitializer {
// Gateway Users
UserGroup gatewayUsersGroup = createGroup(
sharingRegistryClient, gatewayId, ownerId, "Gateway Users", "Default group for users of the gateway.");
- gatewayGroups.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
+ gatewayGroupsBuilder.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
// Admin Users
UserGroup adminUsersGroup =
createGroup(sharingRegistryClient, gatewayId, ownerId, "Admin Users", "Admin users group.");
- gatewayGroups.setAdminsGroupId(adminUsersGroup.getGroupId());
+ gatewayGroupsBuilder.setAdminsGroupId(adminUsersGroup.getGroupId());
// Read Only Admin Users
UserGroup readOnlyAdminsGroup = createGroup(
sharingRegistryClient,
@@ -108,11 +108,12 @@ public class GatewayGroupsInitializer {
ownerId,
"Read Only Admin Users",
"Group of admin users with read-only access.");
- gatewayGroups.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+ gatewayGroupsBuilder.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+ GatewayGroups gatewayGroups = gatewayGroupsBuilder.build();
try {
registryClient.createGatewayGroups(gatewayGroups);
- } catch (TException e) {
+ } catch (Exception e) {
logger.error(
"Gateway groups created in Sharing Catalog failed to save GatewayGroups entity in Registry", e);
throw e;
@@ -127,7 +128,7 @@ public class GatewayGroupsInitializer {
String ownerId,
String groupName,
String groupDescription)
- throws TException {
+ throws Exception {
UserGroup userGroup = new UserGroup();
userGroup.setGroupId(AiravataUtils.getId(groupName));
@@ -146,11 +147,11 @@ public class GatewayGroupsInitializer {
private String getAdminOwnerUsername(
RegistryServerHandler registryClient, CredentialStoreService.Iface credentialStoreClient, String gatewayId)
- throws TException {
+ throws Exception {
GatewayResourceProfile gatewayResourceProfile = registryClient.getGatewayResourceProfile(gatewayId);
PasswordCredential credential = credentialStoreClient.getPasswordCredential(
- gatewayResourceProfile.getIdentityServerPwdCredToken(), gatewayResourceProfile.getGatewayID());
+ gatewayResourceProfile.getIdentityServerPwdCredToken(), gatewayResourceProfile.getGatewayId());
String adminUsername = credential.getLoginUserName();
return adminUsername;
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java b/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
index 25e7be8d5b..8e4782ecfe 100644
--- a/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
+++ b/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
@@ -32,10 +32,10 @@ import org.apache.airavata.common.config.Constants;
import org.apache.airavata.common.config.ServerSettings;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
import org.apache.airavata.model.security.AuthzToken;
-import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.proto.Gateway;
import org.apache.airavata.execution.handler.RegistryServerHandler;
import org.apache.airavata.security.service.authzcache.*;
import org.apache.airavata.security.util.AiravataSecurityException;
diff --git a/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java b/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
index 49883ae3a1..b5097bcf81 100644
--- a/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
+++ b/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
@@ -21,17 +21,17 @@ package org.apache.airavata.sharing.handler;
import org.apache.airavata.common.exception.AiravataException;
import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.airavata.messaging.service.MessageContext;
import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.dbevent.DBEventMessageContext;
-import org.apache.airavata.model.error.DuplicateEntryException;
-import org.apache.airavata.model.group.ResourceType;
-import org.apache.airavata.model.user.UserProfile;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.dbevent.proto.DBEventMessageContext;
+import org.apache.airavata.model.group.proto.ResourceType;
+import org.apache.airavata.model.user.proto.UserProfile;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
import org.apache.airavata.sharing.registry.models.Domain;
+import org.apache.airavata.sharing.registry.models.DuplicateEntryException;
import org.apache.airavata.sharing.registry.models.Entity;
import org.apache.airavata.sharing.registry.models.PermissionType;
import org.apache.airavata.sharing.registry.models.User;
@@ -62,10 +62,7 @@ public class SharingServiceDBEventHandler implements MessageHandler {
try {
- byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent());
-
- DBEventMessage dbEventMessage = new DBEventMessage();
- ThriftUtils.createThriftFromBytes(bytes, dbEventMessage);
+ DBEventMessage dbEventMessage = (DBEventMessage) messageContext.getEvent();
log.info("DB Event message to sharing service from " + dbEventMessage.getPublisherService());
@@ -79,13 +76,11 @@ public class SharingServiceDBEventHandler implements MessageHandler {
log.info("User profile specific DB Event communicated by "
+ dbEventMessage.getPublisherService());
- UserProfile userProfile = new UserProfile();
- ThriftUtils.createThriftFromBytes(
+ UserProfile userProfile = UserProfile.parseFrom(
dBEventMessageContext
.getPublisher()
.getPublisherContext()
- .getEntityDataModel(),
- userProfile);
+ .getEntityDataModel());
User user = ThriftDataModelConversion.getUser(userProfile);
switch (dBEventMessageContext
@@ -122,13 +117,11 @@ public class SharingServiceDBEventHandler implements MessageHandler {
case TENANT:
log.info("Tenant specific DB Event communicated by " + dbEventMessage.getPublisherService());
- Gateway gateway = new Gateway();
- ThriftUtils.createThriftFromBytes(
+ Gateway gateway = Gateway.parseFrom(
dBEventMessageContext
.getPublisher()
.getPublisherContext()
- .getEntityDataModel(),
- gateway);
+ .getEntityDataModel());
switch (dBEventMessageContext
.getPublisher()
@@ -309,15 +302,13 @@ public class SharingServiceDBEventHandler implements MessageHandler {
case PROJECT:
log.info("Project specific DB Event communicated by " + dbEventMessage.getPublisherService());
- Project project = new Project();
- ThriftUtils.createThriftFromBytes(
+ Project project = Project.parseFrom(
dBEventMessageContext
.getPublisher()
.getPublisherContext()
- .getEntityDataModel(),
- project);
+ .getEntityDataModel());
final String domainId = project.getGatewayId();
- final String entityId = project.getProjectID();
+ final String entityId = project.getProjectId();
switch (dBEventMessageContext
.getPublisher()
@@ -374,6 +365,8 @@ public class SharingServiceDBEventHandler implements MessageHandler {
log.info("Sending ack. Message Delivery Tag : " + messageContext.getDeliveryTag());
SharingServiceDBEventMessagingFactory.getDBEventSubscriber().sendAck(messageContext.getDeliveryTag());
+ } catch (InvalidProtocolBufferException e) {
+ log.error("Error parsing proto message", e);
} catch (TException e) {
log.error("Error processing message.", e);
} catch (ApplicationSettingsException e) {
diff --git a/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java b/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
index 72768c64a5..502048012b 100644
--- a/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
+++ b/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
@@ -64,7 +64,7 @@ public class SharingHelper {
}
public static GatewayGroups retrieveGatewayGroups(RegistryServerHandler registryHandler, String gatewayId)
- throws TException {
+ throws Exception {
if (registryHandler.isGatewayGroupsExists(gatewayId)) {
return registryHandler.getGatewayGroups(gatewayId);
}
@@ -73,7 +73,7 @@ public class SharingHelper {
public static void shareEntityWithAdminGatewayGroups(
SharingRegistryServerHandler sharingHandler, RegistryServerHandler registryHandler, Entity entity)
- throws TException {
+ throws Exception {
String domainId = entity.getDomainId();
GatewayGroups gatewayGroups = retrieveGatewayGroups(registryHandler, domainId);
createManageSharingPermissionTypeIfMissing(sharingHandler, domainId);
diff --git a/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java b/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
index 553d018706..ad0f7d2153 100644
--- a/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
+++ b/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
@@ -35,21 +35,19 @@ import org.apache.airavata.common.util.AiravataUtils;
import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
import org.apache.airavata.credential.store.cpi.CredentialStoreService;
import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.EnvironmentSpecificPreferences;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.SlurmComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.ComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ComputeResourcePolicy;
+import org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupResourceProfile;
import org.apache.airavata.model.credential.store.CredentialSummary;
import org.apache.airavata.model.credential.store.PasswordCredential;
import org.apache.airavata.model.credential.store.SummaryType;
-import org.apache.airavata.model.group.ResourcePermissionType;
-import org.apache.airavata.model.group.ResourceType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
+import org.apache.airavata.model.group.proto.ResourceType;
import org.apache.airavata.model.security.AuthzToken;
import org.apache.airavata.model.user.Status;
import org.apache.airavata.model.user.UserProfile;
@@ -75,7 +73,7 @@ import org.apache.thrift.TException;
public class AiravataDataMigrator {
public static void main(String[] args)
- throws SQLException, ClassNotFoundException, TException, ApplicationSettingsException {
+ throws Exception {
String gatewayId = null;
if (args.length > 0) {
gatewayId = args[0];
@@ -467,7 +465,7 @@ public class AiravataDataMigrator {
Entity entity,
GatewayGroups gatewayGroups,
boolean cascadePermission)
- throws TException {
+ throws Exception {
// Give default Gateway Users group READ access
sharingRegistryServerHandler.shareEntityWithGroups(
entity.getDomainId(),
@@ -483,7 +481,7 @@ public class AiravataDataMigrator {
Entity entity,
GatewayGroups gatewayGroups,
boolean cascadePermission)
- throws TException {
+ throws Exception {
// Give Admins group and Read Only Admins group READ access
sharingRegistryServerHandler.shareEntityWithGroups(
entity.getDomainId(),
@@ -506,7 +504,7 @@ public class AiravataDataMigrator {
AuthzToken authzToken,
String search,
String domainId)
- throws TException {
+ throws Exception {
String gatewayId = authzToken.getClaimsMap().get(org.apache.airavata.common.config.Constants.GATEWAY_ID);
List<UserProfile> missingUsers = new ArrayList<>();
@@ -524,7 +522,7 @@ public class AiravataDataMigrator {
private static boolean migrateKeycloakUsersToGateway(
TenantManagementKeycloakImpl keycloakClient, AuthzToken authzToken, List<UserProfile> missingUsers)
- throws TException {
+ throws Exception {
String gatewayId = authzToken.getClaimsMap().get(org.apache.airavata.common.config.Constants.GATEWAY_ID);
boolean allUsersUpdated = true;
@@ -537,7 +535,7 @@ public class AiravataDataMigrator {
private static void checkUsersInSharingRegistryService(
SharingRegistryServerHandler sharingRegistryServerHandler, List<UserProfile> missingUsers, String domainId)
- throws TException {
+ throws Exception {
System.out.println("Waiting for " + missingUsers.size() + " missing users to be propogated to sharing db");
int waitCount = 0;
// Wait up to 10 seconds for event based replication to complete, then
@@ -575,7 +573,7 @@ public class AiravataDataMigrator {
List<UserProfile> missingUsers,
GatewayGroups gatewayGroups,
String domainId)
- throws TException, ApplicationSettingsException {
+ throws Exception {
// before adding to groups make sure sharing registry has the user otherwise add it
checkUsersInSharingRegistryService(sharingRegistryServerHandler, missingUsers, domainId);
boolean updatedAllUsers = true;
@@ -615,9 +613,9 @@ public class AiravataDataMigrator {
String ownerId,
SharingRegistryServerHandler sharingRegistryServerHandler,
RegistryServerHandler registryServiceClient)
- throws TException, ApplicationSettingsException {
- GatewayGroups gatewayGroups = new GatewayGroups();
- gatewayGroups.setGatewayId(domain.getDomainId());
+ throws Exception {
+ GatewayGroups.Builder gatewayGroupsBuilder = GatewayGroups.newBuilder()
+ .setGatewayId(domain.getDomainId());
// Migrate roles to groups
List<String> usernames = sharingRegistryServerHandler.getUsers(domain.getDomainId(), 0, -1).stream()
@@ -634,7 +632,7 @@ public class AiravataDataMigrator {
"Gateway Users",
"Default group for users of the gateway.",
roleMap.containsKey("gateway-user") ? roleMap.get("gateway-user") : Collections.emptyList());
- gatewayGroups.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
+ gatewayGroupsBuilder.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
UserGroup adminUsersGroup = createGroup(
sharingRegistryServerHandler,
@@ -643,7 +641,7 @@ public class AiravataDataMigrator {
"Admin Users",
"Admin users group.",
roleMap.containsKey("admin") ? roleMap.get("admin") : Collections.emptyList());
- gatewayGroups.setAdminsGroupId(adminUsersGroup.getGroupId());
+ gatewayGroupsBuilder.setAdminsGroupId(adminUsersGroup.getGroupId());
UserGroup readOnlyAdminsGroup = createGroup(
sharingRegistryServerHandler,
@@ -652,8 +650,9 @@ public class AiravataDataMigrator {
"Read Only Admin Users",
"Group of admin users with read-only access.",
roleMap.containsKey("admin-read-only") ? roleMap.get("admin-read-only") : Collections.emptyList());
- gatewayGroups.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+ gatewayGroupsBuilder.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+ GatewayGroups gatewayGroups = gatewayGroupsBuilder.build();
registryServiceClient.createGatewayGroups(gatewayGroups);
return gatewayGroups;
}
@@ -663,7 +662,7 @@ public class AiravataDataMigrator {
SharingRegistryServerHandler sharingRegistryServerHandler,
CredentialStoreService.Iface credentialStoreServiceClient,
RegistryServerHandler registryServiceClient)
- throws TException {
+ throws Exception {
GatewayResourceProfile gatewayResourceProfile = null;
try {
gatewayResourceProfile = registryServiceClient.getGatewayResourceProfile(domain.getDomainId());
@@ -680,7 +679,7 @@ public class AiravataDataMigrator {
String groupOwner = null;
try {
PasswordCredential credential = credentialStoreServiceClient.getPasswordCredential(
- gatewayResourceProfile.getIdentityServerPwdCredToken(), gatewayResourceProfile.getGatewayID());
+ gatewayResourceProfile.getIdentityServerPwdCredToken(), gatewayResourceProfile.getGatewayId());
groupOwner = credential.getLoginUserName();
} catch (Exception e) {
System.out.println("Skipping creating group based auth migration for " + domain.getDomainId()
@@ -698,7 +697,7 @@ public class AiravataDataMigrator {
}
private static Map<String, List<String>> loadRolesForUsers(String gatewayId, List<String> usernames)
- throws TException, ApplicationSettingsException {
+ throws Exception {
TenantManagementKeycloakImpl tenantManagementKeycloak = new TenantManagementKeycloakImpl();
PasswordCredential tenantAdminPasswordCredential = getTenantAdminPasswordCredential(gatewayId);
@@ -727,12 +726,12 @@ public class AiravataDataMigrator {
}
private static PasswordCredential getTenantAdminPasswordCredential(String tenantId)
- throws TException, ApplicationSettingsException {
+ throws Exception {
GatewayResourceProfile gwrp = getRegistryServiceClient().getGatewayResourceProfile(tenantId);
CredentialStoreService.Iface csClient = getCredentialStoreServiceClient();
- return csClient.getPasswordCredential(gwrp.getIdentityServerPwdCredToken(), gwrp.getGatewayID());
+ return csClient.getPasswordCredential(gwrp.getIdentityServerPwdCredToken(), gwrp.getGatewayId());
}
private static UserGroup createGroup(
@@ -742,7 +741,7 @@ public class AiravataDataMigrator {
String groupName,
String groupDescription,
List<String> usernames)
- throws TException {
+ throws Exception {
UserGroup userGroup = new UserGroup();
userGroup.setGroupId(AiravataUtils.getId(groupName));
@@ -769,7 +768,7 @@ public class AiravataDataMigrator {
String domainOwnerId,
RegistryServerHandler registryServiceClient,
SharingRegistryServerHandler sharingRegistryServerHandler)
- throws TException {
+ throws Exception {
// Return true if GatewayResourceProfile has at least one ComputeResourcePreference and there is no
// GroupResourceProfile
List<ComputeResourcePreference> computeResourcePreferences =
@@ -790,14 +789,14 @@ public class AiravataDataMigrator {
}
private static GroupResourceProfile migrateGatewayResourceProfileToGroupResourceProfile(
- String gatewayId, RegistryServerHandler registryServiceClient) throws TException {
+ String gatewayId, RegistryServerHandler registryServiceClient) throws Exception {
- GroupResourceProfile groupResourceProfile = new GroupResourceProfile();
- groupResourceProfile.setGatewayId(gatewayId);
- groupResourceProfile.setGroupResourceProfileName("Default");
+ GroupResourceProfile.Builder grpBuilder = GroupResourceProfile.newBuilder()
+ .setGatewayId(gatewayId)
+ .setGroupResourceProfileName("Default");
GatewayResourceProfile gatewayResourceProfile = registryServiceClient.getGatewayResourceProfile(gatewayId);
if (isValid(gatewayResourceProfile.getCredentialStoreToken())) {
- groupResourceProfile.setDefaultCredentialStoreToken(gatewayResourceProfile.getCredentialStoreToken());
+ grpBuilder.setDefaultCredentialStoreToken(gatewayResourceProfile.getCredentialStoreToken());
}
List<GroupComputeResourcePreference> groupComputeResourcePreferences = new ArrayList<>();
List<ComputeResourcePolicy> computeResourcePolicies = new ArrayList<>();
@@ -812,79 +811,79 @@ public class AiravataDataMigrator {
}
GroupComputeResourcePreference groupComputeResourcePreference =
convertComputeResourcePreferenceToGroupComputeResourcePreference(
- groupResourceProfile.getGroupResourceProfileId(), computeResourcePreference);
+ grpBuilder.getGroupResourceProfileId(), computeResourcePreference);
ComputeResourcePolicy computeResourcePolicy = createDefaultComputeResourcePolicy(
- groupResourceProfile.getGroupResourceProfileId(),
+ grpBuilder.getGroupResourceProfileId(),
computeResourcePreference.getComputeResourceId(),
registryServiceClient);
groupComputeResourcePreferences.add(groupComputeResourcePreference);
computeResourcePolicies.add(computeResourcePolicy);
}
- groupResourceProfile.setComputePreferences(groupComputeResourcePreferences);
- groupResourceProfile.setComputeResourcePolicies(computeResourcePolicies);
+ grpBuilder.addAllComputePreferences(groupComputeResourcePreferences);
+ grpBuilder.addAllComputeResourcePolicies(computeResourcePolicies);
+ GroupResourceProfile groupResourceProfile = grpBuilder.build();
String groupResourceProfileId = registryServiceClient.createGroupResourceProfile(groupResourceProfile);
- groupResourceProfile.setGroupResourceProfileId(groupResourceProfileId);
+ groupResourceProfile = groupResourceProfile.toBuilder().setGroupResourceProfileId(groupResourceProfileId).build();
return groupResourceProfile;
}
private static GroupComputeResourcePreference convertComputeResourcePreferenceToGroupComputeResourcePreference(
String groupResourceProfileId, ComputeResourcePreference computeResourcePreference) {
- GroupComputeResourcePreference groupComputeResourcePreference = new GroupComputeResourcePreference();
- groupComputeResourcePreference.setGroupResourceProfileId(groupResourceProfileId);
- groupComputeResourcePreference.setComputeResourceId(computeResourcePreference.getComputeResourceId());
- groupComputeResourcePreference.setOverridebyAiravata(computeResourcePreference.isOverridebyAiravata());
+ GroupComputeResourcePreference.Builder gcBuilder = GroupComputeResourcePreference.newBuilder()
+ .setGroupResourceProfileId(groupResourceProfileId)
+ .setComputeResourceId(computeResourcePreference.getComputeResourceId())
+ .setOverrideByAiravata(computeResourcePreference.getOverrideByAiravata())
+ .setPreferredJobSubmissionProtocol(computeResourcePreference.getPreferredJobSubmissionProtocol())
+ .setPreferredDataMovementProtocol(computeResourcePreference.getPreferredDataMovementProtocol())
+ .setResourceType(org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ResourceType.SLURM);
if (isValid(computeResourcePreference.getLoginUserName())) {
- groupComputeResourcePreference.setLoginUserName(computeResourcePreference.getLoginUserName());
+ gcBuilder.setLoginUserName(computeResourcePreference.getLoginUserName());
}
- groupComputeResourcePreference.setPreferredJobSubmissionProtocol(
- computeResourcePreference.getPreferredJobSubmissionProtocol());
- groupComputeResourcePreference.setPreferredDataMovementProtocol(
- computeResourcePreference.getPreferredDataMovementProtocol());
if (isValid(computeResourcePreference.getResourceSpecificCredentialStoreToken())) {
- groupComputeResourcePreference.setResourceSpecificCredentialStoreToken(
+ gcBuilder.setResourceSpecificCredentialStoreToken(
computeResourcePreference.getResourceSpecificCredentialStoreToken());
}
if (isValid(computeResourcePreference.getScratchLocation())) {
- groupComputeResourcePreference.setScratchLocation(computeResourcePreference.getScratchLocation());
+ gcBuilder.setScratchLocation(computeResourcePreference.getScratchLocation());
}
- groupComputeResourcePreference.setResourceType(
- org.apache.airavata.model.appcatalog.groupresourceprofile.ResourceType.SLURM);
- SlurmComputeResourcePreference slurm = new SlurmComputeResourcePreference();
+ // Build SlurmComputeResourcePreference for environment-specific settings
+ org.apache.airavata.model.appcatalog.groupresourceprofile.proto.SlurmComputeResourcePreference.Builder slurmBuilder =
+ org.apache.airavata.model.appcatalog.groupresourceprofile.proto.SlurmComputeResourcePreference.newBuilder();
if (isValid(computeResourcePreference.getPreferredBatchQueue())) {
- slurm.setPreferredBatchQueue(computeResourcePreference.getPreferredBatchQueue());
+ slurmBuilder.setPreferredBatchQueue(computeResourcePreference.getPreferredBatchQueue());
}
if (isValid(computeResourcePreference.getAllocationProjectNumber())) {
- slurm.setAllocationProjectNumber(computeResourcePreference.getAllocationProjectNumber());
+ slurmBuilder.setAllocationProjectNumber(computeResourcePreference.getAllocationProjectNumber());
}
if (isValid(computeResourcePreference.getUsageReportingGatewayId())) {
- slurm.setUsageReportingGatewayId(computeResourcePreference.getUsageReportingGatewayId());
+ slurmBuilder.setUsageReportingGatewayId(computeResourcePreference.getUsageReportingGatewayId());
}
if (isValid(computeResourcePreference.getQualityOfService())) {
- slurm.setQualityOfService(computeResourcePreference.getQualityOfService());
+ slurmBuilder.setQualityOfService(computeResourcePreference.getQualityOfService());
}
-
- EnvironmentSpecificPreferences esp = new EnvironmentSpecificPreferences();
- esp.setSlurm(slurm);
- groupComputeResourcePreference.setSpecificPreferences(esp);
+ gcBuilder.setSpecificPreferences(
+ org.apache.airavata.model.appcatalog.groupresourceprofile.proto.EnvironmentSpecificPreferences.newBuilder()
+ .setSlurm(slurmBuilder.build())
+ .build());
// Note: skipping copying of reservation time and ssh account provisioner configuration for now
- return groupComputeResourcePreference;
+ return gcBuilder.build();
}
private static ComputeResourcePolicy createDefaultComputeResourcePolicy(
String groupResourceProfileId, String computeResourceId, RegistryServerHandler registryServiceClient)
- throws TException {
- ComputeResourcePolicy computeResourcePolicy = new ComputeResourcePolicy();
- computeResourcePolicy.setComputeResourceId(computeResourceId);
- computeResourcePolicy.setGroupResourceProfileId(groupResourceProfileId);
+ throws Exception {
ComputeResourceDescription computeResourceDescription =
registryServiceClient.getComputeResource(computeResourceId);
- List<String> batchQueueNames = computeResourceDescription.getBatchQueues().stream()
+ List<String> batchQueueNames = computeResourceDescription.getBatchQueuesList().stream()
.map(bq -> bq.getQueueName())
.collect(Collectors.toList());
- computeResourcePolicy.setAllowedBatchQueues(batchQueueNames);
- return computeResourcePolicy;
+ return ComputeResourcePolicy.newBuilder()
+ .setComputeResourceId(computeResourceId)
+ .setGroupResourceProfileId(groupResourceProfileId)
+ .addAllAllowedBatchQueues(batchQueueNames)
+ .build();
}
private static boolean isValid(String s) {
@@ -900,7 +899,7 @@ public class AiravataDataMigrator {
}
}
- private static CredentialStoreService.Iface getCredentialStoreServiceClient() throws TException {
+ private static CredentialStoreService.Iface getCredentialStoreServiceClient() throws Exception {
try {
return new CredentialStoreServerHandler();
} catch (Exception e) {
@@ -912,7 +911,7 @@ public class AiravataDataMigrator {
return new RegistryServerHandler();
}
- private static AuthzToken getManagementUsersAccessToken(String tenantId) throws TException {
+ private static AuthzToken getManagementUsersAccessToken(String tenantId) throws Exception {
try {
AiravataSecurityManager securityManager = SecurityManagerFactory.getSecurityManager();
AuthzToken authzToken = securityManager.getUserManagementServiceAccountAuthzToken(tenantId);
diff --git a/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java b/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
index 498157fc5e..a14fad2780 100644
--- a/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
+++ b/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
@@ -43,4 +43,15 @@ public class ThriftDataModelConversion {
user.setEmail(userProfile.getEmails().get(0));
return user;
}
+
+ public static User getUser(org.apache.airavata.model.user.proto.UserProfile userProfile) {
+ User user = new User();
+ user.setUserId(userProfile.getAiravataInternalUserId());
+ user.setDomainId(userProfile.getGatewayId());
+ user.setUserName(userProfile.getUserId());
+ user.setFirstName(userProfile.getFirstName());
+ user.setLastName(userProfile.getLastName());
+ user.setEmail(userProfile.getEmailsList().get(0));
+ return user;
+ }
}
diff --git a/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java b/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
index 5948730bf9..a34360c3eb 100644
--- a/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
+++ b/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
@@ -61,7 +61,7 @@ public class InputDataStagingTask extends DataStagingTask {
+ getTaskId() + ":- Couldn't stage file " + processInput.getName()
+ " , file name shouldn't be null. ";
logger.error(message);
- if (processInput.isIsRequired()) {
+ if (processInput.getIsRequired()) {
message += "File name is null, but this input's isRequired bit is not set";
} else {
message += "File name is null";
diff --git a/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java b/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
index c0d5a8e0d9..f85938023a 100644
--- a/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
+++ b/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
@@ -69,7 +69,7 @@ public class OutputDataStagingTask extends DataStagingTask {
+ getTaskId() + ":- Couldn't stage file " + processOutput.getName()
+ " , file name shouldn't be null. ";
logger.error(message);
- if (processOutput.isIsRequired()) {
+ if (processOutput.getIsRequired()) {
message += "File name is null, but this output's isRequired bit is not set";
} else {
message += "File name is null";
@@ -214,7 +214,7 @@ public class OutputDataStagingTask extends DataStagingTask {
try {
ApplicationInterfaceDescription appInterface =
getTaskContext().getApplicationInterfaceDescription();
- if (appInterface != null && appInterface.isCleanAfterStaged()) {
+ if (appInterface != null && appInterface.getCleanAfterStaged()) {
logger.info(
"cleanAfterStaged is enabled, deleting source files after successful staging for task with the Id: {}",
getTaskId());
@@ -249,7 +249,7 @@ public class OutputDataStagingTask extends DataStagingTask {
try {
ApplicationInterfaceDescription appInterface =
getTaskContext().getApplicationInterfaceDescription();
- if (appInterface != null && appInterface.isCleanAfterStaged()) {
+ if (appInterface != null && appInterface.getCleanAfterStaged()) {
logger.info(
"cleanAfterStaged is enabled, deleting source file after successful staging for task with the Id: {}",
getTaskId());
diff --git a/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java b/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
index 757a3139e7..425cedb9f1 100644
--- a/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
+++ b/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
@@ -25,7 +25,7 @@ import org.apache.airavata.compute.util.AgentUtils;
import org.apache.airavata.compute.util.CommandOutput;
import org.apache.airavata.compute.util.SSHJAgentAdaptor;
import org.apache.airavata.model.appcatalog.storageresource.proto.StorageResourceDescription;
-import org.apache.airavata.model.credential.store.proto.SSHCredential;
+import org.apache.airavata.model.credential.store.SSHCredential;
import org.apache.airavata.model.data.movement.proto.DataMovementInterface;
import org.apache.airavata.model.data.movement.proto.DataMovementProtocol;
import org.apache.airavata.model.data.movement.proto.SCPDataMovement;
@@ -48,7 +48,7 @@ public class SSHJStorageAdaptor extends SSHJAgentAdaptor implements StorageResou
logger.info("Fetching data movement interfaces for storage resource " + storageResourceId);
Optional<DataMovementInterface> dmInterfaceOp =
- storageResourceDescription.getDataMovementInterfaces().stream()
+ storageResourceDescription.getDataMovementInterfacesList().stream()
.filter(iface -> iface.getDataMovementProtocol() == DataMovementProtocol.SCP)
.findFirst();
@@ -67,7 +67,7 @@ public class SSHJStorageAdaptor extends SSHJAgentAdaptor implements StorageResou
logger.info("Description for token : " + token + " : " + sshCredential.getDescription());
- String alternateHostName = scpDataMovement.getAlternativeSCPHostName();
+ String alternateHostName = scpDataMovement.getAlternativeScpHostName();
String selectedHostName = (alternateHostName == null || "".equals(alternateHostName))
? storageResourceDescription.getHostName()
: alternateHostName;
diff --git a/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java b/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
index 28db41c5a1..0403de959a 100644
--- a/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
+++ b/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
@@ -25,7 +25,7 @@ import org.apache.airavata.compute.util.CommandOutput;
import org.apache.airavata.compute.util.SshAdaptorParams;
import org.apache.airavata.compute.util.SshAgentAdaptor;
import org.apache.airavata.model.appcatalog.storageresource.proto.StorageResourceDescription;
-import org.apache.airavata.model.credential.store.proto.SSHCredential;
+import org.apache.airavata.model.credential.store.SSHCredential;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;