You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ya...@apache.org on 2026/04/01 19:04:53 UTC

(airavata) 20/49: feat: rewrite Python SDK to use gRPC instead of Thrift

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

yasith pushed a commit to branch feat/grpc-armeria-migration
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 3ba9ab6aba5543205bd95afd432f3ba655d02d1a
Author: yasithdev <ya...@icloud.com>
AuthorDate: Tue Mar 31 12:48:50 2026 -0400

    feat: rewrite Python SDK to use gRPC instead of Thrift
    
    - Replace ThriftClient transport with GrpcChannel and gRPC stub factories
    - Rewrite APIServerClient as unified facade over 13 gRPC service stubs
    - Rewrite CredentialStoreClient, SharingRegistryClient, TenantProfileClient
      to use corresponding gRPC service stubs
    - Stub out GroupManagerClient, IAMAdminClient, UserProfileClient with
      NotImplementedError (no gRPC equivalents; use Keycloak admin API)
    - Replace Thrift AuthzToken with plain Python dataclass in keycloak_token_fetcher
    - Update APIServerClientUtil and DataModelCreationUtil for new gRPC API
    - Update settings: remove THRIFT_* settings, change default port to 9090
    - Update pyproject.toml: replace thrift deps with grpcio/protobuf, bump to v3.0.0
    - Delete airavata/ directory (old Thrift-generated code)
    - Auth now passed via constructor (access_token, claims) instead of per-call
---
 airavata-python-sdk/airavata/api/Airavata-remote   |  1482 -
 airavata-python-sdk/airavata/api/Airavata.py       | 61621 -------------------
 airavata-python-sdk/airavata/api/__init__.py       |     1 -
 airavata-python-sdk/airavata/api/constants.py      |    19 -
 .../credential/store/CredentialStoreService-remote |   208 -
 .../api/credential/store/CredentialStoreService.py |  3056 -
 .../airavata/api/credential/store/__init__.py      |     1 -
 .../airavata/api/credential/store/constants.py     |    19 -
 .../api/credential/store/error/__init__.py         |     1 -
 .../api/credential/store/error/constants.py        |    18 -
 .../airavata/api/credential/store/error/ttypes.py  |   104 -
 .../airavata/api/credential/store/ttypes.py        |    25 -
 airavata-python-sdk/airavata/api/error/__init__.py |     1 -
 .../airavata/api/error/constants.py                |    18 -
 airavata-python-sdk/airavata/api/error/ttypes.py   |  1117 -
 .../api/sharing/SharingRegistryService-remote      |   516 -
 .../airavata/api/sharing/SharingRegistryService.py | 13851 -----
 .../airavata/api/sharing/__init__.py               |     1 -
 .../airavata/api/sharing/constants.py              |    19 -
 airavata-python-sdk/airavata/api/sharing/ttypes.py |    24 -
 airavata-python-sdk/airavata/api/ttypes.py         |    45 -
 .../airavata/api/workflow/Workflow-remote          |   166 -
 .../airavata/api/workflow/Workflow.py              |  1738 -
 .../airavata/api/workflow/__init__.py              |     1 -
 .../airavata/api/workflow/constants.py             |    19 -
 .../airavata/api/workflow/ttypes.py                |    30 -
 .../airavata/base/api/BaseAPI-remote               |   117 -
 airavata-python-sdk/airavata/base/api/BaseAPI.py   |   224 -
 airavata-python-sdk/airavata/base/api/__init__.py  |     1 -
 airavata-python-sdk/airavata/base/api/constants.py |    18 -
 airavata-python-sdk/airavata/base/api/ttypes.py    |    22 -
 .../appcatalog/accountprovisioning/__init__.py     |     1 -
 .../appcatalog/accountprovisioning/constants.py    |    18 -
 .../model/appcatalog/accountprovisioning/ttypes.py |   258 -
 .../model/appcatalog/appdeployment/__init__.py     |     1 -
 .../model/appcatalog/appdeployment/constants.py    |    18 -
 .../model/appcatalog/appdeployment/ttypes.py       |   683 -
 .../model/appcatalog/appinterface/__init__.py      |     1 -
 .../model/appcatalog/appinterface/constants.py     |    18 -
 .../model/appcatalog/appinterface/ttypes.py        |   226 -
 .../model/appcatalog/computeresource/__init__.py   |     1 -
 .../model/appcatalog/computeresource/constants.py  |    18 -
 .../model/appcatalog/computeresource/ttypes.py     |  1688 -
 .../model/appcatalog/gatewaygroups/__init__.py     |     1 -
 .../model/appcatalog/gatewaygroups/constants.py    |    18 -
 .../model/appcatalog/gatewaygroups/ttypes.py       |   130 -
 .../model/appcatalog/gatewayprofile/__init__.py    |     1 -
 .../model/appcatalog/gatewayprofile/constants.py   |    18 -
 .../model/appcatalog/gatewayprofile/ttypes.py      |   599 -
 .../appcatalog/groupresourceprofile/__init__.py    |     1 -
 .../appcatalog/groupresourceprofile/constants.py   |    18 -
 .../appcatalog/groupresourceprofile/ttypes.py      |  1260 -
 .../model/appcatalog/parallelism/__init__.py       |     1 -
 .../model/appcatalog/parallelism/constants.py      |    18 -
 .../model/appcatalog/parallelism/ttypes.py         |    49 -
 .../airavata/model/appcatalog/parser/__init__.py   |     1 -
 .../airavata/model/appcatalog/parser/constants.py  |    18 -
 .../airavata/model/appcatalog/parser/ttypes.py     |   975 -
 .../model/appcatalog/storageresource/__init__.py   |     1 -
 .../model/appcatalog/storageresource/constants.py  |    18 -
 .../model/appcatalog/storageresource/ttypes.py     |   464 -
 .../appcatalog/userresourceprofile/__init__.py     |     1 -
 .../appcatalog/userresourceprofile/constants.py    |    18 -
 .../model/appcatalog/userresourceprofile/ttypes.py |   518 -
 .../airavata/model/application/io/__init__.py      |     1 -
 .../airavata/model/application/io/constants.py     |    18 -
 .../airavata/model/application/io/ttypes.py        |   524 -
 .../airavata/model/commons/__init__.py             |     1 -
 .../airavata/model/commons/constants.py            |    19 -
 .../airavata/model/commons/ttypes.py               |   329 -
 airavata-python-sdk/airavata/model/constants.py    |    18 -
 .../airavata/model/credential/store/__init__.py    |     1 -
 .../airavata/model/credential/store/constants.py   |    19 -
 .../airavata/model/credential/store/ttypes.py      |   729 -
 .../airavata/model/data/movement/__init__.py       |     1 -
 .../airavata/model/data/movement/constants.py      |    18 -
 .../airavata/model/data/movement/ttypes.py         |   642 -
 .../airavata/model/data/replica/__init__.py        |     1 -
 .../airavata/model/data/replica/constants.py       |    18 -
 .../airavata/model/data/replica/ttypes.py          |   480 -
 .../airavata/model/dbevent/__init__.py             |     1 -
 .../airavata/model/dbevent/constants.py            |    18 -
 .../airavata/model/dbevent/ttypes.py               |   465 -
 .../airavata/model/experiment/__init__.py          |     1 -
 .../airavata/model/experiment/constants.py         |    18 -
 .../airavata/model/experiment/ttypes.py            |  1140 -
 .../airavata/model/group/__init__.py               |     1 -
 .../airavata/model/group/constants.py              |    18 -
 airavata-python-sdk/airavata/model/group/ttypes.py |   181 -
 airavata-python-sdk/airavata/model/job/__init__.py |     1 -
 .../airavata/model/job/constants.py                |    18 -
 airavata-python-sdk/airavata/model/job/ttypes.py   |   236 -
 .../airavata/model/messaging/event/__init__.py     |     1 -
 .../airavata/model/messaging/event/constants.py    |    18 -
 .../airavata/model/messaging/event/ttypes.py       |  1602 -
 .../airavata/model/process/__init__.py             |     1 -
 .../airavata/model/process/constants.py            |    18 -
 .../airavata/model/process/ttypes.py               |   582 -
 .../airavata/model/scheduling/__init__.py          |     1 -
 .../airavata/model/scheduling/constants.py         |    18 -
 .../airavata/model/scheduling/ttypes.py            |   234 -
 .../airavata/model/security/__init__.py            |     1 -
 .../airavata/model/security/constants.py           |    18 -
 .../airavata/model/security/ttypes.py              |   110 -
 .../airavata/model/sharing/__init__.py             |     1 -
 .../airavata/model/sharing/constants.py            |    19 -
 .../airavata/model/sharing/ttypes.py               |  1774 -
 .../airavata/model/status/__init__.py              |     1 -
 .../airavata/model/status/constants.py             |    18 -
 .../airavata/model/status/ttypes.py                |   674 -
 .../airavata/model/task/__init__.py                |     1 -
 .../airavata/model/task/constants.py               |    18 -
 airavata-python-sdk/airavata/model/task/ttypes.py  |   736 -
 .../airavata/model/tenant/__init__.py              |     1 -
 .../airavata/model/tenant/constants.py             |    18 -
 .../airavata/model/tenant/ttypes.py                |   458 -
 airavata-python-sdk/airavata/model/ttypes.py       |   773 -
 .../airavata/model/user/__init__.py                |     1 -
 .../airavata/model/user/constants.py               |    19 -
 airavata-python-sdk/airavata/model/user/ttypes.py  |  1101 -
 .../airavata/model/workflow/__init__.py            |     1 -
 .../airavata/model/workflow/constants.py           |    18 -
 .../airavata/model/workflow/ttypes.py              |  1367 -
 .../airavata/model/workspace/__init__.py           |     1 -
 .../airavata/model/workspace/constants.py          |    18 -
 .../airavata/model/workspace/ttypes.py             |   978 -
 .../groupmanager/cpi/GroupManagerService-remote    |   208 -
 .../groupmanager/cpi/GroupManagerService.py        |  3417 -
 .../service/profile/groupmanager/cpi/__init__.py   |     1 -
 .../service/profile/groupmanager/cpi/constants.py  |    20 -
 .../profile/groupmanager/cpi/error/__init__.py     |     1 -
 .../profile/groupmanager/cpi/error/constants.py    |    18 -
 .../profile/groupmanager/cpi/error/ttypes.py       |   104 -
 .../service/profile/groupmanager/cpi/ttypes.py     |    27 -
 .../iam/admin/services/cpi/IamAdminServices-remote |   222 -
 .../iam/admin/services/cpi/IamAdminServices.py     |  3921 --
 .../profile/iam/admin/services/cpi/__init__.py     |     1 -
 .../profile/iam/admin/services/cpi/constants.py    |    20 -
 .../iam/admin/services/cpi/error/__init__.py       |     1 -
 .../iam/admin/services/cpi/error/constants.py      |    18 -
 .../profile/iam/admin/services/cpi/error/ttypes.py |   104 -
 .../profile/iam/admin/services/cpi/ttypes.py       |    29 -
 .../profile/tenant/cpi/TenantProfileService-remote |   166 -
 .../profile/tenant/cpi/TenantProfileService.py     |  1800 -
 .../service/profile/tenant/cpi/__init__.py         |     1 -
 .../service/profile/tenant/cpi/constants.py        |    20 -
 .../service/profile/tenant/cpi/error/__init__.py   |     1 -
 .../service/profile/tenant/cpi/error/constants.py  |    18 -
 .../service/profile/tenant/cpi/error/ttypes.py     |   104 -
 .../airavata/service/profile/tenant/cpi/ttypes.py  |    27 -
 .../profile/user/cpi/UserProfileService-remote     |   166 -
 .../service/profile/user/cpi/UserProfileService.py |  1867 -
 .../airavata/service/profile/user/cpi/__init__.py  |     1 -
 .../airavata/service/profile/user/cpi/constants.py |    20 -
 .../service/profile/user/cpi/error/__init__.py     |     1 -
 .../service/profile/user/cpi/error/constants.py    |    18 -
 .../service/profile/user/cpi/error/ttypes.py       |   104 -
 .../airavata/service/profile/user/cpi/ttypes.py    |    27 -
 airavata-python-sdk/airavata_sdk/__init__.py       |    26 +-
 .../airavata_sdk/clients/api_server_client.py      |  1646 +-
 .../clients/credential_store_client.py             |    90 +-
 .../airavata_sdk/clients/group_manager_client.py   |    94 +-
 .../airavata_sdk/clients/iam_admin_client.py       |    99 +-
 .../airavata_sdk/clients/keycloak_token_fetcher.py |    43 +-
 .../clients/sharing_registry_client.py             |   350 +-
 .../airavata_sdk/clients/tenant_profile_client.py  |   101 +-
 .../airavata_sdk/clients/user_profile_client.py    |    71 +-
 .../clients/utils/api_server_client_util.py        |    51 +-
 .../clients/utils/data_model_creation_util.py      |   135 +-
 .../airavata_sdk/generated/__init__.py             |    13 +
 .../generated/org}/__init__.py                     |     0
 .../generated/org/apache}/__init__.py              |     0
 .../generated/org/apache/airavata}/__init__.py     |     0
 .../org/apache}/airavata/model/__init__.py         |     0
 .../apache}/airavata/model/appcatalog/__init__.py  |     0
 .../appcatalog/accountprovisioning}/__init__.py    |     0
 .../account_provisioning_pb2.py                    |    41 +
 .../account_provisioning_pb2.pyi                   |    41 +
 .../account_provisioning_pb2_grpc.py               |    24 +
 .../model/appcatalog/appdeployment}/__init__.py    |     0
 .../appcatalog/appdeployment/app_deployment_pb2.py |    44 +
 .../appdeployment/app_deployment_pb2.pyi           |    76 +
 .../appdeployment/app_deployment_pb2_grpc.py       |    24 +
 .../model/appcatalog/appinterface}/__init__.py     |     0
 .../appcatalog/appinterface/app_interface_pb2.py   |    38 +
 .../appcatalog/appinterface/app_interface_pb2.pyi  |    30 +
 .../appinterface/app_interface_pb2_grpc.py         |    24 +
 .../model/appcatalog/computeresource}/__init__.py  |     0
 .../computeresource/compute_resource_pb2.py        |    81 +
 .../computeresource/compute_resource_pb2.pyi       |   308 +
 .../computeresource/compute_resource_pb2_grpc.py   |    24 +
 .../model/appcatalog/gatewaygroups}/__init__.py    |     0
 .../appcatalog/gatewaygroups/gateway_groups_pb2.py |    37 +
 .../gatewaygroups/gateway_groups_pb2.pyi           |    17 +
 .../gatewaygroups/gateway_groups_pb2_grpc.py       |    24 +
 .../model/appcatalog/gatewayprofile}/__init__.py   |     0
 .../gatewayprofile/gateway_profile_pb2.py          |    47 +
 .../gatewayprofile/gateway_profile_pb2.pyi         |    82 +
 .../gatewayprofile/gateway_profile_pb2_grpc.py     |    24 +
 .../appcatalog/groupresourceprofile}/__init__.py   |     0
 .../group_resource_profile_pb2.py                  |    57 +
 .../group_resource_profile_pb2.pyi                 |   159 +
 .../group_resource_profile_pb2_grpc.py             |    24 +
 .../airavata/model/appcatalog/parser}/__init__.py  |     0
 .../airavata/model/appcatalog/parser/parser_pb2.py |    51 +
 .../model/appcatalog/parser/parser_pb2.pyi         |   121 +
 .../model/appcatalog/parser/parser_pb2_grpc.py     |    24 +
 .../model/appcatalog/storageresource}/__init__.py  |     0
 .../storageresource/storage_resource_pb2.py        |    42 +
 .../storageresource/storage_resource_pb2.pyi       |    56 +
 .../storageresource/storage_resource_pb2_grpc.py   |    24 +
 .../appcatalog/userresourceprofile}/__init__.py    |     0
 .../user_resource_profile_pb2.py                   |    41 +
 .../user_resource_profile_pb2.pyi                  |    63 +
 .../user_resource_profile_pb2_grpc.py              |    24 +
 .../apache/airavata/model/application}/__init__.py |     0
 .../airavata/model/application/io}/__init__.py     |     0
 .../model/application/io/application_io_pb2.py     |    41 +
 .../model/application/io/application_io_pb2.pyi    |    85 +
 .../application/io/application_io_pb2_grpc.py      |    24 +
 .../org/apache/airavata/model/commons}/__init__.py |     0
 .../apache/airavata/model/commons/commons_pb2.py   |    41 +
 .../apache/airavata/model/commons/commons_pb2.pyi  |    39 +
 .../airavata/model/commons/commons_pb2_grpc.py     |    24 +
 .../apache/airavata/model/credential}/__init__.py  |     0
 .../airavata/model/credential/store}/__init__.py   |     0
 .../model/credential/store/credential_store_pb2.py |    47 +
 .../credential/store/credential_store_pb2.pyi      |   104 +
 .../credential/store/credential_store_pb2_grpc.py  |    24 +
 .../org/apache/airavata/model/data}/__init__.py    |     0
 .../airavata/model/data/movement}/__init__.py      |     0
 .../model/data/movement/data_movement_pb2.py       |    51 +
 .../model/data/movement/data_movement_pb2.pyi      |   103 +
 .../model/data/movement/data_movement_pb2_grpc.py  |    24 +
 .../airavata/model/data/replica}/__init__.py       |     0
 .../model/data/replica/replica_catalog_pb2.py      |    53 +
 .../model/data/replica/replica_catalog_pb2.pyi     |   109 +
 .../model/data/replica/replica_catalog_pb2_grpc.py |    24 +
 .../org/apache/airavata/model/dbevent}/__init__.py |     0
 .../apache/airavata/model/dbevent/db_event_pb2.py  |    51 +
 .../apache/airavata/model/dbevent/db_event_pb2.pyi |    90 +
 .../airavata/model/dbevent/db_event_pb2_grpc.py    |    24 +
 .../org/apache/airavata/model/error}/__init__.py   |     0
 .../org/apache/airavata/model/error/errors_pb2.py  |    61 +
 .../org/apache/airavata/model/error/errors_pb2.pyi |   107 +
 .../apache/airavata/model/error/errors_pb2_grpc.py |    24 +
 .../apache/airavata/model/experiment}/__init__.py  |     0
 .../airavata/model/experiment/experiment_pb2.py    |    57 +
 .../airavata/model/experiment/experiment_pb2.pyi   |   198 +
 .../model/experiment/experiment_pb2_grpc.py        |    24 +
 .../org/apache/airavata/model/group}/__init__.py   |     0
 .../airavata/model/group/group_manager_pb2.py      |    41 +
 .../airavata/model/group/group_manager_pb2.pyi     |    56 +
 .../airavata/model/group/group_manager_pb2_grpc.py |    24 +
 .../org/apache/airavata/model/job}/__init__.py     |     0
 .../org/apache/airavata/model/job/job_pb2.py       |    38 +
 .../org/apache/airavata/model/job/job_pb2.pyi      |    36 +
 .../org/apache/airavata/model/job/job_pb2_grpc.py  |    24 +
 .../apache/airavata/model/messaging}/__init__.py   |     0
 .../model/messaging/messaging_events_pb2.py        |    73 +
 .../model/messaging/messaging_events_pb2.pyi       |   204 +
 .../model/messaging/messaging_events_pb2_grpc.py   |    24 +
 .../apache/airavata/model/parallelism}/__init__.py |     0
 .../airavata/model/parallelism/parallelism_pb2.py  |    37 +
 .../airavata/model/parallelism/parallelism_pb2.pyi |    22 +
 .../model/parallelism/parallelism_pb2_grpc.py      |    24 +
 .../org/apache/airavata/model/process}/__init__.py |     0
 .../apache/airavata/model/process/process_pb2.py   |    44 +
 .../apache/airavata/model/process/process_pb2.pyi  |    82 +
 .../airavata/model/process/process_pb2_grpc.py     |    24 +
 .../apache/airavata/model/scheduling}/__init__.py  |     0
 .../airavata/model/scheduling/scheduling_pb2.py    |    37 +
 .../airavata/model/scheduling/scheduling_pb2.pyi   |    35 +
 .../model/scheduling/scheduling_pb2_grpc.py        |    24 +
 .../apache/airavata/model/security}/__init__.py    |     0
 .../apache/airavata/model/security/security_pb2.py |    41 +
 .../airavata/model/security/security_pb2.pyi       |    22 +
 .../airavata/model/security/security_pb2_grpc.py   |    24 +
 .../org/apache/airavata/model/sharing}/__init__.py |     0
 .../apache/airavata/model/sharing/sharing_pb2.py   |    67 +
 .../apache/airavata/model/sharing/sharing_pb2.pyi  |   268 +
 .../airavata/model/sharing/sharing_pb2_grpc.py     |    24 +
 .../org/apache/airavata/model/status}/__init__.py  |     0
 .../org/apache/airavata/model/status/status_pb2.py |    53 +
 .../apache/airavata/model/status/status_pb2.pyi    |   170 +
 .../airavata/model/status/status_pb2_grpc.py       |    24 +
 .../org/apache/airavata/model/task}/__init__.py    |     0
 .../org/apache/airavata/model/task/task_pb2.py     |    55 +
 .../org/apache/airavata/model/task/task_pb2.pyi    |   114 +
 .../apache/airavata/model/task/task_pb2_grpc.py    |    24 +
 .../org/apache/airavata/model/tenant}/__init__.py  |     0
 .../airavata/model/tenant/tenant_profile_pb2.py    |    43 +
 .../airavata/model/tenant/tenant_profile_pb2.pyi   |    77 +
 .../model/tenant/tenant_profile_pb2_grpc.py        |    24 +
 .../org/apache/airavata/model/user}/__init__.py    |     0
 .../apache/airavata/model/user/user_profile_pb2.py |    51 +
 .../airavata/model/user/user_profile_pb2.pyi       |   215 +
 .../airavata/model/user/user_profile_pb2_grpc.py   |    24 +
 .../apache/airavata/model/workflow}/__init__.py    |     0
 .../airavata/model/workflow/data}/__init__.py      |     0
 .../model/workflow/data/workflow_data_pb2.py       |    52 +
 .../model/workflow/data/workflow_data_pb2.pyi      |   131 +
 .../model/workflow/data/workflow_data_pb2_grpc.py  |    24 +
 .../apache/airavata/model/workflow/workflow_pb2.py |    63 +
 .../airavata/model/workflow/workflow_pb2.pyi       |   251 +
 .../airavata/model/workflow/workflow_pb2_grpc.py   |    24 +
 .../apache/airavata/model/workspace}/__init__.py   |     0
 .../airavata/model/workspace/workspace_pb2.py      |    51 +
 .../airavata/model/workspace/workspace_pb2.pyi     |   158 +
 .../airavata/model/workspace/workspace_pb2_grpc.py |    24 +
 .../generated/services}/__init__.py                |     0
 .../services/application_catalog_service_pb2.py    |   177 +
 .../services/application_catalog_service_pb2.pyi   |   279 +
 .../application_catalog_service_pb2_grpc.py        |  1101 +
 .../generated/services/credential_service_pb2.py   |    88 +
 .../generated/services/credential_service_pb2.pyi  |   126 +
 .../services/credential_service_pb2_grpc.py        |   449 +
 .../generated/services/data_product_service_pb2.py |    65 +
 .../services/data_product_service_pb2.pyi          |    59 +
 .../services/data_product_service_pb2_grpc.py      |   273 +
 .../generated/services/experiment_service_pb2.py   |   158 +
 .../generated/services/experiment_service_pb2.pyi  |   266 +
 .../services/experiment_service_pb2_grpc.py        |  1006 +
 .../gateway_resource_profile_service_pb2.py        |   115 +
 .../gateway_resource_profile_service_pb2.pyi       |   159 +
 .../gateway_resource_profile_service_pb2_grpc.py   |   758 +
 .../generated/services/gateway_service_pb2.py      |    82 +
 .../generated/services/gateway_service_pb2.pyi     |    90 +
 .../generated/services/gateway_service_pb2_grpc.py |   403 +
 .../services/group_resource_profile_service_pb2.py |   109 +
 .../group_resource_profile_service_pb2.pyi         |   127 +
 .../group_resource_profile_service_pb2_grpc.py     |   718 +
 .../generated/services/notification_service_pb2.py |    64 +
 .../services/notification_service_pb2.pyi          |    60 +
 .../services/notification_service_pb2_grpc.py      |   274 +
 .../generated/services/parser_service_pb2.py       |    86 +
 .../generated/services/parser_service_pb2.pyi      |   104 +
 .../generated/services/parser_service_pb2_grpc.py  |   450 +
 .../generated/services/project_service_pb2.py      |    74 +
 .../generated/services/project_service_pb2.pyi     |    89 +
 .../generated/services/project_service_pb2_grpc.py |   317 +
 .../generated/services/resource_service_pb2.py     |   214 +
 .../generated/services/resource_service_pb2.pyi    |   366 +
 .../services/resource_service_pb2_grpc.py          |  1579 +
 .../generated/services/sharing_service_pb2.py      |   101 +
 .../generated/services/sharing_service_pb2.pyi     |   141 +
 .../generated/services/sharing_service_pb2_grpc.py |   445 +
 .../services/user_resource_profile_service_pb2.py  |   121 +
 .../services/user_resource_profile_service_pb2.pyi |   199 +
 .../user_resource_profile_service_pb2_grpc.py      |   801 +
 .../airavata_sdk/transport/utils.py                |   274 +-
 airavata-python-sdk/pyproject.toml                 |     9 +-
 352 files changed, 20443 insertions(+), 120212 deletions(-)

diff --git a/airavata-python-sdk/airavata/api/Airavata-remote b/airavata-python-sdk/airavata/api/Airavata-remote
deleted file mode 100755
index 644d582be5..0000000000
--- a/airavata-python-sdk/airavata/api/Airavata-remote
+++ /dev/null
@@ -1,1482 +0,0 @@
-#!/usr/bin/env python
-#
-# Autogenerated by Thrift Compiler (0.22.0)
-#
-# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-#
-#  options string: py:enum,type_hints
-#
-
-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 airavata.api import Airavata
-from 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('  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 description)')
-    print('  string registerPwdCredential(AuthzToken authzToken, string loginUserName, string password, string description)')
-    print('  CredentialSummary getCredentialSummary(AuthzToken authzToken, string tokenId)')
-    print('   getAllCredentialSummaries(AuthzToken authzToken, SummaryType type)')
-    print('  bool deleteSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken)')
-    print('  bool deletePWDCredential(AuthzToken authzToken, string airavataCredStoreToken)')
-    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, i32 limit, i32 offset)')
-    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('  void fetchIntermediateOutputs(AuthzToken authzToken, string airavataExperimentId,  outputNames)')
-    print('  ProcessStatus getIntermediateOutputProcessStatus(AuthzToken authzToken, string airavataExperimentId,  outputNames)')
-    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('   getAccessibleAppModules(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('   getAccessibleApplicationDeployments(AuthzToken authzToken, string gatewayId, ResourcePermissionType permissionType)')
-    print('   getAppModuleDeployedResources(AuthzToken authzToken, string appModuleId)')
-    print('   getApplicationDeploymentsForAppModuleAndGroupResourceProfile(AuthzToken authzToken, string appModuleId, string groupResourceProfileId)')
-    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('   getSSHAccountProvisioners(AuthzToken authzToken)')
-    print('  bool doesUserHaveSSHAccount(AuthzToken authzToken, string computeResourceId, string userId)')
-    print('  bool isSSHSetupCompleteForUserComputeResourcePreference(AuthzToken authzToken, string computeResourceId, string airavataCredStoreToken)')
-    print('  UserComputeResourcePreference setupUserComputeResourcePreferencesForSSH(AuthzToken authzToken, string computeResourceId, string userId, string airavataCredStoreToken)')
-    print('  string registerUserResourceProfile(AuthzToken authzToken, UserResourceProfile userResourceProfile)')
-    print('  bool isUserResourceProfileExists(AuthzToken authzToken, string userId, string gatewayID)')
-    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('   getLatestQueueStatuses(AuthzToken authzToken)')
-    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,  userPermissionList)')
-    print('  bool shareResourceWithGroups(AuthzToken authzToken, string resourceId,  groupPermissionList)')
-    print('  bool revokeSharingOfResourceFromUsers(AuthzToken authzToken, string resourceId,  userPermissionList)')
-    print('  bool revokeSharingOfResourceFromGroups(AuthzToken authzToken, string resourceId,  groupPermissionList)')
-    print('   getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)')
-    print('   getAllAccessibleGroups(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)')
-    print('   getAllDirectlyAccessibleUsers(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)')
-    print('   getAllDirectlyAccessibleGroups(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)')
-    print('  bool userHasAccess(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)')
-    print('  string createGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)')
-    print('  void updateGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)')
-    print('  GroupResourceProfile getGroupResourceProfile(AuthzToken authzToken, string groupResourceProfileId)')
-    print('  bool removeGroupResourceProfile(AuthzToken authzToken, string groupResourceProfileId)')
-    print('   getGroupResourceList(AuthzToken authzToken, string gatewayId)')
-    print('  bool removeGroupComputePrefs(AuthzToken authzToken, string computeResourceId, string groupResourceProfileId)')
-    print('  bool removeGroupComputeResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
-    print('  bool removeGroupBatchQueueResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
-    print('  GroupComputeResourcePreference getGroupComputeResourcePreference(AuthzToken authzToken, string computeResourceId, string groupResourceProfileId)')
-    print('  ComputeResourcePolicy getGroupComputeResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
-    print('  BatchQueueResourcePolicy getBatchQueueResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
-    print('   getGroupComputeResourcePrefList(AuthzToken authzToken, string groupResourceProfileId)')
-    print('   getGroupBatchQueueResourcePolicyList(AuthzToken authzToken, string groupResourceProfileId)')
-    print('   getGroupComputeResourcePolicyList(AuthzToken authzToken, string groupResourceProfileId)')
-    print('  GatewayGroups getGatewayGroups(AuthzToken authzToken)')
-    print('  Parser getParser(AuthzToken authzToken, string parserId, string gatewayId)')
-    print('  string saveParser(AuthzToken authzToken, Parser parser)')
-    print('   listAllParsers(AuthzToken authzToken, string gatewayId)')
-    print('  bool removeParser(AuthzToken authzToken, string parserId, string gatewayId)')
-    print('  ParsingTemplate getParsingTemplate(AuthzToken authzToken, string templateId, string gatewayId)')
-    print('   getParsingTemplatesForExperiment(AuthzToken authzToken, string experimentId, string gatewayId)')
-    print('  string saveParsingTemplate(AuthzToken authzToken, ParsingTemplate parsingTemplate)')
-    print('  bool removeParsingTemplate(AuthzToken authzToken, string templateId, string gatewayId)')
-    print('   listAllParsingTemplates(AuthzToken authzToken, string gatewayId)')
-    print('  StorageVolumeInfo getResourceStorageInfo(AuthzToken authzToken, string resourceId, string location)')
-    print('  StorageDirectoryInfo getStorageDirectoryInfo(AuthzToken authzToken, string resourceId, string location)')
-    print('  string getAPIVersion()')
-    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 == '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) != 2:
-        print('generateAndRegisterSSHKeys requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.generateAndRegisterSSHKeys(eval(args[0]), args[1],))
-
-elif cmd == 'registerPwdCredential':
-    if len(args) != 4:
-        print('registerPwdCredential requires 4 args')
-        sys.exit(1)
-    pp.pprint(client.registerPwdCredential(eval(args[0]), args[1], args[2], args[3],))
-
-elif cmd == 'getCredentialSummary':
-    if len(args) != 2:
-        print('getCredentialSummary requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getCredentialSummary(eval(args[0]), args[1],))
-
-elif cmd == 'getAllCredentialSummaries':
-    if len(args) != 2:
-        print('getAllCredentialSummaries requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getAllCredentialSummaries(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'deleteSSHPubKey':
-    if len(args) != 2:
-        print('deleteSSHPubKey requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.deleteSSHPubKey(eval(args[0]), args[1],))
-
-elif cmd == 'deletePWDCredential':
-    if len(args) != 2:
-        print('deletePWDCredential requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.deletePWDCredential(eval(args[0]), args[1],))
-
-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) != 9:
-        print('getExperimentStatistics requires 9 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], eval(args[7]), eval(args[8]),))
-
-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 == 'fetchIntermediateOutputs':
-    if len(args) != 3:
-        print('fetchIntermediateOutputs requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.fetchIntermediateOutputs(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'getIntermediateOutputProcessStatus':
-    if len(args) != 3:
-        print('getIntermediateOutputProcessStatus requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getIntermediateOutputProcessStatus(eval(args[0]), args[1], eval(args[2]),))
-
-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 == 'getAccessibleAppModules':
-    if len(args) != 2:
-        print('getAccessibleAppModules requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getAccessibleAppModules(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 == 'getAccessibleApplicationDeployments':
-    if len(args) != 3:
-        print('getAccessibleApplicationDeployments requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getAccessibleApplicationDeployments(eval(args[0]), args[1], eval(args[2]),))
-
-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 == 'getApplicationDeploymentsForAppModuleAndGroupResourceProfile':
-    if len(args) != 3:
-        print('getApplicationDeploymentsForAppModuleAndGroupResourceProfile requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getApplicationDeploymentsForAppModuleAndGroupResourceProfile(eval(args[0]), args[1], args[2],))
-
-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 == 'getSSHAccountProvisioners':
-    if len(args) != 1:
-        print('getSSHAccountProvisioners requires 1 args')
-        sys.exit(1)
-    pp.pprint(client.getSSHAccountProvisioners(eval(args[0]),))
-
-elif cmd == 'doesUserHaveSSHAccount':
-    if len(args) != 3:
-        print('doesUserHaveSSHAccount requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.doesUserHaveSSHAccount(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'isSSHSetupCompleteForUserComputeResourcePreference':
-    if len(args) != 3:
-        print('isSSHSetupCompleteForUserComputeResourcePreference requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.isSSHSetupCompleteForUserComputeResourcePreference(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'setupUserComputeResourcePreferencesForSSH':
-    if len(args) != 4:
-        print('setupUserComputeResourcePreferencesForSSH requires 4 args')
-        sys.exit(1)
-    pp.pprint(client.setupUserComputeResourcePreferencesForSSH(eval(args[0]), args[1], args[2], args[3],))
-
-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 == 'isUserResourceProfileExists':
-    if len(args) != 3:
-        print('isUserResourceProfileExists requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.isUserResourceProfileExists(eval(args[0]), args[1], args[2],))
-
-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 == 'getLatestQueueStatuses':
-    if len(args) != 1:
-        print('getLatestQueueStatuses requires 1 args')
-        sys.exit(1)
-    pp.pprint(client.getLatestQueueStatuses(eval(args[0]),))
-
-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) != 3:
-        print('shareResourceWithUsers requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.shareResourceWithUsers(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'shareResourceWithGroups':
-    if len(args) != 3:
-        print('shareResourceWithGroups requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.shareResourceWithGroups(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'revokeSharingOfResourceFromUsers':
-    if len(args) != 3:
-        print('revokeSharingOfResourceFromUsers requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.revokeSharingOfResourceFromUsers(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'revokeSharingOfResourceFromGroups':
-    if len(args) != 3:
-        print('revokeSharingOfResourceFromGroups requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.revokeSharingOfResourceFromGroups(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'getAllAccessibleUsers':
-    if len(args) != 3:
-        print('getAllAccessibleUsers requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getAllAccessibleUsers(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'getAllAccessibleGroups':
-    if len(args) != 3:
-        print('getAllAccessibleGroups requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getAllAccessibleGroups(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'getAllDirectlyAccessibleUsers':
-    if len(args) != 3:
-        print('getAllDirectlyAccessibleUsers requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getAllDirectlyAccessibleUsers(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'getAllDirectlyAccessibleGroups':
-    if len(args) != 3:
-        print('getAllDirectlyAccessibleGroups requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getAllDirectlyAccessibleGroups(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'userHasAccess':
-    if len(args) != 3:
-        print('userHasAccess requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.userHasAccess(eval(args[0]), args[1], eval(args[2]),))
-
-elif cmd == 'createGroupResourceProfile':
-    if len(args) != 2:
-        print('createGroupResourceProfile requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.createGroupResourceProfile(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'updateGroupResourceProfile':
-    if len(args) != 2:
-        print('updateGroupResourceProfile requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.updateGroupResourceProfile(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'getGroupResourceProfile':
-    if len(args) != 2:
-        print('getGroupResourceProfile requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupResourceProfile(eval(args[0]), args[1],))
-
-elif cmd == 'removeGroupResourceProfile':
-    if len(args) != 2:
-        print('removeGroupResourceProfile requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.removeGroupResourceProfile(eval(args[0]), args[1],))
-
-elif cmd == 'getGroupResourceList':
-    if len(args) != 2:
-        print('getGroupResourceList requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupResourceList(eval(args[0]), args[1],))
-
-elif cmd == 'removeGroupComputePrefs':
-    if len(args) != 3:
-        print('removeGroupComputePrefs requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.removeGroupComputePrefs(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'removeGroupComputeResourcePolicy':
-    if len(args) != 2:
-        print('removeGroupComputeResourcePolicy requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.removeGroupComputeResourcePolicy(eval(args[0]), args[1],))
-
-elif cmd == 'removeGroupBatchQueueResourcePolicy':
-    if len(args) != 2:
-        print('removeGroupBatchQueueResourcePolicy requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.removeGroupBatchQueueResourcePolicy(eval(args[0]), args[1],))
-
-elif cmd == 'getGroupComputeResourcePreference':
-    if len(args) != 3:
-        print('getGroupComputeResourcePreference requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupComputeResourcePreference(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'getGroupComputeResourcePolicy':
-    if len(args) != 2:
-        print('getGroupComputeResourcePolicy requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupComputeResourcePolicy(eval(args[0]), args[1],))
-
-elif cmd == 'getBatchQueueResourcePolicy':
-    if len(args) != 2:
-        print('getBatchQueueResourcePolicy requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getBatchQueueResourcePolicy(eval(args[0]), args[1],))
-
-elif cmd == 'getGroupComputeResourcePrefList':
-    if len(args) != 2:
-        print('getGroupComputeResourcePrefList requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupComputeResourcePrefList(eval(args[0]), args[1],))
-
-elif cmd == 'getGroupBatchQueueResourcePolicyList':
-    if len(args) != 2:
-        print('getGroupBatchQueueResourcePolicyList requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupBatchQueueResourcePolicyList(eval(args[0]), args[1],))
-
-elif cmd == 'getGroupComputeResourcePolicyList':
-    if len(args) != 2:
-        print('getGroupComputeResourcePolicyList requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroupComputeResourcePolicyList(eval(args[0]), args[1],))
-
-elif cmd == 'getGatewayGroups':
-    if len(args) != 1:
-        print('getGatewayGroups requires 1 args')
-        sys.exit(1)
-    pp.pprint(client.getGatewayGroups(eval(args[0]),))
-
-elif cmd == 'getParser':
-    if len(args) != 3:
-        print('getParser requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getParser(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'saveParser':
-    if len(args) != 2:
-        print('saveParser requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.saveParser(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'listAllParsers':
-    if len(args) != 2:
-        print('listAllParsers requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.listAllParsers(eval(args[0]), args[1],))
-
-elif cmd == 'removeParser':
-    if len(args) != 3:
-        print('removeParser requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.removeParser(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'getParsingTemplate':
-    if len(args) != 3:
-        print('getParsingTemplate requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getParsingTemplate(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'getParsingTemplatesForExperiment':
-    if len(args) != 3:
-        print('getParsingTemplatesForExperiment requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getParsingTemplatesForExperiment(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'saveParsingTemplate':
-    if len(args) != 2:
-        print('saveParsingTemplate requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.saveParsingTemplate(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'removeParsingTemplate':
-    if len(args) != 3:
-        print('removeParsingTemplate requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.removeParsingTemplate(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'listAllParsingTemplates':
-    if len(args) != 2:
-        print('listAllParsingTemplates requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.listAllParsingTemplates(eval(args[0]), args[1],))
-
-elif cmd == 'getResourceStorageInfo':
-    if len(args) != 3:
-        print('getResourceStorageInfo requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getResourceStorageInfo(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'getStorageDirectoryInfo':
-    if len(args) != 3:
-        print('getStorageDirectoryInfo requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.getStorageDirectoryInfo(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'getAPIVersion':
-    if len(args) != 0:
-        print('getAPIVersion requires 0 args')
-        sys.exit(1)
-    pp.pprint(client.getAPIVersion())
-
-else:
-    print('Unrecognized method %s' % cmd)
-    sys.exit(1)
-
-transport.close()
diff --git a/airavata-python-sdk/airavata/api/Airavata.py b/airavata-python-sdk/airavata/api/Airavata.py
deleted file mode 100644
index 89f1702a07..0000000000
--- a/airavata-python-sdk/airavata/api/Airavata.py
+++ /dev/null
@@ -1,61621 +0,0 @@
-#
-# Autogenerated by Thrift Compiler (0.22.0)
-#
-# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-#
-#  options string: py:enum,type_hints
-#
-
-from __future__ import annotations
-import typing
-from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
-from thrift.protocol.TProtocol import TProtocolException
-from thrift.TRecursive import fix_spec
-from uuid import UUID
-from enum import IntEnum
-
-import sys
-import airavata.base.api.BaseAPI
-import logging
-from .ttypes import *
-from thrift.Thrift import TProcessor
-from thrift.transport import TTransport
-all_structs = []
-
-
-class Iface(airavata.base.api.BaseAPI.Iface):
-    def isUserExists(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str) -> bool:
-        """
-        Verify if User Exists within Airavata.
-
-        @param gatewayId
-
-         @param userName
-
-        @return true/false
-
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-         - userName
-
-        """
-        pass
-
-    def addGateway(self, authzToken: airavata.model.security.ttypes.AuthzToken, gateway: airavata.model.workspace.ttypes.Gateway) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[str]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, updatedGateway: airavata.model.workspace.ttypes.Gateway) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> airavata.model.workspace.ttypes.Gateway:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken) -> list[airavata.model.workspace.ttypes.Gateway]:
-        """
-        Get All the Gateways Connected to Airavata.
-
-
-        Parameters:
-         - authzToken
-
-        """
-        pass
-
-    def isGatewayExist(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, notification: airavata.model.workspace.ttypes.Notification) -> str:
-        """
-          * API methods to retrieve notifications
-        *
-
-        Parameters:
-         - authzToken
-         - notification
-
-        """
-        pass
-
-    def updateNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, notification: airavata.model.workspace.ttypes.Notification) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - notification
-
-        """
-        pass
-
-    def deleteNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, notificationId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-         - notificationId
-
-        """
-        pass
-
-    def getNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, notificationId: str) -> airavata.model.workspace.ttypes.Notification:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-         - notificationId
-
-        """
-        pass
-
-    def getAllNotifications(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.workspace.ttypes.Notification]:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        pass
-
-    def generateAndRegisterSSHKeys(self, authzToken: airavata.model.security.ttypes.AuthzToken, description: str) -> str:
-        """
-        Generate and Register SSH Key Pair with Airavata Credential Store.
-
-        @param description
-           The description field for a credential type, all type of credential can have a description.
-
-        @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
-         - description
-
-        """
-        pass
-
-    def registerPwdCredential(self, authzToken: airavata.model.security.ttypes.AuthzToken, loginUserName: str, password: str, description: str) -> str:
-        """
-        Generate and Register Username PWD Pair with Airavata Credential Store.
-
-        @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
-         - loginUserName
-         - password
-         - description
-
-        """
-        pass
-
-    def getCredentialSummary(self, authzToken: airavata.model.security.ttypes.AuthzToken, tokenId: str) -> airavata.model.credential.store.ttypes.CredentialSummary:
-        """
-        Parameters:
-         - authzToken
-         - tokenId
-
-        """
-        pass
-
-    def getAllCredentialSummaries(self, authzToken: airavata.model.security.ttypes.AuthzToken, type: airavata.model.credential.store.ttypes.SummaryType) -> list[airavata.model.credential.store.ttypes.CredentialSummary]:
-        """
-        Parameters:
-         - authzToken
-         - type
-
-        """
-        pass
-
-    def deleteSSHPubKey(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataCredStoreToken: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - airavataCredStoreToken
-
-        """
-        pass
-
-    def deletePWDCredential(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataCredStoreToken: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - airavataCredStoreToken
-
-        """
-        pass
-
-    def createProject(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, project: airavata.model.workspace.ttypes.Project) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str, updatedProject: airavata.model.workspace.ttypes.Project) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str) -> airavata.model.workspace.ttypes.Project:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, limit: int, offset: int) -> list[airavata.model.workspace.ttypes.Project]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, filters: dict[airavata.model.experiment.ttypes.ProjectSearchFields, str], limit: int, offset: int) -> list[airavata.model.workspace.ttypes.Project]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, filters: dict[airavata.model.experiment.ttypes.ExperimentSearchFields, str], limit: int, offset: int) -> list[airavata.model.experiment.ttypes.ExperimentSummaryModel]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, fromTime: int, toTime: int, userName: str, applicationName: str, resourceHostName: str, limit: int, offset: int) -> airavata.model.experiment.ttypes.ExperimentStatistics:
-        """
-
-        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.
-
-        @param limit
-              Amount of results to be fetched.
-
-        @param offset
-              The starting point of the results to be fetched.
-
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-         - fromTime
-         - toTime
-         - userName
-         - applicationName
-         - resourceHostName
-         - limit
-         - offset
-
-        """
-        pass
-
-    def getExperimentsInProject(self, authzToken: airavata.model.security.ttypes.AuthzToken, projectId: str, limit: int, offset: int) -> list[airavata.model.experiment.ttypes.ExperimentModel]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, limit: int, offset: int) -> list[airavata.model.experiment.ttypes.ExperimentModel]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, experiment: airavata.model.experiment.ttypes.ExperimentModel) -> str:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, experimentId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.experiment.ttypes.ExperimentModel:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.experiment.ttypes.ExperimentModel:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.experiment.ttypes.ExperimentModel:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, experiment: airavata.model.experiment.ttypes.ExperimentModel) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, userConfiguration: airavata.model.experiment.ttypes.UserConfigurationDataModel) -> None:
-        """
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - userConfiguration
-
-        """
-        pass
-
-    def updateResourceScheduleing(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, resourceScheduling: airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel) -> None:
-        """
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - resourceScheduling
-
-        """
-        pass
-
-    def validateExperiment(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> bool:
-        """
-         *
-         * 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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, gatewayId: str) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.status.ttypes.ExperimentStatus:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        """
-
-        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 fetchIntermediateOutputs(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, outputNames: list[str]) -> None:
-        """
-        Request fetching of output files for an experiment that is still executing.
-        This method results in a new Process being created for the Experiment with
-        tasks for fetching each output file.
-
-        @param authzToken
-
-        @param airavataExperimentId
-            Experiment ID of the experiment
-
-        @param outputNames
-            List of names of the experiment's outputs to fetch.
-
-
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - outputNames
-
-        """
-        pass
-
-    def getIntermediateOutputProcessStatus(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, outputNames: list[str]) -> airavata.model.status.ttypes.ProcessStatus:
-        """
-        Get the status of the most recent intermediate output fetching process for the given output names.
-
-        @param authzToken
-
-        @param airavataExperimentId
-            Experiment ID of the experiment
-
-        @param outputNames
-            List of names of the experiment's outputs to fetch.
-
-
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - outputNames
-
-        """
-        pass
-
-    def getJobStatuses(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> dict[str, airavata.model.status.ttypes.JobStatus]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> list[airavata.model.job.ttypes.JobModel]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, existingExperimentID: str, newExperimentName: str, newExperimentProjectId: str) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, existingExperimentID: str, newExperimentName: str, newExperimentProjectId: str) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, gatewayId: str) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationModule: airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str) -> airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str, applicationModule: airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule]:
-        """
-
-        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 getAccessibleAppModules(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule]:
-        """
-
-        Fetch all accessible Application Module Descriptions.
-
-        @param gatewayId
-           ID of the gateway which need to list all accessible application deployment documentation.
-
-        @return list
-           Returns the list of all Application Module Objects that are accessible to the user.
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        pass
-
-    def deleteApplicationModule(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationDeployment: airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str) -> airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str, applicationDeployment: airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        """
-
-        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 getAccessibleApplicationDeployments(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        """
-
-        Fetch all accessible Application Deployment Descriptions.
-
-        @param gatewayId
-           ID of the gateway which need to list all accessible application deployment documentation.
-        @param permissionType
-           ResourcePermissionType to check for this user
-
-        @return list<applicationDeployment.
-           Returns the list of all application Deployment Objects that are accessible to the user.
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-         - permissionType
-
-        """
-        pass
-
-    def getAppModuleDeployedResources(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str) -> list[str]:
-        """
-        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 getApplicationDeploymentsForAppModuleAndGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str, groupResourceProfileId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        """
-        Fetch a list of Application Deployments that this user can use for executing the given Application Module using the given Group Resource Profile.
-        The user must have at least READ access to the Group Resource Profile.
-
-        @param appModuleId
-           The identifier for the Application Module
-
-        @param groupResourceProfileId
-           The identifier for the Group Resource Profile
-
-        @return list<ApplicationDeploymentDescription>
-           Returns a list of Application Deployments
-
-        Parameters:
-         - authzToken
-         - appModuleId
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def registerApplicationInterface(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationInterface: airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, existingAppInterfaceID: str, newApplicationName: str, gatewayId: str) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str, applicationInterface: airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> dict[str, str]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> list[airavata.model.application.io.ttypes.InputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> dict[str, str]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceDescription: airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str) -> airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription:
-        """
-        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: airavata.model.security.ttypes.AuthzToken) -> dict[str, str]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, computeResourceDescription: airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, storageResourceDescription: airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, storageResourceId: str) -> airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription:
-        """
-        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: airavata.model.security.ttypes.AuthzToken) -> dict[str, str]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, storageResourceId: str, storageResourceDescription: airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, storageResourceId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, priorityOrder: int, localSubmission: airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionInterfaceId: str, localSubmission: airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionId: str) -> airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, priorityOrder: int, sshJobSubmission: airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, priorityOrder: int, sshJobSubmission: airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionId: str) -> airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, priorityOrder: int, unicoreJobSubmission: airavata.model.appcatalog.computeresource.ttypes.UnicoreJobSubmission) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionId: str) -> airavata.model.appcatalog.computeresource.ttypes.UnicoreJobSubmission:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, priorityOrder: int, cloudSubmission: airavata.model.appcatalog.computeresource.ttypes.CloudJobSubmission) -> str:
-        """
-           *
-           * 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: airavata.model.security.ttypes.AuthzToken, jobSubmissionId: str) -> airavata.model.appcatalog.computeresource.ttypes.CloudJobSubmission:
-        """
-           *
-           * 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: airavata.model.security.ttypes.AuthzToken, jobSubmissionInterfaceId: str, sshJobSubmission: airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionInterfaceId: str, sshJobSubmission: airavata.model.appcatalog.computeresource.ttypes.CloudJobSubmission) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionInterfaceId: str, unicoreJobSubmission: airavata.model.appcatalog.computeresource.ttypes.UnicoreJobSubmission) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, productUri: str, dataMoveType: airavata.model.data.movement.ttypes.DMType, priorityOrder: int, localDataMovement: airavata.model.data.movement.ttypes.LOCALDataMovement) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementInterfaceId: str, localDataMovement: airavata.model.data.movement.ttypes.LOCALDataMovement) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementId: str) -> airavata.model.data.movement.ttypes.LOCALDataMovement:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, productUri: str, dataMoveType: airavata.model.data.movement.ttypes.DMType, priorityOrder: int, scpDataMovement: airavata.model.data.movement.ttypes.SCPDataMovement) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementInterfaceId: str, scpDataMovement: airavata.model.data.movement.ttypes.SCPDataMovement) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementId: str) -> airavata.model.data.movement.ttypes.SCPDataMovement:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, productUri: str, dataMoveType: airavata.model.data.movement.ttypes.DMType, priorityOrder: int, unicoreDataMovement: airavata.model.data.movement.ttypes.UnicoreDataMovement) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementInterfaceId: str, unicoreDataMovement: airavata.model.data.movement.ttypes.UnicoreDataMovement) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementId: str) -> airavata.model.data.movement.ttypes.UnicoreDataMovement:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, productUri: str, dataMoveType: airavata.model.data.movement.ttypes.DMType, priorityOrder: int, gridFTPDataMovement: airavata.model.data.movement.ttypes.GridFTPDataMovement) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementInterfaceId: str, gridFTPDataMovement: airavata.model.data.movement.ttypes.GridFTPDataMovement) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementId: str) -> airavata.model.data.movement.ttypes.GridFTPDataMovement:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionInterfaceId: str, newPriorityOrder: int) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementInterfaceId: str, newPriorityOrder: int) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, jobSubmissionPriorityMap: dict[str, int]) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, dataMovementPriorityMap: dict[str, int]) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, jobSubmissionInterfaceId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, productUri: str, dataMovementInterfaceId: str, dataMoveType: airavata.model.data.movement.ttypes.DMType) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, resourceJobManager: airavata.model.appcatalog.computeresource.ttypes.ResourceJobManager) -> str:
-        """
-        Parameters:
-         - authzToken
-         - resourceJobManager
-
-        """
-        pass
-
-    def updateResourceJobManager(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceJobManagerId: str, updatedResourceJobManager: airavata.model.appcatalog.computeresource.ttypes.ResourceJobManager) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourceJobManagerId
-         - updatedResourceJobManager
-
-        """
-        pass
-
-    def getResourceJobManager(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceJobManagerId: str) -> airavata.model.appcatalog.computeresource.ttypes.ResourceJobManager:
-        """
-        Parameters:
-         - authzToken
-         - resourceJobManagerId
-
-        """
-        pass
-
-    def deleteResourceJobManager(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceJobManagerId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourceJobManagerId
-
-        """
-        pass
-
-    def deleteBatchQueue(self, authzToken: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, queueName: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayResourceProfile: airavata.model.appcatalog.gatewayprofile.ttypes.GatewayResourceProfile) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str) -> airavata.model.appcatalog.gatewayprofile.ttypes.GatewayResourceProfile:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, gatewayResourceProfile: airavata.model.appcatalog.gatewayprofile.ttypes.GatewayResourceProfile) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, computeResourceId: str, computeResourcePreference: airavata.model.appcatalog.gatewayprofile.ttypes.ComputeResourcePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, storageResourceId: str, storagePreference: airavata.model.appcatalog.gatewayprofile.ttypes.StoragePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, computeResourceId: str) -> airavata.model.appcatalog.gatewayprofile.ttypes.ComputeResourcePreference:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, storageResourceId: str) -> airavata.model.appcatalog.gatewayprofile.ttypes.StoragePreference:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str) -> list[airavata.model.appcatalog.gatewayprofile.ttypes.ComputeResourcePreference]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str) -> list[airavata.model.appcatalog.gatewayprofile.ttypes.StoragePreference]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken) -> list[airavata.model.appcatalog.gatewayprofile.ttypes.GatewayResourceProfile]:
-        """
-
-        Fetch all Gateway Profiles registered
-
-        @return GatewayResourceProfile
-          Returns all the GatewayResourcePrifle list object.
-
-
-
-        Parameters:
-         - authzToken
-
-        """
-        pass
-
-    def updateGatewayComputeResourcePreference(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayID: str, computeResourceId: str, computeResourcePreference: airavata.model.appcatalog.gatewayprofile.ttypes.ComputeResourcePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, storageId: str, storagePreference: airavata.model.appcatalog.gatewayprofile.ttypes.StoragePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, computeResourceId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayID: str, storageId: str) -> bool:
-        """
-        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 getSSHAccountProvisioners(self, authzToken: airavata.model.security.ttypes.AuthzToken) -> list[airavata.model.appcatalog.accountprovisioning.ttypes.SSHAccountProvisioner]:
-        """
-        Parameters:
-         - authzToken
-
-        """
-        pass
-
-    def doesUserHaveSSHAccount(self, authzToken: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, userId: str) -> bool:
-        """
-        Check if user has an SSH account on the given compute resource. This
-        method will only work if the compute resource has an SSHAccountProvisioner configured for it.
-
-        Parameters:
-         - authzToken
-         - computeResourceId
-         - userId
-
-        """
-        pass
-
-    def isSSHSetupCompleteForUserComputeResourcePreference(self, authzToken: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, airavataCredStoreToken: str) -> bool:
-        """
-        Check if SSH account setup is complete for this user on the given compute resource.
-
-        Parameters:
-         - authzToken
-         - computeResourceId
-         - airavataCredStoreToken
-
-        """
-        pass
-
-    def setupUserComputeResourcePreferencesForSSH(self, authzToken: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, userId: str, airavataCredStoreToken: str) -> airavata.model.appcatalog.userresourceprofile.ttypes.UserComputeResourcePreference:
-        """
-        Setup and return a UserComputeResourcePreference object for this user to SSH into the given compute resource with
-        the given SSH credential. This method will only work if the compute resource has an SSHAccountProvisioner
-        configured for it. The returned UserComputeResourcePreference object is not saved; it is up to the client to
-        call addUserComputeResourcePreference to persist it.
-
-        Parameters:
-         - authzToken
-         - computeResourceId
-         - userId
-         - airavataCredStoreToken
-
-        """
-        pass
-
-    def registerUserResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, userResourceProfile: airavata.model.appcatalog.userresourceprofile.ttypes.UserResourceProfile) -> str:
-        """
-        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 isUserResourceProfileExists(self, authzToken: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str) -> bool:
-        """
-        Check if User Resource Profile exists.
-
-        @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 bool
-
-
-        Parameters:
-         - authzToken
-         - userId
-         - gatewayID
-
-        """
-        pass
-
-    def getUserResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str) -> airavata.model.appcatalog.userresourceprofile.ttypes.UserResourceProfile:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userResourceProfile: airavata.model.appcatalog.userresourceprofile.ttypes.UserResourceProfile) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userComputeResourceId: str, userComputeResourcePreference: airavata.model.appcatalog.userresourceprofile.ttypes.UserComputeResourcePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userStorageResourceId: str, userStoragePreference: airavata.model.appcatalog.userresourceprofile.ttypes.UserStoragePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userComputeResourceId: str) -> airavata.model.appcatalog.userresourceprofile.ttypes.UserComputeResourcePreference:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userStorageResourceId: str) -> airavata.model.appcatalog.userresourceprofile.ttypes.UserStoragePreference:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str) -> list[airavata.model.appcatalog.userresourceprofile.ttypes.UserComputeResourcePreference]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str) -> list[airavata.model.appcatalog.userresourceprofile.ttypes.UserStoragePreference]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken) -> list[airavata.model.appcatalog.userresourceprofile.ttypes.UserResourceProfile]:
-        """
-
-        Fetch all user resources Profiles registered
-
-        @return UserResourceProfile
-          Returns all the UserResourcePrifle list object.
-
-
-
-        Parameters:
-         - authzToken
-
-        """
-        pass
-
-    def updateUserComputeResourcePreference(self, authzToken: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userComputeResourceId: str, userComputeResourcePreference: airavata.model.appcatalog.userresourceprofile.ttypes.UserComputeResourcePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userStorageId: str, userStoragePreference: airavata.model.appcatalog.userresourceprofile.ttypes.UserStoragePreference) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userComputeResourceId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, userId: str, gatewayID: str, userStorageId: str) -> bool:
-        """
-        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 getLatestQueueStatuses(self, authzToken: airavata.model.security.ttypes.AuthzToken) -> list[airavata.model.status.ttypes.QueueStatusModel]:
-        """
-        Parameters:
-         - authzToken
-
-        """
-        pass
-
-    def registerDataProduct(self, authzToken: airavata.model.security.ttypes.AuthzToken, dataProductModel: airavata.model.data.replica.ttypes.DataProductModel) -> str:
-        """
-        API Methods related to replica catalog
-
-
-        Parameters:
-         - authzToken
-         - dataProductModel
-
-        """
-        pass
-
-    def getDataProduct(self, authzToken: airavata.model.security.ttypes.AuthzToken, dataProductUri: str) -> airavata.model.data.replica.ttypes.DataProductModel:
-        """
-        Parameters:
-         - authzToken
-         - dataProductUri
-
-        """
-        pass
-
-    def registerReplicaLocation(self, authzToken: airavata.model.security.ttypes.AuthzToken, replicaLocationModel: airavata.model.data.replica.ttypes.DataReplicaLocationModel) -> str:
-        """
-        Parameters:
-         - authzToken
-         - replicaLocationModel
-
-        """
-        pass
-
-    def getParentDataProduct(self, authzToken: airavata.model.security.ttypes.AuthzToken, productUri: str) -> airavata.model.data.replica.ttypes.DataProductModel:
-        """
-        Parameters:
-         - authzToken
-         - productUri
-
-        """
-        pass
-
-    def getChildDataProducts(self, authzToken: airavata.model.security.ttypes.AuthzToken, productUri: str) -> list[airavata.model.data.replica.ttypes.DataProductModel]:
-        """
-        Parameters:
-         - authzToken
-         - productUri
-
-        """
-        pass
-
-    def shareResourceWithUsers(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, userPermissionList: dict[str, airavata.model.group.ttypes.ResourcePermissionType]) -> bool:
-        """
-        Group Manager and Data Sharing Related API methods
-
-
-        Parameters:
-         - authzToken
-         - resourceId
-         - userPermissionList
-
-        """
-        pass
-
-    def shareResourceWithGroups(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, groupPermissionList: dict[str, airavata.model.group.ttypes.ResourcePermissionType]) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - groupPermissionList
-
-        """
-        pass
-
-    def revokeSharingOfResourceFromUsers(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, userPermissionList: dict[str, airavata.model.group.ttypes.ResourcePermissionType]) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - userPermissionList
-
-        """
-        pass
-
-    def revokeSharingOfResourceFromGroups(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, groupPermissionList: dict[str, airavata.model.group.ttypes.ResourcePermissionType]) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - groupPermissionList
-
-        """
-        pass
-
-    def getAllAccessibleUsers(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> list[str]:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - permissionType
-
-        """
-        pass
-
-    def getAllAccessibleGroups(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> list[str]:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - permissionType
-
-        """
-        pass
-
-    def getAllDirectlyAccessibleUsers(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> list[str]:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - permissionType
-
-        """
-        pass
-
-    def getAllDirectlyAccessibleGroups(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> list[str]:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - permissionType
-
-        """
-        pass
-
-    def userHasAccess(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourceId
-         - permissionType
-
-        """
-        pass
-
-    def createGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfile: airavata.model.appcatalog.groupresourceprofile.ttypes.GroupResourceProfile) -> str:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfile
-
-        """
-        pass
-
-    def updateGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfile: airavata.model.appcatalog.groupresourceprofile.ttypes.GroupResourceProfile) -> None:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfile
-
-        """
-        pass
-
-    def getGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfileId: str) -> airavata.model.appcatalog.groupresourceprofile.ttypes.GroupResourceProfile:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def removeGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfileId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def getGroupResourceList(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.groupresourceprofile.ttypes.GroupResourceProfile]:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        pass
-
-    def removeGroupComputePrefs(self, authzToken: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, groupResourceProfileId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - computeResourceId
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def removeGroupComputeResourcePolicy(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourcePolicyId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourcePolicyId
-
-        """
-        pass
-
-    def removeGroupBatchQueueResourcePolicy(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourcePolicyId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - resourcePolicyId
-
-        """
-        pass
-
-    def getGroupComputeResourcePreference(self, authzToken: airavata.model.security.ttypes.AuthzToken, computeResourceId: str, groupResourceProfileId: str) -> airavata.model.appcatalog.groupresourceprofile.ttypes.GroupComputeResourcePreference:
-        """
-        Parameters:
-         - authzToken
-         - computeResourceId
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def getGroupComputeResourcePolicy(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourcePolicyId: str) -> airavata.model.appcatalog.groupresourceprofile.ttypes.ComputeResourcePolicy:
-        """
-        Parameters:
-         - authzToken
-         - resourcePolicyId
-
-        """
-        pass
-
-    def getBatchQueueResourcePolicy(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourcePolicyId: str) -> airavata.model.appcatalog.groupresourceprofile.ttypes.BatchQueueResourcePolicy:
-        """
-        Parameters:
-         - authzToken
-         - resourcePolicyId
-
-        """
-        pass
-
-    def getGroupComputeResourcePrefList(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfileId: str) -> list[airavata.model.appcatalog.groupresourceprofile.ttypes.GroupComputeResourcePreference]:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def getGroupBatchQueueResourcePolicyList(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfileId: str) -> list[airavata.model.appcatalog.groupresourceprofile.ttypes.BatchQueueResourcePolicy]:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def getGroupComputeResourcePolicyList(self, authzToken: airavata.model.security.ttypes.AuthzToken, groupResourceProfileId: str) -> list[airavata.model.appcatalog.groupresourceprofile.ttypes.ComputeResourcePolicy]:
-        """
-        Parameters:
-         - authzToken
-         - groupResourceProfileId
-
-        """
-        pass
-
-    def getGatewayGroups(self, authzToken: airavata.model.security.ttypes.AuthzToken) -> airavata.model.appcatalog.gatewaygroups.ttypes.GatewayGroups:
-        """
-        GatewayGroups API methods
-
-        Parameters:
-         - authzToken
-
-        """
-        pass
-
-    def getParser(self, authzToken: airavata.model.security.ttypes.AuthzToken, parserId: str, gatewayId: str) -> airavata.model.appcatalog.parser.ttypes.Parser:
-        """
-        Parameters:
-         - authzToken
-         - parserId
-         - gatewayId
-
-        """
-        pass
-
-    def saveParser(self, authzToken: airavata.model.security.ttypes.AuthzToken, parser: airavata.model.appcatalog.parser.ttypes.Parser) -> str:
-        """
-        Parameters:
-         - authzToken
-         - parser
-
-        """
-        pass
-
-    def listAllParsers(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.parser.ttypes.Parser]:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        pass
-
-    def removeParser(self, authzToken: airavata.model.security.ttypes.AuthzToken, parserId: str, gatewayId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - parserId
-         - gatewayId
-
-        """
-        pass
-
-    def getParsingTemplate(self, authzToken: airavata.model.security.ttypes.AuthzToken, templateId: str, gatewayId: str) -> airavata.model.appcatalog.parser.ttypes.ParsingTemplate:
-        """
-        Parameters:
-         - authzToken
-         - templateId
-         - gatewayId
-
-        """
-        pass
-
-    def getParsingTemplatesForExperiment(self, authzToken: airavata.model.security.ttypes.AuthzToken, experimentId: str, gatewayId: str) -> list[airavata.model.appcatalog.parser.ttypes.ParsingTemplate]:
-        """
-        Parameters:
-         - authzToken
-         - experimentId
-         - gatewayId
-
-        """
-        pass
-
-    def saveParsingTemplate(self, authzToken: airavata.model.security.ttypes.AuthzToken, parsingTemplate: airavata.model.appcatalog.parser.ttypes.ParsingTemplate) -> str:
-        """
-        Parameters:
-         - authzToken
-         - parsingTemplate
-
-        """
-        pass
-
-    def removeParsingTemplate(self, authzToken: airavata.model.security.ttypes.AuthzToken, templateId: str, gatewayId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - templateId
-         - gatewayId
-
-        """
-        pass
-
-    def listAllParsingTemplates(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.parser.ttypes.ParsingTemplate]:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        pass
-
-    def getResourceStorageInfo(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, location: str) -> airavata.model.appcatalog.storageresource.ttypes.StorageVolumeInfo:
-        """
-        Get storage volume information for a compute or storage resource.
-
-        @param authzToken
-        @param resourceId Can be either a compute resource ID or storage resource ID
-        @param location Optional path/mount point. If null/empty, defaults to user's home directory ($HOME)
-        @return StorageVolumeInfo containing disk usage information
-
-        Parameters:
-         - authzToken
-         - resourceId
-         - location
-
-        """
-        pass
-
-    def getStorageDirectoryInfo(self, authzToken: airavata.model.security.ttypes.AuthzToken, resourceId: str, location: str) -> airavata.model.appcatalog.storageresource.ttypes.StorageDirectoryInfo:
-        """
-        Get storage directory information for a compute or storage resource.
-
-        @param authzToken
-        @param resourceId Can be either a compute resource ID or storage resource ID
-        @param location Optional path/mount point. If null/empty, defaults to user's home directory ($HOME)
-        @return StorageDirectoryInfo containing directory size information
-
-        Parameters:
-         - authzToken
-         - resourceId
-         - location
-
-        """
-        pass
-
-
-class Client(airavata.base.api.BaseAPI.Client, Iface):
-    def __init__(self, iprot, oprot=None):
-        airavata.base.api.BaseAPI.Client.__init__(self, iprot, oprot)
-
-    def isUserExists(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gateway: airavata.model.workspace.ttypes.Gateway) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gateway: airavata.model.workspace.ttypes.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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[str]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> list[str]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, updatedGateway: airavata.model.workspace.ttypes.Gateway) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, updatedGateway: airavata.model.workspace.ttypes.Gateway):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> airavata.model.workspace.ttypes.Gateway:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> airavata.model.workspace.ttypes.Gateway:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken) -> list[airavata.model.workspace.ttypes.Gateway]:
-        """
-        Get All the Gateways Connected to Airavata.
-
-
-        Parameters:
-         - authzToken
-
-        """
-        self.send_getAllGateways(authzToken)
-        return self.recv_getAllGateways()
-
-    def send_getAllGateways(self, authzToken: airavata.model.security.ttypes.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) -> list[airavata.model.workspace.ttypes.Gateway]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> bool:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, notification: airavata.model.workspace.ttypes.Notification) -> str:
-        """
-          * API methods to retrieve notifications
-        *
-
-        Parameters:
-         - authzToken
-         - notification
-
-        """
-        self.send_createNotification(authzToken, notification)
-        return self.recv_createNotification()
-
-    def send_createNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, notification: airavata.model.workspace.ttypes.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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, notification: airavata.model.workspace.ttypes.Notification) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - notification
-
-        """
-        self.send_updateNotification(authzToken, notification)
-        return self.recv_updateNotification()
-
-    def send_updateNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, notification: airavata.model.workspace.ttypes.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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, notificationId: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-         - notificationId
-
-        """
-        self.send_deleteNotification(authzToken, gatewayId, notificationId)
-        return self.recv_deleteNotification()
-
-    def send_deleteNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, notificationId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, notificationId: str) -> airavata.model.workspace.ttypes.Notification:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-         - notificationId
-
-        """
-        self.send_getNotification(authzToken, gatewayId, notificationId)
-        return self.recv_getNotification()
-
-    def send_getNotification(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, notificationId: str):
-        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) -> airavata.model.workspace.ttypes.Notification:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.workspace.ttypes.Notification]:
-        """
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        self.send_getAllNotifications(authzToken, gatewayId)
-        return self.recv_getAllNotifications()
-
-    def send_getAllNotifications(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> list[airavata.model.workspace.ttypes.Notification]:
-        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: airavata.model.security.ttypes.AuthzToken, description: str) -> str:
-        """
-        Generate and Register SSH Key Pair with Airavata Credential Store.
-
-        @param description
-           The description field for a credential type, all type of credential can have a description.
-
-        @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
-         - description
-
-        """
-        self.send_generateAndRegisterSSHKeys(authzToken, description)
-        return self.recv_generateAndRegisterSSHKeys()
-
-    def send_generateAndRegisterSSHKeys(self, authzToken: airavata.model.security.ttypes.AuthzToken, description: str):
-        self._oprot.writeMessageBegin('generateAndRegisterSSHKeys', TMessageType.CALL, self._seqid)
-        args = generateAndRegisterSSHKeys_args()
-        args.authzToken = authzToken
-        args.description = description
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_generateAndRegisterSSHKeys(self) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, loginUserName: str, password: str, description: str) -> str:
-        """
-        Generate and Register Username PWD Pair with Airavata Credential Store.
-
-        @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
-         - loginUserName
-         - password
-         - description
-
-        """
-        self.send_registerPwdCredential(authzToken, loginUserName, password, description)
-        return self.recv_registerPwdCredential()
-
-    def send_registerPwdCredential(self, authzToken: airavata.model.security.ttypes.AuthzToken, loginUserName: str, password: str, description: str):
-        self._oprot.writeMessageBegin('registerPwdCredential', TMessageType.CALL, self._seqid)
-        args = registerPwdCredential_args()
-        args.authzToken = authzToken
-        args.loginUserName = loginUserName
-        args.password = password
-        args.description = description
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_registerPwdCredential(self) -> str:
-        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 getCredentialSummary(self, authzToken: airavata.model.security.ttypes.AuthzToken, tokenId: str) -> airavata.model.credential.store.ttypes.CredentialSummary:
-        """
-        Parameters:
-         - authzToken
-         - tokenId
-
-        """
-        self.send_getCredentialSummary(authzToken, tokenId)
-        return self.recv_getCredentialSummary()
-
-    def send_getCredentialSummary(self, authzToken: airavata.model.security.ttypes.AuthzToken, tokenId: str):
-        self._oprot.writeMessageBegin('getCredentialSummary', TMessageType.CALL, self._seqid)
-        args = getCredentialSummary_args()
-        args.authzToken = authzToken
-        args.tokenId = tokenId
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getCredentialSummary(self) -> airavata.model.credential.store.ttypes.CredentialSummary:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getCredentialSummary_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, "getCredentialSummary failed: unknown result")
-
-    def getAllCredentialSummaries(self, authzToken: airavata.model.security.ttypes.AuthzToken, type: airavata.model.credential.store.ttypes.SummaryType) -> list[airavata.model.credential.store.ttypes.CredentialSummary]:
-        """
-        Parameters:
-         - authzToken
-         - type
-
-        """
-        self.send_getAllCredentialSummaries(authzToken, type)
-        return self.recv_getAllCredentialSummaries()
-
-    def send_getAllCredentialSummaries(self, authzToken: airavata.model.security.ttypes.AuthzToken, type: airavata.model.credential.store.ttypes.SummaryType):
-        self._oprot.writeMessageBegin('getAllCredentialSummaries', TMessageType.CALL, self._seqid)
-        args = getAllCredentialSummaries_args()
-        args.authzToken = authzToken
-        args.type = type
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getAllCredentialSummaries(self) -> list[airavata.model.credential.store.ttypes.CredentialSummary]:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getAllCredentialSummaries_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, "getAllCredentialSummaries failed: unknown result")
-
-    def deleteSSHPubKey(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataCredStoreToken: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - airavataCredStoreToken
-
-        """
-        self.send_deleteSSHPubKey(authzToken, airavataCredStoreToken)
-        return self.recv_deleteSSHPubKey()
-
-    def send_deleteSSHPubKey(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataCredStoreToken: str):
-        self._oprot.writeMessageBegin('deleteSSHPubKey', TMessageType.CALL, self._seqid)
-        args = deleteSSHPubKey_args()
-        args.authzToken = authzToken
-        args.airavataCredStoreToken = airavataCredStoreToken
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_deleteSSHPubKey(self) -> bool:
-        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
-        if result.ae is not None:
-            raise result.ae
-        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteSSHPubKey failed: unknown result")
-
-    def deletePWDCredential(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataCredStoreToken: str) -> bool:
-        """
-        Parameters:
-         - authzToken
-         - airavataCredStoreToken
-
-        """
-        self.send_deletePWDCredential(authzToken, airavataCredStoreToken)
-        return self.recv_deletePWDCredential()
-
-    def send_deletePWDCredential(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataCredStoreToken: str):
-        self._oprot.writeMessageBegin('deletePWDCredential', TMessageType.CALL, self._seqid)
-        args = deletePWDCredential_args()
-        args.authzToken = authzToken
-        args.airavataCredStoreToken = airavataCredStoreToken
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_deletePWDCredential(self) -> bool:
-        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
-        if result.ae is not None:
-            raise result.ae
-        raise TApplicationException(TApplicationException.MISSING_RESULT, "deletePWDCredential failed: unknown result")
-
-    def createProject(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, project: airavata.model.workspace.ttypes.Project) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, project: airavata.model.workspace.ttypes.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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str, updatedProject: airavata.model.workspace.ttypes.Project) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str, updatedProject: airavata.model.workspace.ttypes.Project):
-        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) -> None:
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str) -> airavata.model.workspace.ttypes.Project:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str):
-        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) -> airavata.model.workspace.ttypes.Project:
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, limit: int, offset: int) -> list[airavata.model.workspace.ttypes.Project]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, limit: int, offset: int):
-        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) -> list[airavata.model.workspace.ttypes.Project]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, filters: dict[airavata.model.experiment.ttypes.ProjectSearchFields, str], limit: int, offset: int) -> list[airavata.model.workspace.ttypes.Project]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, filters: dict[airavata.model.experiment.ttypes.ProjectSearchFields, str], limit: int, offset: int):
-        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) -> list[airavata.model.workspace.ttypes.Project]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, filters: dict[airavata.model.experiment.ttypes.ExperimentSearchFields, str], limit: int, offset: int) -> list[airavata.model.experiment.ttypes.ExperimentSummaryModel]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, filters: dict[airavata.model.experiment.ttypes.ExperimentSearchFields, str], limit: int, offset: int):
-        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) -> list[airavata.model.experiment.ttypes.ExperimentSummaryModel]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, fromTime: int, toTime: int, userName: str, applicationName: str, resourceHostName: str, limit: int, offset: int) -> airavata.model.experiment.ttypes.ExperimentStatistics:
-        """
-
-        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.
-
-        @param limit
-              Amount of results to be fetched.
-
-        @param offset
-              The starting point of the results to be fetched.
-
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-         - fromTime
-         - toTime
-         - userName
-         - applicationName
-         - resourceHostName
-         - limit
-         - offset
-
-        """
-        self.send_getExperimentStatistics(authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName, limit, offset)
-        return self.recv_getExperimentStatistics()
-
-    def send_getExperimentStatistics(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, fromTime: int, toTime: int, userName: str, applicationName: str, resourceHostName: str, limit: int, offset: int):
-        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.limit = limit
-        args.offset = offset
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getExperimentStatistics(self) -> airavata.model.experiment.ttypes.ExperimentStatistics:
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str, limit: int, offset: int) -> list[airavata.model.experiment.ttypes.ExperimentModel]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, projectId: str, limit: int, offset: int):
-        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) -> list[airavata.model.experiment.ttypes.ExperimentModel]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, limit: int, offset: int) -> list[airavata.model.experiment.ttypes.ExperimentModel]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, userName: str, limit: int, offset: int):
-        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) -> list[airavata.model.experiment.ttypes.ExperimentModel]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, experiment: airavata.model.experiment.ttypes.ExperimentModel) -> str:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, experiment: airavata.model.experiment.ttypes.ExperimentModel):
-        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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, experimentId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, experimentId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.experiment.ttypes.ExperimentModel:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> airavata.model.experiment.ttypes.ExperimentModel:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.experiment.ttypes.ExperimentModel:
-        """
-          *
-          * 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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> airavata.model.experiment.ttypes.ExperimentModel:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.experiment.ttypes.ExperimentModel:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> airavata.model.experiment.ttypes.ExperimentModel:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, experiment: airavata.model.experiment.ttypes.ExperimentModel) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, experiment: airavata.model.experiment.ttypes.ExperimentModel):
-        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) -> None:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, userConfiguration: airavata.model.experiment.ttypes.UserConfigurationDataModel) -> None:
-        """
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - userConfiguration
-
-        """
-        self.send_updateExperimentConfiguration(authzToken, airavataExperimentId, userConfiguration)
-        self.recv_updateExperimentConfiguration()
-
-    def send_updateExperimentConfiguration(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, userConfiguration: airavata.model.experiment.ttypes.UserConfigurationDataModel):
-        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) -> None:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, resourceScheduling: airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel) -> None:
-        """
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - resourceScheduling
-
-        """
-        self.send_updateResourceScheduleing(authzToken, airavataExperimentId, resourceScheduling)
-        self.recv_updateResourceScheduleing()
-
-    def send_updateResourceScheduleing(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, resourceScheduling: airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel):
-        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) -> None:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> bool:
-        """
-         *
-         * 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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, gatewayId: str) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, gatewayId: str):
-        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) -> None:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> airavata.model.status.ttypes.ExperimentStatus:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> airavata.model.status.ttypes.ExperimentStatus:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        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 fetchIntermediateOutputs(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, outputNames: list[str]) -> None:
-        """
-        Request fetching of output files for an experiment that is still executing.
-        This method results in a new Process being created for the Experiment with
-        tasks for fetching each output file.
-
-        @param authzToken
-
-        @param airavataExperimentId
-            Experiment ID of the experiment
-
-        @param outputNames
-            List of names of the experiment's outputs to fetch.
-
-
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - outputNames
-
-        """
-        self.send_fetchIntermediateOutputs(authzToken, airavataExperimentId, outputNames)
-        self.recv_fetchIntermediateOutputs()
-
-    def send_fetchIntermediateOutputs(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, outputNames: list[str]):
-        self._oprot.writeMessageBegin('fetchIntermediateOutputs', TMessageType.CALL, self._seqid)
-        args = fetchIntermediateOutputs_args()
-        args.authzToken = authzToken
-        args.airavataExperimentId = airavataExperimentId
-        args.outputNames = outputNames
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_fetchIntermediateOutputs(self) -> None:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = fetchIntermediateOutputs_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 getIntermediateOutputProcessStatus(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, outputNames: list[str]) -> airavata.model.status.ttypes.ProcessStatus:
-        """
-        Get the status of the most recent intermediate output fetching process for the given output names.
-
-        @param authzToken
-
-        @param airavataExperimentId
-            Experiment ID of the experiment
-
-        @param outputNames
-            List of names of the experiment's outputs to fetch.
-
-
-        Parameters:
-         - authzToken
-         - airavataExperimentId
-         - outputNames
-
-        """
-        self.send_getIntermediateOutputProcessStatus(authzToken, airavataExperimentId, outputNames)
-        return self.recv_getIntermediateOutputProcessStatus()
-
-    def send_getIntermediateOutputProcessStatus(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, outputNames: list[str]):
-        self._oprot.writeMessageBegin('getIntermediateOutputProcessStatus', TMessageType.CALL, self._seqid)
-        args = getIntermediateOutputProcessStatus_args()
-        args.authzToken = authzToken
-        args.airavataExperimentId = airavataExperimentId
-        args.outputNames = outputNames
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getIntermediateOutputProcessStatus(self) -> airavata.model.status.ttypes.ProcessStatus:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getIntermediateOutputProcessStatus_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, "getIntermediateOutputProcessStatus failed: unknown result")
-
-    def getJobStatuses(self, authzToken: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> dict[str, airavata.model.status.ttypes.JobStatus]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> dict[str, airavata.model.status.ttypes.JobStatus]:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str) -> list[airavata.model.job.ttypes.JobModel]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str):
-        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) -> list[airavata.model.job.ttypes.JobModel]:
-        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: airavata.model.security.ttypes.AuthzToken, existingExperimentID: str, newExperimentName: str, newExperimentProjectId: str) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, existingExperimentID: str, newExperimentName: str, newExperimentProjectId: str):
-        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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, existingExperimentID: str, newExperimentName: str, newExperimentProjectId: str) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, existingExperimentID: str, newExperimentName: str, newExperimentProjectId: str):
-        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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, gatewayId: str) -> None:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, airavataExperimentId: str, gatewayId: str):
-        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) -> None:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationModule: airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationModule: airavata.model.appcatalog.appdeployment.ttypes.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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str) -> airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str):
-        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) -> airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule:
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str, applicationModule: airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str, applicationModule: airavata.model.appcatalog.appdeployment.ttypes.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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule]:
-        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 getAccessibleAppModules(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule]:
-        """
-
-        Fetch all accessible Application Module Descriptions.
-
-        @param gatewayId
-           ID of the gateway which need to list all accessible application deployment documentation.
-
-        @return list
-           Returns the list of all Application Module Objects that are accessible to the user.
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-
-        """
-        self.send_getAccessibleAppModules(authzToken, gatewayId)
-        return self.recv_getAccessibleAppModules()
-
-    def send_getAccessibleAppModules(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        self._oprot.writeMessageBegin('getAccessibleAppModules', TMessageType.CALL, self._seqid)
-        args = getAccessibleAppModules_args()
-        args.authzToken = authzToken
-        args.gatewayId = gatewayId
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getAccessibleAppModules(self) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule]:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getAccessibleAppModules_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, "getAccessibleAppModules failed: unknown result")
-
-    def deleteApplicationModule(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationDeployment: airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationDeployment: airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription):
-        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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str) -> airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str):
-        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) -> airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription:
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str, applicationDeployment: airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str, applicationDeployment: airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appDeploymentId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        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 getAccessibleApplicationDeployments(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        """
-
-        Fetch all accessible Application Deployment Descriptions.
-
-        @param gatewayId
-           ID of the gateway which need to list all accessible application deployment documentation.
-        @param permissionType
-           ResourcePermissionType to check for this user
-
-        @return list<applicationDeployment.
-           Returns the list of all application Deployment Objects that are accessible to the user.
-
-
-        Parameters:
-         - authzToken
-         - gatewayId
-         - permissionType
-
-        """
-        self.send_getAccessibleApplicationDeployments(authzToken, gatewayId, permissionType)
-        return self.recv_getAccessibleApplicationDeployments()
-
-    def send_getAccessibleApplicationDeployments(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, permissionType: airavata.model.group.ttypes.ResourcePermissionType):
-        self._oprot.writeMessageBegin('getAccessibleApplicationDeployments', TMessageType.CALL, self._seqid)
-        args = getAccessibleApplicationDeployments_args()
-        args.authzToken = authzToken
-        args.gatewayId = gatewayId
-        args.permissionType = permissionType
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getAccessibleApplicationDeployments(self) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getAccessibleApplicationDeployments_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, "getAccessibleApplicationDeployments failed: unknown result")
-
-    def getAppModuleDeployedResources(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str) -> list[str]:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, appModuleId: str):
-        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) -> list[str]:
-        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 getApplicationDeploymentsForAppModuleAndGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str, groupResourceProfileId: str) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        """
-        Fetch a list of Application Deployments that this user can use for executing the given Application Module using the given Group Resource Profile.
-        The user must have at least READ access to the Group Resource Profile.
-
-        @param appModuleId
-           The identifier for the Application Module
-
-        @param groupResourceProfileId
-           The identifier for the Group Resource Profile
-
-        @return list<ApplicationDeploymentDescription>
-           Returns a list of Application Deployments
-
-        Parameters:
-         - authzToken
-         - appModuleId
-         - groupResourceProfileId
-
-        """
-        self.send_getApplicationDeploymentsForAppModuleAndGroupResourceProfile(authzToken, appModuleId, groupResourceProfileId)
-        return self.recv_getApplicationDeploymentsForAppModuleAndGroupResourceProfile()
-
-    def send_getApplicationDeploymentsForAppModuleAndGroupResourceProfile(self, authzToken: airavata.model.security.ttypes.AuthzToken, appModuleId: str, groupResourceProfileId: str):
-        self._oprot.writeMessageBegin('getApplicationDeploymentsForAppModuleAndGroupResourceProfile', TMessageType.CALL, self._seqid)
-        args = getApplicationDeploymentsForAppModuleAndGroupResourceProfile_args()
-        args.authzToken = authzToken
-        args.appModuleId = appModuleId
-        args.groupResourceProfileId = groupResourceProfileId
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getApplicationDeploymentsForAppModuleAndGroupResourceProfile(self) -> list[airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription]:
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getApplicationDeploymentsForAppModuleAndGroupResourceProfile_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, "getApplicationDeploymentsForAppModuleAndGroupResourceProfile failed: unknown result")
-
-    def registerApplicationInterface(self, authzToken: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationInterface: airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str, applicationInterface: airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription):
-        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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, existingAppInterfaceID: str, newApplicationName: str, gatewayId: str) -> str:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, existingAppInterfaceID: str, newApplicationName: str, gatewayId: str):
-        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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str):
-        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) -> airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription:
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str, applicationInterface: airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str, applicationInterface: airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> bool:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str):
-        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) -> bool:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> dict[str, str]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> dict[str, str]:
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str) -> list[airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, gatewayId: str):
-        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) -> list[airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription]:
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> list[airavata.model.application.io.ttypes.InputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str):
-        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) -> list[airavata.model.application.io.ttypes.InputDataObjectType]:
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str):
-        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) -> list[airavata.model.application.io.ttypes.OutputDataObjectType]:
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str) -> dict[str, str]:
-        """
-
-        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: airavata.model.security.ttypes.AuthzToken, appInterfaceId: str):
-        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) -> dict[str, str]:
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceDescription: airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription) -> str:
-        """
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceDescription: airavata.model.appcatalog.computeresource.ttypes.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) -> str:
-        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: airavata.model.security.ttypes.AuthzToken, computeResourceId: str) -> airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription:
-        """
-        Fetch the given Compute Resource.
-
-        @param computeResourceId
-          The identifier for the requested compute resource
-
-        @return computeResourceDescription
-           Compute Resource Object created from the datamodel..
-
-
... 133312 lines suppressed ...