You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2017/12/16 12:50:31 UTC

[airavata-sandbox] branch master updated (c52baec -> ac74cc7)

This is an automated email from the ASF dual-hosted git repository.

smarru pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git.


    from c52baec  Integrated notification manager with the latest changes (#33)
     new 694b9aa  Copied files for Thrift
     new 548fa2d  Template file
     new bf6e876  Thrift files
     new 1be5f9a  API class that contains the function to execute Airavata experiment
     new feefae9  CWL related files
     new 05da1dc  Readme
     new 79bdef7  Testing files
     new 630b627  Final report
     new 0e32d38  Launched pic
     new 7cbf3cc  Ignoring IDE files
     new e72577e  Updated report
     new ac74cc7  Newer report

The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 cwl-workflows/.gitignore                           |     1 +
 cwl-workflows/FinalReport.pdf                      |   Bin 0 -> 725348 bytes
 cwl-workflows/README.md                            |    20 +
 cwl-workflows/airavata-client.ini.template         |    10 +
 .../apache}/__init__.py                            |     0
 .../apache/airavata}/__init__.py                   |     0
 cwl-workflows/apache/airavata/api/Airavata-remote  |  1293 +
 cwl-workflows/apache/airavata/api/Airavata.py      | 52211 +++++++++++++++++++
 .../apache/airavata/api/__init__.py                |     0
 cwl-workflows/apache/airavata/api/constants.py     |    13 +
 .../apache/airavata/api/error}/__init__.py         |     0
 .../apache/airavata/api/error/constants.py         |    12 +
 cwl-workflows/apache/airavata/api/error/ttypes.py  |   876 +
 cwl-workflows/apache/airavata/api/ttypes.py        |    33 +
 .../apache/airavata/model}/__init__.py             |     0
 .../apache/airavata/model/appcatalog}/__init__.py  |     0
 .../model/appcatalog/appdeployment}/__init__.py    |     0
 .../model/appcatalog/appdeployment/constants.py    |    12 +
 .../model/appcatalog/appdeployment/ttypes.py       |   639 +
 .../model/appcatalog/appinterface}/__init__.py     |     0
 .../model/appcatalog/appinterface/constants.py     |    12 +
 .../model/appcatalog/appinterface/ttypes.py        |   201 +
 .../model/appcatalog/computeresource}/__init__.py  |     0
 .../model/appcatalog/computeresource/constants.py  |    12 +
 .../model/appcatalog/computeresource/ttypes.py     |  1615 +
 .../model/appcatalog/gatewayprofile}/__init__.py   |     0
 .../model/appcatalog/gatewayprofile/constants.py   |    12 +
 .../model/appcatalog/gatewayprofile/ttypes.py      |   522 +
 .../model/appcatalog/parallelism}/__init__.py      |     0
 .../model/appcatalog/parallelism/constants.py      |    12 +
 .../model/appcatalog/parallelism/ttypes.py         |    56 +
 .../model/appcatalog/storageresource}/__init__.py  |     0
 .../model/appcatalog/storageresource/constants.py  |    12 +
 .../model/appcatalog/storageresource/ttypes.py     |   152 +
 .../appcatalog/userresourceprofile}/__init__.py    |     0
 .../appcatalog/userresourceprofile/constants.py    |    12 +
 .../model/appcatalog/userresourceprofile/ttypes.py |   498 +
 .../apache/airavata/model/application}/__init__.py |     0
 .../airavata/model/application/io}/__init__.py     |     0
 .../airavata/model/application/io/constants.py     |    12 +
 .../apache/airavata/model/application/io/ttypes.py |   486 +
 .../apache/airavata/model/commons}/__init__.py     |     0
 .../apache/airavata/model/commons/constants.py     |    13 +
 .../apache/airavata/model/commons/ttypes.py        |   308 +
 cwl-workflows/apache/airavata/model/constants.py   |    12 +
 .../apache/airavata/model/data}/__init__.py        |     0
 .../airavata/model/data/movement}/__init__.py      |     0
 .../airavata/model/data/movement/constants.py      |    12 +
 .../apache/airavata/model/data/movement/ttypes.py  |   588 +
 .../airavata/model/data/replica}/__init__.py       |     0
 .../airavata/model/data/replica/constants.py       |    12 +
 .../apache/airavata/model/data/replica/ttypes.py   |   477 +
 .../apache/airavata/model/dbevent}/__init__.py     |     0
 .../apache/airavata/model/dbevent/constants.py     |    12 +
 .../apache/airavata/model/dbevent/ttypes.py        |   462 +
 .../apache/airavata/model}/experiment/__init__.py  |     0
 .../apache/airavata/model/experiment/constants.py  |    12 +
 .../apache/airavata/model/experiment/ttypes.py     |  1061 +
 .../apache/airavata/model/group}/__init__.py       |     0
 .../apache/airavata/model/group/constants.py       |    12 +
 .../apache/airavata/model/group/ttypes.py          |   169 +
 .../apache/airavata/model/job}/__init__.py         |     0
 .../apache/airavata/model/job/constants.py         |    12 +
 cwl-workflows/apache/airavata/model/job/ttypes.py  |   223 +
 .../apache/airavata/model/messaging}/__init__.py   |     0
 .../airavata/model/messaging/event}/__init__.py    |     0
 .../airavata/model/messaging/event/constants.py    |    12 +
 .../airavata/model/messaging/event/ttypes.py       |  1404 +
 .../apache/airavata/model/process}/__init__.py     |     0
 .../apache/airavata/model/process/constants.py     |    12 +
 .../apache/airavata/model/process/ttypes.py        |   420 +
 .../apache/airavata/model/scheduling}/__init__.py  |     0
 .../apache/airavata/model/scheduling/constants.py  |    12 +
 .../apache/airavata/model/scheduling/ttypes.py     |   209 +
 .../apache/airavata/model/security}/__init__.py    |     0
 .../apache/airavata/model/security/constants.py    |    12 +
 .../apache/airavata/model/security/ttypes.py       |    97 +
 .../apache/airavata/model/status}/__init__.py      |     0
 .../apache/airavata/model/status/constants.py      |    12 +
 .../apache/airavata/model/status/ttypes.py         |   645 +
 .../apache/airavata/model/task}/__init__.py        |     0
 .../apache/airavata/model/task/constants.py        |    12 +
 cwl-workflows/apache/airavata/model/task/ttypes.py |   671 +
 cwl-workflows/apache/airavata/model/ttypes.py      |    29 +
 .../apache/airavata/model/user}/__init__.py        |     0
 .../apache/airavata/model/user/constants.py        |    13 +
 cwl-workflows/apache/airavata/model/user/ttypes.py |   705 +
 .../apache/airavata/model/workflow}/__init__.py    |     0
 .../apache/airavata/model/workflow/constants.py    |    12 +
 .../apache/airavata/model/workflow/ttypes.py       |   764 +
 .../apache/airavata/model/workspace}/__init__.py   |     0
 .../apache/airavata/model/workspace/constants.py   |    12 +
 .../apache/airavata/model/workspace/ttypes.py      |   858 +
 cwl-workflows/api.py                               |    89 +
 cwl-workflows/arguments.yml                        |     3 +
 .../credential_store_data_models}/__init__.py      |     0
 .../credential_store_data_models/constants.py      |    13 +
 .../credential_store_data_models/ttypes.py         |   729 +
 cwl-workflows/experiment_launched.jpg              |   Bin 0 -> 51953 bytes
 cwl-workflows/requirements.txt                     |     3 +
 cwl-workflows/script_runner.cwl                    |    15 +
 cwl-workflows/test.py                              |    25 +
 cwl-workflows/workflow-tool.cwl                    |    25 +
 103 files changed, 68932 insertions(+)
 create mode 100644 cwl-workflows/.gitignore
 create mode 100644 cwl-workflows/FinalReport.pdf
 create mode 100644 cwl-workflows/README.md
 create mode 100644 cwl-workflows/airavata-client.ini.template
 copy {allocation-manager/django/ResourceAllocationManager/dashboard/migrations => cwl-workflows/apache}/__init__.py (100%)
 copy {allocation-manager/django/ResourceAllocationManager/dashboard/migrations => cwl-workflows/apache/airavata}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/api/Airavata-remote
 create mode 100644 cwl-workflows/apache/airavata/api/Airavata.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment => cwl-workflows}/apache/airavata/api/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/api/constants.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/api/error}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/api/error/constants.py
 create mode 100644 cwl-workflows/apache/airavata/api/error/ttypes.py
 create mode 100644 cwl-workflows/apache/airavata/api/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model}/__init__.py (100%)
 copy {allocation-manager/django/ResourceAllocationManager/dashboard/migrations => cwl-workflows/apache/airavata/model/appcatalog}/__init__.py (100%)
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/appdeployment}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/appdeployment/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/appdeployment/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/appinterface}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/appinterface/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/appinterface/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/computeresource}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/computeresource/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/computeresource/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/gatewayprofile}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/gatewayprofile/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/parallelism}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/parallelism/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/parallelism/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/storageresource}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/storageresource/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/storageresource/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/appcatalog/userresourceprofile}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/userresourceprofile/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/appcatalog/userresourceprofile/ttypes.py
 copy {allocation-manager/django/ResourceAllocationManager/dashboard/migrations => cwl-workflows/apache/airavata/model/application}/__init__.py (100%)
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/application/io}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/application/io/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/application/io/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/commons}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/commons/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/commons/ttypes.py
 create mode 100644 cwl-workflows/apache/airavata/model/constants.py
 copy {allocation-manager/django/ResourceAllocationManager/dashboard/migrations => cwl-workflows/apache/airavata/model/data}/__init__.py (100%)
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/data/movement}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/data/movement/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/data/movement/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/data/replica}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/data/replica/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/data/replica/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/dbevent}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/dbevent/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/dbevent/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace => cwl-workflows/apache/airavata/model}/experiment/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/experiment/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/experiment/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/group}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/group/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/group/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/job}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/job/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/job/ttypes.py
 copy {allocation-manager/django/ResourceAllocationManager/dashboard/migrations => cwl-workflows/apache/airavata/model/messaging}/__init__.py (100%)
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/messaging/event}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/messaging/event/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/messaging/event/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/process}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/process/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/process/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/scheduling}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/scheduling/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/scheduling/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/security}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/security/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/security/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/status}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/status/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/status/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/task}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/task/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/task/ttypes.py
 create mode 100644 cwl-workflows/apache/airavata/model/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/user}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/user/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/user/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/workflow}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/workflow/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/workflow/ttypes.py
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/apache/airavata/model/workspace}/__init__.py (100%)
 create mode 100644 cwl-workflows/apache/airavata/model/workspace/constants.py
 create mode 100644 cwl-workflows/apache/airavata/model/workspace/ttypes.py
 create mode 100644 cwl-workflows/api.py
 create mode 100644 cwl-workflows/arguments.yml
 copy {Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment => cwl-workflows/credential_store_data_models}/__init__.py (100%)
 create mode 100644 cwl-workflows/credential_store_data_models/constants.py
 create mode 100644 cwl-workflows/credential_store_data_models/ttypes.py
 create mode 100644 cwl-workflows/experiment_launched.jpg
 create mode 100644 cwl-workflows/requirements.txt
 create mode 100644 cwl-workflows/script_runner.cwl
 create mode 100644 cwl-workflows/test.py
 create mode 100644 cwl-workflows/workflow-tool.cwl

-- 
To stop receiving notification emails like this one, please contact
['"commits@airavata.apache.org" <co...@airavata.apache.org>'].

[airavata-sandbox] 10/12: Ignoring IDE files

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 7cbf3cc6f8bbbce116d16e9786ea40df54492e53
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:57:12 2017 -0500

    Ignoring IDE files
---
 cwl-workflows/.gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/cwl-workflows/.gitignore b/cwl-workflows/.gitignore
new file mode 100644
index 0000000..1c2d52b
--- /dev/null
+++ b/cwl-workflows/.gitignore
@@ -0,0 +1 @@
+.idea/*

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 03/12: Thrift files

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit bf6e876cfa1e558ceaaa0a1029c1acaa8b7d4f85
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:55:13 2017 -0500

    Thrift files
---
 .../credential_store_data_models/__init__.py       |   1 +
 .../credential_store_data_models/constants.py      |  13 +
 .../credential_store_data_models/ttypes.py         | 729 +++++++++++++++++++++
 3 files changed, 743 insertions(+)

diff --git a/cwl-workflows/credential_store_data_models/__init__.py b/cwl-workflows/credential_store_data_models/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/cwl-workflows/credential_store_data_models/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']
diff --git a/cwl-workflows/credential_store_data_models/constants.py b/cwl-workflows/credential_store_data_models/constants.py
new file mode 100644
index 0000000..2b09fa9
--- /dev/null
+++ b/cwl-workflows/credential_store_data_models/constants.py
@@ -0,0 +1,13 @@
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+import sys
+from .ttypes import *
+DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
diff --git a/cwl-workflows/credential_store_data_models/ttypes.py b/cwl-workflows/credential_store_data_models/ttypes.py
new file mode 100644
index 0000000..7d6cadf
--- /dev/null
+++ b/cwl-workflows/credential_store_data_models/ttypes.py
@@ -0,0 +1,729 @@
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+import sys
+
+from thrift.transport import TTransport
+
+
+class CredentialOwnerType(object):
+    GATEWAY = 0
+    USER = 1
+
+    _VALUES_TO_NAMES = {
+        0: "GATEWAY",
+        1: "USER",
+    }
+
+    _NAMES_TO_VALUES = {
+        "GATEWAY": 0,
+        "USER": 1,
+    }
+
+
+class SummaryType(object):
+    """
+    Data Types supported in Airavata. The primitive data types
+
+    """
+    SSH = 0
+    PASSWD = 1
+    CERT = 2
+
+    _VALUES_TO_NAMES = {
+        0: "SSH",
+        1: "PASSWD",
+        2: "CERT",
+    }
+
+    _NAMES_TO_VALUES = {
+        "SSH": 0,
+        "PASSWD": 1,
+        "CERT": 2,
+    }
+
+
+class SSHCredential(object):
+    """
+    Attributes:
+     - gatewayId
+     - username
+     - passphrase
+     - publicKey
+     - privateKey
+     - persistedTime
+     - token
+     - description
+     - credentialOwnerType
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'username', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'passphrase', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'publicKey', 'UTF8', None, ),  # 4
+        (5, TType.STRING, 'privateKey', 'UTF8', None, ),  # 5
+        (6, TType.I64, 'persistedTime', None, None, ),  # 6
+        (7, TType.STRING, 'token', 'UTF8', None, ),  # 7
+        (8, TType.STRING, 'description', 'UTF8', None, ),  # 8
+        (9, TType.I32, 'credentialOwnerType', None, 0, ),  # 9
+    )
+
+    def __init__(self, gatewayId=None, username=None, passphrase=None, publicKey=None, privateKey=None, persistedTime=None, token=None, description=None, credentialOwnerType=thrift_spec[9][4],):
+        self.gatewayId = gatewayId
+        self.username = username
+        self.passphrase = passphrase
+        self.publicKey = publicKey
+        self.privateKey = privateKey
+        self.persistedTime = persistedTime
+        self.token = token
+        self.description = description
+        self.credentialOwnerType = credentialOwnerType
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.username = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.passphrase = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.publicKey = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.privateKey = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I64:
+                    self.persistedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.STRING:
+                    self.token = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 8:
+                if ftype == TType.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 9:
+                if ftype == TType.I32:
+                    self.credentialOwnerType = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('SSHCredential')
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 1)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.username is not None:
+            oprot.writeFieldBegin('username', TType.STRING, 2)
+            oprot.writeString(self.username.encode('utf-8') if sys.version_info[0] == 2 else self.username)
+            oprot.writeFieldEnd()
+        if self.passphrase is not None:
+            oprot.writeFieldBegin('passphrase', TType.STRING, 3)
+            oprot.writeString(self.passphrase.encode('utf-8') if sys.version_info[0] == 2 else self.passphrase)
+            oprot.writeFieldEnd()
+        if self.publicKey is not None:
+            oprot.writeFieldBegin('publicKey', TType.STRING, 4)
+            oprot.writeString(self.publicKey.encode('utf-8') if sys.version_info[0] == 2 else self.publicKey)
+            oprot.writeFieldEnd()
+        if self.privateKey is not None:
+            oprot.writeFieldBegin('privateKey', TType.STRING, 5)
+            oprot.writeString(self.privateKey.encode('utf-8') if sys.version_info[0] == 2 else self.privateKey)
+            oprot.writeFieldEnd()
+        if self.persistedTime is not None:
+            oprot.writeFieldBegin('persistedTime', TType.I64, 6)
+            oprot.writeI64(self.persistedTime)
+            oprot.writeFieldEnd()
+        if self.token is not None:
+            oprot.writeFieldBegin('token', TType.STRING, 7)
+            oprot.writeString(self.token.encode('utf-8') if sys.version_info[0] == 2 else self.token)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 8)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        if self.credentialOwnerType is not None:
+            oprot.writeFieldBegin('credentialOwnerType', TType.I32, 9)
+            oprot.writeI32(self.credentialOwnerType)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.username is None:
+            raise TProtocolException(message='Required field username is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class CredentialSummary(object):
+    """
+    Attributes:
+     - type
+     - gatewayId
+     - username
+     - publicKey
+     - persistedTime
+     - token
+     - description
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.I32, 'type', None, None, ),  # 1
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'username', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'publicKey', 'UTF8', None, ),  # 4
+        (5, TType.I64, 'persistedTime', None, None, ),  # 5
+        (6, TType.STRING, 'token', 'UTF8', None, ),  # 6
+        (7, TType.STRING, 'description', 'UTF8', None, ),  # 7
+    )
+
+    def __init__(self, type=None, gatewayId=None, username=None, publicKey=None, persistedTime=None, token=None, description=None,):
+        self.type = type
+        self.gatewayId = gatewayId
+        self.username = username
+        self.publicKey = publicKey
+        self.persistedTime = persistedTime
+        self.token = token
+        self.description = description
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.I32:
+                    self.type = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.username = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.publicKey = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I64:
+                    self.persistedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.STRING:
+                    self.token = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('CredentialSummary')
+        if self.type is not None:
+            oprot.writeFieldBegin('type', TType.I32, 1)
+            oprot.writeI32(self.type)
+            oprot.writeFieldEnd()
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.username is not None:
+            oprot.writeFieldBegin('username', TType.STRING, 3)
+            oprot.writeString(self.username.encode('utf-8') if sys.version_info[0] == 2 else self.username)
+            oprot.writeFieldEnd()
+        if self.publicKey is not None:
+            oprot.writeFieldBegin('publicKey', TType.STRING, 4)
+            oprot.writeString(self.publicKey.encode('utf-8') if sys.version_info[0] == 2 else self.publicKey)
+            oprot.writeFieldEnd()
+        if self.persistedTime is not None:
+            oprot.writeFieldBegin('persistedTime', TType.I64, 5)
+            oprot.writeI64(self.persistedTime)
+            oprot.writeFieldEnd()
+        if self.token is not None:
+            oprot.writeFieldBegin('token', TType.STRING, 6)
+            oprot.writeString(self.token.encode('utf-8') if sys.version_info[0] == 2 else self.token)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 7)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.type is None:
+            raise TProtocolException(message='Required field type is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.username is None:
+            raise TProtocolException(message='Required field username is unset!')
+        if self.token is None:
+            raise TProtocolException(message='Required field token is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class CommunityUser(object):
+    """
+    Attributes:
+     - gatewayName
+     - username
+     - userEmail
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'gatewayName', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'username', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'userEmail', 'UTF8', None, ),  # 3
+    )
+
+    def __init__(self, gatewayName=None, username=None, userEmail=None,):
+        self.gatewayName = gatewayName
+        self.username = username
+        self.userEmail = userEmail
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.gatewayName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.username = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.userEmail = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('CommunityUser')
+        if self.gatewayName is not None:
+            oprot.writeFieldBegin('gatewayName', TType.STRING, 1)
+            oprot.writeString(self.gatewayName.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayName)
+            oprot.writeFieldEnd()
+        if self.username is not None:
+            oprot.writeFieldBegin('username', TType.STRING, 2)
+            oprot.writeString(self.username.encode('utf-8') if sys.version_info[0] == 2 else self.username)
+            oprot.writeFieldEnd()
+        if self.userEmail is not None:
+            oprot.writeFieldBegin('userEmail', TType.STRING, 3)
+            oprot.writeString(self.userEmail.encode('utf-8') if sys.version_info[0] == 2 else self.userEmail)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.gatewayName is None:
+            raise TProtocolException(message='Required field gatewayName is unset!')
+        if self.username is None:
+            raise TProtocolException(message='Required field username is unset!')
+        if self.userEmail is None:
+            raise TProtocolException(message='Required field userEmail is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class CertificateCredential(object):
+    """
+    Attributes:
+     - communityUser
+     - x509Cert
+     - notAfter
+     - privateKey
+     - lifeTime
+     - notBefore
+     - persistedTime
+     - token
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'communityUser', (CommunityUser, CommunityUser.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'x509Cert', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'notAfter', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'privateKey', 'UTF8', None, ),  # 4
+        (5, TType.I64, 'lifeTime', None, None, ),  # 5
+        (6, TType.STRING, 'notBefore', 'UTF8', None, ),  # 6
+        (7, TType.I64, 'persistedTime', None, None, ),  # 7
+        (8, TType.STRING, 'token', 'UTF8', None, ),  # 8
+    )
+
+    def __init__(self, communityUser=None, x509Cert=None, notAfter=None, privateKey=None, lifeTime=None, notBefore=None, persistedTime=None, token=None,):
+        self.communityUser = communityUser
+        self.x509Cert = x509Cert
+        self.notAfter = notAfter
+        self.privateKey = privateKey
+        self.lifeTime = lifeTime
+        self.notBefore = notBefore
+        self.persistedTime = persistedTime
+        self.token = token
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.communityUser = CommunityUser()
+                    self.communityUser.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.x509Cert = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.notAfter = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.privateKey = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I64:
+                    self.lifeTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.STRING:
+                    self.notBefore = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.I64:
+                    self.persistedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 8:
+                if ftype == TType.STRING:
+                    self.token = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('CertificateCredential')
+        if self.communityUser is not None:
+            oprot.writeFieldBegin('communityUser', TType.STRUCT, 1)
+            self.communityUser.write(oprot)
+            oprot.writeFieldEnd()
+        if self.x509Cert is not None:
+            oprot.writeFieldBegin('x509Cert', TType.STRING, 2)
+            oprot.writeString(self.x509Cert.encode('utf-8') if sys.version_info[0] == 2 else self.x509Cert)
+            oprot.writeFieldEnd()
+        if self.notAfter is not None:
+            oprot.writeFieldBegin('notAfter', TType.STRING, 3)
+            oprot.writeString(self.notAfter.encode('utf-8') if sys.version_info[0] == 2 else self.notAfter)
+            oprot.writeFieldEnd()
+        if self.privateKey is not None:
+            oprot.writeFieldBegin('privateKey', TType.STRING, 4)
+            oprot.writeString(self.privateKey.encode('utf-8') if sys.version_info[0] == 2 else self.privateKey)
+            oprot.writeFieldEnd()
+        if self.lifeTime is not None:
+            oprot.writeFieldBegin('lifeTime', TType.I64, 5)
+            oprot.writeI64(self.lifeTime)
+            oprot.writeFieldEnd()
+        if self.notBefore is not None:
+            oprot.writeFieldBegin('notBefore', TType.STRING, 6)
+            oprot.writeString(self.notBefore.encode('utf-8') if sys.version_info[0] == 2 else self.notBefore)
+            oprot.writeFieldEnd()
+        if self.persistedTime is not None:
+            oprot.writeFieldBegin('persistedTime', TType.I64, 7)
+            oprot.writeI64(self.persistedTime)
+            oprot.writeFieldEnd()
+        if self.token is not None:
+            oprot.writeFieldBegin('token', TType.STRING, 8)
+            oprot.writeString(self.token.encode('utf-8') if sys.version_info[0] == 2 else self.token)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.communityUser is None:
+            raise TProtocolException(message='Required field communityUser is unset!')
+        if self.x509Cert is None:
+            raise TProtocolException(message='Required field x509Cert is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class PasswordCredential(object):
+    """
+    Attributes:
+     - gatewayId
+     - portalUserName
+     - loginUserName
+     - password
+     - description
+     - persistedTime
+     - token
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'portalUserName', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'loginUserName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'password', 'UTF8', None, ),  # 4
+        (5, TType.STRING, 'description', 'UTF8', None, ),  # 5
+        (6, TType.I64, 'persistedTime', None, None, ),  # 6
+        (7, TType.STRING, 'token', 'UTF8', None, ),  # 7
+    )
+
+    def __init__(self, gatewayId=None, portalUserName=None, loginUserName=None, password=None, description=None, persistedTime=None, token=None,):
+        self.gatewayId = gatewayId
+        self.portalUserName = portalUserName
+        self.loginUserName = loginUserName
+        self.password = password
+        self.description = description
+        self.persistedTime = persistedTime
+        self.token = token
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.portalUserName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.loginUserName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.password = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I64:
+                    self.persistedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.STRING:
+                    self.token = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('PasswordCredential')
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 1)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.portalUserName is not None:
+            oprot.writeFieldBegin('portalUserName', TType.STRING, 2)
+            oprot.writeString(self.portalUserName.encode('utf-8') if sys.version_info[0] == 2 else self.portalUserName)
+            oprot.writeFieldEnd()
+        if self.loginUserName is not None:
+            oprot.writeFieldBegin('loginUserName', TType.STRING, 3)
+            oprot.writeString(self.loginUserName.encode('utf-8') if sys.version_info[0] == 2 else self.loginUserName)
+            oprot.writeFieldEnd()
+        if self.password is not None:
+            oprot.writeFieldBegin('password', TType.STRING, 4)
+            oprot.writeString(self.password.encode('utf-8') if sys.version_info[0] == 2 else self.password)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 5)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        if self.persistedTime is not None:
+            oprot.writeFieldBegin('persistedTime', TType.I64, 6)
+            oprot.writeI64(self.persistedTime)
+            oprot.writeFieldEnd()
+        if self.token is not None:
+            oprot.writeFieldBegin('token', TType.STRING, 7)
+            oprot.writeString(self.token.encode('utf-8') if sys.version_info[0] == 2 else self.token)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.portalUserName is None:
+            raise TProtocolException(message='Required field portalUserName is unset!')
+        if self.loginUserName is None:
+            raise TProtocolException(message='Required field loginUserName is unset!')
+        if self.password is None:
+            raise TProtocolException(message='Required field password is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 09/12: Launched pic

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 0e32d382e0387778f162c5fcd4e209440e352efc
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:57:02 2017 -0500

    Launched pic
---
 cwl-workflows/experiment_launched.jpg | Bin 0 -> 51953 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/cwl-workflows/experiment_launched.jpg b/cwl-workflows/experiment_launched.jpg
new file mode 100644
index 0000000..26e09b4
Binary files /dev/null and b/cwl-workflows/experiment_launched.jpg differ

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 11/12: Updated report

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit e72577e49a6fcfd2def4140a4b1bdffe4bf4d8e7
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 02:05:37 2017 -0500

    Updated report
---
 cwl-workflows/FinalReport.pdf | Bin 729193 -> 725341 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/cwl-workflows/FinalReport.pdf b/cwl-workflows/FinalReport.pdf
index a078e04..4ca7f95 100644
Binary files a/cwl-workflows/FinalReport.pdf and b/cwl-workflows/FinalReport.pdf differ

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 12/12: Newer report

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit ac74cc755ab9db7d8b03c0860fa0346ad76ff260
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 02:30:46 2017 -0500

    Newer report
---
 cwl-workflows/FinalReport.pdf | Bin 725341 -> 725348 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/cwl-workflows/FinalReport.pdf b/cwl-workflows/FinalReport.pdf
index 4ca7f95..f2da99b 100644
Binary files a/cwl-workflows/FinalReport.pdf and b/cwl-workflows/FinalReport.pdf differ

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 01/12: Copied files for Thrift

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 694b9aa34e226aad422027452817fc864131d072
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:54:38 2017 -0500

    Copied files for Thrift
---
 cwl-workflows/apache/__init__.py                   |     0
 cwl-workflows/apache/airavata/__init__.py          |     0
 cwl-workflows/apache/airavata/api/Airavata-remote  |  1293 +
 cwl-workflows/apache/airavata/api/Airavata.py      | 52211 +++++++++++++++++++
 cwl-workflows/apache/airavata/api/__init__.py      |     1 +
 cwl-workflows/apache/airavata/api/constants.py     |    13 +
 .../apache/airavata/api/error/__init__.py          |     1 +
 .../apache/airavata/api/error/constants.py         |    12 +
 cwl-workflows/apache/airavata/api/error/ttypes.py  |   876 +
 cwl-workflows/apache/airavata/api/ttypes.py        |    33 +
 cwl-workflows/apache/airavata/model/__init__.py    |     1 +
 .../apache/airavata/model/appcatalog/__init__.py   |     0
 .../model/appcatalog/appdeployment/__init__.py     |     1 +
 .../model/appcatalog/appdeployment/constants.py    |    12 +
 .../model/appcatalog/appdeployment/ttypes.py       |   639 +
 .../model/appcatalog/appinterface/__init__.py      |     1 +
 .../model/appcatalog/appinterface/constants.py     |    12 +
 .../model/appcatalog/appinterface/ttypes.py        |   201 +
 .../model/appcatalog/computeresource/__init__.py   |     1 +
 .../model/appcatalog/computeresource/constants.py  |    12 +
 .../model/appcatalog/computeresource/ttypes.py     |  1615 +
 .../model/appcatalog/gatewayprofile/__init__.py    |     1 +
 .../model/appcatalog/gatewayprofile/constants.py   |    12 +
 .../model/appcatalog/gatewayprofile/ttypes.py      |   522 +
 .../model/appcatalog/parallelism/__init__.py       |     1 +
 .../model/appcatalog/parallelism/constants.py      |    12 +
 .../model/appcatalog/parallelism/ttypes.py         |    56 +
 .../model/appcatalog/storageresource/__init__.py   |     1 +
 .../model/appcatalog/storageresource/constants.py  |    12 +
 .../model/appcatalog/storageresource/ttypes.py     |   152 +
 .../appcatalog/userresourceprofile/__init__.py     |     1 +
 .../appcatalog/userresourceprofile/constants.py    |    12 +
 .../model/appcatalog/userresourceprofile/ttypes.py |   498 +
 .../apache/airavata/model/application/__init__.py  |     0
 .../airavata/model/application/io/__init__.py      |     1 +
 .../airavata/model/application/io/constants.py     |    12 +
 .../apache/airavata/model/application/io/ttypes.py |   486 +
 .../apache/airavata/model/commons/__init__.py      |     1 +
 .../apache/airavata/model/commons/constants.py     |    13 +
 .../apache/airavata/model/commons/ttypes.py        |   308 +
 cwl-workflows/apache/airavata/model/constants.py   |    12 +
 .../apache/airavata/model/data/__init__.py         |     0
 .../airavata/model/data/movement/__init__.py       |     1 +
 .../airavata/model/data/movement/constants.py      |    12 +
 .../apache/airavata/model/data/movement/ttypes.py  |   588 +
 .../apache/airavata/model/data/replica/__init__.py |     1 +
 .../airavata/model/data/replica/constants.py       |    12 +
 .../apache/airavata/model/data/replica/ttypes.py   |   477 +
 .../apache/airavata/model/dbevent/__init__.py      |     1 +
 .../apache/airavata/model/dbevent/constants.py     |    12 +
 .../apache/airavata/model/dbevent/ttypes.py        |   462 +
 .../apache/airavata/model/experiment/__init__.py   |     1 +
 .../apache/airavata/model/experiment/constants.py  |    12 +
 .../apache/airavata/model/experiment/ttypes.py     |  1061 +
 .../apache/airavata/model/group/__init__.py        |     1 +
 .../apache/airavata/model/group/constants.py       |    12 +
 .../apache/airavata/model/group/ttypes.py          |   169 +
 .../apache/airavata/model/job/__init__.py          |     1 +
 .../apache/airavata/model/job/constants.py         |    12 +
 cwl-workflows/apache/airavata/model/job/ttypes.py  |   223 +
 .../apache/airavata/model/messaging/__init__.py    |     0
 .../airavata/model/messaging/event/__init__.py     |     1 +
 .../airavata/model/messaging/event/constants.py    |    12 +
 .../airavata/model/messaging/event/ttypes.py       |  1404 +
 .../apache/airavata/model/process/__init__.py      |     1 +
 .../apache/airavata/model/process/constants.py     |    12 +
 .../apache/airavata/model/process/ttypes.py        |   420 +
 .../apache/airavata/model/scheduling/__init__.py   |     1 +
 .../apache/airavata/model/scheduling/constants.py  |    12 +
 .../apache/airavata/model/scheduling/ttypes.py     |   209 +
 .../apache/airavata/model/security/__init__.py     |     1 +
 .../apache/airavata/model/security/constants.py    |    12 +
 .../apache/airavata/model/security/ttypes.py       |    97 +
 .../apache/airavata/model/status/__init__.py       |     1 +
 .../apache/airavata/model/status/constants.py      |    12 +
 .../apache/airavata/model/status/ttypes.py         |   645 +
 .../apache/airavata/model/task/__init__.py         |     1 +
 .../apache/airavata/model/task/constants.py        |    12 +
 cwl-workflows/apache/airavata/model/task/ttypes.py |   671 +
 cwl-workflows/apache/airavata/model/ttypes.py      |    29 +
 .../apache/airavata/model/user/__init__.py         |     1 +
 .../apache/airavata/model/user/constants.py        |    13 +
 cwl-workflows/apache/airavata/model/user/ttypes.py |   705 +
 .../apache/airavata/model/workflow/__init__.py     |     1 +
 .../apache/airavata/model/workflow/constants.py    |    12 +
 .../apache/airavata/model/workflow/ttypes.py       |   764 +
 .../apache/airavata/model/workspace/__init__.py    |     1 +
 .../apache/airavata/model/workspace/constants.py   |    12 +
 .../apache/airavata/model/workspace/ttypes.py      |   858 +
 89 files changed, 68026 insertions(+)

diff --git a/cwl-workflows/apache/__init__.py b/cwl-workflows/apache/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/cwl-workflows/apache/airavata/__init__.py b/cwl-workflows/apache/airavata/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/cwl-workflows/apache/airavata/api/Airavata-remote b/cwl-workflows/apache/airavata/api/Airavata-remote
new file mode 100644
index 0000000..5ed695e
--- /dev/null
+++ b/cwl-workflows/apache/airavata/api/Airavata-remote
@@ -0,0 +1,1293 @@
+#!/usr/bin/env python
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+import sys
+import pprint
+if sys.version_info[0] > 2:
+    from urllib.parse import urlparse
+else:
+    from urlparse import urlparse
+from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient
+from thrift.protocol.TBinaryProtocol import TBinaryProtocol
+
+from apache.airavata.api import Airavata
+from apache.airavata.api.ttypes import *
+
+if len(sys.argv) <= 1 or sys.argv[1] == '--help':
+    print('')
+    print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]')
+    print('')
+    print('Functions:')
+    print('  string getAPIVersion(AuthzToken authzToken)')
+    print('  bool isUserExists(AuthzToken authzToken, string gatewayId, string userName)')
+    print('  string addGateway(AuthzToken authzToken, Gateway gateway)')
+    print('   getAllUsersInGateway(AuthzToken authzToken, string gatewayId)')
+    print('  bool updateGateway(AuthzToken authzToken, string gatewayId, Gateway updatedGateway)')
+    print('  Gateway getGateway(AuthzToken authzToken, string gatewayId)')
+    print('  bool deleteGateway(AuthzToken authzToken, string gatewayId)')
+    print('   getAllGateways(AuthzToken authzToken)')
+    print('  bool isGatewayExist(AuthzToken authzToken, string gatewayId)')
+    print('  string createNotification(AuthzToken authzToken, Notification notification)')
+    print('  bool updateNotification(AuthzToken authzToken, Notification notification)')
+    print('  bool deleteNotification(AuthzToken authzToken, string gatewayId, string notificationId)')
+    print('  Notification getNotification(AuthzToken authzToken, string gatewayId, string notificationId)')
+    print('   getAllNotifications(AuthzToken authzToken, string gatewayId)')
+    print('  string generateAndRegisterSSHKeys(AuthzToken authzToken, string gatewayId, string userName, string description, CredentialOwnerType credentialOwnerType)')
+    print('  string registerPwdCredential(AuthzToken authzToken, string gatewayId, string portalUserName, string loginUserName, string password, string description)')
+    print('  string getSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+    print('   getAllGatewaySSHPubKeys(AuthzToken authzToken, string gatewayId)')
+    print('   getAllCredentialSummaryForGateway(AuthzToken authzToken, SummaryType type, string gatewayId)')
+    print('   getAllCredentialSummaryForUsersInGateway(AuthzToken authzToken, SummaryType type, string gatewayId, string userId)')
+    print('   getAllGatewayPWDCredentials(AuthzToken authzToken, string gatewayId)')
+    print('  bool deleteSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+    print('  bool deletePWDCredential(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+    print('  string createProject(AuthzToken authzToken, string gatewayId, Project project)')
+    print('  void updateProject(AuthzToken authzToken, string projectId, Project updatedProject)')
+    print('  Project getProject(AuthzToken authzToken, string projectId)')
+    print('  bool deleteProject(AuthzToken authzToken, string projectId)')
+    print('   getUserProjects(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+    print('   searchProjects(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+    print('   searchExperiments(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+    print('  ExperimentStatistics getExperimentStatistics(AuthzToken authzToken, string gatewayId, i64 fromTime, i64 toTime, string userName, string applicationName, string resourceHostName)')
+    print('   getExperimentsInProject(AuthzToken authzToken, string projectId, i32 limit, i32 offset)')
+    print('   getUserExperiments(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+    print('  string createExperiment(AuthzToken authzToken, string gatewayId, ExperimentModel experiment)')
+    print('  bool deleteExperiment(AuthzToken authzToken, string experimentId)')
+    print('  ExperimentModel getExperiment(AuthzToken authzToken, string airavataExperimentId)')
+    print('  ExperimentModel getExperimentByAdmin(AuthzToken authzToken, string airavataExperimentId)')
+    print('  ExperimentModel getDetailedExperimentTree(AuthzToken authzToken, string airavataExperimentId)')
+    print('  void updateExperiment(AuthzToken authzToken, string airavataExperimentId, ExperimentModel experiment)')
+    print('  void updateExperimentConfiguration(AuthzToken authzToken, string airavataExperimentId, UserConfigurationDataModel userConfiguration)')
+    print('  void updateResourceScheduleing(AuthzToken authzToken, string airavataExperimentId, ComputationalResourceSchedulingModel resourceScheduling)')
+    print('  bool validateExperiment(AuthzToken authzToken, string airavataExperimentId)')
+    print('  void launchExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+    print('  ExperimentStatus getExperimentStatus(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getExperimentOutputs(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getIntermediateOutputs(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getJobStatuses(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getJobDetails(AuthzToken authzToken, string airavataExperimentId)')
+    print('  string cloneExperiment(AuthzToken authzToken, string existingExperimentID, string newExperimentName, string newExperimentProjectId)')
+    print('  string cloneExperimentByAdmin(AuthzToken authzToken, string existingExperimentID, string newExperimentName, string newExperimentProjectId)')
+    print('  void terminateExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+    print('  string registerApplicationModule(AuthzToken authzToken, string gatewayId, ApplicationModule applicationModule)')
+    print('  ApplicationModule getApplicationModule(AuthzToken authzToken, string appModuleId)')
+    print('  bool updateApplicationModule(AuthzToken authzToken, string appModuleId, ApplicationModule applicationModule)')
+    print('   getAllAppModules(AuthzToken authzToken, string gatewayId)')
+    print('  bool deleteApplicationModule(AuthzToken authzToken, string appModuleId)')
+    print('  string registerApplicationDeployment(AuthzToken authzToken, string gatewayId, ApplicationDeploymentDescription applicationDeployment)')
+    print('  ApplicationDeploymentDescription getApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
+    print('  bool updateApplicationDeployment(AuthzToken authzToken, string appDeploymentId, ApplicationDeploymentDescription applicationDeployment)')
+    print('  bool deleteApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
+    print('   getAllApplicationDeployments(AuthzToken authzToken, string gatewayId)')
+    print('   getAppModuleDeployedResources(AuthzToken authzToken, string appModuleId)')
+    print('  string registerApplicationInterface(AuthzToken authzToken, string gatewayId, ApplicationInterfaceDescription applicationInterface)')
+    print('  string cloneApplicationInterface(AuthzToken authzToken, string existingAppInterfaceID, string newApplicationName, string gatewayId)')
+    print('  ApplicationInterfaceDescription getApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+    print('  bool updateApplicationInterface(AuthzToken authzToken, string appInterfaceId, ApplicationInterfaceDescription applicationInterface)')
+    print('  bool deleteApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+    print('   getAllApplicationInterfaceNames(AuthzToken authzToken, string gatewayId)')
+    print('   getAllApplicationInterfaces(AuthzToken authzToken, string gatewayId)')
+    print('   getApplicationInputs(AuthzToken authzToken, string appInterfaceId)')
+    print('   getApplicationOutputs(AuthzToken authzToken, string appInterfaceId)')
+    print('   getAvailableAppInterfaceComputeResources(AuthzToken authzToken, string appInterfaceId)')
+    print('  string registerComputeResource(AuthzToken authzToken, ComputeResourceDescription computeResourceDescription)')
+    print('  ComputeResourceDescription getComputeResource(AuthzToken authzToken, string computeResourceId)')
+    print('   getAllComputeResourceNames(AuthzToken authzToken)')
+    print('  bool updateComputeResource(AuthzToken authzToken, string computeResourceId, ComputeResourceDescription computeResourceDescription)')
+    print('  bool deleteComputeResource(AuthzToken authzToken, string computeResourceId)')
+    print('  string registerStorageResource(AuthzToken authzToken, StorageResourceDescription storageResourceDescription)')
+    print('  StorageResourceDescription getStorageResource(AuthzToken authzToken, string storageResourceId)')
+    print('   getAllStorageResourceNames(AuthzToken authzToken)')
+    print('  bool updateStorageResource(AuthzToken authzToken, string storageResourceId, StorageResourceDescription storageResourceDescription)')
+    print('  bool deleteStorageResource(AuthzToken authzToken, string storageResourceId)')
+    print('  string addLocalSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, LOCALSubmission localSubmission)')
+    print('  bool updateLocalSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, LOCALSubmission localSubmission)')
+    print('  LOCALSubmission getLocalJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  string addSSHJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+    print('  string addSSHForkJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+    print('  SSHJobSubmission getSSHJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  string addUNICOREJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, UnicoreJobSubmission unicoreJobSubmission)')
+    print('  UnicoreJobSubmission getUnicoreJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  string addCloudJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, CloudJobSubmission cloudSubmission)')
+    print('  CloudJobSubmission getCloudJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  bool updateSSHJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, SSHJobSubmission sshJobSubmission)')
+    print('  bool updateCloudJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, CloudJobSubmission sshJobSubmission)')
+    print('  bool updateUnicoreJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, UnicoreJobSubmission unicoreJobSubmission)')
+    print('  string addLocalDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, LOCALDataMovement localDataMovement)')
+    print('  bool updateLocalDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, LOCALDataMovement localDataMovement)')
+    print('  LOCALDataMovement getLocalDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  string addSCPDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, SCPDataMovement scpDataMovement)')
+    print('  bool updateSCPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, SCPDataMovement scpDataMovement)')
+    print('  SCPDataMovement getSCPDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  string addUnicoreDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, UnicoreDataMovement unicoreDataMovement)')
+    print('  bool updateUnicoreDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, UnicoreDataMovement unicoreDataMovement)')
+    print('  UnicoreDataMovement getUnicoreDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  string addGridFTPDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, GridFTPDataMovement gridFTPDataMovement)')
+    print('  bool updateGridFTPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, GridFTPDataMovement gridFTPDataMovement)')
+    print('  GridFTPDataMovement getGridFTPDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  bool changeJobSubmissionPriority(AuthzToken authzToken, string jobSubmissionInterfaceId, i32 newPriorityOrder)')
+    print('  bool changeDataMovementPriority(AuthzToken authzToken, string dataMovementInterfaceId, i32 newPriorityOrder)')
+    print('  bool changeJobSubmissionPriorities(AuthzToken authzToken,  jobSubmissionPriorityMap)')
+    print('  bool changeDataMovementPriorities(AuthzToken authzToken,  dataMovementPriorityMap)')
+    print('  bool deleteJobSubmissionInterface(AuthzToken authzToken, string computeResourceId, string jobSubmissionInterfaceId)')
+    print('  bool deleteDataMovementInterface(AuthzToken authzToken, string productUri, string dataMovementInterfaceId, DMType dataMoveType)')
+    print('  string registerResourceJobManager(AuthzToken authzToken, ResourceJobManager resourceJobManager)')
+    print('  bool updateResourceJobManager(AuthzToken authzToken, string resourceJobManagerId, ResourceJobManager updatedResourceJobManager)')
+    print('  ResourceJobManager getResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+    print('  bool deleteResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+    print('  bool deleteBatchQueue(AuthzToken authzToken, string computeResourceId, string queueName)')
+    print('  string registerGatewayResourceProfile(AuthzToken authzToken, GatewayResourceProfile gatewayResourceProfile)')
+    print('  GatewayResourceProfile getGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+    print('  bool updateGatewayResourceProfile(AuthzToken authzToken, string gatewayID, GatewayResourceProfile gatewayResourceProfile)')
+    print('  bool deleteGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+    print('  bool addGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+    print('  bool addGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageResourceId, StoragePreference storagePreference)')
+    print('  ComputeResourcePreference getGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+    print('  StoragePreference getGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageResourceId)')
+    print('   getAllGatewayComputeResourcePreferences(AuthzToken authzToken, string gatewayID)')
+    print('   getAllGatewayStoragePreferences(AuthzToken authzToken, string gatewayID)')
+    print('   getAllGatewayResourceProfiles(AuthzToken authzToken)')
+    print('  bool updateGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+    print('  bool updateGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId, StoragePreference storagePreference)')
+    print('  bool deleteGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+    print('  bool deleteGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId)')
+    print('  string registerUserResourceProfile(AuthzToken authzToken, UserResourceProfile userResourceProfile)')
+    print('  UserResourceProfile getUserResourceProfile(AuthzToken authzToken, string userId, string gatewayID)')
+    print('  bool updateUserResourceProfile(AuthzToken authzToken, string userId, string gatewayID, UserResourceProfile userResourceProfile)')
+    print('  bool deleteUserResourceProfile(AuthzToken authzToken, string userId, string gatewayID)')
+    print('  bool addUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId, UserComputeResourcePreference userComputeResourcePreference)')
+    print('  bool addUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageResourceId, UserStoragePreference userStoragePreference)')
+    print('  UserComputeResourcePreference getUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId)')
+    print('  UserStoragePreference getUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageResourceId)')
+    print('   getAllUserComputeResourcePreferences(AuthzToken authzToken, string userId, string gatewayID)')
+    print('   getAllUserStoragePreferences(AuthzToken authzToken, string userId, string gatewayID)')
+    print('   getAllUserResourceProfiles(AuthzToken authzToken)')
+    print('  bool updateUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId, UserComputeResourcePreference userComputeResourcePreference)')
+    print('  bool updateUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageId, UserStoragePreference userStoragePreference)')
+    print('  bool deleteUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId)')
+    print('  bool deleteUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageId)')
+    print('   getAllWorkflows(AuthzToken authzToken, string gatewayId)')
+    print('   getLatestQueueStatuses(AuthzToken authzToken)')
+    print('  WorkflowModel getWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+    print('  void deleteWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+    print('  string registerWorkflow(AuthzToken authzToken, string gatewayId, WorkflowModel workflow)')
+    print('  void updateWorkflow(AuthzToken authzToken, string workflowTemplateId, WorkflowModel workflow)')
+    print('  string getWorkflowTemplateId(AuthzToken authzToken, string workflowName)')
+    print('  bool isWorkflowExistWithName(AuthzToken authzToken, string workflowName)')
+    print('  string registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel)')
+    print('  DataProductModel getDataProduct(AuthzToken authzToken, string dataProductUri)')
+    print('  string registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel)')
+    print('  DataProductModel getParentDataProduct(AuthzToken authzToken, string productUri)')
+    print('   getChildDataProducts(AuthzToken authzToken, string productUri)')
+    print('  bool shareResourceWithUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+    print('  bool revokeSharingOfResourceFromUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+    print('   getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType, ResourcePermissionType permissionType)')
+    print('  bool createGroup(AuthzToken authzToken, GroupModel groupModel)')
+    print('  bool updateGroup(AuthzToken authzToken, GroupModel groupModel)')
+    print('  bool deleteGroup(AuthzToken authzToken, string groupId, string ownerId, string gatewayId)')
+    print('  GroupModel getGroup(AuthzToken authzToken, string groupId)')
+    print('   getAllGroupsUserBelongs(AuthzToken authzToken, string userName, string gatewayId)')
+    print('')
+    sys.exit(0)
+
+pp = pprint.PrettyPrinter(indent=2)
+host = 'localhost'
+port = 9090
+uri = ''
+framed = False
+ssl = False
+validate = True
+ca_certs = None
+keyfile = None
+certfile = None
+http = False
+argi = 1
+
+if sys.argv[argi] == '-h':
+    parts = sys.argv[argi + 1].split(':')
+    host = parts[0]
+    if len(parts) > 1:
+        port = int(parts[1])
+    argi += 2
+
+if sys.argv[argi] == '-u':
+    url = urlparse(sys.argv[argi + 1])
+    parts = url[1].split(':')
+    host = parts[0]
+    if len(parts) > 1:
+        port = int(parts[1])
+    else:
+        port = 80
+    uri = url[2]
+    if url[4]:
+        uri += '?%s' % url[4]
+    http = True
+    argi += 2
+
+if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
+    framed = True
+    argi += 1
+
+if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
+    ssl = True
+    argi += 1
+
+if sys.argv[argi] == '-novalidate':
+    validate = False
+    argi += 1
+
+if sys.argv[argi] == '-ca_certs':
+    ca_certs = sys.argv[argi+1]
+    argi += 2
+
+if sys.argv[argi] == '-keyfile':
+    keyfile = sys.argv[argi+1]
+    argi += 2
+
+if sys.argv[argi] == '-certfile':
+    certfile = sys.argv[argi+1]
+    argi += 2
+
+cmd = sys.argv[argi]
+args = sys.argv[argi + 1:]
+
+if http:
+    transport = THttpClient.THttpClient(host, port, uri)
+else:
+    if ssl:
+        socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile)
+    else:
+        socket = TSocket.TSocket(host, port)
+    if framed:
+        transport = TTransport.TFramedTransport(socket)
+    else:
+        transport = TTransport.TBufferedTransport(socket)
+protocol = TBinaryProtocol(transport)
+client = Airavata.Client(protocol)
+transport.open()
+
+if cmd == 'getAPIVersion':
+    if len(args) != 1:
+        print('getAPIVersion requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAPIVersion(eval(args[0]),))
+
+elif cmd == 'isUserExists':
+    if len(args) != 3:
+        print('isUserExists requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.isUserExists(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'addGateway':
+    if len(args) != 2:
+        print('addGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.addGateway(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getAllUsersInGateway':
+    if len(args) != 2:
+        print('getAllUsersInGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUsersInGateway(eval(args[0]), args[1],))
+
+elif cmd == 'updateGateway':
+    if len(args) != 3:
+        print('updateGateway requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateGateway(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getGateway':
+    if len(args) != 2:
+        print('getGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGateway(eval(args[0]), args[1],))
+
+elif cmd == 'deleteGateway':
+    if len(args) != 2:
+        print('deleteGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGateway(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGateways':
+    if len(args) != 1:
+        print('getAllGateways requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGateways(eval(args[0]),))
+
+elif cmd == 'isGatewayExist':
+    if len(args) != 2:
+        print('isGatewayExist requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.isGatewayExist(eval(args[0]), args[1],))
+
+elif cmd == 'createNotification':
+    if len(args) != 2:
+        print('createNotification requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.createNotification(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateNotification':
+    if len(args) != 2:
+        print('updateNotification requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.updateNotification(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'deleteNotification':
+    if len(args) != 3:
+        print('deleteNotification requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteNotification(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getNotification':
+    if len(args) != 3:
+        print('getNotification requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getNotification(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllNotifications':
+    if len(args) != 2:
+        print('getAllNotifications requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllNotifications(eval(args[0]), args[1],))
+
+elif cmd == 'generateAndRegisterSSHKeys':
+    if len(args) != 5:
+        print('generateAndRegisterSSHKeys requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.generateAndRegisterSSHKeys(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'registerPwdCredential':
+    if len(args) != 6:
+        print('registerPwdCredential requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.registerPwdCredential(eval(args[0]), args[1], args[2], args[3], args[4], args[5],))
+
+elif cmd == 'getSSHPubKey':
+    if len(args) != 3:
+        print('getSSHPubKey requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getSSHPubKey(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllGatewaySSHPubKeys':
+    if len(args) != 2:
+        print('getAllGatewaySSHPubKeys requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewaySSHPubKeys(eval(args[0]), args[1],))
+
+elif cmd == 'getAllCredentialSummaryForGateway':
+    if len(args) != 3:
+        print('getAllCredentialSummaryForGateway requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllCredentialSummaryForGateway(eval(args[0]), eval(args[1]), args[2],))
+
+elif cmd == 'getAllCredentialSummaryForUsersInGateway':
+    if len(args) != 4:
+        print('getAllCredentialSummaryForUsersInGateway requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getAllCredentialSummaryForUsersInGateway(eval(args[0]), eval(args[1]), args[2], args[3],))
+
+elif cmd == 'getAllGatewayPWDCredentials':
+    if len(args) != 2:
+        print('getAllGatewayPWDCredentials requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayPWDCredentials(eval(args[0]), args[1],))
+
+elif cmd == 'deleteSSHPubKey':
+    if len(args) != 3:
+        print('deleteSSHPubKey requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteSSHPubKey(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'deletePWDCredential':
+    if len(args) != 3:
+        print('deletePWDCredential requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deletePWDCredential(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'createProject':
+    if len(args) != 3:
+        print('createProject requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.createProject(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateProject':
+    if len(args) != 3:
+        print('updateProject requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateProject(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getProject':
+    if len(args) != 2:
+        print('getProject requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getProject(eval(args[0]), args[1],))
+
+elif cmd == 'deleteProject':
+    if len(args) != 2:
+        print('deleteProject requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteProject(eval(args[0]), args[1],))
+
+elif cmd == 'getUserProjects':
+    if len(args) != 5:
+        print('getUserProjects requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getUserProjects(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]),))
+
+elif cmd == 'searchProjects':
+    if len(args) != 6:
+        print('searchProjects requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.searchProjects(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]),))
+
+elif cmd == 'searchExperiments':
+    if len(args) != 6:
+        print('searchExperiments requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.searchExperiments(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]),))
+
+elif cmd == 'getExperimentStatistics':
+    if len(args) != 7:
+        print('getExperimentStatistics requires 7 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentStatistics(eval(args[0]), args[1], eval(args[2]), eval(args[3]), args[4], args[5], args[6],))
+
+elif cmd == 'getExperimentsInProject':
+    if len(args) != 4:
+        print('getExperimentsInProject requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentsInProject(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getUserExperiments':
+    if len(args) != 5:
+        print('getUserExperiments requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getUserExperiments(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]),))
+
+elif cmd == 'createExperiment':
+    if len(args) != 3:
+        print('createExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.createExperiment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteExperiment':
+    if len(args) != 2:
+        print('deleteExperiment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteExperiment(eval(args[0]), args[1],))
+
+elif cmd == 'getExperiment':
+    if len(args) != 2:
+        print('getExperiment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperiment(eval(args[0]), args[1],))
+
+elif cmd == 'getExperimentByAdmin':
+    if len(args) != 2:
+        print('getExperimentByAdmin requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentByAdmin(eval(args[0]), args[1],))
+
+elif cmd == 'getDetailedExperimentTree':
+    if len(args) != 2:
+        print('getDetailedExperimentTree requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getDetailedExperimentTree(eval(args[0]), args[1],))
+
+elif cmd == 'updateExperiment':
+    if len(args) != 3:
+        print('updateExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateExperiment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateExperimentConfiguration':
+    if len(args) != 3:
+        print('updateExperimentConfiguration requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateExperimentConfiguration(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateResourceScheduleing':
+    if len(args) != 3:
+        print('updateResourceScheduleing requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateResourceScheduleing(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'validateExperiment':
+    if len(args) != 2:
+        print('validateExperiment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.validateExperiment(eval(args[0]), args[1],))
+
+elif cmd == 'launchExperiment':
+    if len(args) != 3:
+        print('launchExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.launchExperiment(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getExperimentStatus':
+    if len(args) != 2:
+        print('getExperimentStatus requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentStatus(eval(args[0]), args[1],))
+
+elif cmd == 'getExperimentOutputs':
+    if len(args) != 2:
+        print('getExperimentOutputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentOutputs(eval(args[0]), args[1],))
+
+elif cmd == 'getIntermediateOutputs':
+    if len(args) != 2:
+        print('getIntermediateOutputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getIntermediateOutputs(eval(args[0]), args[1],))
+
+elif cmd == 'getJobStatuses':
+    if len(args) != 2:
+        print('getJobStatuses requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getJobStatuses(eval(args[0]), args[1],))
+
+elif cmd == 'getJobDetails':
+    if len(args) != 2:
+        print('getJobDetails requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getJobDetails(eval(args[0]), args[1],))
+
+elif cmd == 'cloneExperiment':
+    if len(args) != 4:
+        print('cloneExperiment requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.cloneExperiment(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'cloneExperimentByAdmin':
+    if len(args) != 4:
+        print('cloneExperimentByAdmin requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.cloneExperimentByAdmin(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'terminateExperiment':
+    if len(args) != 3:
+        print('terminateExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.terminateExperiment(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'registerApplicationModule':
+    if len(args) != 3:
+        print('registerApplicationModule requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerApplicationModule(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getApplicationModule':
+    if len(args) != 2:
+        print('getApplicationModule requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationModule(eval(args[0]), args[1],))
+
+elif cmd == 'updateApplicationModule':
+    if len(args) != 3:
+        print('updateApplicationModule requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateApplicationModule(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getAllAppModules':
+    if len(args) != 2:
+        print('getAllAppModules requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllAppModules(eval(args[0]), args[1],))
+
+elif cmd == 'deleteApplicationModule':
+    if len(args) != 2:
+        print('deleteApplicationModule requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteApplicationModule(eval(args[0]), args[1],))
+
+elif cmd == 'registerApplicationDeployment':
+    if len(args) != 3:
+        print('registerApplicationDeployment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerApplicationDeployment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getApplicationDeployment':
+    if len(args) != 2:
+        print('getApplicationDeployment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationDeployment(eval(args[0]), args[1],))
+
+elif cmd == 'updateApplicationDeployment':
+    if len(args) != 3:
+        print('updateApplicationDeployment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateApplicationDeployment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteApplicationDeployment':
+    if len(args) != 2:
+        print('deleteApplicationDeployment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteApplicationDeployment(eval(args[0]), args[1],))
+
+elif cmd == 'getAllApplicationDeployments':
+    if len(args) != 2:
+        print('getAllApplicationDeployments requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllApplicationDeployments(eval(args[0]), args[1],))
+
+elif cmd == 'getAppModuleDeployedResources':
+    if len(args) != 2:
+        print('getAppModuleDeployedResources requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAppModuleDeployedResources(eval(args[0]), args[1],))
+
+elif cmd == 'registerApplicationInterface':
+    if len(args) != 3:
+        print('registerApplicationInterface requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerApplicationInterface(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'cloneApplicationInterface':
+    if len(args) != 4:
+        print('cloneApplicationInterface requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.cloneApplicationInterface(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getApplicationInterface':
+    if len(args) != 2:
+        print('getApplicationInterface requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationInterface(eval(args[0]), args[1],))
+
+elif cmd == 'updateApplicationInterface':
+    if len(args) != 3:
+        print('updateApplicationInterface requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateApplicationInterface(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteApplicationInterface':
+    if len(args) != 2:
+        print('deleteApplicationInterface requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteApplicationInterface(eval(args[0]), args[1],))
+
+elif cmd == 'getAllApplicationInterfaceNames':
+    if len(args) != 2:
+        print('getAllApplicationInterfaceNames requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllApplicationInterfaceNames(eval(args[0]), args[1],))
+
+elif cmd == 'getAllApplicationInterfaces':
+    if len(args) != 2:
+        print('getAllApplicationInterfaces requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllApplicationInterfaces(eval(args[0]), args[1],))
+
+elif cmd == 'getApplicationInputs':
+    if len(args) != 2:
+        print('getApplicationInputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationInputs(eval(args[0]), args[1],))
+
+elif cmd == 'getApplicationOutputs':
+    if len(args) != 2:
+        print('getApplicationOutputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationOutputs(eval(args[0]), args[1],))
+
+elif cmd == 'getAvailableAppInterfaceComputeResources':
+    if len(args) != 2:
+        print('getAvailableAppInterfaceComputeResources requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAvailableAppInterfaceComputeResources(eval(args[0]), args[1],))
+
+elif cmd == 'registerComputeResource':
+    if len(args) != 2:
+        print('registerComputeResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerComputeResource(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getComputeResource':
+    if len(args) != 2:
+        print('getComputeResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getComputeResource(eval(args[0]), args[1],))
+
+elif cmd == 'getAllComputeResourceNames':
+    if len(args) != 1:
+        print('getAllComputeResourceNames requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllComputeResourceNames(eval(args[0]),))
+
+elif cmd == 'updateComputeResource':
+    if len(args) != 3:
+        print('updateComputeResource requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateComputeResource(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteComputeResource':
+    if len(args) != 2:
+        print('deleteComputeResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteComputeResource(eval(args[0]), args[1],))
+
+elif cmd == 'registerStorageResource':
+    if len(args) != 2:
+        print('registerStorageResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerStorageResource(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getStorageResource':
+    if len(args) != 2:
+        print('getStorageResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getStorageResource(eval(args[0]), args[1],))
+
+elif cmd == 'getAllStorageResourceNames':
+    if len(args) != 1:
+        print('getAllStorageResourceNames requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllStorageResourceNames(eval(args[0]),))
+
+elif cmd == 'updateStorageResource':
+    if len(args) != 3:
+        print('updateStorageResource requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateStorageResource(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteStorageResource':
+    if len(args) != 2:
+        print('deleteStorageResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteStorageResource(eval(args[0]), args[1],))
+
+elif cmd == 'addLocalSubmissionDetails':
+    if len(args) != 4:
+        print('addLocalSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addLocalSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'updateLocalSubmissionDetails':
+    if len(args) != 3:
+        print('updateLocalSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateLocalSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getLocalJobSubmission':
+    if len(args) != 2:
+        print('getLocalJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getLocalJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'addSSHJobSubmissionDetails':
+    if len(args) != 4:
+        print('addSSHJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addSSHJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'addSSHForkJobSubmissionDetails':
+    if len(args) != 4:
+        print('addSSHForkJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addSSHForkJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getSSHJobSubmission':
+    if len(args) != 2:
+        print('getSSHJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getSSHJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'addUNICOREJobSubmissionDetails':
+    if len(args) != 4:
+        print('addUNICOREJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addUNICOREJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getUnicoreJobSubmission':
+    if len(args) != 2:
+        print('getUnicoreJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getUnicoreJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'addCloudJobSubmissionDetails':
+    if len(args) != 4:
+        print('addCloudJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addCloudJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getCloudJobSubmission':
+    if len(args) != 2:
+        print('getCloudJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getCloudJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'updateSSHJobSubmissionDetails':
+    if len(args) != 3:
+        print('updateSSHJobSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateSSHJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateCloudJobSubmissionDetails':
+    if len(args) != 3:
+        print('updateCloudJobSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateCloudJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateUnicoreJobSubmissionDetails':
+    if len(args) != 3:
+        print('updateUnicoreJobSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateUnicoreJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'addLocalDataMovementDetails':
+    if len(args) != 5:
+        print('addLocalDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addLocalDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateLocalDataMovementDetails':
+    if len(args) != 3:
+        print('updateLocalDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateLocalDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getLocalDataMovement':
+    if len(args) != 2:
+        print('getLocalDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getLocalDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'addSCPDataMovementDetails':
+    if len(args) != 5:
+        print('addSCPDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addSCPDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateSCPDataMovementDetails':
+    if len(args) != 3:
+        print('updateSCPDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateSCPDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getSCPDataMovement':
+    if len(args) != 2:
+        print('getSCPDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getSCPDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'addUnicoreDataMovementDetails':
+    if len(args) != 5:
+        print('addUnicoreDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addUnicoreDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateUnicoreDataMovementDetails':
+    if len(args) != 3:
+        print('updateUnicoreDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateUnicoreDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getUnicoreDataMovement':
+    if len(args) != 2:
+        print('getUnicoreDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getUnicoreDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'addGridFTPDataMovementDetails':
+    if len(args) != 5:
+        print('addGridFTPDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addGridFTPDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateGridFTPDataMovementDetails':
+    if len(args) != 3:
+        print('updateGridFTPDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateGridFTPDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getGridFTPDataMovement':
+    if len(args) != 2:
+        print('getGridFTPDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGridFTPDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'changeJobSubmissionPriority':
+    if len(args) != 3:
+        print('changeJobSubmissionPriority requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.changeJobSubmissionPriority(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'changeDataMovementPriority':
+    if len(args) != 3:
+        print('changeDataMovementPriority requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.changeDataMovementPriority(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'changeJobSubmissionPriorities':
+    if len(args) != 2:
+        print('changeJobSubmissionPriorities requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.changeJobSubmissionPriorities(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'changeDataMovementPriorities':
+    if len(args) != 2:
+        print('changeDataMovementPriorities requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.changeDataMovementPriorities(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'deleteJobSubmissionInterface':
+    if len(args) != 3:
+        print('deleteJobSubmissionInterface requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteJobSubmissionInterface(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'deleteDataMovementInterface':
+    if len(args) != 4:
+        print('deleteDataMovementInterface requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteDataMovementInterface(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'registerResourceJobManager':
+    if len(args) != 2:
+        print('registerResourceJobManager requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerResourceJobManager(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateResourceJobManager':
+    if len(args) != 3:
+        print('updateResourceJobManager requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateResourceJobManager(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getResourceJobManager':
+    if len(args) != 2:
+        print('getResourceJobManager requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getResourceJobManager(eval(args[0]), args[1],))
+
+elif cmd == 'deleteResourceJobManager':
+    if len(args) != 2:
+        print('deleteResourceJobManager requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteResourceJobManager(eval(args[0]), args[1],))
+
+elif cmd == 'deleteBatchQueue':
+    if len(args) != 3:
+        print('deleteBatchQueue requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteBatchQueue(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'registerGatewayResourceProfile':
+    if len(args) != 2:
+        print('registerGatewayResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerGatewayResourceProfile(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getGatewayResourceProfile':
+    if len(args) != 2:
+        print('getGatewayResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayResourceProfile(eval(args[0]), args[1],))
+
+elif cmd == 'updateGatewayResourceProfile':
+    if len(args) != 3:
+        print('updateGatewayResourceProfile requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateGatewayResourceProfile(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteGatewayResourceProfile':
+    if len(args) != 2:
+        print('deleteGatewayResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGatewayResourceProfile(eval(args[0]), args[1],))
+
+elif cmd == 'addGatewayComputeResourcePreference':
+    if len(args) != 4:
+        print('addGatewayComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addGatewayComputeResourcePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'addGatewayStoragePreference':
+    if len(args) != 4:
+        print('addGatewayStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addGatewayStoragePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'getGatewayComputeResourcePreference':
+    if len(args) != 3:
+        print('getGatewayComputeResourcePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayComputeResourcePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getGatewayStoragePreference':
+    if len(args) != 3:
+        print('getGatewayStoragePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayStoragePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllGatewayComputeResourcePreferences':
+    if len(args) != 2:
+        print('getAllGatewayComputeResourcePreferences requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayComputeResourcePreferences(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGatewayStoragePreferences':
+    if len(args) != 2:
+        print('getAllGatewayStoragePreferences requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayStoragePreferences(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGatewayResourceProfiles':
+    if len(args) != 1:
+        print('getAllGatewayResourceProfiles requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayResourceProfiles(eval(args[0]),))
+
+elif cmd == 'updateGatewayComputeResourcePreference':
+    if len(args) != 4:
+        print('updateGatewayComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.updateGatewayComputeResourcePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'updateGatewayStoragePreference':
+    if len(args) != 4:
+        print('updateGatewayStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.updateGatewayStoragePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'deleteGatewayComputeResourcePreference':
+    if len(args) != 3:
+        print('deleteGatewayComputeResourcePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGatewayComputeResourcePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'deleteGatewayStoragePreference':
+    if len(args) != 3:
+        print('deleteGatewayStoragePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGatewayStoragePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'registerUserResourceProfile':
+    if len(args) != 2:
+        print('registerUserResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerUserResourceProfile(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getUserResourceProfile':
+    if len(args) != 3:
+        print('getUserResourceProfile requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getUserResourceProfile(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'updateUserResourceProfile':
+    if len(args) != 4:
+        print('updateUserResourceProfile requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.updateUserResourceProfile(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'deleteUserResourceProfile':
+    if len(args) != 3:
+        print('deleteUserResourceProfile requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteUserResourceProfile(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'addUserComputeResourcePreference':
+    if len(args) != 5:
+        print('addUserComputeResourcePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'addUserStoragePreference':
+    if len(args) != 5:
+        print('addUserStoragePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addUserStoragePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'getUserComputeResourcePreference':
+    if len(args) != 4:
+        print('getUserComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getUserStoragePreference':
+    if len(args) != 4:
+        print('getUserStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getUserStoragePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getAllUserComputeResourcePreferences':
+    if len(args) != 3:
+        print('getAllUserComputeResourcePreferences requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUserComputeResourcePreferences(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllUserStoragePreferences':
+    if len(args) != 3:
+        print('getAllUserStoragePreferences requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUserStoragePreferences(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllUserResourceProfiles':
+    if len(args) != 1:
+        print('getAllUserResourceProfiles requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUserResourceProfiles(eval(args[0]),))
+
+elif cmd == 'updateUserComputeResourcePreference':
+    if len(args) != 5:
+        print('updateUserComputeResourcePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.updateUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'updateUserStoragePreference':
+    if len(args) != 5:
+        print('updateUserStoragePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.updateUserStoragePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'deleteUserComputeResourcePreference':
+    if len(args) != 4:
+        print('deleteUserComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'deleteUserStoragePreference':
+    if len(args) != 4:
+        print('deleteUserStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteUserStoragePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getAllWorkflows':
+    if len(args) != 2:
+        print('getAllWorkflows requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllWorkflows(eval(args[0]), args[1],))
+
+elif cmd == 'getLatestQueueStatuses':
+    if len(args) != 1:
+        print('getLatestQueueStatuses requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getLatestQueueStatuses(eval(args[0]),))
+
+elif cmd == 'getWorkflow':
+    if len(args) != 2:
+        print('getWorkflow requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getWorkflow(eval(args[0]), args[1],))
+
+elif cmd == 'deleteWorkflow':
+    if len(args) != 2:
+        print('deleteWorkflow requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteWorkflow(eval(args[0]), args[1],))
+
+elif cmd == 'registerWorkflow':
+    if len(args) != 3:
+        print('registerWorkflow requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerWorkflow(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateWorkflow':
+    if len(args) != 3:
+        print('updateWorkflow requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateWorkflow(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getWorkflowTemplateId':
+    if len(args) != 2:
+        print('getWorkflowTemplateId requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getWorkflowTemplateId(eval(args[0]), args[1],))
+
+elif cmd == 'isWorkflowExistWithName':
+    if len(args) != 2:
+        print('isWorkflowExistWithName requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.isWorkflowExistWithName(eval(args[0]), args[1],))
+
+elif cmd == 'registerDataProduct':
+    if len(args) != 2:
+        print('registerDataProduct requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerDataProduct(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getDataProduct':
+    if len(args) != 2:
+        print('getDataProduct requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getDataProduct(eval(args[0]), args[1],))
+
+elif cmd == 'registerReplicaLocation':
+    if len(args) != 2:
+        print('registerReplicaLocation requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerReplicaLocation(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getParentDataProduct':
+    if len(args) != 2:
+        print('getParentDataProduct requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getParentDataProduct(eval(args[0]), args[1],))
+
+elif cmd == 'getChildDataProducts':
+    if len(args) != 2:
+        print('getChildDataProducts requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getChildDataProducts(eval(args[0]), args[1],))
+
+elif cmd == 'shareResourceWithUsers':
+    if len(args) != 4:
+        print('shareResourceWithUsers requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.shareResourceWithUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'revokeSharingOfResourceFromUsers':
+    if len(args) != 4:
+        print('revokeSharingOfResourceFromUsers requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.revokeSharingOfResourceFromUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getAllAccessibleUsers':
+    if len(args) != 4:
+        print('getAllAccessibleUsers requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getAllAccessibleUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'createGroup':
+    if len(args) != 2:
+        print('createGroup requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.createGroup(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateGroup':
+    if len(args) != 2:
+        print('updateGroup requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.updateGroup(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'deleteGroup':
+    if len(args) != 4:
+        print('deleteGroup requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGroup(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getGroup':
+    if len(args) != 2:
+        print('getGroup requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroup(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGroupsUserBelongs':
+    if len(args) != 3:
+        print('getAllGroupsUserBelongs requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGroupsUserBelongs(eval(args[0]), args[1], args[2],))
+
+else:
+    print('Unrecognized method %s' % cmd)
+    sys.exit(1)
+
+transport.close()
diff --git a/cwl-workflows/apache/airavata/api/Airavata.py b/cwl-workflows/apache/airavata/api/Airavata.py
new file mode 100644
index 0000000..77fd62a
--- /dev/null
+++ b/cwl-workflows/apache/airavata/api/Airavata.py
@@ -0,0 +1,52211 @@
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+import sys
+import logging
+from .ttypes import *
+from thrift.Thrift import TProcessor
+from thrift.transport import TTransport
+
+
+class Iface(object):
+    def getAPIVersion(self, authzToken):
+        """
+        Fetch Apache Airavata API version
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def isUserExists(self, authzToken, gatewayId, userName):
+        """
+        Verify if User Exists within Airavata.
+
+        @param gatewayId
+
+         @param userName
+
+        @return true/false
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+        """
+        pass
+
+    def addGateway(self, authzToken, gateway):
+        """
+        Register a Gateway with Airavata.
+
+        @param gateway
+           The gateway data model.
+
+        @return gatewayId
+          Th unique identifier of the  newly registered gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gateway
+        """
+        pass
+
+    def getAllUsersInGateway(self, authzToken, gatewayId):
+        """
+        Get all users in the gateway
+
+        @param gatewayId
+           The gateway data model.
+
+        @return users
+          list of usernames of the users in the gateway
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def updateGateway(self, authzToken, gatewayId, updatedGateway):
+        """
+        Update previously registered Gateway metadata.
+
+        @param gatewayId
+           The gateway Id of the Gateway which require an update.
+
+        @return gateway
+           Modified gateway obejct.
+
+        @exception AiravataClientException
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - updatedGateway
+        """
+        pass
+
+    def getGateway(self, authzToken, gatewayId):
+        """
+        Get Gateway details by providing gatewayId
+
+        @param gatewayId
+           The gateway Id of the Gateway.
+
+        @return gateway
+           Gateway obejct.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def deleteGateway(self, authzToken, gatewayId):
+        """
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAllGateways(self, authzToken):
+        """
+        Get All the Gateways Connected to Airavata.
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def isGatewayExist(self, authzToken, gatewayId):
+        """
+        Check for the Existance of a Gateway within Airavata
+
+        @param gatewayId
+          Provide the gatewayId of the gateway you want to check the existancy
+
+        @return boolean
+          Boolean idetifier for the existance or non-existane of the gatewayId
+
+        @return gatewayId
+          return the gatewayId of the existing gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def createNotification(self, authzToken, notification):
+        """
+          * API methods to retrieve notifications
+        *
+
+        Parameters:
+         - authzToken
+         - notification
+        """
+        pass
+
+    def updateNotification(self, authzToken, notification):
+        """
+        Parameters:
+         - authzToken
+         - notification
+        """
+        pass
+
+    def deleteNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        pass
+
+    def getNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        pass
+
+    def getAllNotifications(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName, description, credentialOwnerType):
+        """
+        Generate and Register SSH Key Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param userName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param description
+           The description field for a credential type, all type of credential can have a description.
+
+        @param credentialOwnerType
+           The type of owner of this credential. Two possible values: GATEWAY (default) and USER
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - description
+         - credentialOwnerType
+        """
+        pass
+
+    def registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+        """
+        Generate and Register Username PWD Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param portalUserName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param loginUserName
+
+        @param password
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - portalUserName
+         - loginUserName
+         - password
+         - description
+        """
+        pass
+
+    def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Get a Public Key by Providing the Token
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        pass
+
+    def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+        """
+
+        Get all Public Keys of the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAllCredentialSummaryForGateway(self, authzToken, type, gatewayId):
+        """
+
+        Get all Credential summaries for the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return List of Credential Summary Objects
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+        """
+        pass
+
+    def getAllCredentialSummaryForUsersInGateway(self, authzToken, type, gatewayId, userId):
+        """
+
+        Get all Credential summaries for user in a Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @param userId
+           This is the unique identifier of user whose public keys are to be fetched.
+
+        @return CredentialSummary
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+         - userId
+        """
+        pass
+
+    def getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        pass
+
+    def deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        pass
+
+    def createProject(self, authzToken, gatewayId, project):
+        """
+
+        Creates a Project with basic metadata.
+           A Project is a container of experiments.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param Project
+           The Project Object described in the workspace_model.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - project
+        """
+        pass
+
+    def updateProject(self, authzToken, projectId, updatedProject):
+        """
+
+        Update an Existing Project
+
+        @param projectId
+           The projectId of the project needed an update.
+
+        @return void
+           Currently this does not return any value.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - updatedProject
+        """
+        pass
+
+    def getProject(self, authzToken, projectId):
+        """
+
+        Get a Project by ID
+           This method is to obtain a project by providing a projectId.
+
+        @param projectId
+           projectId of the project you require.
+
+        @return project
+           project data model will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        pass
+
+    def deleteProject(self, authzToken, projectId):
+        """
+
+        Delete a Project
+           This method is used to delete an existing Project.
+
+        @param projectId
+           projectId of the project you want to delete.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+           NOTE: This method is not used within gateways connected with Airavata.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        pass
+
+    def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All User Projects
+        Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param userName
+           The identifier of the user.
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        pass
+
+    def searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+
+        Search User Projects
+        Search and get all Projects for user by project description or/and project name  with pagination.
+        Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The unique identifier of the gateway making the request.
+
+        @param userName
+           The identifier of the user.
+
+        @param filters
+           Map of multiple filter criteria. Currenlt search filters includes Project Name and Project Description
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        pass
+
+    def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+        Search Experiments.
+        Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requested gateway.
+
+        @param userName
+              Username of the user requesting the search function.
+
+        @param filters
+              Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+        @return ExperimentSummaryModel
+           List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        pass
+
+    def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName):
+        """
+
+        Get Experiment Statistics
+        Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
+        @param gatewayId
+              Unique identifier of the gateway making the request to fetch statistics.
+
+        @param fromTime
+              Starting date time.
+
+        @param toTime
+              Ending data time.
+
+        @param userName
+              Gateway username substring with which to further filter statistics.
+
+        @param applicationName
+              Application id substring with which to further filter statistics.
+
+        @param resourceHostName
+              Hostname id substring with which to further filter statistics.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - fromTime
+         - toTime
+         - userName
+         - applicationName
+         - resourceHostName
+        """
+        pass
+
+    def getExperimentsInProject(self, authzToken, projectId, limit, offset):
+        """
+
+        Get All Experiments of the Project
+        Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
+
+        @param projectId
+              Uniqie identifier of the project.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - limit
+         - offset
+        """
+        pass
+
+    def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All Experiments of the User
+        Get experiments by user with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requesting gateway.
+
+        @param userName
+              Username of the requested end user.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        pass
+
+    def createExperiment(self, authzToken, gatewayId, experiment):
+        """
+          *
+          * Create New Experiment
+          * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+          *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
+          *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+          *   registering the experiment in a persistent store.
+          *
+          * @param gatewayId
+          *    The unique ID of the gateway where the experiment is been created.
+          *
+          * @param ExperimentModel
+          *    The create experiment will require the basic experiment metadata like the name and description, intended user,
+          *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+          *      the ExperimentMetadata is a required field.
+          *
+          * @return
+          *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - experiment
+        """
+        pass
+
+    def deleteExperiment(self, authzToken, experimentId):
+        """
+
+        Delete an Experiment
+        If the experiment is not already launched experiment can be deleted.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you want to delete.
+
+        @return boolean
+            Identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - experimentId
+        """
+        pass
+
+    def getExperiment(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment
+          * Fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getExperimentByAdmin(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment by an admin user
+          *
+          * Used by an admin user to fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+        """
+
+        Get Complete Experiment Details
+        Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
+        tasks -> jobs information.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return ExperimentModel
+          This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+          information, special input output handling and additional quality of service parameters.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def updateExperiment(self, authzToken, airavataExperimentId, experiment):
+        """
+
+        Update a Previously Created Experiment
+        Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+        The experiment has to be launched to make it actionable by the server.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @param ExperimentModel
+           The configuration information of the experiment with application input parameters, computational resource scheduling
+             information, special input output handling and additional quality of service parameters.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - experiment
+        """
+        pass
+
+    def updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - userConfiguration
+        """
+        pass
+
+    def updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - resourceScheduling
+        """
+        pass
+
+    def validateExperiment(self, authzToken, airavataExperimentId):
+        """
+         *
+         * Validate experiment configuration.
+         * A true in general indicates, the experiment is ready to be launched.
+         *
+         * @param airavataExperimentId
+         *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
+         *
+         * @return boolean
+         *      Identifier for the success or failure of the validation operation.
+         *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Launch a Previously Created & Configured Experiment.
+        Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+        @gatewayId
+           ID of the gateway which will launch the experiment.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        pass
+
+    def getExperimentStatus(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Status
+
+        Obtain the status of an experiment by providing the Experiment Id
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you require the status.
+
+        @return ExperimentStatus
+            ExperimentStatus model with the current status will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getExperimentOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Outputs
+        This method to be used when need to obtain final outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need the outputs.
+
+        @return list
+            List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getIntermediateOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Intermediate Experiment Outputs
+        This method to be used when need to obtain intermediate outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need intermediate outputs.
+
+        @return list
+            List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getJobStatuses(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Statuses for an Experiment
+        This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need the job statuses.
+
+        @return JobStatus
+            Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getJobDetails(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Details for all the jobs within an Experiment.
+        This method to be used when need to get the job details for one or many jobs of an Experiment.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need job details.
+
+        @return list of JobDetails
+            Job details.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        pass
+
+    def cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment by an admin user
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        pass
+
+    def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Terminate a running Experiment.
+
+        @gatewayId
+           ID of the gateway which will terminate the running Experiment.
+
+        @param airavataExperimentId
+           The identifier of the experiment required termination. This ID is returned during the create experiment step.
+
+        @return status
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        pass
+
+    def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+        """
+
+        Register a Application Module.
+
+        @gatewayId
+           ID of the gateway which is registering the new Application Module.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return appModuleId
+          Returns the server-side generated airavata appModule globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationModule
+        """
+        pass
+
+    def getApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Fetch a Application Module.
+
+        @param appModuleId
+          The unique identifier of the application module required
+
+        @return applicationModule
+          Returns an Application Module Object.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        pass
+
+    def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+        """
+
+        Update a Application Module.
+
+        @param appModuleId
+          The identifier for the requested application module to be updated.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+         - applicationModule
+        """
+        pass
+
+    def getAllAppModules(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Module Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list
+           Returns the list of all Application Module Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def deleteApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Delete an Application Module.
+
+        @param appModuleId
+          The identifier of the Application Module to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        pass
+
+    def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+        """
+
+        Register an Application Deployment.
+
+        @param gatewayId
+           ID of the gateway which is registering the new Application Deployment.
+
+        @param applicationDeployment
+           Application Module Object created from the datamodel.
+
+        @return appDeploymentId
+          Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationDeployment
+        """
+        pass
+
+    def getApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Fetch a Application Deployment.
+
+        @param appDeploymentId
+          The identifier for the requested application module
+
+        @return applicationDeployment
+          Returns a application Deployment Object.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        pass
+
+    def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+        """
+
+        Update an Application Deployment.
+
+        @param appDeploymentId
+          The identifier of the requested application deployment to be updated.
+
+        @param appDeployment
+           Application Deployment Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+         - applicationDeployment
+        """
+        pass
+
+    def deleteApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Delete an Application Deployment.
+
+        @param appDeploymentId
+          The unique identifier of application deployment to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        pass
+
+    def getAllApplicationDeployments(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Deployment Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list<applicationDeployment.
+           Returns the list of all application Deployment Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAppModuleDeployedResources(self, authzToken, appModuleId):
+        """
+        Fetch a list of Deployed Compute Hosts.
+
+        @param appModuleId
+          The identifier for the requested application module
+
+        @return list<string>
+          Returns a list of Deployed Resources.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        pass
+
+    def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+        """
+
+        Register a Application Interface.
+
+        @param applicationInterface
+           Application Module Object created from the datamodel.
+
+        @return appInterfaceId
+          Returns a server-side generated airavata application interface globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationInterface
+        """
+        pass
+
+    def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+        """
+
+        Clone an Application Interface.
+
+        @gatewayId
+           The identifier for the gateway profile to be requested
+
+        @param existingAppInterfaceID
+           Identifier of the existing Application interface you wich to clone.
+
+        @param newApplicationName
+           Name for the new application interface.
+
+        @return appInterfaceId
+           Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
+        Parameters:
+         - authzToken
+         - existingAppInterfaceID
+         - newApplicationName
+         - gatewayId
+        """
+        pass
+
+    def getApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Fetch an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return applicationInterface
+          Returns an application Interface Object.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+        """
+
+        Update a Application Interface.
+
+        @param appInterfaceId
+          The identifier of the requested application deployment to be updated.
+
+        @param appInterface
+           Application Interface Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+         - applicationInterface
+        """
+        pass
+
+    def deleteApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Delete an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+        """
+
+        Fetch name and ID of  Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces with corresponsing ID's
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAllApplicationInterfaces(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getApplicationInputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch the list of Application Inputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need inputs to be fetched.
+
+        @return list<application_interface_model.InputDataObjectType>
+          Returns a list of application inputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def getApplicationOutputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch list of Application Outputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need outputs to be fetched.
+
+        @return list<application_interface_model.OutputDataObjectType>
+          Returns a list of application outputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+        """
+
+        Fetch a list of all deployed Compute Hosts for a given application interfaces.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return map<computeResourceId, computeResourceName>
+          A map of registered compute resource id's and their corresponding hostnames.
+          Deployments of each modules listed within the interfaces will be listed.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def registerComputeResource(self, authzToken, computeResourceDescription):
+        """
+        Register a Compute Resource.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return computeResourceId
+          Returns a server-side generated airavata compute resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceDescription
+        """
+        pass
+
+    def getComputeResource(self, authzToken, computeResourceId):
+        """
+        Fetch the given Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource
+
+        @return computeResourceDescription
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+        """
+        pass
+
+    def getAllComputeResourceNames(self, authzToken):
+        """
+
+        Fetch all registered Compute Resources.
+
+        @return A map of registered compute resource id's and thier corresponding hostnames.
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateComputeResource(self, authzToken, computeResourceId, computeResourceDescription):
+        """
+        Update a Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource to be updated.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - computeResourceDescription
+        """
+        pass
+
+    def deleteComputeResource(self, authzToken, computeResourceId):
+        """
+        Delete a Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+        """
+        pass
+
+    def registerStorageResource(self, authzToken, storageResourceDescription):
+        """
+        Register a Storage Resource.
+
+        @param storageResourceDescription
+           Storge Resource Object created from the datamodel.
+
+        @return storageResourceId
+          Returns a server-side generated airavata storage resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceDescription
+        """
+        pass
+
+    def getStorageResource(self, authzToken, storageResourceId):
+        """
+        Fetch the given Storage Resource.
+
+        @param storageResourceId
+          The identifier for the requested storage resource
+
+        @return storageResourceDescription
+           Storage Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+        """
+        pass
+
+    def getAllStorageResourceNames(self, authzToken):
+        """
+        Fetch all registered Storage Resources.
+
+        @return A map of registered compute resource id's and thier corresponding hostnames.
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
+        """
+        Update a Storage Resource.
+
+        @param storageResourceId
+          The identifier for the requested compute resource to be updated.
+
+        @param storageResourceDescription
+           Storage Resource Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+         - storageResourceDescription
+        """
+        pass
+
+    def deleteStorageResource(self, authzToken, storageResourceId):
+        """
+        Delete a Storage Resource.
+
+        @param storageResourceId
+          The identifier of the requested compute resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+        """
+        pass
+
+    def addLocalSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, localSubmission):
+        """
+        Add a Local Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param localSubmission
+          The LOCALSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - localSubmission
+        """
+        pass
+
+    def updateLocalSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, localSubmission):
+        """
+        Update the given Local Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param localSubmission
+          The LOCALSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - localSubmission
+        """
+        pass
+
+    def getLocalJobSubmission(self, authzToken, jobSubmissionId):
+        """
+        This method returns localJobSubmission object
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be retrieved.
+         @return LOCALSubmission instance
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def addSSHJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        """
+        Add a SSH Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - sshJobSubmission
+        """
+        pass
+
+    def addSSHForkJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        """
+        Add a SSH_FORK Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - sshJobSubmission
+        """
+        pass
+
+    def getSSHJobSubmission(self, authzToken, jobSubmissionId):
+        """
+        This method returns SSHJobSubmission object
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be retrieved.
+         @return SSHJobSubmission instance
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
+        """
+
+        Add a UNICORE Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param unicoreJobSubmission
+          The UnicoreJobSubmission object to be added to the resource.
+
+        @return status
+         Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - unicoreJobSubmission
+        """
+        pass
+
+    def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
+        """
+          *
+          * This method returns UnicoreJobSubmission object
+          *
+          * @param jobSubmissionInterfaceId
+          *   The identifier of the JobSubmission Interface to be retrieved.
+          *  @return UnicoreJobSubmission instance
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
+        """
+           *
+           * Add a Cloud Job Submission details to a compute resource
+           *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+           *
+           * @param computeResourceId
+           *   The identifier of the compute resource to which JobSubmission protocol to be added
+           *
+           * @param priorityOrder
+           *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+           *
+           * @param sshJobSubmission
+           *   The SSHJobSubmission object to be added to the resource.
+           *
+           * @return status
+           *   Returns the unique job submission id.
+           *
+        *
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - cloudSubmission
+        """
+        pass
+
+    def getCloudJobSubmission(self, authzToken, jobSubmissionId):
+        """
+           *
+           * This method returns cloudJobSubmission object
+           * @param jobSubmissionInterfaceI
+               *   The identifier of the JobSubmission Interface to be retrieved.
+           *  @return CloudJobSubmission instance
+        *
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def updateSSHJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+        """
+
+        Update the given SSH Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - sshJobSubmission
+        """
+        pass
+
+    def updateCloudJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+        """
+
+        Update the cloud Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param cloudJobSubmission
+          The CloudJobSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - sshJobSubmission
+        """
+        pass
+
+    def updateUnicoreJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, unicoreJobSubmission):
+        """
+
+        Update the UNIOCRE Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param UnicoreJobSubmission
+          The UnicoreJobSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - unicoreJobSubmission
+        """
+        pass
+
+    def addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
+        """
+
+        Add a Local data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param DMType
+          DMType object to be added to the resource.
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param localDataMovement
+          The LOCALDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - localDataMovement
+        """
+        pass
+
+    def updateLocalDataMovementDetails(self, authzToken, dataMovementInterfaceId, localDataMovement):
+        """
+
+        Update the given Local data movement details
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param localDataMovement
+          The LOCALDataMovement object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - localDataMovement
+        """
+        pass
+
+    def getLocalDataMovement(self, authzToken, dataMovementId):
+        """
+
+        This method returns local datamovement object.
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+         @return LOCALDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
+        """
+
+        Add a SCP data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param scpDataMovement
+          The SCPDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - scpDataMovement
+        """
+        pass
+
+    def updateSCPDataMovementDetails(self, authzToken, dataMovementInterfaceId, scpDataMovement):
+        """
+
+        Update the given scp data movement details
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param scpDataMovement
+          The SCPDataMovement object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - scpDataMovement
+        """
+        pass
+
+    def getSCPDataMovement(self, authzToken, dataMovementId):
+        """
+        This method returns SCP datamovement object
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+        @return SCPDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
+        """
+
+        Add a UNICORE data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which data movement protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param UnicoreDataMovement
+          The UnicoreDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique data movement id.
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - unicoreDataMovement
+        """
+        pass
+
+    def updateUnicoreDataMovementDetails(self, authzToken, dataMovementInterfaceId, unicoreDataMovement):
+        """
+
+        Update a selected UNICORE data movement details
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param UnicoreDataMovement
+          The UnicoreDataMovement object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - unicoreDataMovement
+        """
+        pass
+
+    def getUnicoreDataMovement(self, authzToken, dataMovementId):
+        """
+
+        This method returns UNICORE datamovement object
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+        @return UnicoreDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
+        """
+
+        Add a GridFTP data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which dataMovement protocol to be added
+
+        @param DMType
+           The DMType object to be added to the resource.
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param gridFTPDataMovement
+          The GridFTPDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique data movement id.
+
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - gridFTPDataMovement
+        """
+        pass
+
+    def updateGridFTPDataMovementDetails(self, authzToken, dataMovementInterfaceId, gridFTPDataMovement):
+        """
+        Update the given GridFTP data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param gridFTPDataMovement
+          The GridFTPDataMovement object to be updated.
+
+        @return boolean
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - gridFTPDataMovement
+        """
+        pass
+
+    def getGridFTPDataMovement(self, authzToken, dataMovementId):
+        """
+        This method returns GridFTP datamovement object
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+         @return GridFTPDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def changeJobSubmissionPriority(self, authzToken, jobSubmissionInterfaceId, newPriorityOrder):
+        """
+        Change the priority of a given job submisison interface
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be changed
+
+        @param priorityOrder
+          The new priority of the job manager interface.
+
+        @return status
+          Returns a success/failure of the change.
+
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - newPriorityOrder
+        """
+        pass
+
+    def changeDataMovementPriority(self, authzToken, dataMovementInterfaceId, newPriorityOrder):
+        """
+        Change the priority of a given data movement interface
+
+        @param dataMovementInterfaceId
+          The identifier of the DataMovement Interface to be changed
+
+        @param priorityOrder
+          The new priority of the data movement interface.
+
+        @return status
+          Returns a success/failure of the change.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - newPriorityOrder
+        """
+        pass
+
+    def changeJobSubmissionPriorities(self, authzToken, jobSubmissionPriorityMap):
+        """
+        Change the priorities of a given set of job submission interfaces
+
+        @param jobSubmissionPriorityMap
+          A Map of identifiers of the JobSubmission Interfaces and thier associated priorities to be set.
+
+        @return status
+          Returns a success/failure of the changes.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionPriorityMap
+        """
+        pass
+
+    def changeDataMovementPriorities(self, authzToken, dataMovementPriorityMap):
+        """
+        Change the priorities of a given set of data movement interfaces
+
+        @param dataMovementPriorityMap
+          A Map of identifiers of the DataMovement Interfaces and thier associated priorities to be set.
+
+        @return status
+          Returns a success/failure of the changes.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementPriorityMap
+        """
+        pass
+
+    def deleteJobSubmissionInterface(self, authzToken, computeResourceId, jobSubmissionInterfaceId):
+        """
+        Delete a given job submisison interface
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be changed
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - jobSubmissionInterfaceId
+        """
+        pass
+
+    def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
+        """
+        Delete a given data movement interface
+
+        @param dataMovementInterfaceId
+          The identifier of the DataMovement Interface to be changed
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMovementInterfaceId
+         - dataMoveType
+        """
+        pass
+
+    def registerResourceJobManager(self, authzToken, resourceJobManager):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManager
+        """
+        pass
+
+    def updateResourceJobManager(self, authzToken, resourceJobManagerId, updatedResourceJobManager):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManagerId
+         - updatedResourceJobManager
+        """
+        pass
+
+    def getResourceJobManager(self, authzToken, resourceJobManagerId):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManagerId
+        """
+        pass
+
+    def deleteResourceJobManager(self, authzToken, resourceJobManagerId):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManagerId
+        """
+        pass
+
+    def deleteBatchQueue(self, authzToken, computeResourceId, queueName):
+        """
+        Delete a Compute Resource Queue
+
+        @param computeResourceId
+          The identifier of the compute resource which has the queue to be deleted
+
+        @param queueName
+          Name of the queue need to be deleted. Name is the uniqueue identifier for the queue within a compute resource
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - queueName
+        """
+        pass
+
+    def registerGatewayResourceProfile(self, authzToken, gatewayResourceProfile):
+        """
+        Register a Gateway Resource Profile.
+
+        @param gatewayResourceProfile
+           Gateway Resource Profile Object.
+           The GatewayID should be obtained from Airavata gateway registration and passed to register a corresponding
+             resource profile.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - gatewayResourceProfile
+        """
+        pass
+
+    def getGatewayResourceProfile(self, authzToken, gatewayID):
+        """
+        Fetch the given Gateway Resource Profile.
+
+        @param gatewayID
+          The identifier for the requested gateway resource.
+
+        @return gatewayResourceProfile
+           Gateway Resource Profile Object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def updateGatewayResourceProfile(self, authzToken, gatewayID, gatewayResourceProfile):
+        """
+        Update a Gateway Resource Profile.
+
+        @param gatewayID
+          The identifier for the requested gateway resource to be updated.
+
+        @param gatewayResourceProfile
+           Gateway Resource Profile Object.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - gatewayResourceProfile
+        """
+        pass
+
+    def deleteGatewayResourceProfile(self, authzToken, gatewayID):
+        """
+        Delete the given Gateway Resource Profile.
+
+        @param gatewayID
+          The identifier for the requested gateway resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def addGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+        """
+        Add a Compute Resource Preference to a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be added.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+         - computeResourcePreference
+        """
+        pass
+
+    def addGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId, storagePreference):
+        """
+        Add a Storage Resource Preference to a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to be added.
+
+        @param storageResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageResourceId
+         - storagePreference
+        """
+        pass
+
+    def getGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+        """
+
+        Fetch a Compute Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+        """
+        pass
+
+    def getGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId):
+        """
+
+        Fetch a Storage Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to request to fetch the particular storage resource preference.
+
+        @param storageResourceId
+          Identifier of the Stprage Preference required to be fetched.
+
+        @return StoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageResourceId
+        """
+        pass
+
+    def getAllGatewayComputeResourcePreferences(self, authzToken, gatewayID):
+        """
+
+        Fetch all Compute Resource Preferences of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def getAllGatewayStoragePreferences(self, authzToken, gatewayID):
+        """
+        Fetch all Storage Resource Preferences of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return StoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def getAllGatewayResourceProfiles(self, authzToken):
+        """
+
+        Fetch all Gateway Profiles registered
+
+        @return GatewayResourceProfile
+          Returns all the GatewayResourcePrifle list object.
+
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+        """
+        Update a Compute Resource Preference to a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be updated.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+         - computeResourcePreference
+        """
+        pass
+
+    def updateGatewayStoragePreference(self, authzToken, gatewayID, storageId, storagePreference):
+        """
+        Update a Storage Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to be updated.
+
+        @param storageId
+          The Storage resource identifier of the one that you want to update
+
+        @param storagePreference
+          The storagePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageId
+         - storagePreference
+        """
+        pass
+
+    def deleteGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+        """
+        Delete the Compute Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be deleted.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+        """
+        pass
+
+    def deleteGatewayStoragePreference(self, authzToken, gatewayID, storageId):
+        """
+        Delete the Storage Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to be deleted.
+
+        @param storageId
+          ID of the storage preference you want to delete.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageId
+        """
+        pass
+
+    def registerUserResourceProfile(self, authzToken, userResourceProfile):
+        """
+        Register User Resource Profile.
+
+        @param UserResourceProfile
+           User Resource Profile Object.
+           The userId should be obtained from Airavata user profile data model and passed to register a corresponding
+             resource profile.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - userResourceProfile
+        """
+        pass
+
+    def getUserResourceProfile(self, authzToken, userId, gatewayID):
+        """
+        Fetch the given User Resource Profile.
+
+        @param userId
+          The identifier for the requested user resource profile.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @return UserResourceProfile
+           User Resource Profile Object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def updateUserResourceProfile(self, authzToken, userId, gatewayID, userResourceProfile):
+        """
+        Update a User Resource Profile.
+
+        @param userId
+          The identifier for the requested user resource to be updated.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param UserResourceProfile
+           User Resource Profile Object.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userResourceProfile
+        """
+        pass
+
+    def deleteUserResourceProfile(self, authzToken, userId, gatewayID):
+        """
+        Delete the given User Resource Profile.
+
+        @param userId
+          The identifier for the requested user resource to be deleted.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def addUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId, userComputeResourcePreference):
+        """
+        Add a Compute Resource Preference to a registered User profile.
+
+        @param userId
+          The identifier for the User resource profile to be added.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+         - userComputeResourcePreference
+        """
+        pass
+
+    def addUserStoragePreference(self, authzToken, userId, gatewayID, userStorageResourceId, userStoragePreference):
+        """
+        Add a Storage Resource Preference to a registered user resource profile.
+
+        @param userId
+          The identifier of the user resource profile to be added.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param storageResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageResourceId
+         - userStoragePreference
+        """
+        pass
+
+    def getUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId):
+        """
+
+        Fetch a Compute Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier for the user profile to be requested
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userComputeResourceId
+          Preferences related to a particular compute resource
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+        """
+        pass
+
+    def getUserStoragePreference(self, authzToken, userId, gatewayID, userStorageResourceId):
+        """
+
+        Fetch a Storage Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier of the user resource profile to request to fetch the particular storage resource preference.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userStorageResourceId
+          Identifier of the Stprage Preference required to be fetched.
+
+        @return UserStoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageResourceId
+        """
+        pass
+
+    def getAllUserComputeResourcePreferences(self, authzToken, userId, gatewayID):
+        """
+
+        Fetch all Compute Resource Preferences of a registered gateway profile.
+
+        @param userId
+          The identifier of the user resource profile to request to fetch the particular storage resource preference.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def getAllUserStoragePreferences(self, authzToken, userId, gatewayID):
+        """
+        Fetch all User Storage Resource Preferences of a registered user profile.
+
+        @param userId
+          The identifier of the user resource profile to request to fetch the particular storage resource preference.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return StoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def getAllUserResourceProfiles(self, authzToken):
+        """
+
+        Fetch all user resources Profiles registered
+
+        @return UserResourceProfile
+          Returns all the UserResourcePrifle list object.
+
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId, userComputeResourcePreference):
+        """
+        Update a Compute Resource Preference to a registered user resource profile.
+
+        @param userId
+          The identifier for the user profile to be updated.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userComputeResourceId
+          Preferences related to a particular compute resource
+
+        @param userComputeResourcePreference
+          The ComputeResourcePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+         - userComputeResourcePreference
+        """
+        pass
+
+    def updateUserStoragePreference(self, authzToken, userId, gatewayID, userStorageId, userStoragePreference):
+        """
+        Update a Storage Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier of the user resource profile to be updated.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userStorageId
+          The Storage resource identifier of the one that you want to update
+
+        @param userStoragePreference
+          The storagePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageId
+         - userStoragePreference
+        """
+        pass
+
+    def deleteUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId):
+        """
+        Delete the Compute Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier for the user resource profile to be deleted.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userComputeResourceId
+          Preferences related to a particular compute resource
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+        """
+        pass
+
+    def deleteUserStoragePreference(self, authzToken, userId, gatewayID, userStorageId):
+        """
+        Delete the Storage Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier of the user profile to be deleted.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userStorageId
+          ID of the storage preference you want to delete.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageId
+        """
+        pass
+
+    def getAllWorkflows(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getLatestQueueStatuses(self, authzToken):
+        """
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def getWorkflow(self, authzToken, workflowTemplateId):
+        """
+
+        API Methods Related for Work-Flow Submission Features.
+
+
+        Parameters:
+         - authzToken
+         - workflowTemplateId
+        """
+        pass
+
+    def deleteWorkflow(self, authzToken, workflowTemplateId):
+        """
+        Parameters:
+         - authzToken
+         - workflowTemplateId
+        """
+        pass
+
+    def registerWorkflow(self, authzToken, gatewayId, workflow):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - workflow
+        """
+        pass
+
+    def updateWorkflow(self, authzToken, workflowTemplateId, workflow):
+        """
+        Parameters:
+         - authzToken
+         - workflowTemplateId
+         - workflow
+        """
+        pass
+
+    def getWorkflowTemplateId(self, authzToken, workflowName):
+        """
+        Parameters:
+         - authzToken
+         - workflowName
+        """
+        pass
+
+    def isWorkflowExistWithName(self, authzToken, workflowName):
+        """
+        Parameters:
+         - authzToken
+         - workflowName
+        """
+        pass
+
+    def registerDataProduct(self, authzToken, dataProductModel):
+        """
+        API Methods related to replica catalog
+
+
+        Parameters:
+         - authzToken
+         - dataProductModel
+        """
+        pass
+
+    def getDataProduct(self, authzToken, dataProductUri):
+        """
+        Parameters:
+         - authzToken
+         - dataProductUri
+        """
+        pass
+
+    def registerReplicaLocation(self, authzToken, replicaLocationModel):
+        """
+        Parameters:
+         - authzToken
+         - replicaLocationModel
+        """
+        pass
+
+    def getParentDataProduct(self, authzToken, productUri):
+        """
+        Parameters:
+         - authzToken
+         - productUri
+        """
+        pass
+
+    def getChildDataProducts(self, authzToken, productUri):
+        """
+        Parameters:
+         - authzToken
+         - productUri
+        """
+        pass
+
+    def shareResourceWithUsers(self, authzToken, resourceId, resourceType, userPermissionList):
+        """
+        Group Manager and Data Sharing Related API methods
+
+
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - userPermissionList
+        """
+        pass
+
+    def revokeSharingOfResourceFromUsers(self, authzToken, resourceId, resourceType, userPermissionList):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - userPermissionList
+        """
+        pass
+
+    def getAllAccessibleUsers(self, authzToken, resourceId, resourceType, permissionType):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - permissionType
+        """
+        pass
+
+    def createGroup(self, authzToken, groupModel):
+        """
+        Parameters:
+         - authzToken
+         - groupModel
+        """
+        pass
+
+    def updateGroup(self, authzToken, groupModel):
+        """
+        Parameters:
+         - authzToken
+         - groupModel
+        """
+        pass
+
+    def deleteGroup(self, authzToken, groupId, ownerId, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - groupId
+         - ownerId
+         - gatewayId
+        """
+        pass
+
+    def getGroup(self, authzToken, groupId):
+        """
+        Parameters:
+         - authzToken
+         - groupId
+        """
+        pass
+
+    def getAllGroupsUserBelongs(self, authzToken, userName, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - userName
+         - gatewayId
+        """
+        pass
+
+
+class Client(Iface):
+    def __init__(self, iprot, oprot=None):
+        self._iprot = self._oprot = iprot
+        if oprot is not None:
+            self._oprot = oprot
+        self._seqid = 0
+
+    def getAPIVersion(self, authzToken):
+        """
+        Fetch Apache Airavata API version
+
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getAPIVersion(authzToken)
+        return self.recv_getAPIVersion()
+
+    def send_getAPIVersion(self, authzToken):
+        self._oprot.writeMessageBegin('getAPIVersion', TMessageType.CALL, self._seqid)
+        args = getAPIVersion_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAPIVersion(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAPIVersion_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAPIVersion failed: unknown result")
+
+    def isUserExists(self, authzToken, gatewayId, userName):
+        """
+        Verify if User Exists within Airavata.
+
+        @param gatewayId
+
+         @param userName
+
+        @return true/false
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+        """
+        self.send_isUserExists(authzToken, gatewayId, userName)
+        return self.recv_isUserExists()
+
+    def send_isUserExists(self, authzToken, gatewayId, userName):
+        self._oprot.writeMessageBegin('isUserExists', TMessageType.CALL, self._seqid)
+        args = isUserExists_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_isUserExists(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = isUserExists_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "isUserExists failed: unknown result")
+
+    def addGateway(self, authzToken, gateway):
+        """
+        Register a Gateway with Airavata.
+
+        @param gateway
+           The gateway data model.
+
+        @return gatewayId
+          Th unique identifier of the  newly registered gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gateway
+        """
+        self.send_addGateway(authzToken, gateway)
+        return self.recv_addGateway()
+
+    def send_addGateway(self, authzToken, gateway):
+        self._oprot.writeMessageBegin('addGateway', TMessageType.CALL, self._seqid)
+        args = addGateway_args()
+        args.authzToken = authzToken
+        args.gateway = gateway
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "addGateway failed: unknown result")
+
+    def getAllUsersInGateway(self, authzToken, gatewayId):
+        """
+        Get all users in the gateway
+
+        @param gatewayId
+           The gateway data model.
+
+        @return users
+          list of usernames of the users in the gateway
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllUsersInGateway(authzToken, gatewayId)
+        return self.recv_getAllUsersInGateway()
+
+    def send_getAllUsersInGateway(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllUsersInGateway', TMessageType.CALL, self._seqid)
+        args = getAllUsersInGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllUsersInGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllUsersInGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUsersInGateway failed: unknown result")
+
+    def updateGateway(self, authzToken, gatewayId, updatedGateway):
+        """
+        Update previously registered Gateway metadata.
+
+        @param gatewayId
+           The gateway Id of the Gateway which require an update.
+
+        @return gateway
+           Modified gateway obejct.
+
+        @exception AiravataClientException
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - updatedGateway
+        """
+        self.send_updateGateway(authzToken, gatewayId, updatedGateway)
+        return self.recv_updateGateway()
+
+    def send_updateGateway(self, authzToken, gatewayId, updatedGateway):
+        self._oprot.writeMessageBegin('updateGateway', TMessageType.CALL, self._seqid)
+        args = updateGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.updatedGateway = updatedGateway
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateGateway failed: unknown result")
+
+    def getGateway(self, authzToken, gatewayId):
+        """
+        Get Gateway details by providing gatewayId
+
+        @param gatewayId
+           The gateway Id of the Gateway.
+
+        @return gateway
+           Gateway obejct.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getGateway(authzToken, gatewayId)
+        return self.recv_getGateway()
+
+    def send_getGateway(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getGateway', TMessageType.CALL, self._seqid)
+        args = getGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getGateway failed: unknown result")
+
+    def deleteGateway(self, authzToken, gatewayId):
+        """
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_deleteGateway(authzToken, gatewayId)
+        return self.recv_deleteGateway()
+
+    def send_deleteGateway(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('deleteGateway', TMessageType.CALL, self._seqid)
+        args = deleteGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteGateway failed: unknown result")
+
+    def getAllGateways(self, authzToken):
+        """
+        Get All the Gateways Connected to Airavata.
+
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getAllGateways(authzToken)
+        return self.recv_getAllGateways()
+
+    def send_getAllGateways(self, authzToken):
+        self._oprot.writeMessageBegin('getAllGateways', TMessageType.CALL, self._seqid)
+        args = getAllGateways_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllGateways(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllGateways_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllGateways failed: unknown result")
+
+    def isGatewayExist(self, authzToken, gatewayId):
+        """
+        Check for the Existance of a Gateway within Airavata
+
+        @param gatewayId
+          Provide the gatewayId of the gateway you want to check the existancy
+
+        @return boolean
+          Boolean idetifier for the existance or non-existane of the gatewayId
+
+        @return gatewayId
+          return the gatewayId of the existing gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_isGatewayExist(authzToken, gatewayId)
+        return self.recv_isGatewayExist()
+
+    def send_isGatewayExist(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('isGatewayExist', TMessageType.CALL, self._seqid)
+        args = isGatewayExist_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_isGatewayExist(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = isGatewayExist_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "isGatewayExist failed: unknown result")
+
+    def createNotification(self, authzToken, notification):
+        """
+          * API methods to retrieve notifications
+        *
+
+        Parameters:
+         - authzToken
+         - notification
+        """
+        self.send_createNotification(authzToken, notification)
+        return self.recv_createNotification()
+
+    def send_createNotification(self, authzToken, notification):
+        self._oprot.writeMessageBegin('createNotification', TMessageType.CALL, self._seqid)
+        args = createNotification_args()
+        args.authzToken = authzToken
+        args.notification = notification
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createNotification_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "createNotification failed: unknown result")
+
+    def updateNotification(self, authzToken, notification):
+        """
+        Parameters:
+         - authzToken
+         - notification
+        """
+        self.send_updateNotification(authzToken, notification)
+        return self.recv_updateNotification()
+
+    def send_updateNotification(self, authzToken, notification):
+        self._oprot.writeMessageBegin('updateNotification', TMessageType.CALL, self._seqid)
+        args = updateNotification_args()
+        args.authzToken = authzToken
+        args.notification = notification
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateNotification_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateNotification failed: unknown result")
+
+    def deleteNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        self.send_deleteNotification(authzToken, gatewayId, notificationId)
+        return self.recv_deleteNotification()
+
+    def send_deleteNotification(self, authzToken, gatewayId, notificationId):
+        self._oprot.writeMessageBegin('deleteNotification', TMessageType.CALL, self._seqid)
+        args = deleteNotification_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.notificationId = notificationId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteNotification_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteNotification failed: unknown result")
+
+    def getNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        self.send_getNotification(authzToken, gatewayId, notificationId)
+        return self.recv_getNotification()
+
+    def send_getNotification(self, authzToken, gatewayId, notificationId):
+        self._oprot.writeMessageBegin('getNotification', TMessageType.CALL, self._seqid)
+        args = getNotification_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.notificationId = notificationId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getNotification_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getNotification failed: unknown result")
+
+    def getAllNotifications(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllNotifications(authzToken, gatewayId)
+        return self.recv_getAllNotifications()
+
+    def send_getAllNotifications(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllNotifications', TMessageType.CALL, self._seqid)
+        args = getAllNotifications_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllNotifications(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllNotifications_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllNotifications failed: unknown result")
+
+    def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName, description, credentialOwnerType):
+        """
+        Generate and Register SSH Key Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param userName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param description
+           The description field for a credential type, all type of credential can have a description.
+
+        @param credentialOwnerType
+           The type of owner of this credential. Two possible values: GATEWAY (default) and USER
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - description
+         - credentialOwnerType
+        """
+        self.send_generateAndRegisterSSHKeys(authzToken, gatewayId, userName, description, credentialOwnerType)
+        return self.recv_generateAndRegisterSSHKeys()
+
+    def send_generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName, description, credentialOwnerType):
+        self._oprot.writeMessageBegin('generateAndRegisterSSHKeys', TMessageType.CALL, self._seqid)
+        args = generateAndRegisterSSHKeys_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.description = description
+        args.credentialOwnerType = credentialOwnerType
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_generateAndRegisterSSHKeys(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = generateAndRegisterSSHKeys_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "generateAndRegisterSSHKeys failed: unknown result")
+
+    def registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+        """
+        Generate and Register Username PWD Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param portalUserName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param loginUserName
+
+        @param password
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - portalUserName
+         - loginUserName
+         - password
+         - description
+        """
+        self.send_registerPwdCredential(authzToken, gatewayId, portalUserName, loginUserName, password, description)
+        return self.recv_registerPwdCredential()
+
+    def send_registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+        self._oprot.writeMessageBegin('registerPwdCredential', TMessageType.CALL, self._seqid)
+        args = registerPwdCredential_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.portalUserName = portalUserName
+        args.loginUserName = loginUserName
+        args.password = password
+        args.description = description
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerPwdCredential(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerPwdCredential_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerPwdCredential failed: unknown result")
+
+    def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Get a Public Key by Providing the Token
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        self.send_getSSHPubKey(authzToken, airavataCredStoreToken, gatewayId)
+        return self.recv_getSSHPubKey()
+
+    def send_getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        self._oprot.writeMessageBegin('getSSHPubKey', TMessageType.CALL, self._seqid)
+        args = getSSHPubKey_args()
+        args.authzToken = authzToken
+        args.airavataCredStoreToken = airavataCredStoreToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getSSHPubKey(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getSSHPubKey_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getSSHPubKey failed: unknown result")
+
+    def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+        """
+
+        Get all Public Keys of the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllGatewaySSHPubKeys(authzToken, gatewayId)
+        return self.recv_getAllGatewaySSHPubKeys()
+
+    def send_getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllGatewaySSHPubKeys', TMessageType.CALL, self._seqid)
+        args = getAllGatewaySSHPubKeys_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllGatewaySSHPubKeys(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllGatewaySSHPubKeys_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllGatewaySSHPubKeys failed: unknown result")
+
+    def getAllCredentialSummaryForGateway(self, authzToken, type, gatewayId):
+        """
+
+        Get all Credential summaries for the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return List of Credential Summary Objects
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+        """
+        self.send_getAllCredentialSummaryForGateway(authzToken, type, gatewayId)
+        return self.recv_getAllCredentialSummaryForGateway()
+
+    def send_getAllCredentialSummaryForGateway(self, authzToken, type, gatewayId):
+        self._oprot.writeMessageBegin('getAllCredentialSummaryForGateway', TMessageType.CALL, self._seqid)
+        args = getAllCredentialSummaryForGateway_args()
+        args.authzToken = authzToken
+        args.type = type
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllCredentialSummaryForGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllCredentialSummaryForGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllCredentialSummaryForGateway failed: unknown result")
+
+    def getAllCredentialSummaryForUsersInGateway(self, authzToken, type, gatewayId, userId):
+        """
+
+        Get all Credential summaries for user in a Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @param userId
+           This is the unique identifier of user whose public keys are to be fetched.
+
+        @return CredentialSummary
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+         - userId
+        """
+        self.send_getAllCredentialSummaryForUsersInGateway(authzToken, type, gatewayId, userId)
+        return self.recv_getAllCredentialSummaryForUsersInGateway()
+
+    def send_getAllCredentialSummaryForUsersInGateway(self, authzToken, type, gatewayId, userId):
+        self._oprot.writeMessageBegin('getAllCredentialSummaryForUsersInGateway', TMessageType.CALL, self._seqid)
+        args = getAllCredentialSummaryForUsersInGateway_args()
+        args.authzToken = authzToken
+        args.type = type
+        args.gatewayId = gatewayId
+        args.userId = userId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllCredentialSummaryForUsersInGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllCredentialSummaryForUsersInGateway_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllCredentialSummaryForUsersInGateway failed: unknown result")
+
+    def getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllGatewayPWDCredentials(authzToken, gatewayId)
+        return self.recv_getAllGatewayPWDCredentials()
+
+    def send_getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllGatewayPWDCredentials', TMessageType.CALL, self._seqid)
+        args = getAllGatewayPWDCredentials_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllGatewayPWDCredentials(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllGatewayPWDCredentials_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllGatewayPWDCredentials failed: unknown result")
+
+    def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        self.send_deleteSSHPubKey(authzToken, airavataCredStoreToken, gatewayId)
+        return self.recv_deleteSSHPubKey()
+
+    def send_deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        self._oprot.writeMessageBegin('deleteSSHPubKey', TMessageType.CALL, self._seqid)
+        args = deleteSSHPubKey_args()
+        args.authzToken = authzToken
+        args.airavataCredStoreToken = airavataCredStoreToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteSSHPubKey(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteSSHPubKey_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteSSHPubKey failed: unknown result")
+
+    def deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        self.send_deletePWDCredential(authzToken, airavataCredStoreToken, gatewayId)
+        return self.recv_deletePWDCredential()
+
+    def send_deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+        self._oprot.writeMessageBegin('deletePWDCredential', TMessageType.CALL, self._seqid)
+        args = deletePWDCredential_args()
+        args.authzToken = authzToken
+        args.airavataCredStoreToken = airavataCredStoreToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deletePWDCredential(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deletePWDCredential_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deletePWDCredential failed: unknown result")
+
+    def createProject(self, authzToken, gatewayId, project):
+        """
+
+        Creates a Project with basic metadata.
+           A Project is a container of experiments.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param Project
+           The Project Object described in the workspace_model.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - project
+        """
+        self.send_createProject(authzToken, gatewayId, project)
+        return self.recv_createProject()
+
+    def send_createProject(self, authzToken, gatewayId, project):
+        self._oprot.writeMessageBegin('createProject', TMessageType.CALL, self._seqid)
+        args = createProject_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.project = project
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createProject_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "createProject failed: unknown result")
+
+    def updateProject(self, authzToken, projectId, updatedProject):
+        """
+
+        Update an Existing Project
+
+        @param projectId
+           The projectId of the project needed an update.
+
+        @return void
+           Currently this does not return any value.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - updatedProject
+        """
+        self.send_updateProject(authzToken, projectId, updatedProject)
+        self.recv_updateProject()
+
+    def send_updateProject(self, authzToken, projectId, updatedProject):
+        self._oprot.writeMessageBegin('updateProject', TMessageType.CALL, self._seqid)
+        args = updateProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.updatedProject = updatedProject
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateProject_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def getProject(self, authzToken, projectId):
+        """
+
+        Get a Project by ID
+           This method is to obtain a project by providing a projectId.
+
+        @param projectId
+           projectId of the project you require.
+
+        @return project
+           project data model will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        self.send_getProject(authzToken, projectId)
+        return self.recv_getProject()
+
+    def send_getProject(self, authzToken, projectId):
+        self._oprot.writeMessageBegin('getProject', TMessageType.CALL, self._seqid)
+        args = getProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getProject_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getProject failed: unknown result")
+
+    def deleteProject(self, authzToken, projectId):
+        """
+
+        Delete a Project
+           This method is used to delete an existing Project.
+
+        @param projectId
+           projectId of the project you want to delete.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+           NOTE: This method is not used within gateways connected with Airavata.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        self.send_deleteProject(authzToken, projectId)
+        return self.recv_deleteProject()
+
+    def send_deleteProject(self, authzToken, projectId):
+        self._oprot.writeMessageBegin('deleteProject', TMessageType.CALL, self._seqid)
+        args = deleteProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteProject_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteProject failed: unknown result")
+
+    def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All User Projects
+        Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param userName
+           The identifier of the user.
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        self.send_getUserProjects(authzToken, gatewayId, userName, limit, offset)
+        return self.recv_getUserProjects()
+
+    def send_getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+        self._oprot.writeMessageBegin('getUserProjects', TMessageType.CALL, self._seqid)
+        args = getUserProjects_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getUserProjects(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getUserProjects_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getUserProjects failed: unknown result")
+
+    def searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+
+        Search User Projects
+        Search and get all Projects for user by project description or/and project name  with pagination.
+        Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The unique identifier of the gateway making the request.
+
+        @param userName
+           The identifier of the user.
+
+        @param filters
+           Map of multiple filter criteria. Currenlt search filters includes Project Name and Project Description
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        self.send_searchProjects(authzToken, gatewayId, userName, filters, limit, offset)
+        return self.recv_searchProjects()
+
+    def send_searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+        self._oprot.writeMessageBegin('searchProjects', TMessageType.CALL, self._seqid)
+        args = searchProjects_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.filters = filters
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_searchProjects(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = searchProjects_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjects failed: unknown result")
+
+    def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+        Search Experiments.
+        Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requested gateway.
+
+        @param userName
+              Username of the user requesting the search function.
+
+        @param filters
+              Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+        @return ExperimentSummaryModel
+           List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        self.send_searchExperiments(authzToken, gatewayId, userName, filters, limit, offset)
+        return self.recv_searchExperiments()
+
+    def send_searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+        self._oprot.writeMessageBegin('searchExperiments', TMessageType.CALL, self._seqid)
+        args = searchExperiments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.filters = filters
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_searchExperiments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = searchExperiments_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperiments failed: unknown result")
+
+    def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName):
+        """
+
+        Get Experiment Statistics
+        Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
+        @param gatewayId
+              Unique identifier of the gateway making the request to fetch statistics.
+
+        @param fromTime
+              Starting date time.
+
+        @param toTime
+              Ending data time.
+
+        @param userName
+              Gateway username substring with which to further filter statistics.
+
+        @param applicationName
+              Application id substring with which to further filter statistics.
+
+        @param resourceHostName
+              Hostname id substring with which to further filter statistics.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - fromTime
+         - toTime
+         - userName
+         - applicationName
+         - resourceHostName
+        """
+        self.send_getExperimentStatistics(authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName)
+        return self.recv_getExperimentStatistics()
+
+    def send_getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName):
+        self._oprot.writeMessageBegin('getExperimentStatistics', TMessageType.CALL, self._seqid)
+        args = getExperimentStatistics_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.fromTime = fromTime
+        args.toTime = toTime
+        args.userName = userName
+        args.applicationName = applicationName
+        args.resourceHostName = resourceHostName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentStatistics(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentStatistics_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentStatistics failed: unknown result")
+
+    def getExperimentsInProject(self, authzToken, projectId, limit, offset):
+        """
+
+        Get All Experiments of the Project
+        Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
+
+        @param projectId
+              Uniqie identifier of the project.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - limit
+         - offset
+        """
+        self.send_getExperimentsInProject(authzToken, projectId, limit, offset)
+        return self.recv_getExperimentsInProject()
+
+    def send_getExperimentsInProject(self, authzToken, projectId, limit, offset):
+        self._oprot.writeMessageBegin('getExperimentsInProject', TMessageType.CALL, self._seqid)
+        args = getExperimentsInProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentsInProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentsInProject_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentsInProject failed: unknown result")
+
+    def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All Experiments of the User
+        Get experiments by user with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requesting gateway.
+
+        @param userName
+              Username of the requested end user.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        self.send_getUserExperiments(authzToken, gatewayId, userName, limit, offset)
+        return self.recv_getUserExperiments()
+
+    def send_getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+        self._oprot.writeMessageBegin('getUserExperiments', TMessageType.CALL, self._seqid)
+        args = getUserExperiments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getUserExperiments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getUserExperiments_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getUserExperiments failed: unknown result")
+
+    def createExperiment(self, authzToken, gatewayId, experiment):
+        """
+          *
+          * Create New Experiment
+          * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+          *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
+          *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+          *   registering the experiment in a persistent store.
+          *
+          * @param gatewayId
+          *    The unique ID of the gateway where the experiment is been created.
+          *
+          * @param ExperimentModel
+          *    The create experiment will require the basic experiment metadata like the name and description, intended user,
+          *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+          *      the ExperimentMetadata is a required field.
+          *
+          * @return
+          *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - experiment
+        """
+        self.send_createExperiment(authzToken, gatewayId, experiment)
+        return self.recv_createExperiment()
+
+    def send_createExperiment(self, authzToken, gatewayId, experiment):
+        self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
+        args = createExperiment_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.experiment = experiment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "createExperiment failed: unknown result")
+
+    def deleteExperiment(self, authzToken, experimentId):
+        """
+
+        Delete an Experiment
+        If the experiment is not already launched experiment can be deleted.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you want to delete.
+
+        @return boolean
+            Identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - experimentId
+        """
+        self.send_deleteExperiment(authzToken, experimentId)
+        return self.recv_deleteExperiment()
+
+    def send_deleteExperiment(self, authzToken, experimentId):
+        self._oprot.writeMessageBegin('deleteExperiment', TMessageType.CALL, self._seqid)
+        args = deleteExperiment_args()
+        args.authzToken = authzToken
+        args.experimentId = experimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteExperiment failed: unknown result")
+
+    def getExperiment(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment
+          * Fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperiment(authzToken, airavataExperimentId)
+        return self.recv_getExperiment()
+
+    def send_getExperiment(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
+        args = getExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperiment failed: unknown result")
+
+    def getExperimentByAdmin(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment by an admin user
+          *
+          * Used by an admin user to fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperimentByAdmin(authzToken, airavataExperimentId)
+        return self.recv_getExperimentByAdmin()
+
+    def send_getExperimentByAdmin(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperimentByAdmin', TMessageType.CALL, self._seqid)
+        args = getExperimentByAdmin_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentByAdmin(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentByAdmin_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentByAdmin failed: unknown result")
+
+    def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+        """
+
+        Get Complete Experiment Details
+        Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
+        tasks -> jobs information.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return ExperimentModel
+          This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+          information, special input output handling and additional quality of service parameters.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getDetailedExperimentTree(authzToken, airavataExperimentId)
+        return self.recv_getDetailedExperimentTree()
+
+    def send_getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getDetailedExperimentTree', TMessageType.CALL, self._seqid)
+        args = getDetailedExperimentTree_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getDetailedExperimentTree(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getDetailedExperimentTree_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getDetailedExperimentTree failed: unknown result")
+
+    def updateExperiment(self, authzToken, airavataExperimentId, experiment):
+        """
+
+        Update a Previously Created Experiment
+        Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+        The experiment has to be launched to make it actionable by the server.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @param ExperimentModel
+           The configuration information of the experiment with application input parameters, computational resource scheduling
+             information, special input output handling and additional quality of service parameters.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - experiment
+        """
+        self.send_updateExperiment(authzToken, airavataExperimentId, experiment)
+        self.recv_updateExperiment()
+
+    def send_updateExperiment(self, authzToken, airavataExperimentId, experiment):
+        self._oprot.writeMessageBegin('updateExperiment', TMessageType.CALL, self._seqid)
+        args = updateExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.experiment = experiment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - userConfiguration
+        """
+        self.send_updateExperimentConfiguration(authzToken, airavataExperimentId, userConfiguration)
+        self.recv_updateExperimentConfiguration()
+
+    def send_updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+        self._oprot.writeMessageBegin('updateExperimentConfiguration', TMessageType.CALL, self._seqid)
+        args = updateExperimentConfiguration_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.userConfiguration = userConfiguration
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateExperimentConfiguration(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateExperimentConfiguration_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - resourceScheduling
+        """
+        self.send_updateResourceScheduleing(authzToken, airavataExperimentId, resourceScheduling)
+        self.recv_updateResourceScheduleing()
+
+    def send_updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+        self._oprot.writeMessageBegin('updateResourceScheduleing', TMessageType.CALL, self._seqid)
+        args = updateResourceScheduleing_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.resourceScheduling = resourceScheduling
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateResourceScheduleing(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateResourceScheduleing_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def validateExperiment(self, authzToken, airavataExperimentId):
+        """
+         *
+         * Validate experiment configuration.
+         * A true in general indicates, the experiment is ready to be launched.
+         *
+         * @param airavataExperimentId
+         *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
+         *
+         * @return boolean
+         *      Identifier for the success or failure of the validation operation.
+         *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_validateExperiment(authzToken, airavataExperimentId)
+        return self.recv_validateExperiment()
+
+    def send_validateExperiment(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('validateExperiment', TMessageType.CALL, self._seqid)
+        args = validateExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_validateExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = validateExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "validateExperiment failed: unknown result")
+
+    def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Launch a Previously Created & Configured Experiment.
+        Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+        @gatewayId
+           ID of the gateway which will launch the experiment.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        self.send_launchExperiment(authzToken, airavataExperimentId, gatewayId)
+        self.recv_launchExperiment()
+
+    def send_launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        self._oprot.writeMessageBegin('launchExperiment', TMessageType.CALL, self._seqid)
+        args = launchExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_launchExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = launchExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def getExperimentStatus(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Status
+
+        Obtain the status of an experiment by providing the Experiment Id
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you require the status.
+
+        @return ExperimentStatus
+            ExperimentStatus model with the current status will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperimentStatus(authzToken, airavataExperimentId)
+        return self.recv_getExperimentStatus()
+
+    def send_getExperimentStatus(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperimentStatus', TMessageType.CALL, self._seqid)
+        args = getExperimentStatus_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentStatus(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentStatus_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentStatus failed: unknown result")
+
+    def getExperimentOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Outputs
+        This method to be used when need to obtain final outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need the outputs.
+
+        @return list
+            List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperimentOutputs(authzToken, airavataExperimentId)
+        return self.recv_getExperimentOutputs()
+
+    def send_getExperimentOutputs(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperimentOutputs', TMessageType.CALL, self._seqid)
+        args = getExperimentOutputs_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentOutputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentOutputs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentOutputs failed: unknown result")
+
+    def getIntermediateOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Intermediate Experiment Outputs
+        This method to be used when need to obtain intermediate outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need intermediate outputs.
+
+        @return list
+            List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getIntermediateOutputs(authzToken, airavataExperimentId)
+        return self.recv_getIntermediateOutputs()
+
+    def send_getIntermediateOutputs(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getIntermediateOutputs', TMessageType.CALL, self._seqid)
+        args = getIntermediateOutputs_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getIntermediateOutputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getIntermediateOutputs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getIntermediateOutputs failed: unknown result")
+
+    def getJobStatuses(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Statuses for an Experiment
+        This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need the job statuses.
+
+        @return JobStatus
+            Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getJobStatuses(authzToken, airavataExperimentId)
+        return self.recv_getJobStatuses()
+
+    def send_getJobStatuses(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getJobStatuses', TMessageType.CALL, self._seqid)
+        args = getJobStatuses_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getJobStatuses(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getJobStatuses_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getJobStatuses failed: unknown result")
+
+    def getJobDetails(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Details for all the jobs within an Experiment.
+        This method to be used when need to get the job details for one or many jobs of an Experiment.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need job details.
+
+        @return list of JobDetails
+            Job details.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getJobDetails(authzToken, airavataExperimentId)
+        return self.recv_getJobDetails()
+
+    def send_getJobDetails(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getJobDetails', TMessageType.CALL, self._seqid)
+        args = getJobDetails_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getJobDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getJobDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getJobDetails failed: unknown result")
+
+    def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        self.send_cloneExperiment(authzToken, existingExperimentID, newExperimentName, newExperimentProjectId)
+        return self.recv_cloneExperiment()
+
+    def send_cloneExperiment(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        self._oprot.writeMessageBegin('cloneExperiment', TMessageType.CALL, self._seqid)
+        args = cloneExperiment_args()
+        args.authzToken = authzToken
+        args.existingExperimentID = existingExperimentID
+        args.newExperimentName = newExperimentName
+        args.newExperimentProjectId = newExperimentProjectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_cloneExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = cloneExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        if result.pnfe is not None:
+            raise result.pnfe
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result")
+
+    def cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment by an admin user
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        self.send_cloneExperimentByAdmin(authzToken, existingExperimentID, newExperimentName, newExperimentProjectId)
+        return self.recv_cloneExperimentByAdmin()
+
+    def send_cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        self._oprot.writeMessageBegin('cloneExperimentByAdmin', TMessageType.CALL, self._seqid)
+        args = cloneExperimentByAdmin_args()
+        args.authzToken = authzToken
+        args.existingExperimentID = existingExperimentID
+        args.newExperimentName = newExperimentName
+        args.newExperimentProjectId = newExperimentProjectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_cloneExperimentByAdmin(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = cloneExperimentByAdmin_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        if result.pnfe is not None:
+            raise result.pnfe
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperimentByAdmin failed: unknown result")
+
+    def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Terminate a running Experiment.
+
+        @gatewayId
+           ID of the gateway which will terminate the running Experiment.
+
+        @param airavataExperimentId
+           The identifier of the experiment required termination. This ID is returned during the create experiment step.
+
+        @return status
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        self.send_terminateExperiment(authzToken, airavataExperimentId, gatewayId)
+        self.recv_terminateExperiment()
+
+    def send_terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        self._oprot.writeMessageBegin('terminateExperiment', TMessageType.CALL, self._seqid)
+        args = terminateExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_terminateExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = terminateExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+        """
+
+        Register a Application Module.
+
+        @gatewayId
+           ID of the gateway which is registering the new Application Module.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return appModuleId
+          Returns the server-side generated airavata appModule globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationModule
+        """
+        self.send_registerApplicationModule(authzToken, gatewayId, applicationModule)
+        return self.recv_registerApplicationModule()
+
+    def send_registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+        self._oprot.writeMessageBegin('registerApplicationModule', TMessageType.CALL, self._seqid)
+        args = registerApplicationModule_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.applicationModule = applicationModule
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerApplicationModule_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerApplicationModule failed: unknown result")
+
+    def getApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Fetch a Application Module.
+
+        @param appModuleId
+          The unique identifier of the application module required
+
+        @return applicationModule
+          Returns an Application Module Object.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        self.send_getApplicationModule(authzToken, appModuleId)
+        return self.recv_getApplicationModule()
+
+    def send_getApplicationModule(self, authzToken, appModuleId):
+        self._oprot.writeMessageBegin('getApplicationModule', TMessageType.CALL, self._seqid)
+        args = getApplicationModule_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationModule_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationModule failed: unknown result")
+
+    def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+        """
+
+        Update a Application Module.
+
+        @param appModuleId
+          The identifier for the requested application module to be updated.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+         - applicationModule
+        """
+        self.send_updateApplicationModule(authzToken, appModuleId, applicationModule)
+        return self.recv_updateApplicationModule()
+
+    def send_updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+        self._oprot.writeMessageBegin('updateApplicationModule', TMessageType.CALL, self._seqid)
+        args = updateApplicationModule_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.applicationModule = applicationModule
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateApplicationModule_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateApplicationModule failed: unknown result")
+
+    def getAllAppModules(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Module Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list
+           Returns the list of all Application Module Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllAppModules(authzToken, gatewayId)
+        return self.recv_getAllAppModules()
+
+    def send_getAllAppModules(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllAppModules', TMessageType.CALL, self._seqid)
+        args = getAllAppModules_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllAppModules(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllAppModules_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllAppModules failed: unknown result")
+
+    def deleteApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Delete an Application Module.
+
+        @param appModuleId
+          The identifier of the Application Module to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        self.send_deleteApplicationModule(authzToken, appModuleId)
+        return self.recv_deleteApplicationModule()
+
+    def send_deleteApplicationModule(self, authzToken, appModuleId):
+        self._oprot.writeMessageBegin('deleteApplicationModule', TMessageType.CALL, self._seqid)
+        args = deleteApplicationModule_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteApplicationModule_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteApplicationModule failed: unknown result")
+
+    def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+        """
+
+        Register an Application Deployment.
+
+        @param gatewayId
+           ID of the gateway which is registering the new Application Deployment.
+
+        @param applicationDeployment
+           Application Module Object created from the datamodel.
+
+        @return appDeploymentId
+          Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationDeployment
+        """
+        self.send_registerApplicationDeployment(authzToken, gatewayId, applicationDeployment)
+        return self.recv_registerApplicationDeployment()
+
+    def send_registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+        self._oprot.writeMessageBegin('registerApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = registerApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.applicationDeployment = applicationDeployment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerApplicationDeployment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerApplicationDeployment failed: unknown result")
+
+    def getApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Fetch a Application Deployment.
+
+        @param appDeploymentId
+          The identifier for the requested application module
+
+        @return applicationDeployment
+          Returns a application Deployment Object.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        self.send_getApplicationDeployment(authzToken, appDeploymentId)
+        return self.recv_getApplicationDeployment()
+
+    def send_getApplicationDeployment(self, authzToken, appDeploymentId):
+        self._oprot.writeMessageBegin('getApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = getApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.appDeploymentId = appDeploymentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationDeployment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationDeployment failed: unknown result")
+
+    def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+        """
+
+        Update an Application Deployment.
+
+        @param appDeploymentId
+          The identifier of the requested application deployment to be updated.
+
+        @param appDeployment
+           Application Deployment Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+         - applicationDeployment
+        """
+        self.send_updateApplicationDeployment(authzToken, appDeploymentId, applicationDeployment)
+        return self.recv_updateApplicationDeployment()
+
+    def send_updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+        self._oprot.writeMessageBegin('updateApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = updateApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.appDeploymentId = appDeploymentId
+        args.applicationDeployment = applicationDeployment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateApplicationDeployment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateApplicationDeployment failed: unknown result")
+
+    def deleteApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Delete an Application Deployment.
+
+        @param appDeploymentId
+          The unique identifier of application deployment to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        self.send_deleteApplicationDeployment(authzToken, appDeploymentId)
+        return self.recv_deleteApplicationDeployment()
+
+    def send_deleteApplicationDeployment(self, authzToken, appDeploymentId):
+        self._oprot.writeMessageBegin('deleteApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = deleteApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.appDeploymentId = appDeploymentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteApplicationDeployment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteApplicationDeployment failed: unknown result")
+
+    def getAllApplicationDeployments(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Deployment Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list<applicationDeployment.
+           Returns the list of all application Deployment Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllApplicationDeployments(authzToken, gatewayId)
+        return self.recv_getAllApplicationDeployments()
+
+    def send_getAllApplicationDeployments(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllApplicationDeployments', TMessageType.CALL, self._seqid)
+        args = getAllApplicationDeployments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllApplicationDeployments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllApplicationDeployments_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllApplicationDeployments failed: unknown result")
+
+    def getAppModuleDeployedResources(self, authzToken, appModuleId):
+        """
+        Fetch a list of Deployed Compute Hosts.
+
+        @param appModuleId
+          The identifier for the requested application module
+
+        @return list<string>
+          Returns a list of Deployed Resources.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        self.send_getAppModuleDeployedResources(authzToken, appModuleId)
+        return self.recv_getAppModuleDeployedResources()
+
+    def send_getAppModuleDeployedResources(self, authzToken, appModuleId):
+        self._oprot.writeMessageBegin('getAppModuleDeployedResources', TMessageType.CALL, self._seqid)
+        args = getAppModuleDeployedResources_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAppModuleDeployedResources(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAppModuleDeployedResources_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAppModuleDeployedResources failed: unknown result")
+
+    def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+        """
+
+        Register a Application Interface.
+
+        @param applicationInterface
+           Application Module Object created from the datamodel.
+
+        @return appInterfaceId
+          Returns a server-side generated airavata application interface globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationInterface
+        """
+        self.send_registerApplicationInterface(authzToken, gatewayId, applicationInterface)
+        return self.recv_registerApplicationInterface()
+
+    def send_registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+        self._oprot.writeMessageBegin('registerApplicationInterface', TMessageType.CALL, self._seqid)
+        args = registerApplicationInterface_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.applicationInterface = applicationInterface
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerApplicationInterface_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerApplicationInterface failed: unknown result")
+
+    def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+        """
+
+        Clone an Application Interface.
+
+        @gatewayId
+           The identifier for the gateway profile to be requested
+
+        @param existingAppInterfaceID
+           Identifier of the existing Application interface you wich to clone.
+
+        @param newApplicationName
+           Name for the new application interface.
+
+        @return appInterfaceId
+           Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
+        Parameters:
+         - authzToken
+         - existingAppInterfaceID
+         - newApplicationName
+         - gatewayId
+        """
+        self.send_cloneApplicationInterface(authzToken, existingAppInterfaceID, newApplicationName, gatewayId)
+        return self.recv_cloneApplicationInterface()
+
+    def send_cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+        self._oprot.writeMessageBegin('cloneApplicationInterface', TMessageType.CALL, self._seqid)
+        args = cloneApplicationInterface_args()
+        args.authzToken = authzToken
+        args.existingAppInterfaceID = existingAppInterfaceID
+        args.newApplicationName = newApplicationName
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_cloneApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = cloneApplicationInterface_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneApplicationInterface failed: unknown result")
+
+    def getApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Fetch an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return applicationInterface
+          Returns an application Interface Object.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getApplicationInterface(authzToken, appInterfaceId)
+        return self.recv_getApplicationInterface()
+
+    def send_getApplicationInterface(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getApplicationInterface', TMessageType.CALL, self._seqid)
+        args = getApplicationInterface_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationInterface_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationInterface failed: unknown result")
+
+    def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+        """
+
+        Update a Application Interface.
+
+        @param appInterfaceId
+          The identifier of the requested application deployment to be updated.
+
+        @param appInterface
+           Application Interface Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+         - applicationInterface
+        """
+        self.send_updateApplicationInterface(authzToken, appInterfaceId, applicationInterface)
+        return self.recv_updateApplicationInterface()
+
+    def send_updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+        self._oprot.writeMessageBegin('updateApplicationInterface', TMessageType.CALL, self._seqid)
+        args = updateApplicationInterface_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.applicationInterface = applicationInterface
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateApplicationInterface_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateApplicationInterface failed: unknown result")
+
+    def deleteApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Delete an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_deleteApplicationInterface(authzToken, appInterfaceId)
+        return self.recv_deleteApplicationInterface()
+
+    def send_deleteApplicationInterface(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('deleteApplicationInterface', TMessageType.CALL, self._seqid)
+        args = deleteApplicationInterface_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteApplicationInterface_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteApplicationInterface failed: unknown result")
+
+    def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+        """
+
+        Fetch name and ID of  Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces with corresponsing ID's
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllApplicationInterfaceNames(authzToken, gatewayId)
+        return self.recv_getAllApplicationInterfaceNames()
+
+    def send_getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllApplicationInterfaceNames', TMessageType.CALL, self._seqid)
+        args = getAllApplicationInterfaceNames_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllApplicationInterfaceNames(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllApplicationInterfaceNames_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllApplicationInterfaceNames failed: unknown result")
+
+    def getAllApplicationInterfaces(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllApplicationInterfaces(authzToken, gatewayId)
+        return self.recv_getAllApplicationInterfaces()
+
+    def send_getAllApplicationInterfaces(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllApplicationInterfaces', TMessageType.CALL, self._seqid)
+        args = getAllApplicationInterfaces_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllApplicationInterfaces(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllApplicationInterfaces_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllApplicationInterfaces failed: unknown result")
+
+    def getApplicationInputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch the list of Application Inputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need inputs to be fetched.
+
+        @return list<application_interface_model.InputDataObjectType>
+          Returns a list of application inputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getApplicationInputs(authzToken, appInterfaceId)
+        return self.recv_getApplicationInputs()
+
+    def send_getApplicationInputs(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getApplicationInputs', TMessageType.CALL, self._seqid)
+        args = getApplicationInputs_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationInputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationInputs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationInputs failed: unknown result")
+
+    def getApplicationOutputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch list of Application Outputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need outputs to be fetched.
+
+        @return list<application_interface_model.OutputDataObjectType>
+          Returns a list of application outputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getApplicationOutputs(authzToken, appInterfaceId)
+        return self.recv_getApplicationOutputs()
+
+    def send_getApplicationOutputs(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getApplicationOutputs', TMessageType.CALL, self._seqid)
+        args = getApplicationOutputs_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationOutputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationOutputs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationOutputs failed: unknown result")
+
+    def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+        """
+
+        Fetch a list of all deployed Compute Hosts for a given application interfaces.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return map<computeResourceId, computeResourceName>
+          A map of registered compute resource id's and their corresponding hostnames.
+          Deployments of each modules listed within the interfaces will be listed.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getAvailableAppInterfaceComputeResources(authzToken, appInterfaceId)
+        return self.recv_getAvailableAppInterfaceComputeResources()
+
+    def send_getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getAvailableAppInterfaceComputeResources', TMessageType.CALL, self._seqid)
+        args = getAvailableAppInterfaceComputeResources_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAvailableAppInterfaceComputeResources(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAvailableAppInterfaceComputeResources_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAvailableAppInterfaceComputeResources failed: unknown result")
+
+    def registerComputeResource(self, authzToken, computeResourceDescription):
+        """
+        Register a Compute Resource.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return computeResourceId
+          Returns a server-side generated airavata compute resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceDescription
+        """
+        self.send_registerComputeResource(authzToken, computeResourceDescription)
+        return self.recv_registerComputeResource()
+
+    def send_registerComputeResource(self, authzToken, computeResourceDescription):
+        self._oprot.writeMessageBegin('registerComputeResource', TMessageType.CALL, self._seqid)
+        args = registerComputeResource_args()
+        args.authzToken = authzToken
+        args.computeResourceDescription = computeResourceDescription
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerComputeResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerComputeResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerComputeResource failed: unknown result")
+
+    def getComputeResource(self, authzToken, computeResourceId):
+        """
+        Fetch the given Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource
+
+        @return computeResourceDescription
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+        """
+        self.send_getComputeResource(authzToken, computeResourceId)
+        return self.recv_getComputeResource()
+
+    def send_getComputeResource(self, authzToken, computeResourceId):
+        self._oprot.writeMessageBegin('getComputeResource', TMessageType.CALL, self._seqid)
+        args = getComputeResource_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getComputeResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getComputeResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getComputeResource failed: unknown result")
+
+    def getAllComputeResourceNames(self, authzToken):
+        """
+
+        Fetch all registered Compute Resources.
+
+        @return A map of registered compute resource id's and thier corresponding hostnames.
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getAllComputeResourceNames(authzToken)
+        return self.recv_getAllComputeResourceNames()
+
+    def send_getAllComputeResourceNames(self, authzToken):
+        self._oprot.writeMessageBegin('getAllComputeResourceNames', TMessageType.CALL, self._seqid)
+        args = getAllComputeResourceNames_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllComputeResourceNames(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllComputeResourceNames_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllComputeResourceNames failed: unknown result")
+
+    def updateComputeResource(self, authzToken, computeResourceId, computeResourceDescription):
+        """
+        Update a Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource to be updated.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - computeResourceDescription
+        """
+        self.send_updateComputeResource(authzToken, computeResourceId, computeResourceDescription)
+        return self.recv_updateComputeResource()
+
+    def send_updateComputeResource(self, authzToken, computeResourceId, computeResourceDescription):
+        self._oprot.writeMessageBegin('updateComputeResource', TMessageType.CALL, self._seqid)
+        args = updateComputeResource_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.computeResourceDescription = computeResourceDescription
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateComputeResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateComputeResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateComputeResource failed: unknown result")
+
+    def deleteComputeResource(self, authzToken, computeResourceId):
+        """
+        Delete a Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+        """
+        self.send_deleteComputeResource(authzToken, computeResourceId)
+        return self.recv_deleteComputeResource()
+
+    def send_deleteComputeResource(self, authzToken, computeResourceId):
+        self._oprot.writeMessageBegin('deleteComputeResource', TMessageType.CALL, self._seqid)
+        args = deleteComputeResource_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteComputeResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteComputeResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteComputeResource failed: unknown result")
+
+    def registerStorageResource(self, authzToken, storageResourceDescription):
+        """
+        Register a Storage Resource.
+
+        @param storageResourceDescription
+           Storge Resource Object created from the datamodel.
+
+        @return storageResourceId
+          Returns a server-side generated airavata storage resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceDescription
+        """
+        self.send_registerStorageResource(authzToken, storageResourceDescription)
+        return self.recv_registerStorageResource()
+
+    def send_registerStorageResource(self, authzToken, storageResourceDescription):
+        self._oprot.writeMessageBegin('registerStorageResource', TMessageType.CALL, self._seqid)
+        args = registerStorageResource_args()
+        args.authzToken = authzToken
+        args.storageResourceDescription = storageResourceDescription
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerStorageResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerStorageResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerStorageResource failed: unknown result")
+
+    def getStorageResource(self, authzToken, storageResourceId):
+        """
+        Fetch the given Storage Resource.
+
+        @param storageResourceId
+          The identifier for the requested storage resource
+
+        @return storageResourceDescription
+           Storage Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+        """
+        self.send_getStorageResource(authzToken, storageResourceId)
+        return self.recv_getStorageResource()
+
+    def send_getStorageResource(self, authzToken, storageResourceId):
+        self._oprot.writeMessageBegin('getStorageResource', TMessageType.CALL, self._seqid)
+        args = getStorageResource_args()
+        args.authzToken = authzToken
+        args.storageResourceId = storageResourceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getStorageResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getStorageResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getStorageResource failed: unknown result")
+
+    def getAllStorageResourceNames(self, authzToken):
+        """
+        Fetch all registered Storage Resources.
+
+        @return A map of registered compute resource id's and thier corresponding hostnames.
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getAllStorageResourceNames(authzToken)
+        return self.recv_getAllStorageResourceNames()
+
+    def send_getAllStorageResourceNames(self, authzToken):
+        self._oprot.writeMessageBegin('getAllStorageResourceNames', TMessageType.CALL, self._seqid)
+        args = getAllStorageResourceNames_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllStorageResourceNames(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllStorageResourceNames_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllStorageResourceNames failed: unknown result")
+
+    def updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
+        """
+        Update a Storage Resource.
+
+        @param storageResourceId
+          The identifier for the requested compute resource to be updated.
+
+        @param storageResourceDescription
+           Storage Resource Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+         - storageResourceDescription
+        """
+        self.send_updateStorageResource(authzToken, storageResourceId, storageResourceDescription)
+        return self.recv_updateStorageResource()
+
+    def send_updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
+        self._oprot.writeMessageBegin('updateStorageResource', TMessageType.CALL, self._seqid)
+        args = updateStorageResource_args()
+        args.authzToken = authzToken
+        args.storageResourceId = storageResourceId
+        args.storageResourceDescription = storageResourceDescription
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateStorageResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateStorageResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateStorageResource failed: unknown result")
+
+    def deleteStorageResource(self, authzToken, storageResourceId):
+        """
+        Delete a Storage Resource.
+
+        @param storageResourceId
+          The identifier of the requested compute resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+        """
+        self.send_deleteStorageResource(authzToken, storageResourceId)
+        return self.recv_deleteStorageResource()
+
+    def send_deleteStorageResource(self, authzToken, storageResourceId):
+        self._oprot.writeMessageBegin('deleteStorageResource', TMessageType.CALL, self._seqid)
+        args = deleteStorageResource_args()
+        args.authzToken = authzToken
+        args.storageResourceId = storageResourceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteStorageResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteStorageResource_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteStorageResource failed: unknown result")
+
+    def addLocalSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, localSubmission):
+        """
+        Add a Local Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param localSubmission
+          The LOCALSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - localSubmission
+        """
+        self.send_addLocalSubmissionDetails(authzToken, computeResourceId, priorityOrder, localSubmission)
+        return self.recv_addLocalSubmissionDetails()
+
+    def send_addLocalSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, localSubmission):
+        self._oprot.writeMessageBegin('addLocalSubmissionDetails', TMessageType.CALL, self._seqid)
+        args = addLocalSubmissionDetails_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.priorityOrder = priorityOrder
+        args.localSubmission = localSubmission
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addLocalSubmissionDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addLocalSubmissionDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "addLocalSubmissionDetails failed: unknown result")
+
+    def updateLocalSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, localSubmission):
+        """
+        Update the given Local Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param localSubmission
+          The LOCALSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - localSubmission
+        """
+        self.send_updateLocalSubmissionDetails(authzToken, jobSubmissionInterfaceId, localSubmission)
+        return self.recv_updateLocalSubmissionDetails()
+
+    def send_updateLocalSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, localSubmission):
+        self._oprot.writeMessageBegin('updateLocalSubmissionDetails', TMessageType.CALL, self._seqid)
+        args = updateLocalSubmissionDetails_args()
+        args.authzToken = authzToken
+        args.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+        args.localSubmission = localSubmission
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateLocalSubmissionDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateLocalSubmissionDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "updateLocalSubmissionDetails failed: unknown result")
+
+    def getLocalJobSubmission(self, authzToken, jobSubmissionId):
+        """
+        This method returns localJobSubmission object
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be retrieved.
+         @return LOCALSubmission instance
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        self.send_getLocalJobSubmission(authzToken, jobSubmissionId)
+        return self.recv_getLocalJobSubmission()
+
+    def send_getLocalJobSubmission(self, authzToken, jobSubmissionId):
+        self._oprot.writeMessageBegin('getLocalJobSubmission', TMessageType.CALL, self._seqid)
+        args = getLocalJobSubmission_args()
+        args.authzToken = authzToken
+        args.jobSubmissionId = jobSubmissionId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getLocalJobSubmission(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getLocalJobSubmission_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getLocalJobSubmission failed: unknown result")
+
+    def addSSHJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        """
+        Add a SSH Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - sshJobSubmission
+        """
+        self.send_addSSHJobSubmissionDetails(authzToken, computeResourceId, priorityOrder, sshJobSubmission)
+        return self.recv_addSSHJobSubmissionDetails()
+
+    def send_addSSHJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        self._oprot.writeMessageBegin('addSSHJobSubmissionDetails', TMessageType.CALL, self._seqid)
+        args = addSSHJobSubmissionDetails_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.priorityOrder = priorityOrder
+        args.sshJobSubmission = sshJobSubmission
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addSSHJobSubmissionDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addSSHJobSubmissionDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "addSSHJobSubmissionDetails failed: unknown result")
+
+    def addSSHForkJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        """
+        Add a SSH_FORK Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - sshJobSubmission
+        """
+        self.send_addSSHForkJobSubmissionDetails(authzToken, computeResourceId, priorityOrder, sshJobSubmission)
+        return self.recv_addSSHForkJobSubmissionDetails()
+
+    def send_addSSHForkJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        self._oprot.writeMessageBegin('addSSHForkJobSubmissionDetails', TMessageType.CALL, self._seqid)
+        args = addSSHForkJobSubmissionDetails_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.priorityOrder = priorityOrder
+        args.sshJobSubmission = sshJobSubmission
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addSSHForkJobSubmissionDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addSSHForkJobSubmissionDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "addSSHForkJobSubmissionDetails failed: unknown result")
+
+    def getSSHJobSubmission(self, authzToken, jobSubmissionId):
+        """
+        This method returns SSHJobSubmission object
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be retrieved.
+         @return SSHJobSubmission instance
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        self.send_getSSHJobSubmission(authzToken, jobSubmissionId)
+        return self.recv_getSSHJobSubmission()
+
+    def send_getSSHJobSubmission(self, authzToken, jobSubmissionId):
+        self._oprot.writeMessageBegin('getSSHJobSubmission', TMessageType.CALL, self._seqid)
+        args = getSSHJobSubmission_args()
+        args.authzToken = authzToken
+        args.jobSubmissionId = jobSubmissionId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getSSHJobSubmission(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getSSHJobSubmission_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getSSHJobSubmission failed: unknown result")
+
+    def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
+        """
+
+        Add a UNICORE Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param unicoreJobSubmission
+          The UnicoreJobSubmission object to be added to the resource.
+
+        @return status
+         Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - unicoreJobSubmission
+        """
+        self.send_addUNICOREJobSubmissionDetails(authzToken, computeResourceId, priorityOrder, unicoreJobSubmission)
+        return self.recv_addUNICOREJobSubmissionDetails()
+
+    def send_addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
+        self._oprot.writeMessageBegin('addUNICOREJobSubmissionDetails', TMessageType.CALL, self._seqid)
+        args = addUNICOREJobSubmissionDetails_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.priorityOrder = priorityOrder
+        args.unicoreJobSubmission = unicoreJobSubmission
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addUNICOREJobSubmissionDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addUNICOREJobSubmissionDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "addUNICOREJobSubmissionDetails failed: unknown result")
+
+    def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
+        """
+          *
+          * This method returns UnicoreJobSubmission object
+          *
+          * @param jobSubmissionInterfaceId
+          *   The identifier of the JobSubmission Interface to be retrieved.
+          *  @return UnicoreJobSubmission instance
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        self.send_getUnicoreJobSubmission(authzToken, jobSubmissionId)
+        return self.recv_getUnicoreJobSubmission()
+
+    def send_getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
+        self._oprot.writeMessageBegin('getUnicoreJobSubmission', TMessageType.CALL, self._seqid)
+        args = getUnicoreJobSubmission_args()
+        args.authzToken = authzToken
+        args.jobSubmissionId = jobSubmissionId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getUnicoreJobSubmission(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getUnicoreJobSubmission_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getUnicoreJobSubmission failed: unknown result")
+
+    def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
+        """
+           *
+           * Add a Cloud Job Submission details to a compute resource
+           *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+           *
+           * @param computeResourceId
+           *   The identifier of the compute resource to which JobSubmission protocol to be added
+           *
+           * @param priorityOrder
+           *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+           *
+           * @param sshJobSubmission
+           *   The SSHJobSubmission object to be added to the resource.
+           *
+           * @return status
+           *   Returns the unique job submission id.
+           *
+        *
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - cloudSubmission
+        """
+        self.send_addCloudJobSubmissionDetails(authzToken, computeResourceId, priorityOrder, cloudSubmission)
+        return self.recv_addCloudJobSubmissionDetails()
+
+    def send_addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
+        self._oprot.writeMessageBegin('addCloudJobSubmissionDetails', TMessageType.CALL, self._seqid)
+        args = addCloudJobSubmissionDetails_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.priorityOrder = priorityOrder
+        args.cloudSubmission = cloudSubmission
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addCloudJobSubmissionDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addCloudJobSubmissionDetails_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.ire is not None:
+            raise result.ire
+        if result.ace is not None:
+            raise result.ace
+        if result.ase is not None:
+            raise result.ase
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "addCloudJobSubmissionDetails failed: unknown result")
+
+    def getCloudJobSubmission(self, authzToken, jobSubmissionId):
+        """
+           *
+           * This method returns cloudJobSubmission object
+           * @param jobSubmissionInterfaceI
+               *   The identifier of the JobSubmission Interface to be retrieved.
+           *  @return CloudJobSubmission instance
+        *
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        self.send_getCloudJobSubmission(authzToken, jobSubmissionId)
+        return self.recv_getCloudJobSubmission()
+
+    def send_getCloudJobSubmission(self, authzToken, jobSubmissionId):
+        self._oprot.writeMessageBegin('getCloudJobSubmission', TMessageType.CALL, self._seqid)
+        args = getCloudJobSubmission_args()
+        args.authzToken = authzToken
+        args.jobSubmissionId = jobSubmissionId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getCloudJobSubmission(self):
... 58639 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 04/12: API class that contains the function to execute Airavata experiment

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 1be5f9a9debba07a0c44b5e4d8fd4d8090108dec
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:55:51 2017 -0500

    API class that contains the function to execute Airavata experiment
---
 cwl-workflows/api.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/cwl-workflows/api.py b/cwl-workflows/api.py
new file mode 100644
index 0000000..887e2c6
--- /dev/null
+++ b/cwl-workflows/api.py
@@ -0,0 +1,89 @@
+# API for Jupyter Notebook client
+
+from apache.airavata.model.workspace.ttypes import *
+from apache.airavata.model.experiment.ttypes import *
+
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TSSLSocket
+from thrift.transport import TTransport
+
+from apache.airavata.api import Airavata
+from apache.airavata.model.security.ttypes import AuthzToken
+
+
+def get_transport(hostname, port):
+    """Create a socket to the Airavata Server
+
+    :param hostname: Hostname of Airavata server
+    :param port:     Port of Airavata server
+    :return: Transport object
+    """
+    # TODO: validate server certificate
+    transport = TSSLSocket.TSSLSocket(hostname, port, validate=False)
+    # Use Buffered Protocol to speedup over raw sockets
+    transport = TTransport.TBufferedTransport(transport)
+    return transport
+
+
+def get_airavata_client(transport):
+    """Creates and returns airavata client object
+
+    :param transport: Transport object
+    :return: AiravataClient object
+    """
+    # Airavata currently uses Binary Protocol
+    protocol = TBinaryProtocol.TBinaryProtocol(transport)
+
+    # Create a Airavata client to use the protocol encoder
+    airavataClient = Airavata.Client(protocol)
+    return airavataClient
+
+
+def get_authz_token(token, gateway_id, user_name):
+    """Creates and returns a authorization token
+
+    :param token:     Token string
+    :param gateway_id: Gateway ID
+    :param user_name:  User name of the user
+    :return: AuthzToken object
+    """
+    return AuthzToken(accessToken=token, claimsMap={'gatewayID': gateway_id, 'userName': user_name})
+
+
+def launch_experiment(hostname, port, user_name, token_string, experiment_id, gateway_id):
+    """Launches an experiment identified by an experiment id
+
+    :param hostname:      Hostname of the host where experiment is to be executed
+    :param port:          Port of the host where experiment is to be executed
+    :param user_name:     Airavata user
+    :param token_string:  Access token passed as a string
+    :param experiment_id: ID of the experiment that needs to be executed
+    :param gateway_id:    ID of the gateway where the experiment needs to be executed
+    """
+    transport = get_transport(hostname, port)
+    transport.open()
+    airavata_client = get_airavata_client(transport)
+    auth_token = get_authz_token(token_string, gateway_id, user_name)
+    airavata_client.launchExperiment(auth_token, experiment_id, gateway_id)
+    transport.close()
+
+
+def create_experiment(hostname, port, token_string, gateway_id, project_id, user_name, experiment_name):
+    """Creates an experiment in Airavata
+
+    :param hostname:         Host name of the Airavata server
+    :param port:             Port number of the Airavata server
+    :param token_string:     Token string
+    :param gateway_id:       Gateway ID
+    :param project_id:       Project ID
+    :param user_name:        Name of the user
+    :param experiment_name:  Name of the experiment
+    :return: Experiment ID
+    """
+    transport = get_transport(hostname, port)
+    transport.open()
+    airavata_client = get_airavata_client(transport)
+    auth_token = get_authz_token(token_string, gateway_id, user_name)
+    experiment_model = ExperimentModel(projectId=project_id, gatewayId=gateway_id,
+                                       userName=user_name, experimentName=experiment_name)
+    return airavata_client.createExperiment(auth_token, gateway_id, experiment_model)

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 05/12: CWL related files

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit feefae921c17a1c5b9ab68c015a421e95ce5ca9d
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:56:16 2017 -0500

    CWL related files
---
 cwl-workflows/arguments.yml     |  3 +++
 cwl-workflows/script_runner.cwl | 15 +++++++++++++++
 cwl-workflows/workflow-tool.cwl | 25 +++++++++++++++++++++++++
 3 files changed, 43 insertions(+)

diff --git a/cwl-workflows/arguments.yml b/cwl-workflows/arguments.yml
new file mode 100644
index 0000000..6074f6d
--- /dev/null
+++ b/cwl-workflows/arguments.yml
@@ -0,0 +1,3 @@
+test_file: test.py
+arg_file1: airavata-client1.ini
+arg_file2: airavata-client2.ini
\ No newline at end of file
diff --git a/cwl-workflows/script_runner.cwl b/cwl-workflows/script_runner.cwl
new file mode 100644
index 0000000..1081a0f
--- /dev/null
+++ b/cwl-workflows/script_runner.cwl
@@ -0,0 +1,15 @@
+#!/usr/bin/env cwl-runner
+
+cwlVersion: v1.0
+class: CommandLineTool
+baseCommand: python3.6
+inputs:
+  test_script:
+    type: string
+    inputBinding:
+      position: 1
+  arg_file:
+    type: string
+    inputBinding:
+      position: 2
+outputs: []
\ No newline at end of file
diff --git a/cwl-workflows/workflow-tool.cwl b/cwl-workflows/workflow-tool.cwl
new file mode 100644
index 0000000..b3f10f8
--- /dev/null
+++ b/cwl-workflows/workflow-tool.cwl
@@ -0,0 +1,25 @@
+#!/usr/bin/env cwl-runner
+
+cwlVersion: v1.0
+class: Workflow
+inputs:
+  test_file: string
+  arg_file1: string
+  arg_file2: string
+
+outputs: []
+
+steps:
+  job1:
+    run: script_runner.cwl
+    in:
+      test_script: test_file
+      arg_file: arg_file1
+    out: []
+
+  job2:
+    run: script_runner.cwl
+    in:
+      test_script: test_file
+      arg_file: arg_file2
+    out: []
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 08/12: Final report

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 630b627500e3837ca878f3651918585d00963d78
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:56:50 2017 -0500

    Final report
---
 cwl-workflows/FinalReport.pdf | Bin 0 -> 729193 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/cwl-workflows/FinalReport.pdf b/cwl-workflows/FinalReport.pdf
new file mode 100644
index 0000000..a078e04
Binary files /dev/null and b/cwl-workflows/FinalReport.pdf differ

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 02/12: Template file

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 548fa2d4c4fdf07dfdea3789a9b7913f3ab82795
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:54:55 2017 -0500

    Template file
---
 cwl-workflows/airavata-client.ini.template | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/cwl-workflows/airavata-client.ini.template b/cwl-workflows/airavata-client.ini.template
new file mode 100644
index 0000000..a32ea4a
--- /dev/null
+++ b/cwl-workflows/airavata-client.ini.template
@@ -0,0 +1,10 @@
+[credentials]
+Username =
+AccessToken =
+
+[config]
+GatewayID =
+HostName =
+Port =
+ProjectID =
+ExperimentName =
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 06/12: Readme

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 05da1dc2c13058b7383f97635676eb0c0f23984c
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:56:28 2017 -0500

    Readme
---
 cwl-workflows/README.md | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/cwl-workflows/README.md b/cwl-workflows/README.md
new file mode 100644
index 0000000..1845f7c
--- /dev/null
+++ b/cwl-workflows/README.md
@@ -0,0 +1,20 @@
+
+# Running
+1) Create an account on https://testdrive.airavata.org/
+2) Get dev admin access on this account
+3) Run the following command with your credentials to get the access token:
+    ```
+    curl --data "username=myusername&password=mypassword" https://dev.testdrive.airavata.org/api-login
+    ```
+4) Copy airavata-client.ini.template to airavata-client.ini and fill your username and accesstoken in it
+5) Install Python 3
+6) create a virtual environment and activate it
+   ```
+   python3 -m venv ENV
+   . ENV/bin/activate
+   ```
+7) Install dependencies
+    ```
+    pip install -r requirements.txt
+    ```
+8: Run the test program: `python test.py`

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.

[airavata-sandbox] 07/12: Testing files

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 79bdef76b3e0b00827110493a3e139bb47b71eb0
Author: Saurabh Agrawal <sa...@gmail.com>
AuthorDate: Sat Dec 16 00:56:42 2017 -0500

    Testing files
---
 cwl-workflows/requirements.txt |  3 +++
 cwl-workflows/test.py          | 25 +++++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/cwl-workflows/requirements.txt b/cwl-workflows/requirements.txt
new file mode 100644
index 0000000..8501fa8
--- /dev/null
+++ b/cwl-workflows/requirements.txt
@@ -0,0 +1,3 @@
+requests==2.13.0
+six==1.10.0
+thrift==0.10.0
diff --git a/cwl-workflows/test.py b/cwl-workflows/test.py
new file mode 100644
index 0000000..34df387
--- /dev/null
+++ b/cwl-workflows/test.py
@@ -0,0 +1,25 @@
+# Test script for api.py
+
+import api
+import configparser
+import sys
+
+
+def main():
+    """Main function
+    """
+    config_file = sys.argv[1]
+    config = configparser.ConfigParser()
+    config.read(config_file)
+    username = config['credentials']['Username']
+    access_token = config['credentials']['AccessToken']
+    gateway_id = config['config']['GatewayID']
+    hostname = config['config']['HostName']
+    port = config['config']['Port']
+    experiment_id = config['config']['ExperimentID']
+
+    api.launch_experiment(hostname, port, username, access_token, experiment_id, gateway_id)
+
+
+if __name__ == '__main__':
+    main()

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.