You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/04/13 21:05:36 UTC

airavata git commit: generating code to have token id in terminate - AIRAVATA-1661

Repository: airavata
Updated Branches:
  refs/heads/master e89ba3da0 -> 97d31b4da


generating code to have token id in terminate - AIRAVATA-1661


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

Branch: refs/heads/master
Commit: 97d31b4dadd8dc0c1effa3e42b59cfa1fa81c14c
Parents: e89ba3d
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Mon Apr 13 15:05:28 2015 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Mon Apr 13 15:05:28 2015 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |   2 +-
 .../java/org/apache/airavata/api/Airavata.java  | 133 +++++++++++++++++--
 .../main/resources/lib/airavata/Airavata.cpp    |  25 +++-
 .../src/main/resources/lib/airavata/Airavata.h  |  27 ++--
 .../lib/airavata/Airavata_server.skeleton.cpp   |   2 +-
 .../resources/lib/Airavata/API/Airavata.php     |  29 +++-
 .../lib/apache/airavata/api/Airavata-remote     |   8 +-
 .../lib/apache/airavata/api/Airavata.py         |  27 +++-
 airavata-api/generate-thrift-files.sh           |   2 +-
 .../airavataAPI.thrift                          |   2 +-
 .../server/OrchestratorServerHandler.java       |   2 +-
 .../orchestrator.cpi.service.thrift             |   2 +-
 .../TestFrameworkProps.java                     |  26 ++++
 .../src/main/resources/test-framework.json      |   0
 14 files changed, 240 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index ce63366..66eca0d 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -1401,7 +1401,7 @@ public class AiravataServerHandler implements Airavata.Iface {
      *                                                                   rather an Airavata Administrator will be notified to take corrective action.
      */
     @Override
-    public void terminateExperiment(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+    public void terminateExperiment(String airavataExperimentId, String tokenId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
     	Client client = getOrchestratorClient();
     	client.terminateExperiment(airavataExperimentId);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index ff7d330..44f1e60 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -510,8 +510,9 @@ import org.slf4j.LoggerFactory;
      * 
      * 
      * @param airavataExperimentId
+     * @param tokenId
      */
-    public void terminateExperiment(String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+    public void terminateExperiment(String airavataExperimentId, String tokenId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
      * Register a Application Module.
@@ -1579,7 +1580,7 @@ import org.slf4j.LoggerFactory;
 
     public void cloneExperiment(String existingExperimentID, String newExperimentName, 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 void terminateExperiment(String airavataExperimentId, String tokenId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void registerApplicationModule(String gatewayId, org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule applicationModule, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -3010,16 +3011,17 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result");
     }
 
-    public void terminateExperiment(String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    public void terminateExperiment(String airavataExperimentId, String tokenId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
-      send_terminateExperiment(airavataExperimentId);
+      send_terminateExperiment(airavataExperimentId, tokenId);
       recv_terminateExperiment();
     }
 
-    public void send_terminateExperiment(String airavataExperimentId) throws org.apache.thrift.TException
+    public void send_terminateExperiment(String airavataExperimentId, String tokenId) throws org.apache.thrift.TException
     {
       terminateExperiment_args args = new terminateExperiment_args();
       args.setAiravataExperimentId(airavataExperimentId);
+      args.setTokenId(tokenId);
       sendBase("terminateExperiment", args);
     }
 
@@ -6853,24 +6855,27 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public void terminateExperiment(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void terminateExperiment(String airavataExperimentId, String tokenId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      terminateExperiment_call method_call = new terminateExperiment_call(airavataExperimentId, resultHandler, this, ___protocolFactory, ___transport);
+      terminateExperiment_call method_call = new terminateExperiment_call(airavataExperimentId, tokenId, 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 {
+      private String tokenId;
+      public terminateExperiment_call(String airavataExperimentId, String tokenId, 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.tokenId = tokenId;
       }
 
       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.setTokenId(tokenId);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -10713,7 +10718,7 @@ import org.slf4j.LoggerFactory;
       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);
+          iface.terminateExperiment(args.airavataExperimentId, args.tokenId);
         } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.model.error.ExperimentNotFoundException enf) {
@@ -15705,7 +15710,7 @@ import org.slf4j.LoggerFactory;
       }
 
       public void start(I iface, terminateExperiment_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
-        iface.terminateExperiment(args.airavataExperimentId,resultHandler);
+        iface.terminateExperiment(args.airavataExperimentId, args.tokenId,resultHandler);
       }
     }
 
@@ -62971,6 +62976,7 @@ import org.slf4j.LoggerFactory;
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("terminateExperiment_args");
 
     private static final org.apache.thrift.protocol.TField AIRAVATA_EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("airavataExperimentId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField TOKEN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("tokenId", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -62979,10 +62985,12 @@ import org.slf4j.LoggerFactory;
     }
 
     public String airavataExperimentId; // required
+    public String tokenId; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      AIRAVATA_EXPERIMENT_ID((short)1, "airavataExperimentId");
+      AIRAVATA_EXPERIMENT_ID((short)1, "airavataExperimentId"),
+      TOKEN_ID((short)2, "tokenId");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -62999,6 +63007,8 @@ import org.slf4j.LoggerFactory;
         switch(fieldId) {
           case 1: // AIRAVATA_EXPERIMENT_ID
             return AIRAVATA_EXPERIMENT_ID;
+          case 2: // TOKEN_ID
+            return TOKEN_ID;
           default:
             return null;
         }
@@ -63044,6 +63054,8 @@ import org.slf4j.LoggerFactory;
       Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.AIRAVATA_EXPERIMENT_ID, new org.apache.thrift.meta_data.FieldMetaData("airavataExperimentId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.TOKEN_ID, new org.apache.thrift.meta_data.FieldMetaData("tokenId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(terminateExperiment_args.class, metaDataMap);
     }
@@ -63052,10 +63064,12 @@ import org.slf4j.LoggerFactory;
     }
 
     public terminateExperiment_args(
-      String airavataExperimentId)
+      String airavataExperimentId,
+      String tokenId)
     {
       this();
       this.airavataExperimentId = airavataExperimentId;
+      this.tokenId = tokenId;
     }
 
     /**
@@ -63065,6 +63079,9 @@ import org.slf4j.LoggerFactory;
       if (other.isSetAiravataExperimentId()) {
         this.airavataExperimentId = other.airavataExperimentId;
       }
+      if (other.isSetTokenId()) {
+        this.tokenId = other.tokenId;
+      }
     }
 
     public terminateExperiment_args deepCopy() {
@@ -63074,6 +63091,7 @@ import org.slf4j.LoggerFactory;
     @Override
     public void clear() {
       this.airavataExperimentId = null;
+      this.tokenId = null;
     }
 
     public String getAiravataExperimentId() {
@@ -63100,6 +63118,30 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public String getTokenId() {
+      return this.tokenId;
+    }
+
+    public terminateExperiment_args setTokenId(String tokenId) {
+      this.tokenId = tokenId;
+      return this;
+    }
+
+    public void unsetTokenId() {
+      this.tokenId = null;
+    }
+
+    /** Returns true if field tokenId is set (has been assigned a value) and false otherwise */
+    public boolean isSetTokenId() {
+      return this.tokenId != null;
+    }
+
+    public void setTokenIdIsSet(boolean value) {
+      if (!value) {
+        this.tokenId = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case AIRAVATA_EXPERIMENT_ID:
@@ -63110,6 +63152,14 @@ import org.slf4j.LoggerFactory;
         }
         break;
 
+      case TOKEN_ID:
+        if (value == null) {
+          unsetTokenId();
+        } else {
+          setTokenId((String)value);
+        }
+        break;
+
       }
     }
 
@@ -63118,6 +63168,9 @@ import org.slf4j.LoggerFactory;
       case AIRAVATA_EXPERIMENT_ID:
         return getAiravataExperimentId();
 
+      case TOKEN_ID:
+        return getTokenId();
+
       }
       throw new IllegalStateException();
     }
@@ -63131,6 +63184,8 @@ import org.slf4j.LoggerFactory;
       switch (field) {
       case AIRAVATA_EXPERIMENT_ID:
         return isSetAiravataExperimentId();
+      case TOKEN_ID:
+        return isSetTokenId();
       }
       throw new IllegalStateException();
     }
@@ -63157,6 +63212,15 @@ import org.slf4j.LoggerFactory;
           return false;
       }
 
+      boolean this_present_tokenId = true && this.isSetTokenId();
+      boolean that_present_tokenId = true && that.isSetTokenId();
+      if (this_present_tokenId || that_present_tokenId) {
+        if (!(this_present_tokenId && that_present_tokenId))
+          return false;
+        if (!this.tokenId.equals(that.tokenId))
+          return false;
+      }
+
       return true;
     }
 
@@ -63183,6 +63247,16 @@ import org.slf4j.LoggerFactory;
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetTokenId()).compareTo(other.isSetTokenId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetTokenId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tokenId, other.tokenId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -63210,6 +63284,14 @@ import org.slf4j.LoggerFactory;
         sb.append(this.airavataExperimentId);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("tokenId:");
+      if (this.tokenId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.tokenId);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -63261,6 +63343,14 @@ import org.slf4j.LoggerFactory;
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // TOKEN_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.tokenId = iprot.readString();
+                struct.setTokenIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -63281,6 +63371,11 @@ import org.slf4j.LoggerFactory;
           oprot.writeString(struct.airavataExperimentId);
           oprot.writeFieldEnd();
         }
+        if (struct.tokenId != null) {
+          oprot.writeFieldBegin(TOKEN_ID_FIELD_DESC);
+          oprot.writeString(struct.tokenId);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -63302,20 +63397,30 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetAiravataExperimentId()) {
           optionals.set(0);
         }
-        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetTokenId()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
         if (struct.isSetAiravataExperimentId()) {
           oprot.writeString(struct.airavataExperimentId);
         }
+        if (struct.isSetTokenId()) {
+          oprot.writeString(struct.tokenId);
+        }
       }
 
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, terminateExperiment_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(1);
+        BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           struct.airavataExperimentId = iprot.readString();
           struct.setAiravataExperimentIdIsSet(true);
         }
+        if (incoming.get(1)) {
+          struct.tokenId = iprot.readString();
+          struct.setTokenIdIsSet(true);
+        }
       }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
index 5a6df09..ac590e3 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
@@ -9680,6 +9680,14 @@ uint32_t Airavata_terminateExperiment_args::read(::apache::thrift::protocol::TPr
           xfer += iprot->skip(ftype);
         }
         break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->tokenId);
+          this->__isset.tokenId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -9700,6 +9708,10 @@ uint32_t Airavata_terminateExperiment_args::write(::apache::thrift::protocol::TP
   xfer += oprot->writeString(this->airavataExperimentId);
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("tokenId", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->tokenId);
+  xfer += oprot->writeFieldEnd();
+
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -9713,6 +9725,10 @@ uint32_t Airavata_terminateExperiment_pargs::write(::apache::thrift::protocol::T
   xfer += oprot->writeString((*(this->airavataExperimentId)));
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("tokenId", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->tokenId)));
+  xfer += oprot->writeFieldEnd();
+
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -31027,19 +31043,20 @@ void AiravataClient::recv_cloneExperiment(std::string& _return)
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "cloneExperiment failed: unknown result");
 }
 
-void AiravataClient::terminateExperiment(const std::string& airavataExperimentId)
+void AiravataClient::terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId)
 {
-  send_terminateExperiment(airavataExperimentId);
+  send_terminateExperiment(airavataExperimentId, tokenId);
   recv_terminateExperiment();
 }
 
-void AiravataClient::send_terminateExperiment(const std::string& airavataExperimentId)
+void AiravataClient::send_terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("terminateExperiment", ::apache::thrift::protocol::T_CALL, cseqid);
 
   Airavata_terminateExperiment_pargs args;
   args.airavataExperimentId = &airavataExperimentId;
+  args.tokenId = &tokenId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -38745,7 +38762,7 @@ void AiravataProcessor::process_terminateExperiment(int32_t seqid, ::apache::thr
 
   Airavata_terminateExperiment_result result;
   try {
-    iface_->terminateExperiment(args.airavataExperimentId);
+    iface_->terminateExperiment(args.airavataExperimentId, args.tokenId);
   } catch ( ::apache::airavata::api::error::InvalidRequestException &ire) {
     result.ire = ire;
     result.__isset.ire = true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
index 78a7e9c..78f2742 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
@@ -70,7 +70,7 @@ class AiravataIf {
   virtual void getJobDetails(std::vector< ::apache::airavata::model::workspace::experiment::JobDetails> & _return, const std::string& airavataExperimentId) = 0;
   virtual void getDataTransferDetails(std::vector< ::apache::airavata::model::workspace::experiment::DataTransferDetails> & _return, const std::string& airavataExperimentId) = 0;
   virtual void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperimentName) = 0;
-  virtual void terminateExperiment(const std::string& airavataExperimentId) = 0;
+  virtual void terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId) = 0;
   virtual void registerApplicationModule(std::string& _return, const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule) = 0;
   virtual void getApplicationModule( ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& _return, const std::string& appModuleId) = 0;
   virtual bool updateApplicationModule(const std::string& appModuleId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule) = 0;
@@ -295,7 +295,7 @@ class AiravataNull : virtual public AiravataIf {
   void cloneExperiment(std::string& /* _return */, const std::string& /* existingExperimentID */, const std::string& /* newExperimentName */) {
     return;
   }
-  void terminateExperiment(const std::string& /* airavataExperimentId */) {
+  void terminateExperiment(const std::string& /* airavataExperimentId */, const std::string& /* tokenId */) {
     return;
   }
   void registerApplicationModule(std::string& /* _return */, const std::string& /* gatewayId */, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& /* applicationModule */) {
@@ -5806,19 +5806,21 @@ class Airavata_cloneExperiment_presult {
 };
 
 typedef struct _Airavata_terminateExperiment_args__isset {
-  _Airavata_terminateExperiment_args__isset() : airavataExperimentId(false) {}
+  _Airavata_terminateExperiment_args__isset() : airavataExperimentId(false), tokenId(false) {}
   bool airavataExperimentId;
+  bool tokenId;
 } _Airavata_terminateExperiment_args__isset;
 
 class Airavata_terminateExperiment_args {
  public:
 
-  Airavata_terminateExperiment_args() : airavataExperimentId() {
+  Airavata_terminateExperiment_args() : airavataExperimentId(), tokenId() {
   }
 
   virtual ~Airavata_terminateExperiment_args() throw() {}
 
   std::string airavataExperimentId;
+  std::string tokenId;
 
   _Airavata_terminateExperiment_args__isset __isset;
 
@@ -5826,10 +5828,16 @@ class Airavata_terminateExperiment_args {
     airavataExperimentId = val;
   }
 
+  void __set_tokenId(const std::string& val) {
+    tokenId = val;
+  }
+
   bool operator == (const Airavata_terminateExperiment_args & rhs) const
   {
     if (!(airavataExperimentId == rhs.airavataExperimentId))
       return false;
+    if (!(tokenId == rhs.tokenId))
+      return false;
     return true;
   }
   bool operator != (const Airavata_terminateExperiment_args &rhs) const {
@@ -5851,6 +5859,7 @@ class Airavata_terminateExperiment_pargs {
   virtual ~Airavata_terminateExperiment_pargs() throw() {}
 
   const std::string* airavataExperimentId;
+  const std::string* tokenId;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -16573,8 +16582,8 @@ class AiravataClient : virtual public AiravataIf {
   void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperimentName);
   void send_cloneExperiment(const std::string& existingExperimentID, const std::string& newExperimentName);
   void recv_cloneExperiment(std::string& _return);
-  void terminateExperiment(const std::string& airavataExperimentId);
-  void send_terminateExperiment(const std::string& airavataExperimentId);
+  void terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId);
+  void send_terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId);
   void recv_terminateExperiment();
   void registerApplicationModule(std::string& _return, const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule);
   void send_registerApplicationModule(const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule);
@@ -17455,13 +17464,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void terminateExperiment(const std::string& airavataExperimentId) {
+  void terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->terminateExperiment(airavataExperimentId);
+      ifaces_[i]->terminateExperiment(airavataExperimentId, tokenId);
     }
-    ifaces_[i]->terminateExperiment(airavataExperimentId);
+    ifaces_[i]->terminateExperiment(airavataExperimentId, tokenId);
   }
 
   void registerApplicationModule(std::string& _return, const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
index 96b9e0f..b39c56f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
@@ -229,7 +229,7 @@ class AiravataHandler : virtual public AiravataIf {
     printf("cloneExperiment\n");
   }
 
-  void terminateExperiment(const std::string& airavataExperimentId) {
+  void terminateExperiment(const std::string& airavataExperimentId, const std::string& tokenId) {
     // Your implementation goes here
     printf("terminateExperiment\n");
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
index 0865706..5d20b4f 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
@@ -55,7 +55,7 @@ interface AiravataIf {
   public function getJobDetails($airavataExperimentId);
   public function getDataTransferDetails($airavataExperimentId);
   public function cloneExperiment($existingExperimentID, $newExperimentName);
-  public function terminateExperiment($airavataExperimentId);
+  public function terminateExperiment($airavataExperimentId, $tokenId);
   public function registerApplicationModule($gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule);
   public function getApplicationModule($appModuleId);
   public function updateApplicationModule($appModuleId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule);
@@ -2463,16 +2463,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("cloneExperiment failed: unknown result");
   }
 
-  public function terminateExperiment($airavataExperimentId)
+  public function terminateExperiment($airavataExperimentId, $tokenId)
   {
-    $this->send_terminateExperiment($airavataExperimentId);
+    $this->send_terminateExperiment($airavataExperimentId, $tokenId);
     $this->recv_terminateExperiment();
   }
 
-  public function send_terminateExperiment($airavataExperimentId)
+  public function send_terminateExperiment($airavataExperimentId, $tokenId)
   {
     $args = new \Airavata\API\Airavata_terminateExperiment_args();
     $args->airavataExperimentId = $airavataExperimentId;
+    $args->tokenId = $tokenId;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
     if ($bin_accel)
     {
@@ -16311,6 +16312,7 @@ class Airavata_terminateExperiment_args {
   static $_TSPEC;
 
   public $airavataExperimentId = null;
+  public $tokenId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -16319,12 +16321,19 @@ class Airavata_terminateExperiment_args {
           'var' => 'airavataExperimentId',
           'type' => TType::STRING,
           ),
+        2 => array(
+          'var' => 'tokenId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
+      if (isset($vals['tokenId'])) {
+        $this->tokenId = $vals['tokenId'];
+      }
     }
   }
 
@@ -16354,6 +16363,13 @@ class Airavata_terminateExperiment_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->tokenId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -16372,6 +16388,11 @@ class Airavata_terminateExperiment_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->tokenId !== null) {
+      $xfer += $output->writeFieldBegin('tokenId', TType::STRING, 2);
+      $xfer += $output->writeString($this->tokenId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
index f297497..240a5c7 100755
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
@@ -61,7 +61,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print '   getJobDetails(string airavataExperimentId)'
   print '   getDataTransferDetails(string airavataExperimentId)'
   print '  string cloneExperiment(string existingExperimentID, string newExperimentName)'
-  print '  void terminateExperiment(string airavataExperimentId)'
+  print '  void terminateExperiment(string airavataExperimentId, string tokenId)'
   print '  string registerApplicationModule(string gatewayId, ApplicationModule applicationModule)'
   print '  ApplicationModule getApplicationModule(string appModuleId)'
   print '  bool updateApplicationModule(string appModuleId, ApplicationModule applicationModule)'
@@ -419,10 +419,10 @@ elif cmd == 'cloneExperiment':
   pp.pprint(client.cloneExperiment(args[0],args[1],))
 
 elif cmd == 'terminateExperiment':
-  if len(args) != 1:
-    print 'terminateExperiment requires 1 args'
+  if len(args) != 2:
+    print 'terminateExperiment requires 2 args'
     sys.exit(1)
-  pp.pprint(client.terminateExperiment(args[0],))
+  pp.pprint(client.terminateExperiment(args[0],args[1],))
 
 elif cmd == 'registerApplicationModule':
   if len(args) != 2:

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
index ded8f77..cab0463 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
@@ -566,7 +566,7 @@ class Iface:
     """
     pass
 
-  def terminateExperiment(self, airavataExperimentId):
+  def terminateExperiment(self, airavataExperimentId, tokenId):
     """
     Terminate a running experiment.
 
@@ -602,6 +602,7 @@ class Iface:
 
     Parameters:
      - airavataExperimentId
+     - tokenId
     """
     pass
 
@@ -3493,7 +3494,7 @@ class Client(Iface):
       raise result.ase
     raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result");
 
-  def terminateExperiment(self, airavataExperimentId):
+  def terminateExperiment(self, airavataExperimentId, tokenId):
     """
     Terminate a running experiment.
 
@@ -3529,14 +3530,16 @@ class Client(Iface):
 
     Parameters:
      - airavataExperimentId
+     - tokenId
     """
-    self.send_terminateExperiment(airavataExperimentId)
+    self.send_terminateExperiment(airavataExperimentId, tokenId)
     self.recv_terminateExperiment()
 
-  def send_terminateExperiment(self, airavataExperimentId):
+  def send_terminateExperiment(self, airavataExperimentId, tokenId):
     self._oprot.writeMessageBegin('terminateExperiment', TMessageType.CALL, self._seqid)
     args = terminateExperiment_args()
     args.airavataExperimentId = airavataExperimentId
+    args.tokenId = tokenId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
@@ -7876,7 +7879,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = terminateExperiment_result()
     try:
-      self._handler.terminateExperiment(args.airavataExperimentId)
+      self._handler.terminateExperiment(args.airavataExperimentId, args.tokenId)
     except apache.airavata.api.error.ttypes.InvalidRequestException, ire:
       result.ire = ire
     except apache.airavata.api.error.ttypes.ExperimentNotFoundException, enf:
@@ -15917,15 +15920,18 @@ class terminateExperiment_args:
   """
   Attributes:
    - airavataExperimentId
+   - tokenId
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRING, 'airavataExperimentId', None, None, ), # 1
+    (2, TType.STRING, 'tokenId', None, None, ), # 2
   )
 
-  def __init__(self, airavataExperimentId=None,):
+  def __init__(self, airavataExperimentId=None, tokenId=None,):
     self.airavataExperimentId = airavataExperimentId
+    self.tokenId = tokenId
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -15941,6 +15947,11 @@ class terminateExperiment_args:
           self.airavataExperimentId = iprot.readString();
         else:
           iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.tokenId = iprot.readString();
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -15955,6 +15966,10 @@ class terminateExperiment_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 1)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
+    if self.tokenId is not None:
+      oprot.writeFieldBegin('tokenId', TType.STRING, 2)
+      oprot.writeString(self.tokenId)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/generate-thrift-files.sh
----------------------------------------------------------------------
diff --git a/airavata-api/generate-thrift-files.sh b/airavata-api/generate-thrift-files.sh
index 88d38ea..bf4d4e9 100755
--- a/airavata-api/generate-thrift-files.sh
+++ b/airavata-api/generate-thrift-files.sh
@@ -46,7 +46,7 @@ fi
 #  Verify is thrift is installed, is in the path is at a specified version.
 
 REQUIRED_THRIFT_VERSION='0.9.1'
-THRIFT_EXEC=/usr/local/Cellar/thrift/0.9.1/bin/thrift
+THRIFT_EXEC=/usr/local/bin/thrift
 
 VERSION=$($THRIFT_EXEC -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" |  wc -l)
 if [ "$VERSION" -ne 1 ] ; then

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
index b12c3b8..b1f644b 100644
--- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -604,7 +604,7 @@ service Airavata {
    *       rather an Airavata Administrator will be notified to take corrective action.
    *
   */
-  void terminateExperiment(1: string airavataExperimentId)
+  void terminateExperiment(1: string airavataExperimentId, 2: string tokenId)
     throws (1: airavataErrors.InvalidRequestException ire,
             2: airavataErrors.ExperimentNotFoundException enf,
             3: airavataErrors.AiravataClientException ace,

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 80c57bd..df64638 100644
--- a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -328,7 +328,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface,
 	 * @return
 	 * @throws TException
 	 */
-	public boolean terminateExperiment(String experimentId) throws TException {
+	public boolean terminateExperiment(String experimentId, String tokenId) throws TException {
         log.infoId(experimentId, "Experiment: {} is cancelling  !!!!!", experimentId);
         return validateStatesAndCancel(experimentId);
 	}

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/modules/orchestrator/orchestrator-thrift-descriptions/orchestrator.cpi.service.thrift
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-thrift-descriptions/orchestrator.cpi.service.thrift b/modules/orchestrator/orchestrator-thrift-descriptions/orchestrator.cpi.service.thrift
index 4803408..07c0834 100644
--- a/modules/orchestrator/orchestrator-thrift-descriptions/orchestrator.cpi.service.thrift
+++ b/modules/orchestrator/orchestrator-thrift-descriptions/orchestrator.cpi.service.thrift
@@ -74,5 +74,5 @@ service OrchestratorService {
      * @return sucess/failure
      *
     **/
-  bool terminateExperiment (1: required string experimentId)
+  bool terminateExperiment (1: required string experimentId, 2: required string tokenId)
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/TestFrameworkProps.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/TestFrameworkProps.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/TestFrameworkProps.java
new file mode 100644
index 0000000..cc7f7ea
--- /dev/null
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/TestFrameworkProps.java
@@ -0,0 +1,26 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+package org.apache.airavata.testsuite.multitenantedairavata;
+
+public class TestFrameworkProps {
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/97d31b4d/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json b/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json
new file mode 100644
index 0000000..e69de29