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 <[email protected]> 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;
