You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2014/02/10 15:43:45 UTC

[24/27] Mock airavata api server and client for AIRAVATA-991

http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-api-sdk/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-sdk/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-sdk/src/main/java/org/apache/airavata/api/Airavata.java
new file mode 100644
index 0000000..4d3cd9c
--- /dev/null
+++ b/airavata-api/airavata-api-sdk/src/main/java/org/apache/airavata/api/Airavata.java
@@ -0,0 +1,11638 @@
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+/**
+ * Autogenerated by Thrift Compiler (0.9.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.api;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class Airavata {
+
+  public interface Iface {
+
+    /**
+     * Query Airavata to fetch the API version
+     */
+    public String GetAPIVersion() throws org.apache.thrift.TException;
+
+    /**
+     * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+     *   but inferred from the authentication 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 basicExperimentMetadata
+     *    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 experiment globally unique identifier.
+     * 
+     * @throws org.apache.airavata.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param basicExperimentMetadata
+     */
+    public String createExperiment(org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Fetch previously created experiment metadata.
+     * 
+     * @param airavataExperimentId
+     *    The identifier for the requested experiment. This is returned during the create experiment step.
+     * 
+     * @return experimentMetada
+     *   This method will return the previously stored experiment metadata.
+     * 
+     * @throws org.apache.airavata.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+     *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentId
+     */
+    public org.apache.airavata.model.experiment.BasicMetadata getBasicExperimentMetadata(String airavataExperimentId) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Configure a previously 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 experimentConfigurationData
+     *    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.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+     *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentId
+     * @param experimentConfigurationData
+     */
+    public void configureExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Fetch the previously configured experiment configuration information.
+     * 
+     * @param airavataExperimentId
+     *    The identifier for the requested experiment. This is returned during the create experiment step.
+     * 
+     * @return
+     *   This method returns the previously configured experiment configuration data.
+     * 
+     * @throws org.apache.airavata.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+     *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentId
+     */
+    public org.apache.airavata.model.experiment.ConfigurationData getExperimentConfiguration(String airavataExperimentId) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Launch a previously created and 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.
+     * 
+     * @param airavataExperimentId
+     *    The identifier for the requested experiment. This is returned during the create experiment step.
+     * 
+     * @param airavataCredStoreToken:
+     *   A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+     *     credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+     *     generated token associated with the registered credentials. The client has to security posses this token id and is
+     *     required to pass it to Airavata Server for all execution requests.
+     *   Note: At this point only the credential store token is required so the string is directly passed here. In future if
+     *     if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+     *   Note: This parameter is not persisted within Airavata Registry for security reasons.
+     * 
+     * @return
+     *   This method call does not have a return value.
+     * 
+     * @throws org.apache.airavata.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+     *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentId
+     * @param airavataCredStoreToken
+     */
+    public void launchConfiguredExperiment(String airavataExperimentId, String airavataCredStoreToken) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Configure and Launch a previously created experiment with required inputs, scheduling, security and other quality of service
+     *   parameters. This method also launches the experiment after it is configured. If you would like to configure only
+     *   and launch at a later time or partially configure then ConfigureExperiment should be used.
+     * 
+     * @param airavataExperimentId
+     *    The identifier for the requested experiment. This is returned during the create experiment step.
+     * 
+     * @param experimentConfigurationData
+     *    The configuration information of the experiment with application input parameters, computational resource scheduling
+     *      information, special input output handling and additional quality of service parameters.
+     * 
+     * @param airavataCredStoreToken:
+     *   A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+     *     credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+     *     generated token associated with the registered credentials. The client has to security posses this token id and is
+     *     required to pass it to Airavata Server for all execution requests.
+     *   Note: At this point only the credential store token is required so the string is directly passed here. In future if
+     *     if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+     * 
+     * @return
+     *   The server-side generated experiment GUID.
+     * 
+     * @throws org.apache.airavata.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentId
+     * @param experimentConfigurationData
+     * @param airavataCredStoreToken
+     */
+    public String configureAndLaunchExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, String airavataCredStoreToken) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Clone an specified experiment with a new name. 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 airavataExperimentIdToBeCloned
+     *    This is the experiment identifier that is to be cloned.
+     * 
+     * @param basicExperimentMetadata
+     *    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.
+     * 
+     * @return
+     *   The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+     * 
+     * @throws org.apache.airavata.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+     *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentIdToBeCloned
+     * @param basicExperimentMetadata
+     */
+    public String cloneExperimentConfiguration(String airavataExperimentIdToBeCloned, org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Terminate a running 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.api.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     * 
+     * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+     *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+     * 
+     * @throws org.apache.airavata.api.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.api.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.
+     * 
+     * 
+     * @param airavataExperimentId
+     */
+    public void terminateExperiment(String airavataExperimentId) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+
+  }
+
+  public interface AsyncIface {
+
+    public void GetAPIVersion(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void createExperiment(org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getBasicExperimentMetadata(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void configureExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getExperimentConfiguration(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void launchConfiguredExperiment(String airavataExperimentId, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void configureAndLaunchExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void cloneExperimentConfiguration(String airavataExperimentIdToBeCloned, org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void terminateExperiment(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+  }
+
+  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
+    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
+      public Factory() {}
+      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
+        return new Client(prot);
+      }
+      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+        return new Client(iprot, oprot);
+      }
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol prot)
+    {
+      super(prot, prot);
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+      super(iprot, oprot);
+    }
+
+    public String GetAPIVersion() throws org.apache.thrift.TException
+    {
+      send_GetAPIVersion();
+      return recv_GetAPIVersion();
+    }
+
+    public void send_GetAPIVersion() throws org.apache.thrift.TException
+    {
+      GetAPIVersion_args args = new GetAPIVersion_args();
+      sendBase("GetAPIVersion", args);
+    }
+
+    public String recv_GetAPIVersion() throws org.apache.thrift.TException
+    {
+      GetAPIVersion_result result = new GetAPIVersion_result();
+      receiveBase(result, "GetAPIVersion");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "GetAPIVersion failed: unknown result");
+    }
+
+    public String createExperiment(org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_createExperiment(basicExperimentMetadata);
+      return recv_createExperiment();
+    }
+
+    public void send_createExperiment(org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata) throws org.apache.thrift.TException
+    {
+      createExperiment_args args = new createExperiment_args();
+      args.setBasicExperimentMetadata(basicExperimentMetadata);
+      sendBase("createExperiment", args);
+    }
+
+    public String recv_createExperiment() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      createExperiment_result result = new createExperiment_result();
+      receiveBase(result, "createExperiment");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createExperiment failed: unknown result");
+    }
+
+    public org.apache.airavata.model.experiment.BasicMetadata getBasicExperimentMetadata(String airavataExperimentId) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_getBasicExperimentMetadata(airavataExperimentId);
+      return recv_getBasicExperimentMetadata();
+    }
+
+    public void send_getBasicExperimentMetadata(String airavataExperimentId) throws org.apache.thrift.TException
+    {
+      getBasicExperimentMetadata_args args = new getBasicExperimentMetadata_args();
+      args.setAiravataExperimentId(airavataExperimentId);
+      sendBase("getBasicExperimentMetadata", args);
+    }
+
+    public org.apache.airavata.model.experiment.BasicMetadata recv_getBasicExperimentMetadata() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      getBasicExperimentMetadata_result result = new getBasicExperimentMetadata_result();
+      receiveBase(result, "getBasicExperimentMetadata");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getBasicExperimentMetadata failed: unknown result");
+    }
+
+    public void configureExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_configureExperiment(airavataExperimentId, experimentConfigurationData);
+      recv_configureExperiment();
+    }
+
+    public void send_configureExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData) throws org.apache.thrift.TException
+    {
+      configureExperiment_args args = new configureExperiment_args();
+      args.setAiravataExperimentId(airavataExperimentId);
+      args.setExperimentConfigurationData(experimentConfigurationData);
+      sendBase("configureExperiment", args);
+    }
+
+    public void recv_configureExperiment() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      configureExperiment_result result = new configureExperiment_result();
+      receiveBase(result, "configureExperiment");
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      return;
+    }
+
+    public org.apache.airavata.model.experiment.ConfigurationData getExperimentConfiguration(String airavataExperimentId) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_getExperimentConfiguration(airavataExperimentId);
+      return recv_getExperimentConfiguration();
+    }
+
+    public void send_getExperimentConfiguration(String airavataExperimentId) throws org.apache.thrift.TException
+    {
+      getExperimentConfiguration_args args = new getExperimentConfiguration_args();
+      args.setAiravataExperimentId(airavataExperimentId);
+      sendBase("getExperimentConfiguration", args);
+    }
+
+    public org.apache.airavata.model.experiment.ConfigurationData recv_getExperimentConfiguration() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      getExperimentConfiguration_result result = new getExperimentConfiguration_result();
+      receiveBase(result, "getExperimentConfiguration");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getExperimentConfiguration failed: unknown result");
+    }
+
+    public void launchConfiguredExperiment(String airavataExperimentId, String airavataCredStoreToken) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_launchConfiguredExperiment(airavataExperimentId, airavataCredStoreToken);
+      recv_launchConfiguredExperiment();
+    }
+
+    public void send_launchConfiguredExperiment(String airavataExperimentId, String airavataCredStoreToken) throws org.apache.thrift.TException
+    {
+      launchConfiguredExperiment_args args = new launchConfiguredExperiment_args();
+      args.setAiravataExperimentId(airavataExperimentId);
+      args.setAiravataCredStoreToken(airavataCredStoreToken);
+      sendBase("launchConfiguredExperiment", args);
+    }
+
+    public void recv_launchConfiguredExperiment() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      launchConfiguredExperiment_result result = new launchConfiguredExperiment_result();
+      receiveBase(result, "launchConfiguredExperiment");
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      return;
+    }
+
+    public String configureAndLaunchExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, String airavataCredStoreToken) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_configureAndLaunchExperiment(airavataExperimentId, experimentConfigurationData, airavataCredStoreToken);
+      return recv_configureAndLaunchExperiment();
+    }
+
+    public void send_configureAndLaunchExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, String airavataCredStoreToken) throws org.apache.thrift.TException
+    {
+      configureAndLaunchExperiment_args args = new configureAndLaunchExperiment_args();
+      args.setAiravataExperimentId(airavataExperimentId);
+      args.setExperimentConfigurationData(experimentConfigurationData);
+      args.setAiravataCredStoreToken(airavataCredStoreToken);
+      sendBase("configureAndLaunchExperiment", args);
+    }
+
+    public String recv_configureAndLaunchExperiment() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      configureAndLaunchExperiment_result result = new configureAndLaunchExperiment_result();
+      receiveBase(result, "configureAndLaunchExperiment");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "configureAndLaunchExperiment failed: unknown result");
+    }
+
+    public String cloneExperimentConfiguration(String airavataExperimentIdToBeCloned, org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_cloneExperimentConfiguration(airavataExperimentIdToBeCloned, basicExperimentMetadata);
+      return recv_cloneExperimentConfiguration();
+    }
+
+    public void send_cloneExperimentConfiguration(String airavataExperimentIdToBeCloned, org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata) throws org.apache.thrift.TException
+    {
+      cloneExperimentConfiguration_args args = new cloneExperimentConfiguration_args();
+      args.setAiravataExperimentIdToBeCloned(airavataExperimentIdToBeCloned);
+      args.setBasicExperimentMetadata(basicExperimentMetadata);
+      sendBase("cloneExperimentConfiguration", args);
+    }
+
+    public String recv_cloneExperimentConfiguration() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      cloneExperimentConfiguration_result result = new cloneExperimentConfiguration_result();
+      receiveBase(result, "cloneExperimentConfiguration");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "cloneExperimentConfiguration failed: unknown result");
+    }
+
+    public void terminateExperiment(String airavataExperimentId) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_terminateExperiment(airavataExperimentId);
+      recv_terminateExperiment();
+    }
+
+    public void send_terminateExperiment(String airavataExperimentId) throws org.apache.thrift.TException
+    {
+      terminateExperiment_args args = new terminateExperiment_args();
+      args.setAiravataExperimentId(airavataExperimentId);
+      sendBase("terminateExperiment", args);
+    }
+
+    public void recv_terminateExperiment() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      terminateExperiment_result result = new terminateExperiment_result();
+      receiveBase(result, "terminateExperiment");
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.enf != null) {
+        throw result.enf;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      return;
+    }
+
+  }
+  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
+    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
+      private org.apache.thrift.async.TAsyncClientManager clientManager;
+      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
+      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
+        this.clientManager = clientManager;
+        this.protocolFactory = protocolFactory;
+      }
+      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
+        return new AsyncClient(protocolFactory, clientManager, transport);
+      }
+    }
+
+    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
+      super(protocolFactory, clientManager, transport);
+    }
+
+    public void GetAPIVersion(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      GetAPIVersion_call method_call = new GetAPIVersion_call(resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class GetAPIVersion_call extends org.apache.thrift.async.TAsyncMethodCall {
+      public GetAPIVersion_call(org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("GetAPIVersion", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        GetAPIVersion_args args = new GetAPIVersion_args();
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public String getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_GetAPIVersion();
+      }
+    }
+
+    public void createExperiment(org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      createExperiment_call method_call = new createExperiment_call(basicExperimentMetadata, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class createExperiment_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata;
+      public createExperiment_call(org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.basicExperimentMetadata = basicExperimentMetadata;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("createExperiment", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        createExperiment_args args = new createExperiment_args();
+        args.setBasicExperimentMetadata(basicExperimentMetadata);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public String getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_createExperiment();
+      }
+    }
+
+    public void getBasicExperimentMetadata(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getBasicExperimentMetadata_call method_call = new getBasicExperimentMetadata_call(airavataExperimentId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getBasicExperimentMetadata_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentId;
+      public getBasicExperimentMetadata_call(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentId = airavataExperimentId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getBasicExperimentMetadata", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getBasicExperimentMetadata_args args = new getBasicExperimentMetadata_args();
+        args.setAiravataExperimentId(airavataExperimentId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.experiment.BasicMetadata getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getBasicExperimentMetadata();
+      }
+    }
+
+    public void configureExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      configureExperiment_call method_call = new configureExperiment_call(airavataExperimentId, experimentConfigurationData, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class configureExperiment_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentId;
+      private org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData;
+      public configureExperiment_call(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentId = airavataExperimentId;
+        this.experimentConfigurationData = experimentConfigurationData;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("configureExperiment", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        configureExperiment_args args = new configureExperiment_args();
+        args.setAiravataExperimentId(airavataExperimentId);
+        args.setExperimentConfigurationData(experimentConfigurationData);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_configureExperiment();
+      }
+    }
+
+    public void getExperimentConfiguration(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getExperimentConfiguration_call method_call = new getExperimentConfiguration_call(airavataExperimentId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getExperimentConfiguration_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentId;
+      public getExperimentConfiguration_call(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentId = airavataExperimentId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getExperimentConfiguration", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getExperimentConfiguration_args args = new getExperimentConfiguration_args();
+        args.setAiravataExperimentId(airavataExperimentId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.experiment.ConfigurationData getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getExperimentConfiguration();
+      }
+    }
+
+    public void launchConfiguredExperiment(String airavataExperimentId, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      launchConfiguredExperiment_call method_call = new launchConfiguredExperiment_call(airavataExperimentId, airavataCredStoreToken, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class launchConfiguredExperiment_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentId;
+      private String airavataCredStoreToken;
+      public launchConfiguredExperiment_call(String airavataExperimentId, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentId = airavataExperimentId;
+        this.airavataCredStoreToken = airavataCredStoreToken;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("launchConfiguredExperiment", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        launchConfiguredExperiment_args args = new launchConfiguredExperiment_args();
+        args.setAiravataExperimentId(airavataExperimentId);
+        args.setAiravataCredStoreToken(airavataCredStoreToken);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_launchConfiguredExperiment();
+      }
+    }
+
+    public void configureAndLaunchExperiment(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      configureAndLaunchExperiment_call method_call = new configureAndLaunchExperiment_call(airavataExperimentId, experimentConfigurationData, airavataCredStoreToken, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class configureAndLaunchExperiment_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentId;
+      private org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData;
+      private String airavataCredStoreToken;
+      public configureAndLaunchExperiment_call(String airavataExperimentId, org.apache.airavata.model.experiment.ConfigurationData experimentConfigurationData, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentId = airavataExperimentId;
+        this.experimentConfigurationData = experimentConfigurationData;
+        this.airavataCredStoreToken = airavataCredStoreToken;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("configureAndLaunchExperiment", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        configureAndLaunchExperiment_args args = new configureAndLaunchExperiment_args();
+        args.setAiravataExperimentId(airavataExperimentId);
+        args.setExperimentConfigurationData(experimentConfigurationData);
+        args.setAiravataCredStoreToken(airavataCredStoreToken);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public String getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_configureAndLaunchExperiment();
+      }
+    }
+
+    public void cloneExperimentConfiguration(String airavataExperimentIdToBeCloned, org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      cloneExperimentConfiguration_call method_call = new cloneExperimentConfiguration_call(airavataExperimentIdToBeCloned, basicExperimentMetadata, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class cloneExperimentConfiguration_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentIdToBeCloned;
+      private org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata;
+      public cloneExperimentConfiguration_call(String airavataExperimentIdToBeCloned, org.apache.airavata.model.experiment.BasicMetadata basicExperimentMetadata, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentIdToBeCloned = airavataExperimentIdToBeCloned;
+        this.basicExperimentMetadata = basicExperimentMetadata;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("cloneExperimentConfiguration", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        cloneExperimentConfiguration_args args = new cloneExperimentConfiguration_args();
+        args.setAiravataExperimentIdToBeCloned(airavataExperimentIdToBeCloned);
+        args.setBasicExperimentMetadata(basicExperimentMetadata);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public String getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_cloneExperimentConfiguration();
+      }
+    }
+
+    public void terminateExperiment(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      terminateExperiment_call method_call = new terminateExperiment_call(airavataExperimentId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class terminateExperiment_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String airavataExperimentId;
+      public terminateExperiment_call(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.airavataExperimentId = airavataExperimentId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("terminateExperiment", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        terminateExperiment_args args = new terminateExperiment_args();
+        args.setAiravataExperimentId(airavataExperimentId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_terminateExperiment();
+      }
+    }
+
+  }
+
+  public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
+    private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
+    public Processor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
+    }
+
+    protected Processor(I iface, Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends Iface> Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> getProcessMap(Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      processMap.put("GetAPIVersion", new GetAPIVersion());
+      processMap.put("createExperiment", new createExperiment());
+      processMap.put("getBasicExperimentMetadata", new getBasicExperimentMetadata());
+      processMap.put("configureExperiment", new configureExperiment());
+      processMap.put("getExperimentConfiguration", new getExperimentConfiguration());
+      processMap.put("launchConfiguredExperiment", new launchConfiguredExperiment());
+      processMap.put("configureAndLaunchExperiment", new configureAndLaunchExperiment());
+      processMap.put("cloneExperimentConfiguration", new cloneExperimentConfiguration());
+      processMap.put("terminateExperiment", new terminateExperiment());
+      return processMap;
+    }
+
+    public static class GetAPIVersion<I extends Iface> extends org.apache.thrift.ProcessFunction<I, GetAPIVersion_args> {
+      public GetAPIVersion() {
+        super("GetAPIVersion");
+      }
+
+      public GetAPIVersion_args getEmptyArgsInstance() {
+        return new GetAPIVersion_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public GetAPIVersion_result getResult(I iface, GetAPIVersion_args args) throws org.apache.thrift.TException {
+        GetAPIVersion_result result = new GetAPIVersion_result();
+        result.success = iface.GetAPIVersion();
+        return result;
+      }
+    }
+
+    public static class createExperiment<I extends Iface> extends org.apache.thrift.ProcessFunction<I, createExperiment_args> {
+      public createExperiment() {
+        super("createExperiment");
+      }
+
+      public createExperiment_args getEmptyArgsInstance() {
+        return new createExperiment_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public createExperiment_result getResult(I iface, createExperiment_args args) throws org.apache.thrift.TException {
+        createExperiment_result result = new createExperiment_result();
+        try {
+          result.success = iface.createExperiment(args.basicExperimentMetadata);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class getBasicExperimentMetadata<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getBasicExperimentMetadata_args> {
+      public getBasicExperimentMetadata() {
+        super("getBasicExperimentMetadata");
+      }
+
+      public getBasicExperimentMetadata_args getEmptyArgsInstance() {
+        return new getBasicExperimentMetadata_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getBasicExperimentMetadata_result getResult(I iface, getBasicExperimentMetadata_args args) throws org.apache.thrift.TException {
+        getBasicExperimentMetadata_result result = new getBasicExperimentMetadata_result();
+        try {
+          result.success = iface.getBasicExperimentMetadata(args.airavataExperimentId);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class configureExperiment<I extends Iface> extends org.apache.thrift.ProcessFunction<I, configureExperiment_args> {
+      public configureExperiment() {
+        super("configureExperiment");
+      }
+
+      public configureExperiment_args getEmptyArgsInstance() {
+        return new configureExperiment_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public configureExperiment_result getResult(I iface, configureExperiment_args args) throws org.apache.thrift.TException {
+        configureExperiment_result result = new configureExperiment_result();
+        try {
+          iface.configureExperiment(args.airavataExperimentId, args.experimentConfigurationData);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class getExperimentConfiguration<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getExperimentConfiguration_args> {
+      public getExperimentConfiguration() {
+        super("getExperimentConfiguration");
+      }
+
+      public getExperimentConfiguration_args getEmptyArgsInstance() {
+        return new getExperimentConfiguration_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getExperimentConfiguration_result getResult(I iface, getExperimentConfiguration_args args) throws org.apache.thrift.TException {
+        getExperimentConfiguration_result result = new getExperimentConfiguration_result();
+        try {
+          result.success = iface.getExperimentConfiguration(args.airavataExperimentId);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class launchConfiguredExperiment<I extends Iface> extends org.apache.thrift.ProcessFunction<I, launchConfiguredExperiment_args> {
+      public launchConfiguredExperiment() {
+        super("launchConfiguredExperiment");
+      }
+
+      public launchConfiguredExperiment_args getEmptyArgsInstance() {
+        return new launchConfiguredExperiment_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public launchConfiguredExperiment_result getResult(I iface, launchConfiguredExperiment_args args) throws org.apache.thrift.TException {
+        launchConfiguredExperiment_result result = new launchConfiguredExperiment_result();
+        try {
+          iface.launchConfiguredExperiment(args.airavataExperimentId, args.airavataCredStoreToken);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class configureAndLaunchExperiment<I extends Iface> extends org.apache.thrift.ProcessFunction<I, configureAndLaunchExperiment_args> {
+      public configureAndLaunchExperiment() {
+        super("configureAndLaunchExperiment");
+      }
+
+      public configureAndLaunchExperiment_args getEmptyArgsInstance() {
+        return new configureAndLaunchExperiment_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public configureAndLaunchExperiment_result getResult(I iface, configureAndLaunchExperiment_args args) throws org.apache.thrift.TException {
+        configureAndLaunchExperiment_result result = new configureAndLaunchExperiment_result();
+        try {
+          result.success = iface.configureAndLaunchExperiment(args.airavataExperimentId, args.experimentConfigurationData, args.airavataCredStoreToken);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class cloneExperimentConfiguration<I extends Iface> extends org.apache.thrift.ProcessFunction<I, cloneExperimentConfiguration_args> {
+      public cloneExperimentConfiguration() {
+        super("cloneExperimentConfiguration");
+      }
+
+      public cloneExperimentConfiguration_args getEmptyArgsInstance() {
+        return new cloneExperimentConfiguration_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public cloneExperimentConfiguration_result getResult(I iface, cloneExperimentConfiguration_args args) throws org.apache.thrift.TException {
+        cloneExperimentConfiguration_result result = new cloneExperimentConfiguration_result();
+        try {
+          result.success = iface.cloneExperimentConfiguration(args.airavataExperimentIdToBeCloned, args.basicExperimentMetadata);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class terminateExperiment<I extends Iface> extends org.apache.thrift.ProcessFunction<I, terminateExperiment_args> {
+      public terminateExperiment() {
+        super("terminateExperiment");
+      }
+
+      public terminateExperiment_args getEmptyArgsInstance() {
+        return new terminateExperiment_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public terminateExperiment_result getResult(I iface, terminateExperiment_args args) throws org.apache.thrift.TException {
+        terminateExperiment_result result = new terminateExperiment_result();
+        try {
+          iface.terminateExperiment(args.airavataExperimentId);
+        } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
+          result.enf = enf;
+        } catch (org.apache.airavata.api.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.api.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+  }
+
+  public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
+    private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName());
+    public AsyncProcessor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.AsyncProcessFunction<I, ? extends org.apache.thrift.TBase, ?>>()));
+    }
+
+    protected AsyncProcessor(I iface, Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends AsyncIface> Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase,?>> getProcessMap(Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
+      processMap.put("GetAPIVersion", new GetAPIVersion());
+      processMap.put("createExperiment", new createExperiment());
+      processMap.put("getBasicExperimentMetadata", new getBasicExperimentMetadata());
+      processMap.put("configureExperiment", new configureExperiment());
+      processMap.put("getExperimentConfiguration", new getExperimentConfiguration());
+      processMap.put("launchConfiguredExperiment", new launchConfiguredExperiment());
+      processMap.put("configureAndLaunchExperiment", new configureAndLaunchExperiment());
+      processMap.put("cloneExperimentConfiguration", new cloneExperimentConfiguration());
+      processMap.put("terminateExperiment", new terminateExperiment());
+      return processMap;
+    }
+
+    public static class GetAPIVersion<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, GetAPIVersion_args, String> {
+      public GetAPIVersion() {
+        super("GetAPIVersion");
+      }
+
+      public GetAPIVersion_args getEmptyArgsInstance() {
+        return new GetAPIVersion_args();
+      }
+
+      public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<String>() { 
+          public void onComplete(String o) {
+            GetAPIVersion_result result = new GetAPIVersion_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            GetAPIVersion_result result = new GetAPIVersion_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, GetAPIVersion_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
+        iface.GetAPIVersion(resultHandler);
+      }
+    }
+
+    public static class createExperiment<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createExperiment_args, String> {
+      public createExperiment() {
+        super("createExperiment");
+      }
+
+      public createExperiment_args getEmptyArgsInstance() {
+        return new createExperiment_args();
+      }
+
+      public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<String>() { 
+          public void onComplete(String o) {
+            createExperiment_result result = new createExperiment_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            createExperiment_result result = new createExperiment_result();
+            if (e instanceof org.apache.airavata.api.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.api.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.api.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.api.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.api.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.api.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, createExperiment_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
+        iface.createExperiment(args.basicExperimentMetadata,resultHandler);
+      }
+    }
+
+    public static class getBasicExperimentMetadata<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getBasicExperimentMetadata_args, org.apache.airavata.model.experiment.BasicMetadata> {
+      public getBasicExperimentMetadata() {
+        super("getBasicExperimentMetadata");
+      }
+
+      public getBasicExperimentMetadata_args getEmptyArgsInstance() {
+        return new getBasicExperimentMetadata_args();
+      }
+
+      public AsyncMethodCallback<org.apache.airavata.model.experiment.BasicMetadata> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<org.apache.airavata.model.experiment.BasicMetadata>() { 
+          public void onComplete(org.apache.airavata.model.experiment.BasicMetadata o) {
+            getBasicExperimentMetadata_result result = new getBasicExperimentMetadata_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            getBasicExperimentMetadata_result result = new getBasicExperimentMetadata_result();
+            if (e instanceof org.apache.airavata.api.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.api.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.api.error.ExperimentNotFoundException) {
+                        result.enf = (org.apache.airavata.api.error.ExperimentNotFoundException) e;
+                        result.setEnfIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.api.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.api.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.api.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.api.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, getBasicExperimentMetadata_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.experiment.BasicMetadata> resultHandler) throws TException {
+        iface.getBasicExperimentMetadata(args.airavataExperimentId,resultHandler);
+      }
+    }
+
+    public static class configureExperiment<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, configureExperiment_args

<TRUNCATED>