airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From samin...@apache.org
Subject git commit: https://issues.apache.org/jira/browse/AIRAVATA-1203
Date Mon, 12 May 2014 06:44:02 GMT
Repository: airavata
Updated Branches:
  refs/heads/master 483a0f529 -> 011ec5e7a


https://issues.apache.org/jira/browse/AIRAVATA-1203


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/011ec5e7
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/011ec5e7
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/011ec5e7

Branch: refs/heads/master
Commit: 011ec5e7a085f1cbcbb91802d2d43407d13a3016
Parents: 483a0f5
Author: Saminda Wijeratne <samindaw@gmail.com>
Authored: Sun May 11 23:43:36 2014 -0700
Committer: Saminda Wijeratne <samindaw@gmail.com>
Committed: Sun May 11 23:43:36 2014 -0700

----------------------------------------------------------------------
 .../applicationCatalog.thrift                   | 170 ++++++++++++++
 .../applicationCatalogDataModel.thrift          | 222 +++++++++++++++++++
 2 files changed, 392 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/011ec5e7/airavata-api/thrift-interface-descriptions/applicationCatalog.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/applicationCatalog.thrift b/airavata-api/thrift-interface-descriptions/applicationCatalog.thrift
new file mode 100644
index 0000000..19f81e5
--- /dev/null
+++ b/airavata-api/thrift-interface-descriptions/applicationCatalog.thrift
@@ -0,0 +1,170 @@
+/*
+ * 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.
+ *
+ */
+
+/*
+ * Application Programming Interface definition for Apache Airavata Services.
+ *   this parent thrift file is contains all service interfaces. The data models are 
+ *   described in respective thrift files.
+*/
+
+include "airavataErrors.thrift"
+include "airavataDataModel.thrift"
+include "computeResourceDescrption.thrift"
+
+namespace java org.apache.airavata.api.appcatalog
+namespace php Airavata.API.AppCatalog
+namespace cpp airavata.api.appcatalog
+namespace perl AiravataAPI.AppCatalog
+namespace py airavata.api.appcatalog
+namespace js AiravataAPI.AppCatalog
+
+/*
+ * Airavata Interface Versions depend upon this Thrift Interface File. When Making changes,
please edit the
+ *  Version Constants according to Semantic Versioning Specification (SemVer) http://semver.org.
+ *
+ * Note: The Airavata API version may be different from the Airavata software release versions.
+ *
+ * The Airavata API version is composed as a dot delimited string with major, minor, and
patch level components.
+ *
+ *  - Major: Incremented for backward incompatible changes. An example would be changes to
interfaces.
+ *  - Minor: Incremented for backward compatible changes. An example would be the addition
of a new optional methods.
+ *  - Patch: Incremented for bug fixes. The patch level should be increased for every edit
that doesn't result
+ *              in a change to major/minor version numbers.
+*/
+const string AIRAVATA_API_VERSION = "0.12.0"
+
+service ApplicationCatalog {
+
+/*
+ * Apache Airavata API Service Methods. For data structures associated in the signatures,
please see included thrift files
+*/
+
+  /** Query Airavata to fetch the API version */
+  string GetAPIVersion(),
+  
+  /**
+   * Manage Computer Resources
+  */
+  void addComputerResourceDescription(1: ComputeResourceDescription computeResourceDescription)
+    throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+            
+  void addSSHJobSubmissionProtocol(1: string computeResourceId, 2: SSHJobSubmission jobSubmission)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+            
+  void addGSISSHJobSubmissionProtocol(1: string computeResourceId, 2: GSISSHJobSubmission
jobSubmission)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+            
+  void addGlobusJobSubmissionProtocol(1: string computeResourceId, 2: GlobusJobSubmission
jobSubmission)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)     
+            
+  void addDataMovementProtocol(1: string computeResourceId, 2: SCPDataMovement dataMovement)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase) 
+            
+  list<string> listComputeResourceDescriptions()
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+
+  ComputeResourceDescription getComputeResourceDescription(1: string computeResourceId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+
+  SSHJobSubmission getSSHJobSubmissionProtocol(1: string sshJobSubmissionProtocolResourceId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+            
+  GSISSHJobSubmission getGSISSHJobSubmissionProtocol(1: string gsisshJobSubmissionProtocolResourceId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+            
+  GlobusJobSubmission getGlobusJobSubmissionProtocol(1: string globusJobSubmissionProtocolResourceId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)     
+            
+  SCPDataMovement getDataMovementProtocol(1: string scpDataMovementResourceId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase) 
+  
+  list<string> listComputeResourceDescriptions()
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+
+  bool isComputeResourceDescriptionRegistered(1: string hostName)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+
+  ComputeResourceDescription getComputeResourceDescriptionFromHostName(1: string hostName)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+                       
+  /**
+   * Manage Application Interfaces
+  */
+  void addApplicationInterface(1: ApplicationInterface applicationInterface)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)
+            
+  list<string> listApplicationInterfaceIds()
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)  
+
+  ApplicationInterface getApplicationInterface(1: string applicationInterfaceId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)  
+
+  /**
+   * Manage application deployments
+  */
+  void addApplicationDeployment(1: string applicationInterfaceId, 2: ApplicationDeployment
applicationDeployment)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)   
+            
+  list<string> listApplicationDeploymentIds()
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)  
+
+  ApplicationDeployment getApplicationDeployment(1: string applicationDeploymentId)
+  	throws (1: airavataErrors.InvalidRequestException ire,
+            2: airavataErrors.AiravataClientException ace,
+            3: airavataErrors.AiravataSystemException ase)  
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/011ec5e7/airavata-api/thrift-interface-descriptions/applicationCatalogDataModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/applicationCatalogDataModel.thrift
b/airavata-api/thrift-interface-descriptions/applicationCatalogDataModel.thrift
new file mode 100644
index 0000000..65314f0
--- /dev/null
+++ b/airavata-api/thrift-interface-descriptions/applicationCatalogDataModel.thrift
@@ -0,0 +1,222 @@
+/*
+ * 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.
+ *
+ */
+
+namespace java org.apache.airavata.model.appcatalog.computeresource
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+/**
+ * Enumeration of local resource job managers supported by Airavata
+ *
+ * FORK:
+ *  Forking of commands without any job manager
+ *
+ * PBS:
+ *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include
TORQUE, PBSPro, Grid Engine.
+ *
+ * UGE:
+ *  Univa Grid Engine, a variation of PBS implementation.
+ *
+ * SLURM:
+ *  The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+*/
+enum ResourceJobManager {
+    FORK,
+    PBS,
+    UGE,
+    SLURM
+}
+
+/**
+ * Enumeration of Airavata supported Job Submission Mechanisms for High Perforamance Computing
Clusters.
+ *
+ * SSH:
+ *  Execute remote job submission commands using via secure shell protocol.
+ *
+ * GRAM:
+ *  Execute remote jobs via Globus GRAM service.
+ *
+ * UNICORE:
+ *  Execute remote jobs via Unicore services
+ *
+*/
+enum JobSubmissionProtocol {
+    SSH,
+    GRAM,
+    UNICORE
+}
+
+/**
+ * Enumeration of data movement supported by Airavata
+ *
+ * SCP:
+ *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include
TORQUE, PBSPro, Grid Engine.
+ *
+ * SFTP:
+ *  The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+ * GridFTP:
+ *  Globus File Transfer Protocol
+ *
+ * UNICORE_STORAGE_SERVICE:
+ *  Storage Service Provided by Unicore
+ *
+*/
+enum DataMovementProtocol {
+    SCP,
+    SFTP,
+    GridFTP,
+    UNICORE_STORAGE_SERVICE
+}
+
+/**
+ * Enumeration of security authentication and authorization mechanisms supported by Airavata.
This enumeration just
+ *  describes the supported mechanism. The corresponding security credentials are registered
with Airavata Credential
+ *  store.
+ *
+ * USERNAME_PASSWORD:
+ *  A User Name.
+ *
+ * SSH_KEYS:
+ *  SSH Keys
+ *
+*/
+enum SecurityProtocol {
+    USERNAME_PASSWORD,
+    SSH_KEYS,
+    GSI,
+    KERBEROS,
+    OAUTH
+}
+
+
+
+struct SCPDataMovement {
+    1: required SecurityProtocol securityProtocol,
+    2: optional i32 sshPort = 22,
+}
+
+struct SSHJobSubmission {
+    2: required ResourceJobManager resourceJobManager,
+    3: optional i32 sshPort = 22
+}
+
+struct GlobusJobSubmission {
+    1: required SecurityProtocol securityProtocol,
+    2: required ResourceJobManager resourceJobManager,
+    3: optional string globusGateKeeperEndPoint
+}
+
+struct GSISSHJobSubmission {
+    2: required ResourceJobManager resourceJobManager,
+    3: optional i32 sshPort = 22,
+    4: optional set<string> exports,
+    5: optional list<string> preJobCommands,
+    6: optional list<string> postJobCommands,
+    7: optional string installedPath,
+    8: optional string monitorMode
+}
+
+/**
+ * Job Submission Protocols
+ *
+ * resourceId:
+ *
+ * hostName:
+ *   Fully Qualified Host Name.
+ *
+ * ipAddress:
+ *   IP Addresse of the Hostname.
+ *
+ * resourceDescription:
+ *  A user friendly description of the hostname.
+ *
+ * preferedJobSubmissionProtocol:
+ *  HPC resources may have multiple options to interact with the resource. This flag identified
a prefered mechanism.
+ *
+ * preferedDataMovementProtocol:
+ *  Option to specify a prefered data movement mechanism of the available options.
+ *
+*/
+struct JobSubmissionProtocols {
+    1: required bool isEmpty = 0,
+    2: optional JobSubmissionProtocol preferedJobSubmissionProtocol,
+    3: optional SSHJobSubmission sshJobSubmissionInfo,
+    4: optional string globusGRAMHost,
+    5: optional i32 globusGRAMPort = 2119,
+    6: optional string unicoreBESEndPoint
+}
+
+/**
+ * Computational Resource Description
+ *
+ * resourceId:
+ *
+ * hostName:
+ *   Fully Qualified Host Name.
+ *
+ * ipAddress:
+ *   IP Addresse of the Hostname.
+ *
+ * resourceDescription:
+ *  A user friendly description of the hostname.
+ *
+ * JobSubmissionProtocols:
+ *  A computational resources may have one or more ways of submitting Jobs. This structure
+ *  will hold all available mechanisms to interact with the resource.
+ *
+ * DataMovementProtocol:
+ *  Option to specify a prefered data movement mechanism of the available options.
+ *
+*/
+struct ComputeResourceDescription {
+    1: required bool isEmpty = 0,
+    2: required string resourceId = DEFAULT_ID,
+    3: required string hostName,
+    4: optional set<string> hostAliases,
+    4: optional set<string> ipAddresses,
+    5: optional string resourceDescription,
+    6: optional string scratchLocation,
+    7: optional string preferredJobSubmissionProtocol,
+    8: required map<string, JobSubmissionProtocol> jobSubmissionProtocols,
+    9: required map<string, DataMovementProtocol> dataMovementProtocols
+}
+
+/**
+ * Following structs are added for completeness of the application catalog
+*/
+
+struct ApplicationDescriptor {
+    1: required string applicationDescriptorId = DEFAULT_ID,
+	2: optional string applicationDescriptorData //serialized ApplicationDescriptor
+}
+
+struct ApplicationDeployment {
+    1: required string deploymentId = DEFAULT_ID,
+	2: required ComputeResourceDescription computeResourceDescription,
+	3: required ApplicationDescriptor applicationDescriptor,
+}
+
+struct ApplicationInterface {
+    1: required string applicationInterfaceId = DEFAULT_ID,
+    2: optional string applicationInterfaceData, //serialized ServiceDescriptor
+	3: optional list<ApplicationDeployment> applicationDeployments
+}


Mime
View raw message