You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/12/15 16:43:10 UTC
[airavata] 10/20: Thrift CPI service Script for User Profile
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch registry-refactoring
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 71f642276e31582f91f8d712deba7ef539ba4ddf
Author: Abhiit Karanjkar <ay...@indiana.edu>
AuthorDate: Fri Nov 4 11:48:14 2016 -0400
Thrift CPI service Script for User Profile
Merge conflicts: discarded all changes to generate-cpi-stubs.sh
---
.../registry/core/impl/WorkflowCatalogImpl.java | 252 +++++++++++++++++++++
.../component-cpis/user-profile-crud-cpi.thrift | 47 ++++
2 files changed, 299 insertions(+)
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/impl/WorkflowCatalogImpl.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/impl/WorkflowCatalogImpl.java
new file mode 100644
index 0000000..e8456e9
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/impl/WorkflowCatalogImpl.java
@@ -0,0 +1,252 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.core.workflow.catalog.impl;
+
+import org.apache.airavata.model.WorkflowModel;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.registry.core.workflow.catalog.resources.*;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogThriftConversion;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogUtils;
+import org.apache.airavata.registry.cpi.WorkflowCatalog;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WorkflowCatalogImpl implements WorkflowCatalog {
+ private final static Logger logger = LoggerFactory.getLogger(WorkflowCatalogImpl.class);
+
+ @Override
+ public List<String> getAllWorkflows(String gatewayId) throws WorkflowCatalogException {
+ List<String> workflowIds = new ArrayList<String>();
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ resource.setGatewayId(gatewayId);
+ workflowIds = resource.getAllIds();
+ } catch (Exception e) {
+ logger.error("Error while retrieving all the workflow template ids...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ return workflowIds;
+ }
+
+ @Override
+ public WorkflowModel getWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ WorkflowResource wfResource = (WorkflowResource)resource.get(workflowTemplateId);
+ return WorkflowCatalogThriftConversion.getWorkflow(wfResource);
+ } catch (Exception e) {
+ logger.error("Error while retrieving the workflow...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ }
+
+ @Override
+ public void deleteWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ resource.remove(workflowTemplateId);
+ } catch (Exception e) {
+ logger.error("Error while deleting the workflow...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ }
+
+ @Override
+ public String registerWorkflow(WorkflowModel workflow, String gatewayId) throws WorkflowCatalogException {
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ resource.setWfTemplateId(WorkflowCatalogUtils.getID(workflow.getName()));
+ resource.setWfName(workflow.getName());
+ resource.setGraph(workflow.getGraph());
+ resource.setGatewayId(gatewayId);
+ if (workflow.getImage() != null){
+ resource.setImage(new String(workflow.getImage()));
+ }
+ resource.save();
+ workflow.setTemplateId(resource.getWfTemplateId());
+ List<InputDataObjectType> workflowInputs = workflow.getWorkflowInputs();
+ if (workflowInputs != null && workflowInputs.size() != 0){
+ for (InputDataObjectType input : workflowInputs){
+ WorkflowInputResource wfInputResource = new WorkflowInputResource();
+ wfInputResource.setWorkflowResource(resource);
+ wfInputResource.setInputKey(input.getName());
+ wfInputResource.setInputVal(input.getValue());
+ wfInputResource.setWfTemplateId(resource.getWfTemplateId());
+ wfInputResource.setDataType(input.getType().toString());
+ wfInputResource.setAppArgument(input.getApplicationArgument());
+ wfInputResource.setStandardInput(input.isStandardInput());
+ wfInputResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
+ wfInputResource.setMetadata(input.getMetaData());
+ wfInputResource.save();
+ }
+ }
+ List<OutputDataObjectType> workflowOutputs = workflow.getWorkflowOutputs();
+ if (workflowOutputs != null && workflowOutputs.size() != 0){
+ for (OutputDataObjectType output : workflowOutputs){
+ WorkflowOutputResource outputResource = new WorkflowOutputResource();
+ outputResource.setWorkflowResource(resource);
+ outputResource.setOutputKey(output.getName());
+ outputResource.setOutputVal(output.getValue());
+ outputResource.setWfTemplateId(resource.getWfTemplateId());
+ outputResource.setDataType(output.getType().toString());
+ outputResource.setAppArgument(output.getApplicationArgument());
+ outputResource.setDataNameLocation(output.getLocation());
+ outputResource.setRequired(output.isIsRequired());
+ outputResource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
+ outputResource.setOutputStreaming(output.isOutputStreaming());
+ outputResource.setDataMovement(output.isDataMovement());
+ outputResource.save();
+ }
+ }
+ return resource.getWfTemplateId();
+ } catch (Exception e) {
+ logger.error("Error while saving the workflow...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ }
+
+ @Override
+ public void updateWorkflow(String workflowTemplateId, WorkflowModel workflow) throws WorkflowCatalogException {
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
+ existingWF.setWfName(workflow.getName());
+ existingWF.setGraph(workflow.getGraph());
+ if (workflow.getImage() != null){
+ existingWF.setImage(new String(workflow.getImage()));
+ }
+ existingWF.save();
+ List<InputDataObjectType> existingwFInputs = workflow.getWorkflowInputs();
+ if (existingwFInputs != null && existingwFInputs.size() != 0){
+ for (InputDataObjectType input : existingwFInputs){
+ WorkflowInputResource wfInputResource = new WorkflowInputResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
+ ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.INPUT_KEY,input.getName());
+ WorkflowInputResource existingInput = (WorkflowInputResource)wfInputResource.get(ids);
+ existingInput.setWorkflowResource(existingWF);
+ existingInput.setInputKey(input.getName());
+ existingInput.setInputVal(input.getValue());
+ existingInput.setWfTemplateId(existingWF.getWfTemplateId());
+ existingInput.setDataType(input.getType().toString());
+ existingInput.setAppArgument(input.getApplicationArgument());
+ existingInput.setStandardInput(input.isStandardInput());
+ existingInput.setUserFriendlyDesc(input.getUserFriendlyDescription());
+ existingInput.setMetadata(input.getMetaData());
+ existingInput.save();
+ }
+ }
+ List<OutputDataObjectType> workflowOutputs = workflow.getWorkflowOutputs();
+ if (workflowOutputs != null && workflowOutputs.size() != 0){
+ for (OutputDataObjectType output : workflowOutputs){
+ WorkflowOutputResource outputResource = new WorkflowOutputResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
+ ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY,output.getName());
+ WorkflowOutputResource existingOutput = (WorkflowOutputResource)outputResource.get(ids);
+ existingOutput.setWorkflowResource(existingWF);
+ existingOutput.setOutputKey(output.getName());
+ existingOutput.setOutputVal(output.getValue());
+ existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
+ existingOutput.setDataType(output.getType().toString());
+ existingOutput.setDataType(output.getType().toString());
+ existingOutput.setAppArgument(output.getApplicationArgument());
+ existingOutput.setDataNameLocation(output.getLocation());
+ existingOutput.setRequired(output.isIsRequired());
+ existingOutput.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
+ existingOutput.setOutputStreaming(output.isOutputStreaming());
+ existingOutput.setDataMovement(output.isDataMovement());
+ existingOutput.save();
+ }
+ }
+ } catch (Exception e) {
+ logger.error("Error while updating the workflow...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ }
+
+ @Override
+ public String getWorkflowTemplateId(String workflowName) throws WorkflowCatalogException {
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
+ if (resourceList != null && !resourceList.isEmpty()){
+ WorkflowResource wfResource = (WorkflowResource)resourceList.get(0);
+ return wfResource.getWfTemplateId();
+ }
+ } catch (Exception e) {
+ logger.error("Error while retrieving the workflow with the workflow name...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isWorkflowExistWithName(String workflowName) throws WorkflowCatalogException {
+ try {
+ WorkflowResource resource = new WorkflowResource();
+ List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
+ if (resourceList != null && !resourceList.isEmpty()){
+ return true;
+ }
+ } catch (Exception e) {
+ logger.error("Error while retrieving the workflow with the workflow name...", e);
+ throw new WorkflowCatalogException(e);
+ }
+ return false;
+ }
+
+ @Override
+ public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws WorkflowCatalogException {
+ WorkflowResource resource = new WorkflowResource();
+ WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
+ if (workflowOutputs != null && workflowOutputs.size() != 0) {
+ for (OutputDataObjectType output : workflowOutputs) {
+ WorkflowOutputResource outputResource = new WorkflowOutputResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID, existingWF.getWfTemplateId());
+ ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY, output.getName());
+ WorkflowOutputResource existingOutput = (WorkflowOutputResource) outputResource.get(ids);
+ existingOutput.setWorkflowResource(existingWF);
+ existingOutput.setOutputKey(output.getName());
+ existingOutput.setOutputVal(output.getValue());
+ existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
+ existingOutput.setDataType(output.getType().toString());
+ existingOutput.setDataType(output.getType().toString());
+ existingOutput.setAppArgument(output.getApplicationArgument());
+ existingOutput.setDataNameLocation(output.getLocation());
+ existingOutput.setRequired(output.isIsRequired());
+ existingOutput.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
+ existingOutput.setOutputStreaming(output.isOutputStreaming());
+ existingOutput.setDataMovement(output.isDataMovement());
+ existingOutput.save();
+ }
+ }
+ }
+}
diff --git a/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift b/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift
new file mode 100644
index 0000000..8cd9b0c
--- /dev/null
+++ b/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+/*
+ * Component Programming Interface definition for Apache Airavata GFac Service.
+ *
+*/
+
+include "../data-models/user-group-models/user_profile_model.thrift"
+
+
+namespace java org.apache.airavata.userprofile.crude.cpi
+
+const string CS_CPI_VERSION = "0.16.0"
+
+service UserProfileCrudeService {
+
+ string addUserProfile (1: required user_profile_model.UserProfile userProfile)
+ throws (1:registry_api_errors.RegistryServiceException registryException);
+
+ string updateUserProfile (1: required user_profile_model.UserProfile userProfile)
+ throws (1:registry_api_errors.RegistryServiceException registryException);
+
+ user_profile_model.UserProfile getUserProfile(1: required string userId)
+ throws (1:registry_api_errors.RegistryServiceException registryException);
+
+ bool deleteUserProfile(1: required string userId)
+ throws (1:registry_api_errors.RegistryServiceException registryException);
+
+}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.