You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2015/06/23 18:23:43 UTC

[1/8] airavata git commit: adding missing API functionality to xsede branch from master

Repository: airavata
Updated Branches:
  refs/heads/xsede-tutorial-2015 7b9418ae9 -> 82913953c


http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/experiment/ttypes.py
index 3ffe2b2..125fec6 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/experiment/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/experiment/ttypes.py
@@ -60,6 +60,32 @@ class ExperimentState:
     "UNKNOWN": 10,
   }
 
+class ExperimentSearchFields:
+  EXPERIMENT_NAME = 0
+  EXPERIMENT_DESC = 1
+  APPLICATION_ID = 2
+  FROM_DATE = 3
+  TO_DATE = 4
+  STATUS = 5
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT_NAME",
+    1: "EXPERIMENT_DESC",
+    2: "APPLICATION_ID",
+    3: "FROM_DATE",
+    4: "TO_DATE",
+    5: "STATUS",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT_NAME": 0,
+    "EXPERIMENT_DESC": 1,
+    "APPLICATION_ID": 2,
+    "FROM_DATE": 3,
+    "TO_DATE": 4,
+    "STATUS": 5,
+  }
+
 class WorkflowNodeState:
   INVOKED = 0
   EXECUTING = 1
@@ -2902,7 +2928,6 @@ class ExperimentSummary:
    - description
    - applicationId
    - experimentStatus
-   - errors
   """
 
   thrift_spec = (
@@ -2915,10 +2940,9 @@ class ExperimentSummary:
     (6, TType.STRING, 'description', None, None, ), # 6
     (7, TType.STRING, 'applicationId', None, None, ), # 7
     (8, TType.STRUCT, 'experimentStatus', (ExperimentStatus, ExperimentStatus.thrift_spec), None, ), # 8
-    (9, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 9
   )
 
-  def __init__(self, experimentID=None, projectID=None, creationTime=None, userName=None, name=None, description=None, applicationId=None, experimentStatus=None, errors=None,):
+  def __init__(self, experimentID=None, projectID=None, creationTime=None, userName=None, name=None, description=None, applicationId=None, experimentStatus=None,):
     self.experimentID = experimentID
     self.projectID = projectID
     self.creationTime = creationTime
@@ -2927,7 +2951,6 @@ class ExperimentSummary:
     self.description = description
     self.applicationId = applicationId
     self.experimentStatus = experimentStatus
-    self.errors = errors
 
   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:
@@ -2979,17 +3002,6 @@ class ExperimentSummary:
           self.experimentStatus.read(iprot)
         else:
           iprot.skip(ftype)
-      elif fid == 9:
-        if ftype == TType.LIST:
-          self.errors = []
-          (_etype136, _size133) = iprot.readListBegin()
-          for _i137 in xrange(_size133):
-            _elem138 = ErrorDetails()
-            _elem138.read(iprot)
-            self.errors.append(_elem138)
-          iprot.readListEnd()
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -3032,13 +3044,6 @@ class ExperimentSummary:
       oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 8)
       self.experimentStatus.write(oprot)
       oprot.writeFieldEnd()
-    if self.errors is not None:
-      oprot.writeFieldBegin('errors', TType.LIST, 9)
-      oprot.writeListBegin(TType.STRUCT, len(self.errors))
-      for iter139 in self.errors:
-        iter139.write(oprot)
-      oprot.writeListEnd()
-      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -3064,3 +3069,191 @@ class ExperimentSummary:
 
   def __ne__(self, other):
     return not (self == other)
+
+class ExperimentStatistics:
+  """
+  Attributes:
+   - allExperimentCount
+   - completedExperimentCount
+   - cancelledExperimentCount
+   - failedExperimentCount
+   - allExperiments
+   - completedExperiments
+   - failedExperiments
+   - cancelledExperiments
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'allExperimentCount', None, None, ), # 1
+    (2, TType.I32, 'completedExperimentCount', None, None, ), # 2
+    (3, TType.I32, 'cancelledExperimentCount', None, None, ), # 3
+    (4, TType.I32, 'failedExperimentCount', None, None, ), # 4
+    (5, TType.LIST, 'allExperiments', (TType.STRUCT,(ExperimentSummary, ExperimentSummary.thrift_spec)), None, ), # 5
+    (6, TType.LIST, 'completedExperiments', (TType.STRUCT,(ExperimentSummary, ExperimentSummary.thrift_spec)), None, ), # 6
+    (7, TType.LIST, 'failedExperiments', (TType.STRUCT,(ExperimentSummary, ExperimentSummary.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'cancelledExperiments', (TType.STRUCT,(ExperimentSummary, ExperimentSummary.thrift_spec)), None, ), # 8
+  )
+
+  def __init__(self, allExperimentCount=None, completedExperimentCount=None, cancelledExperimentCount=None, failedExperimentCount=None, allExperiments=None, completedExperiments=None, failedExperiments=None, cancelledExperiments=None,):
+    self.allExperimentCount = allExperimentCount
+    self.completedExperimentCount = completedExperimentCount
+    self.cancelledExperimentCount = cancelledExperimentCount
+    self.failedExperimentCount = failedExperimentCount
+    self.allExperiments = allExperiments
+    self.completedExperiments = completedExperiments
+    self.failedExperiments = failedExperiments
+    self.cancelledExperiments = cancelledExperiments
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.allExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.completedExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.cancelledExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.failedExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.allExperiments = []
+          (_etype136, _size133) = iprot.readListBegin()
+          for _i137 in xrange(_size133):
+            _elem138 = ExperimentSummary()
+            _elem138.read(iprot)
+            self.allExperiments.append(_elem138)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.completedExperiments = []
+          (_etype142, _size139) = iprot.readListBegin()
+          for _i143 in xrange(_size139):
+            _elem144 = ExperimentSummary()
+            _elem144.read(iprot)
+            self.completedExperiments.append(_elem144)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.failedExperiments = []
+          (_etype148, _size145) = iprot.readListBegin()
+          for _i149 in xrange(_size145):
+            _elem150 = ExperimentSummary()
+            _elem150.read(iprot)
+            self.failedExperiments.append(_elem150)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.cancelledExperiments = []
+          (_etype154, _size151) = iprot.readListBegin()
+          for _i155 in xrange(_size151):
+            _elem156 = ExperimentSummary()
+            _elem156.read(iprot)
+            self.cancelledExperiments.append(_elem156)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatistics')
+    if self.allExperimentCount is not None:
+      oprot.writeFieldBegin('allExperimentCount', TType.I32, 1)
+      oprot.writeI32(self.allExperimentCount)
+      oprot.writeFieldEnd()
+    if self.completedExperimentCount is not None:
+      oprot.writeFieldBegin('completedExperimentCount', TType.I32, 2)
+      oprot.writeI32(self.completedExperimentCount)
+      oprot.writeFieldEnd()
+    if self.cancelledExperimentCount is not None:
+      oprot.writeFieldBegin('cancelledExperimentCount', TType.I32, 3)
+      oprot.writeI32(self.cancelledExperimentCount)
+      oprot.writeFieldEnd()
+    if self.failedExperimentCount is not None:
+      oprot.writeFieldBegin('failedExperimentCount', TType.I32, 4)
+      oprot.writeI32(self.failedExperimentCount)
+      oprot.writeFieldEnd()
+    if self.allExperiments is not None:
+      oprot.writeFieldBegin('allExperiments', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.allExperiments))
+      for iter157 in self.allExperiments:
+        iter157.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.completedExperiments is not None:
+      oprot.writeFieldBegin('completedExperiments', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.completedExperiments))
+      for iter158 in self.completedExperiments:
+        iter158.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.failedExperiments is not None:
+      oprot.writeFieldBegin('failedExperiments', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.failedExperiments))
+      for iter159 in self.failedExperiments:
+        iter159.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.cancelledExperiments is not None:
+      oprot.writeFieldBegin('cancelledExperiments', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.cancelledExperiments))
+      for iter160 in self.cancelledExperiments:
+        iter160.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.allExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field allExperimentCount is unset!')
+    if self.completedExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field completedExperimentCount is unset!')
+    if self.failedExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field failedExperimentCount is unset!')
+    if self.allExperiments is None:
+      raise TProtocol.TProtocolException(message='Required field allExperiments is unset!')
+    return
+
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/ExperimentSummary.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/ExperimentSummary.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/ExperimentSummary.java
index c30e4ea..b1a1630 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/ExperimentSummary.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/ExperimentSummary.java
@@ -60,7 +60,6 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField APPLICATION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationId", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField EXPERIMENT_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentStatus", org.apache.thrift.protocol.TType.STRUCT, (short)8);
-  private static final org.apache.thrift.protocol.TField ERRORS_FIELD_DESC = new org.apache.thrift.protocol.TField("errors", org.apache.thrift.protocol.TType.LIST, (short)9);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -76,7 +75,6 @@ import org.slf4j.LoggerFactory;
   private String description; // optional
   private String applicationId; // optional
   private ExperimentStatus experimentStatus; // optional
-  private List<ErrorDetails> errors; // optional
 
   /** 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 {
@@ -87,8 +85,7 @@ import org.slf4j.LoggerFactory;
     NAME((short)5, "name"),
     DESCRIPTION((short)6, "description"),
     APPLICATION_ID((short)7, "applicationId"),
-    EXPERIMENT_STATUS((short)8, "experimentStatus"),
-    ERRORS((short)9, "errors");
+    EXPERIMENT_STATUS((short)8, "experimentStatus");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -119,8 +116,6 @@ import org.slf4j.LoggerFactory;
           return APPLICATION_ID;
         case 8: // EXPERIMENT_STATUS
           return EXPERIMENT_STATUS;
-        case 9: // ERRORS
-          return ERRORS;
         default:
           return null;
       }
@@ -163,7 +158,7 @@ import org.slf4j.LoggerFactory;
   // isset id assignments
   private static final int __CREATIONTIME_ISSET_ID = 0;
   private byte __isset_bitfield = 0;
-  private _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.DESCRIPTION,_Fields.APPLICATION_ID,_Fields.EXPERIMENT_STATUS,_Fields.ERRORS};
+  private _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.DESCRIPTION,_Fields.APPLICATION_ID,_Fields.EXPERIMENT_STATUS};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -183,9 +178,6 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.EXPERIMENT_STATUS, new org.apache.thrift.meta_data.FieldMetaData("experimentStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ExperimentStatus.class)));
-    tmpMap.put(_Fields.ERRORS, new org.apache.thrift.meta_data.FieldMetaData("errors", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ErrorDetails.class))));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ExperimentSummary.class, metaDataMap);
   }
@@ -233,13 +225,6 @@ import org.slf4j.LoggerFactory;
     if (other.isSetExperimentStatus()) {
       this.experimentStatus = new ExperimentStatus(other.experimentStatus);
     }
-    if (other.isSetErrors()) {
-      List<ErrorDetails> __this__errors = new ArrayList<ErrorDetails>(other.errors.size());
-      for (ErrorDetails other_element : other.errors) {
-        __this__errors.add(new ErrorDetails(other_element));
-      }
-      this.errors = __this__errors;
-    }
   }
 
   public ExperimentSummary deepCopy() {
@@ -257,7 +242,6 @@ import org.slf4j.LoggerFactory;
     this.description = null;
     this.applicationId = null;
     this.experimentStatus = null;
-    this.errors = null;
   }
 
   public String getExperimentID() {
@@ -443,44 +427,6 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public int getErrorsSize() {
-    return (this.errors == null) ? 0 : this.errors.size();
-  }
-
-  public java.util.Iterator<ErrorDetails> getErrorsIterator() {
-    return (this.errors == null) ? null : this.errors.iterator();
-  }
-
-  public void addToErrors(ErrorDetails elem) {
-    if (this.errors == null) {
-      this.errors = new ArrayList<ErrorDetails>();
-    }
-    this.errors.add(elem);
-  }
-
-  public List<ErrorDetails> getErrors() {
-    return this.errors;
-  }
-
-  public void setErrors(List<ErrorDetails> errors) {
-    this.errors = errors;
-  }
-
-  public void unsetErrors() {
-    this.errors = null;
-  }
-
-  /** Returns true if field errors is set (has been assigned a value) and false otherwise */
-  public boolean isSetErrors() {
-    return this.errors != null;
-  }
-
-  public void setErrorsIsSet(boolean value) {
-    if (!value) {
-      this.errors = null;
-    }
-  }
-
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case EXPERIMENT_ID:
@@ -547,14 +493,6 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case ERRORS:
-      if (value == null) {
-        unsetErrors();
-      } else {
-        setErrors((List<ErrorDetails>)value);
-      }
-      break;
-
     }
   }
 
@@ -584,9 +522,6 @@ import org.slf4j.LoggerFactory;
     case EXPERIMENT_STATUS:
       return getExperimentStatus();
 
-    case ERRORS:
-      return getErrors();
-
     }
     throw new IllegalStateException();
   }
@@ -614,8 +549,6 @@ import org.slf4j.LoggerFactory;
       return isSetApplicationId();
     case EXPERIMENT_STATUS:
       return isSetExperimentStatus();
-    case ERRORS:
-      return isSetErrors();
     }
     throw new IllegalStateException();
   }
@@ -705,15 +638,6 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_errors = true && this.isSetErrors();
-    boolean that_present_errors = true && that.isSetErrors();
-    if (this_present_errors || that_present_errors) {
-      if (!(this_present_errors && that_present_errors))
-        return false;
-      if (!this.errors.equals(that.errors))
-        return false;
-    }
-
     return true;
   }
 
@@ -810,16 +734,6 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetErrors()).compareTo(other.isSetErrors());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetErrors()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.errors, other.errors);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
     return 0;
   }
 
@@ -907,16 +821,6 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
-    if (isSetErrors()) {
-      if (!first) sb.append(", ");
-      sb.append("errors:");
-      if (this.errors == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.errors);
-      }
-      first = false;
-    }
     sb.append(")");
     return sb.toString();
   }
@@ -1046,25 +950,6 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 9: // ERRORS
-            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-              {
-                org.apache.thrift.protocol.TList _list152 = iprot.readListBegin();
-                struct.errors = new ArrayList<ErrorDetails>(_list152.size);
-                for (int _i153 = 0; _i153 < _list152.size; ++_i153)
-                {
-                  ErrorDetails _elem154;
-                  _elem154 = new ErrorDetails();
-                  _elem154.read(iprot);
-                  struct.errors.add(_elem154);
-                }
-                iprot.readListEnd();
-              }
-              struct.setErrorsIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1124,20 +1009,6 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
-      if (struct.errors != null) {
-        if (struct.isSetErrors()) {
-          oprot.writeFieldBegin(ERRORS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.errors.size()));
-            for (ErrorDetails _iter155 : struct.errors)
-            {
-              _iter155.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1172,10 +1043,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetExperimentStatus()) {
         optionals.set(3);
       }
-      if (struct.isSetErrors()) {
-        optionals.set(4);
-      }
-      oprot.writeBitSet(optionals, 5);
+      oprot.writeBitSet(optionals, 4);
       if (struct.isSetCreationTime()) {
         oprot.writeI64(struct.creationTime);
       }
@@ -1188,15 +1056,6 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetExperimentStatus()) {
         struct.experimentStatus.write(oprot);
       }
-      if (struct.isSetErrors()) {
-        {
-          oprot.writeI32(struct.errors.size());
-          for (ErrorDetails _iter156 : struct.errors)
-          {
-            _iter156.write(oprot);
-          }
-        }
-      }
     }
 
     @Override
@@ -1210,7 +1069,7 @@ import org.slf4j.LoggerFactory;
       struct.setUserNameIsSet(true);
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(5);
+      BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.creationTime = iprot.readI64();
         struct.setCreationTimeIsSet(true);
@@ -1228,20 +1087,6 @@ import org.slf4j.LoggerFactory;
         struct.experimentStatus.read(iprot);
         struct.setExperimentStatusIsSet(true);
       }
-      if (incoming.get(4)) {
-        {
-          org.apache.thrift.protocol.TList _list157 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.errors = new ArrayList<ErrorDetails>(_list157.size);
-          for (int _i158 = 0; _i158 < _list157.size; ++_i158)
-          {
-            ErrorDetails _elem159;
-            _elem159 = new ErrorDetails();
-            _elem159.read(iprot);
-            struct.errors.add(_elem159);
-          }
-        }
-        struct.setErrorsIsSet(true);
-      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 7f027f5..2ee3299 100644
--- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -20,7 +20,7 @@
 
 /**
  * Application Programming Interface definition for Apache Airavata Services.
- *   this parent thrift file is contains all service interfaces. The data models are 
+ *   this parent thrift file is contains all service interfaces. The data models are
  *   described in respective thrift files.
 */
 
@@ -69,7 +69,8 @@ service Airavata {
   string getAPIVersion()
         throws (1: airavataErrors.InvalidRequestException ire,
                 2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
+                3: airavataErrors.AiravataSystemException ase,
+                4: airavataErrors.AuthorizationException ae)
 
   string addGateway(1: required workspaceModel.Gateway gateway)
          throws (1: airavataErrors.InvalidRequestException ire,
@@ -501,6 +502,43 @@ service Airavata {
                         2: airavataErrors.AiravataClientException ace,
                         3: airavataErrors.AiravataSystemException ase)
 
+  /**
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param filters
+   *       map of multiple filter criteria.
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+    list<experimentModel.ExperimentSummary> searchExperiments(1: required string gatewayId,
+                            2: required string userName, 3: map<experimentModel.ExperimentSearchFields, string> filters,
+                            4: required i32 limit, 5: required i32 offset)
+                throws (1: airavataErrors.InvalidRequestException ire,
+                        2: airavataErrors.AiravataClientException ace,
+                        3: airavataErrors.AiravataSystemException ase)
+
+    /**
+     * Get Experiment Statisitics for the given gateway for a specific time period
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param fromTime
+     *       Starting date time
+     * @param toTime
+     *       Ending data time
+     **/
+    experimentModel.ExperimentStatistics getExperimentStatistics(1: required string gatewayId,
+                            2: required i64 fromTime, 3: required i64 toTime)
+                throws (1: airavataErrors.InvalidRequestException ire,
+                        2: airavataErrors.AiravataClientException ace,
+                        3: airavataErrors.AiravataSystemException ase)
+
    /**
     * Get all Experiments within a Project
     *
@@ -581,7 +619,7 @@ service Airavata {
      *      the ExperimentMetadata is a required field.
      *
      * @return
-     *   The server-side generated airavata experiment globally unique identifier.
+     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
      *
      * @throws org.apache.airavata.model.error.InvalidRequestException
      *    For any incorrect forming of the request itself.
@@ -622,13 +660,13 @@ service Airavata {
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
-   * 
+   *
    * @throws org.apache.airavata.model.error.ExperimentNotFoundException
    *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
+   *
    * @throws org.apache.airavata.model.error.AiravataClientException
    *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
+   *
    *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
    *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
    *         gateway registration steps and retry this request.
@@ -667,13 +705,13 @@ service Airavata {
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
-   * 
+   *
    * @throws org.apache.airavata.model.error.ExperimentNotFoundException
    *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
+   *
    * @throws org.apache.airavata.model.error.AiravataClientException
    *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
+   *
    *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
    *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
    *         gateway registration steps and retry this request.
@@ -728,7 +766,7 @@ service Airavata {
    *     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 
+   *   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.
    *
@@ -737,13 +775,13 @@ service Airavata {
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
-   * 
+   *
    * @throws org.apache.airavata.model.error.ExperimentNotFoundException
    *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
+   *
    * @throws org.apache.airavata.model.error.AiravataClientException
    *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
+   *
    *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
    *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
    *         gateway registration steps and retry this request.
@@ -807,7 +845,7 @@ service Airavata {
 
   /**
    * 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. 
+   *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
    *
    * @param newExperimentName
    *    experiment name that should be used in the cloned experiment
@@ -818,17 +856,17 @@ service Airavata {
    *      should be shared public by default.
    *
    * @return
-   *   The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
-   * 
+   *
    * @throws org.apache.airavata.model.error.ExperimentNotFoundException
    *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
+   *
    * @throws org.apache.airavata.model.error.AiravataClientException
    *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
+   *
    *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
    *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
    *         gateway registration steps and retry this request.
@@ -862,13 +900,13 @@ service Airavata {
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
-   * 
+   *
    * @throws org.apache.airavata.model.error.ExperimentNotFoundException
    *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
+   *
    * @throws org.apache.airavata.model.error.AiravataClientException
    *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
+   *
    *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
    *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
    *         gateway registration steps and retry this request.

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/airavata-api/thrift-interface-descriptions/experimentModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/experimentModel.thrift b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
index 51aaca7..f9d76ab 100644
--- a/airavata-api/thrift-interface-descriptions/experimentModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
@@ -27,7 +27,7 @@ namespace cpp apache.airavata.model.workspace.experiment
 namespace py apache.airavata.model.workspace.experiment
 
 /*
- * This file describes the definitions of the Airavata Experiment Data Structures. Each of the
+ * This file describes the definitions of the.airavata.registry.core.experiment.Data Structures. Each of the
  *   language specific Airavata Client SDK's will translate this neutral data model into an
  *   appropriate form for passing to the Airavata Server Execution API Calls.
  * 
@@ -72,6 +72,15 @@ enum ExperimentState {
     UNKNOWN
 }
 
+enum ExperimentSearchFields {
+    EXPERIMENT_NAME,
+    EXPERIMENT_DESC,
+    APPLICATION_ID,
+    FROM_DATE,
+    TO_DATE,
+    STATUS
+}
+
 struct ExperimentStatus {
     1: required ExperimentState experimentState,
     2: optional i64 timeOfStateChange
@@ -399,5 +408,15 @@ struct ExperimentSummary {
     6: optional string description,
     7: optional string applicationId,
     8: optional ExperimentStatus experimentStatus,
-    9: optional list<ErrorDetails> errors
+}
+
+struct ExperimentStatistics {
+    1: required i32 allExperimentCount,
+    2: required i32 completedExperimentCount,
+    3: optional i32 cancelledExperimentCount,
+    4: required i32 failedExperimentCount,
+    5: required list<ExperimentSummary> allExperiments,
+    6: optional list<ExperimentSummary> completedExperiments,
+    7: optional list<ExperimentSummary> failedExperiments,
+    8: optional list<ExperimentSummary> cancelledExperiments,
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
index 0a38664..55a4d0f 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
@@ -28,6 +28,7 @@ public enum ResourceType {
     CONFIGURATION,
     GATEWAY_WORKER,
     EXPERIMENT,
+    EXPERIMENT_SUMMARY,
     NOTIFICATION_EMAIL,
     EXPERIMENT_INPUT,
     EXPERIMENT_OUTPUT,

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index 536c054..e2253d8 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -2905,18 +2905,17 @@ public class ExperimentRegistry {
                         toTime = Long.parseLong(filters.get(field));
                     }
                 }
+                List<ExperimentSummaryResource> experimentSummaryResources;
                 if (fromTime != 0 && toTime != 0) {
-                    return searchExperimentsByCreationTime(new Timestamp(fromTime), new Timestamp(toTime)
-                            , limit, offset, orderByIdentifier, resultOrderType);
-                } else if(fil.get(AbstractResource.StatusConstants.STATE) != null ) {
-                    return searchExperimentsByStatus(fil, limit, offset, orderByIdentifier, resultOrderType);
+                    experimentSummaryResources = workerResource.searchExperiments(new Timestamp(fromTime), new Timestamp(toTime), fil
+                            ,limit , offset, orderByIdentifier, resultOrderType);
                 } else {
-                    List<ExperimentResource> experimentResources = workerResource
-                            .searchExperiments(fil, limit, offset, orderByIdentifier, resultOrderType);
-                    if (experimentResources != null && !experimentResources.isEmpty()) {
-                        for (ExperimentResource ex : experimentResources) {
-                            experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-                        }
+                    experimentSummaryResources = workerResource
+                            .searchExperiments(null, null, fil, limit, offset, orderByIdentifier, resultOrderType);
+                }
+                if (experimentSummaryResources != null && !experimentSummaryResources.isEmpty()) {
+                    for (ExperimentSummaryResource ex : experimentSummaryResources) {
+                        experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
                     }
                 }
                 return experimentSummaries;
@@ -2929,86 +2928,54 @@ public class ExperimentRegistry {
         return null;
     }
 
-    /**
-     * To get list of experiments of specified state
-     * @param filters
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentSummary> searchExperimentsByStatus(Map<String, String> filters) throws RegistryException {
-        return searchExperimentsByStatus(filters, -1, -1, null, null);
-    }
 
     /**
-     * To get list of experiments of specified state with pagination and ordering
-     *
+     * Method to get experiment execution statistics for a specific time period
      * @param filters
-     * @param limit
-     * @param offset
-     * @param orderByIdentifier
-     * @param resultOrderType
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentSummary> searchExperimentsByStatus(Map<String, String> filters, int limit,
-        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+    public ExperimentStatistics getExperimentStatistics(Map<String,String> filters) throws RegistryException {
         try {
-            List<ExperimentSummary> experimentSummaries = new ArrayList<ExperimentSummary>();
-            List<ExperimentResource> experimentResources = workerResource.searchExperimentsByState(filters, limit, offset,
-                    orderByIdentifier, resultOrderType);
-            if (experimentResources != null && !experimentResources.isEmpty()) {
-                for (ExperimentResource ex : experimentResources) {
-                    experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-                }
-            }
-            return experimentSummaries;
+            ExperimentStatistics experimentStatistics = new ExperimentStatistics();
+            ExperimentStatisticsResource experimentStatisticsResource = workerResource.getExperimentStatistics(
+                    filters.get(Constants.FieldConstants.ExperimentConstants.GATEWAY),
+                    new Timestamp(Long.parseLong(filters.get(Constants.FieldConstants.ExperimentConstants.FROM_DATE))),
+                    new Timestamp(Long.parseLong(filters.get(Constants.FieldConstants.ExperimentConstants.TO_DATE)))
+            );
 
-        } catch (Exception e) {
-            logger.error("Error while retrieving experiment summary from registry", e);
-            throw new RegistryException(e);
-        }
-    }
+            experimentStatistics.setAllExperimentCount(experimentStatisticsResource.getAllExperimentCount());
+            experimentStatistics.setCompletedExperimentCount(experimentStatisticsResource.getCompletedExperimentCount());
+            experimentStatistics.setFailedExperimentCount(experimentStatisticsResource.getFailedExperimentCount());
+            experimentStatistics.setCancelledExperimentCount(experimentStatisticsResource.getCancelledExperimentCount());
 
+            ArrayList<ExperimentSummary> experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getAllExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setAllExperiments(experimentSummaries);
 
-    /**
-     * Search experiements based on creation time within specified time interval.
-     * @param fromTime
-     * @param toTime
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentSummary> searchExperimentsByCreationTime(Timestamp fromTime, Timestamp toTime) throws RegistryException {
-        return searchExperimentsByCreationTime(fromTime, toTime, -1, -1, null, null);
-    }
+            experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getCompletedExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setCompletedExperiments(experimentSummaries);
 
-    /**
-     * Search experiements based on creation time within specified time interval with pagination.
-     * @param fromTime
-     * @param toTime
-     * @param limit
-     * @param offset
-     * @param orderByIdentifier
-     * @param resultOrderType
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentSummary> searchExperimentsByCreationTime(
-            Timestamp fromTime, Timestamp toTime, int limit,
-            int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
-        try {
-            List<ExperimentSummary> experimentSummaries = new ArrayList<ExperimentSummary>();
-            List<ExperimentResource> experimentResources
-                    = workerResource.searchExperimentsByCreationTime(fromTime, toTime, limit, offset,
-                    orderByIdentifier, resultOrderType);
-            if (experimentResources != null && !experimentResources.isEmpty()) {
-                for (ExperimentResource ex : experimentResources) {
-                    experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-                }
+            experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getFailedExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
             }
-            return experimentSummaries;
+            experimentStatistics.setFailedExperiments(experimentSummaries);
 
-        } catch (Exception e) {
-            logger.error("Error while retrieving experiment summary from registry", e);
+            experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getCancelledExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setCancelledExperiments(experimentSummaries);
+
+            return experimentStatistics;
+        } catch (RegistryException e) {
+            logger.error("Error while retrieving experiment statistics from registry", e);
             throw new RegistryException(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
index 953b11e..8ced7a3 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
@@ -544,6 +544,9 @@ public class RegistryImpl implements Registry {
                         result.add(ex);
                     }
                     return result;
+                case EXPERIMENT_STATISTICS:
+                    result.add(experimentRegistry.getExperimentStatistics(filters));
+                    return result;
                 default:
                     logger.error("Unsupported data type...", new UnsupportedOperationException());
                     throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment.java
index 1c2d430..4a30d6d 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment.java
@@ -26,6 +26,7 @@ import org.apache.openjpa.persistence.DataCache;
 import javax.persistence.*;
 import java.io.Serializable;
 import java.sql.Timestamp;
+import java.util.Collection;
 
 @Entity
 @Table(name = "EXPERIMENT")
@@ -73,6 +74,9 @@ public class Experiment implements Serializable {
     @JoinColumn(name = "EXECUTION_USER", referencedColumnName = "USER_NAME")
     private Users user;
 
+    @OneToMany(fetch=FetchType.LAZY, mappedBy = "experiment")
+    private Collection<Status> statuses;
+
     public String getExpId() {
         return expId;
     }
@@ -208,4 +212,12 @@ public class Experiment implements Serializable {
     public void setGatewayExecutionId(String gatewayExecutionId) {
         this.gatewayExecutionId = gatewayExecutionId;
     }
+
+    public Collection<Status> getStatuses() {
+        return statuses;
+    }
+
+    public void setStatuses(Collection<Status> statuses) {
+        this.statuses = statuses;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentStatisticsResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentStatisticsResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentStatisticsResource.java
new file mode 100644
index 0000000..16e8542
--- /dev/null
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentStatisticsResource.java
@@ -0,0 +1,133 @@
+/*
+ *
+ * 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.persistance.registry.jpa.resources;
+
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.el.MethodNotFoundException;
+import java.util.List;
+
+public class ExperimentStatisticsResource extends AbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentStatisticsResource.class);
+
+    private int allExperimentCount;
+    private int completedExperimentCount;
+    private int cancelledExperimentCount;
+    private int failedExperimentCount;
+
+    private List<ExperimentSummaryResource> allExperiments;
+    private List<ExperimentSummaryResource> completedExperiments;
+    private List<ExperimentSummaryResource> cancelledExperiments;
+    private List<ExperimentSummaryResource> failedExperiments;
+
+    @Override
+    public ExperimentResource create(ResourceType type) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public void remove(ResourceType type, Object name) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public ExperimentResource get(ResourceType type, Object name) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public List<Resource> get(ResourceType type) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public void save() throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    public int getAllExperimentCount() {
+        return allExperimentCount;
+    }
+
+    public void setAllExperimentCount(int allExperimentCount) {
+        this.allExperimentCount = allExperimentCount;
+    }
+
+    public int getCompletedExperimentCount() {
+        return completedExperimentCount;
+    }
+
+    public void setCompletedExperimentCount(int completedExperimentCount) {
+        this.completedExperimentCount = completedExperimentCount;
+    }
+
+    public int getCancelledExperimentCount() {
+        return cancelledExperimentCount;
+    }
+
+    public void setCancelledExperimentCount(int cancelledExperimentCount) {
+        this.cancelledExperimentCount = cancelledExperimentCount;
+    }
+
+    public int getFailedExperimentCount() {
+        return failedExperimentCount;
+    }
+
+    public void setFailedExperimentCount(int failedExperimentCount) {
+        this.failedExperimentCount = failedExperimentCount;
+    }
+
+    public List<ExperimentSummaryResource> getAllExperiments() {
+        return allExperiments;
+    }
+
+    public void setAllExperiments(List<ExperimentSummaryResource> allExperiments) {
+        this.allExperiments = allExperiments;
+    }
+
+    public List<ExperimentSummaryResource> getCompletedExperiments() {
+        return completedExperiments;
+    }
+
+    public void setCompletedExperiments(List<ExperimentSummaryResource> completedExperiments) {
+        this.completedExperiments = completedExperiments;
+    }
+
+    public List<ExperimentSummaryResource> getCancelledExperiments() {
+        return cancelledExperiments;
+    }
+
+    public void setCancelledExperiments(List<ExperimentSummaryResource> cancelledExperiments) {
+        this.cancelledExperiments = cancelledExperiments;
+    }
+
+    public List<ExperimentSummaryResource> getFailedExperiments() {
+        return failedExperiments;
+    }
+
+    public void setFailedExperiments(List<ExperimentSummaryResource> failedExperiments) {
+        this.failedExperiments = failedExperiments;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
new file mode 100644
index 0000000..10c1fff
--- /dev/null
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
@@ -0,0 +1,135 @@
+/*
+ *
+ * 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.persistance.registry.jpa.resources;
+
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.el.MethodNotFoundException;
+import java.sql.Timestamp;
+import java.util.List;
+
+public class ExperimentSummaryResource extends AbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentSummaryResource.class);
+
+    private String executionUser;
+    private String expID;
+    private String projectID;
+    private Timestamp creationTime;
+    private String expName;
+    private String description;
+    private String applicationId;
+
+    private StatusResource status;
+
+    @Override
+    public ExperimentResource create(ResourceType type) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public void remove(ResourceType type, Object name) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public ExperimentResource get(ResourceType type, Object name) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    @Override
+    public List<Resource> get(ResourceType type) throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+
+    @Override
+    public void save() throws RegistryException {
+        throw new MethodNotFoundException();
+    }
+
+    public String getExecutionUser() {
+        return executionUser;
+    }
+
+    public void setExecutionUser(String executionUser) {
+        this.executionUser = executionUser;
+    }
+
+    public String getExpID() {
+        return expID;
+    }
+
+    public void setExpID(String expID) {
+        this.expID = expID;
+    }
+
+    public String getProjectID() {
+        return projectID;
+    }
+
+    public void setProjectID(String projectID) {
+        this.projectID = projectID;
+    }
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public String getExpName() {
+        return expName;
+    }
+
+    public void setExpName(String expName) {
+        this.expName = expName;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getApplicationId() {
+        return applicationId;
+    }
+
+    public void setApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+    }
+
+    public StatusResource getStatus() {
+        return status;
+    }
+
+    public void setStatus(StatusResource status) {
+        this.status = status;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
index d3609b8..5b9dfe4 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
@@ -27,20 +27,21 @@ import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.RegistryException;
 import org.apache.airavata.registry.cpi.ResultOrderType;
 import org.apache.airavata.registry.cpi.utils.Constants;
 import org.apache.airavata.registry.cpi.utils.StatusType;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.persistence.OpenJPAQuery;
+import org.apache.openjpa.persistence.jdbc.FetchMode;
+import org.apache.openjpa.persistence.jdbc.JDBCFetchPlan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.airavata.registry.cpi.RegistryException;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
 public class WorkerResource extends AbstractResource {
     private final static Logger logger = LoggerFactory.getLogger(WorkerResource.class);
@@ -612,21 +613,13 @@ public class WorkerResource extends AbstractResource {
     }
 
     /**
-     * To search experiments of user with the given filter criteria. All the matching results will be sent.
-     * Results are not ordered in any order
-     * @param filters
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentResource> searchExperiments (Map<String, String> filters) throws RegistryException{
-        return searchExperiments(filters, -1, -1, null, null);
-    }
-
-    /**
-     * To search the experiments of user with the given filter criteria and retrieve the results with
+     * To search the experiments of user with the given time period and filter criteria and retrieve the results with
      * pagination support. Results can be ordered based on an identifier (i.e column) either ASC or
-     * DESC. But in the current implementation ordering is only supported based on creationTime
+     * DESC. But in the current implementation ordering is only supported based on creationTime. Also if
+     * time period values i.e fromTime and toTime are null they will be ignored.
      *
+     * @param fromTime
+     * @param toTime
      * @param filters
      * @param limit
      * @param offset
@@ -635,116 +628,35 @@ public class WorkerResource extends AbstractResource {
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentResource> searchExperiments(Map<String, String> filters, int limit,
-                                                      int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
-
-        List<ExperimentResource> result = new ArrayList<ExperimentResource>();
+    public List<ExperimentSummaryResource> searchExperiments(Timestamp fromTime, Timestamp toTime, Map<String, String> filters, int limit,
+                                                             int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+        List<ExperimentSummaryResource> result = new ArrayList();
         EntityManager em = null;
         try {
-            String query = "SELECT e from Experiment e WHERE ";
-            if (filters != null && filters.size() != 0) {
-                for (String field : filters.keySet()) {
-                    String filterVal = filters.get(field);
-                    if (field.equals(ExperimentConstants.EXECUTION_USER)) {
-                        query += "e." + field + "= '" + filterVal + "' AND ";
-                    }else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
-                        query += "e." + field + "= '" + filterVal + "' AND ";
-                    } else if (field.equals(ExperimentConstants.PROJECT_ID)) {
-                        query += "e." + field + "= '" + filterVal + "' AND ";
-                    } else {
-                        if (filterVal.contains("*")){
-                            filterVal = filterVal.replaceAll("\\*", "");
-                        }
-                        query += "e." + field + " LIKE '%" + filterVal + "%' AND ";
-                    }
-                }
-            }
-            query = query.substring(0, query.length() - 5);
-
-            //ordering
-            if( orderByIdentifier != null && resultOrderType != null
-                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
-                String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
-                query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + " " + order;
-            }
-
-            em = ResourceUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-
-            //pagination
-            if(offset>=0 && limit >=0){
-                q = em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
-            }else{
-                q = em.createQuery(query);
+            String query = "SELECT e, s FROM Experiment e " +
+                    ",Status s WHERE e.expId=s.expId AND " +
+                    "s.statusType='" + StatusType.EXPERIMENT + "' AND ";
+            if (filters.get(StatusConstants.STATE) != null) {
+                String experimentState = ExperimentState.valueOf(filters.get(StatusConstants.STATE)).toString();
+                query += "s.state='" + experimentState + "' AND ";
             }
 
-            List resultList = q.getResultList();
-            for (Object o : resultList) {
-                Experiment experiment = (Experiment) o;
-                ExperimentResource experimentResource =
-                        (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
-                result.add(experimentResource);
-            }
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new RegistryException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
+            if (toTime != null && fromTime != null && toTime.after(fromTime)) {
+                query += "e.creationTime > '" + fromTime + "' " + "AND e.creationTime <'" + toTime + "' AND ";
             }
-        }
-        return result;
-    }
-
-    /**
-     * Method to get experiments by state
-     * @param filters
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentResource> searchExperimentsByState (Map<String, String> filters) throws RegistryException{
-        return searchExperimentsByState(filters, -1, -1, null, null);
-    }
-
-    /**
-     * Method to get experiments of the given state with pagination and ordering
-     * @param filters
-     * @param limit
-     * @param offset
-     * @param orderByIdentifier
-     * @param resultOrderType
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentResource> searchExperimentsByState (Map<String, String> filters, int limit, int offset,
-            Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException{
-        List<ExperimentResource> result = new ArrayList<ExperimentResource>();
-        EntityManager em = null;
-        try {
-            String experimentState = ExperimentState.valueOf(filters.get(StatusConstants.STATE)).toString();
-            String query = "SELECT e FROM Status s " +
-                    "JOIN s.experiment e " +
-                    "WHERE s.state='" + experimentState +  "' " +
-                    "AND s.statusType='" + StatusType.EXPERIMENT + "' AND ";
 
             filters.remove(StatusConstants.STATE);
-            if (filters.size() != 0) {
+            if (filters != null && filters.size() != 0) {
                 for (String field : filters.keySet()) {
                     String filterVal = filters.get(field);
                     if (field.equals(ExperimentConstants.EXECUTION_USER)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
-                    }else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
+                    } else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
                     } else if (field.equals(ExperimentConstants.PROJECT_ID)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
                     } else {
-                        if (filterVal.contains("*")){
+                        if (filterVal.contains("*")) {
                             filterVal = filterVal.replaceAll("\\*", "");
                         }
                         query += "e." + field + " LIKE '%" + filterVal + "%' AND ";
@@ -754,8 +666,8 @@ public class WorkerResource extends AbstractResource {
             query = query.substring(0, query.length() - 5);
 
             //ordering
-            if( orderByIdentifier != null && resultOrderType != null
-                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
+            if (orderByIdentifier != null && resultOrderType != null
+                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)) {
                 String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
                 query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + " " + order;
             }
@@ -765,17 +677,23 @@ public class WorkerResource extends AbstractResource {
             Query q;
 
             //pagination
-            if(offset>=0 && limit >=0){
+            if (offset >= 0 && limit >= 0) {
                 q = em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
-            }else{
+            } else {
                 q = em.createQuery(query);
             }
+            OpenJPAQuery kq = OpenJPAPersistence.cast(q);
+            JDBCFetchPlan fetch = (JDBCFetchPlan) kq.getFetchPlan();
+            fetch.setEagerFetchMode(FetchMode.JOIN);
 
             List resultList = q.getResultList();
             for (Object o : resultList) {
-                Experiment experiment = (Experiment) o;
-                ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
-                result.add(experimentResource);
+                Experiment experiment = (Experiment) ((Object[]) o)[0];
+                Status experimentStatus = (Status) ((Object[]) o)[1];
+                experiment.setStatuses(Arrays.asList(experimentStatus));
+                ExperimentSummaryResource experimentSummaryResource =
+                        (ExperimentSummaryResource) Utils.getResource(ResourceType.EXPERIMENT_SUMMARY, experiment);
+                result.add(experimentSummaryResource);
             }
             em.getTransaction().commit();
             em.close();
@@ -784,7 +702,7 @@ public class WorkerResource extends AbstractResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -793,102 +711,66 @@ public class WorkerResource extends AbstractResource {
         return result;
     }
 
-    /**
-     * Search experiments from creation time between interval. Returns all results
-     * @param fromTime
-     * @param toTime
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentResource> searchExperimentsByCreationTime (Timestamp fromTime, Timestamp toTime) throws RegistryException{
-        return  searchExperimentsByCreationTime(fromTime, toTime, -1, -1, null, null);
-    }
-
 
     /**
-     * Search experiments from creation time between interval. Results are ordered creation time DESC.
-     * Supports pagination
+     * Method to get experiment statistics for a gateway
      *
+     * @param gatewayId
      * @param fromTime
      * @param toTime
-     * @param limit
-     * @param offset
-     * @param orderByIdentifier
-     * @param resultOrderType
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentResource> searchExperimentsByCreationTime(
-            Timestamp fromTime, Timestamp toTime, int limit, int offset, Object orderByIdentifier,
-            ResultOrderType resultOrderType) throws RegistryException{
+    public ExperimentStatisticsResource getExperimentStatistics(String gatewayId, Timestamp fromTime, Timestamp toTime) throws RegistryException {
+        ExperimentStatisticsResource experimentStatisticsResource = new ExperimentStatisticsResource();
+        List<ExperimentSummaryResource> allExperiments = getExperimentStatisticsForState(null, gatewayId, fromTime, toTime);
+        experimentStatisticsResource.setAllExperimentCount(allExperiments.size());
+        experimentStatisticsResource.setAllExperiments(allExperiments);
 
-        List<ExperimentResource> result = new ArrayList<ExperimentResource>();
-        EntityManager em = null;
-        try {
-            String query = "SELECT e FROM Experiment e " +
-                    "WHERE e.creationTime > '" + fromTime +  "' " +
-                    "AND e.creationTime <'" + toTime + "'";
+        List<ExperimentSummaryResource> completedExperiments = getExperimentStatisticsForState(ExperimentState.COMPLETED, gatewayId, fromTime, toTime);
+        experimentStatisticsResource.setCompletedExperimentCount(completedExperiments.size());
+        experimentStatisticsResource.setCompletedExperiments(completedExperiments);
 
-            //ordering
-            if( orderByIdentifier != null && resultOrderType != null
-                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
-                String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
-                query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + " " + order;
-            }
+        List<ExperimentSummaryResource> failedExperiments = getExperimentStatisticsForState(ExperimentState.FAILED, gatewayId, fromTime, toTime);
+        experimentStatisticsResource.setFailedExperimentCount(failedExperiments.size());
+        experimentStatisticsResource.setFailedExperiments(failedExperiments);
 
-            em = ResourceUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-
-            //pagination
-            if(offset>=0 && limit >=0){
-                q = em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
-            }else{
-                q = em.createQuery(query);
-            }
+        List<ExperimentSummaryResource> cancelledExperiments = getExperimentStatisticsForState(ExperimentState.CANCELED, gatewayId, fromTime, toTime);
+        experimentStatisticsResource.setCancelledExperimentCount(cancelledExperiments.size());
+        experimentStatisticsResource.setCancelledExperiments(cancelledExperiments);
 
-            List resultList = q.getResultList();
-            for (Object o : resultList) {
-                Experiment experiment = (Experiment) o;
-                ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
-                result.add(experimentResource);
-            }
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new RegistryException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return result;
+        return experimentStatisticsResource;
     }
 
-    /**
-     *
-     * @return list of experiments for the user
-     */
-    public List<ExperimentResource> getExperimentsByCaching(String user) throws RegistryException{
-        List<ExperimentResource> result = new ArrayList<ExperimentResource>();
+    private List<ExperimentSummaryResource> getExperimentStatisticsForState(
+            ExperimentState expState, String gatewayId, Timestamp fromTime, Timestamp toTime) throws RegistryException {
         EntityManager em = null;
+        List<ExperimentSummaryResource> result = new ArrayList();
         try {
-            String query = "SELECT e from Experiment e WHERE e.executionUser = '" + user + "'";
+            String query = "SELECT e, s FROM Experiment e " +
+                    ",Status s WHERE e.expId=s.expId AND " +
+                    "s.statusType='" + StatusType.EXPERIMENT + "' AND ";
+            if (expState != null) {
+                query += "s.state='" + expState.toString() + "' AND ";
+            }
+            query += "e.creationTime > '" + fromTime + "' " + "AND e.creationTime <'" + toTime + "' AND ";
+            query += "e." + ExperimentConstants.GATEWAY_ID + "= '" + gatewayId + "'";
+
             em = ResourceUtils.getEntityManager();
-//        OpenJPAEntityManagerFactory oemf = OpenJPAPersistence.cast(em.getEntityManagerFactory());
-//        QueryResultCache qcache = oemf.getQueryResultCache();
-            // qcache.evictAll(Experiment.class);
             em.getTransaction().begin();
             Query q = em.createQuery(query);
+            OpenJPAQuery kq = OpenJPAPersistence.cast(q);
+            JDBCFetchPlan fetch = (JDBCFetchPlan) kq.getFetchPlan();
+            fetch.setEagerFetchMode(FetchMode.JOIN);
+
             List resultList = q.getResultList();
             for (Object o : resultList) {
-                Experiment experiment = (Experiment) o;
-                ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
-                result.add(experimentResource);
+                Experiment experiment = (Experiment) ((Object[]) o)[0];
+                Status experimentStatus = (Status) ((Object[]) o)[1];
+                experiment.setStatuses(Arrays.asList(experimentStatus));
+                ExperimentSummaryResource experimentSummaryResource =
+                        (ExperimentSummaryResource) Utils.getResource(ResourceType.EXPERIMENT_SUMMARY, experiment);
+                result.add(experimentSummaryResource);
             }
             em.getTransaction().commit();
             em.close();
@@ -897,7 +779,7 @@ public class WorkerResource extends AbstractResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
index 8f385e8..53b3919 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
@@ -21,40 +21,12 @@
 
 package org.apache.airavata.persistance.registry.jpa.utils;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.airavata.common.utils.StringUtil;
-import org.apache.airavata.model.appcatalog.appinterface.*;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.model.workspace.experiment.ActionableGroup;
-import org.apache.airavata.model.workspace.experiment.AdvancedInputDataHandling;
-import org.apache.airavata.model.workspace.experiment.AdvancedOutputDataHandling;
-import org.apache.airavata.model.workspace.experiment.ApplicationStatus;
-import org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling;
-import org.apache.airavata.model.workspace.experiment.CorrectiveAction;
-import org.apache.airavata.model.workspace.experiment.DataTransferDetails;
-import org.apache.airavata.model.workspace.experiment.ErrorCategory;
-import org.apache.airavata.model.workspace.experiment.ErrorDetails;
-import org.apache.airavata.model.workspace.experiment.ExecutionUnit;
-import org.apache.airavata.model.workspace.experiment.Experiment;
-import org.apache.airavata.model.workspace.experiment.ExperimentState;
-import org.apache.airavata.model.workspace.experiment.ExperimentStatus;
-import org.apache.airavata.model.workspace.experiment.ExperimentSummary;
-import org.apache.airavata.model.workspace.experiment.JobDetails;
-import org.apache.airavata.model.workspace.experiment.JobState;
-import org.apache.airavata.model.workspace.experiment.JobStatus;
-import org.apache.airavata.model.workspace.experiment.QualityOfServiceParams;
-import org.apache.airavata.model.workspace.experiment.TaskDetails;
-import org.apache.airavata.model.workspace.experiment.TaskState;
-import org.apache.airavata.model.workspace.experiment.TaskStatus;
-import org.apache.airavata.model.workspace.experiment.TransferState;
-import org.apache.airavata.model.workspace.experiment.TransferStatus;
-import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
-import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails;
-import org.apache.airavata.model.workspace.experiment.WorkflowNodeState;
-import org.apache.airavata.model.workspace.experiment.WorkflowNodeStatus;
+import org.apache.airavata.model.workspace.experiment.*;
 import org.apache.airavata.persistance.registry.jpa.Resource;
 import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.resources.*;
@@ -62,6 +34,9 @@ import org.apache.airavata.registry.cpi.RegistryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class ThriftDataModelConversion {
     private final static Logger logger = LoggerFactory.getLogger(ThriftDataModelConversion.class);
 
@@ -159,26 +134,20 @@ public class ThriftDataModelConversion {
         return null;
     }
 
-    public static ExperimentSummary getExperimentSummary(ExperimentResource experimentResource) throws RegistryException {
-        if (experimentResource != null){
+    public static ExperimentSummary getExperimentSummary(ExperimentSummaryResource experimentSummaryResource) throws RegistryException {
+        if (experimentSummaryResource != null){
             ExperimentSummary experimentSummary = new ExperimentSummary();
-            if (experimentResource.getProject()!= null){
-                experimentSummary.setProjectID(experimentResource.getProject().getId());
-            }
-            experimentSummary.setExperimentID(experimentResource.getExpID());
-            experimentSummary.setCreationTime(experimentResource.getCreationTime().getTime());
-            experimentSummary.setUserName(experimentResource.getExecutionUser());
-            experimentSummary.setName(experimentResource.getExpName());
-            experimentSummary.setDescription(experimentResource.getDescription());
-            experimentSummary.setApplicationId(experimentResource.getApplicationId());
-            StatusResource experimentStatus = experimentResource.getExperimentStatus();
+            experimentSummary.setProjectID(experimentSummaryResource.getProjectID());
+            experimentSummary.setExperimentID(experimentSummaryResource.getExpID());
+            experimentSummary.setCreationTime(experimentSummaryResource.getCreationTime().getTime());
+            experimentSummary.setUserName(experimentSummaryResource.getExecutionUser());
+            experimentSummary.setName(experimentSummaryResource.getExpName());
+            experimentSummary.setDescription(experimentSummaryResource.getDescription());
+            experimentSummary.setApplicationId(experimentSummaryResource.getApplicationId());
+            StatusResource experimentStatus = experimentSummaryResource.getStatus();
             if (experimentStatus != null){
                 experimentSummary.setExperimentStatus(getExperimentStatus(experimentStatus));
             }
-            List<ErrorDetailResource> errorDetails = experimentResource.getErrorDetails();
-            if (errorDetails!= null && !errorDetails.isEmpty()){
-                experimentSummary.setErrors(getErrorDetailList(errorDetails));
-            }
             return experimentSummary;
         }
         return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/RegistryModelType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/RegistryModelType.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/RegistryModelType.java
index b6557f3..d3ef8f6 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/RegistryModelType.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/RegistryModelType.java
@@ -26,6 +26,7 @@ public enum RegistryModelType {
     PROJECT,
     GATEWAY,
     EXPERIMENT,
+    EXPERIMENT_STATISTICS,
     EXPERIMENT_INPUT,
     EXPERIMENT_OUTPUT,
     EXPERIMENT_STATUS,


[5/8] airavata git commit: adding missing API functionality to xsede branch from master

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 8c7d1ee..0501def 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
@@ -122,6 +122,14 @@ uint32_t Airavata_getAPIVersion_result::read(::apache::thrift::protocol::TProtoc
           xfer += iprot->skip(ftype);
         }
         break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -156,6 +164,10 @@ uint32_t Airavata_getAPIVersion_result::write(::apache::thrift::protocol::TProto
     xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
     xfer += this->ase.write(oprot);
     xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
@@ -214,6 +226,14 @@ uint32_t Airavata_getAPIVersion_presult::read(::apache::thrift::protocol::TProto
           xfer += iprot->skip(ftype);
         }
         break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -3274,10 +3294,600 @@ uint32_t Airavata_deleteProject_presult::read(::apache::thrift::protocol::TProto
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->pnfe.read(iprot);
+          this->__isset.pnfe = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjects_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_gatewayId = false;
+  bool isset_userName = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          isset_userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_userName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjects_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjects_args");
+
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->userName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjects_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjects_pargs");
+
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString((*(this->gatewayId)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->userName)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjects_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->success.clear();
+            uint32_t _size26;
+            ::apache::thrift::protocol::TType _etype29;
+            xfer += iprot->readListBegin(_etype29, _size26);
+            this->success.resize(_size26);
+            uint32_t _i30;
+            for (_i30 = 0; _i30 < _size26; ++_i30)
+            {
+              xfer += this->success[_i30].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjects_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjects_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter31;
+      for (_iter31 = this->success.begin(); _iter31 != this->success.end(); ++_iter31)
+      {
+        xfer += (*_iter31).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjects_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            (*(this->success)).clear();
+            uint32_t _size32;
+            ::apache::thrift::protocol::TType _etype35;
+            xfer += iprot->readListBegin(_etype35, _size32);
+            (*(this->success)).resize(_size32);
+            uint32_t _i36;
+            for (_i36 = 0; _i36 < _size32; ++_i36)
+            {
+              xfer += (*(this->success))[_i36].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_gatewayId = false;
+  bool isset_userName = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          isset_userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_userName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjectsWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_args");
+
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->userName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 3);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->offset);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjectsWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_pargs");
+
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString((*(this->gatewayId)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->userName)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 3);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->offset)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjectsWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->success.clear();
+            uint32_t _size37;
+            ::apache::thrift::protocol::TType _etype40;
+            xfer += iprot->readListBegin(_etype40, _size37);
+            this->success.resize(_size37);
+            uint32_t _i41;
+            for (_i41 = 0; _i41 < _size37; ++_i41)
+            {
+              xfer += this->success[_i41].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjectsWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter42;
+      for (_iter42 = this->success.begin(); _iter42 != this->success.end(); ++_iter42)
+      {
+        xfer += (*_iter42).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_getAllUserProjectsWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            (*(this->success)).clear();
+            uint32_t _size43;
+            ::apache::thrift::protocol::TType _etype46;
+            xfer += iprot->readListBegin(_etype46, _size43);
+            (*(this->success)).resize(_size43);
+            uint32_t _i47;
+            for (_i47 = 0; _i47 < _size43; ++_i47)
+            {
+              xfer += (*(this->success))[_i47].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->pnfe.read(iprot);
-          this->__isset.pnfe = true;
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -3294,7 +3904,7 @@ uint32_t Airavata_deleteProject_presult::read(::apache::thrift::protocol::TProto
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjects_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3307,6 +3917,7 @@ uint32_t Airavata_getAllUserProjects_args::read(::apache::thrift::protocol::TPro
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
+  bool isset_projectName = false;
 
   while (true)
   {
@@ -3332,6 +3943,14 @@ uint32_t Airavata_getAllUserProjects_args::read(::apache::thrift::protocol::TPro
           xfer += iprot->skip(ftype);
         }
         break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->projectName);
+          isset_projectName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -3345,12 +3964,14 @@ uint32_t Airavata_getAllUserProjects_args::read(::apache::thrift::protocol::TPro
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_projectName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjects_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllUserProjects_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -3360,14 +3981,18 @@ uint32_t Airavata_getAllUserProjects_args::write(::apache::thrift::protocol::TPr
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->projectName);
+  xfer += oprot->writeFieldEnd();
+
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjects_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllUserProjects_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -3377,12 +4002,16 @@ uint32_t Airavata_getAllUserProjects_pargs::write(::apache::thrift::protocol::TP
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->projectName)));
+  xfer += oprot->writeFieldEnd();
+
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjects_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3406,14 +4035,14 @@ uint32_t Airavata_getAllUserProjects_result::read(::apache::thrift::protocol::TP
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size26;
-            ::apache::thrift::protocol::TType _etype29;
-            xfer += iprot->readListBegin(_etype29, _size26);
-            this->success.resize(_size26);
-            uint32_t _i30;
-            for (_i30 = 0; _i30 < _size26; ++_i30)
+            uint32_t _size48;
+            ::apache::thrift::protocol::TType _etype51;
+            xfer += iprot->readListBegin(_etype51, _size48);
+            this->success.resize(_size48);
+            uint32_t _i52;
+            for (_i52 = 0; _i52 < _size48; ++_i52)
             {
-              xfer += this->success[_i30].read(iprot);
+              xfer += this->success[_i52].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -3458,20 +4087,20 @@ uint32_t Airavata_getAllUserProjects_result::read(::apache::thrift::protocol::TP
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjects_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_getAllUserProjects_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter31;
-      for (_iter31 = this->success.begin(); _iter31 != this->success.end(); ++_iter31)
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter53;
+      for (_iter53 = this->success.begin(); _iter53 != this->success.end(); ++_iter53)
       {
-        xfer += (*_iter31).write(oprot);
+        xfer += (*_iter53).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -3494,7 +4123,7 @@ uint32_t Airavata_getAllUserProjects_result::write(::apache::thrift::protocol::T
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjects_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3518,14 +4147,14 @@ uint32_t Airavata_getAllUserProjects_presult::read(::apache::thrift::protocol::T
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size32;
-            ::apache::thrift::protocol::TType _etype35;
-            xfer += iprot->readListBegin(_etype35, _size32);
-            (*(this->success)).resize(_size32);
-            uint32_t _i36;
-            for (_i36 = 0; _i36 < _size32; ++_i36)
+            uint32_t _size54;
+            ::apache::thrift::protocol::TType _etype57;
+            xfer += iprot->readListBegin(_etype57, _size54);
+            (*(this->success)).resize(_size54);
+            uint32_t _i58;
+            for (_i58 = 0; _i58 < _size54; ++_i58)
             {
-              xfer += (*(this->success))[_i36].read(iprot);
+              xfer += (*(this->success))[_i58].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -3570,7 +4199,7 @@ uint32_t Airavata_getAllUserProjects_presult::read(::apache::thrift::protocol::T
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3583,6 +4212,7 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
+  bool isset_projectName = false;
   bool isset_limit = false;
   bool isset_offset = false;
 
@@ -3611,6 +4241,14 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::
         }
         break;
       case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->projectName);
+          isset_projectName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           xfer += iprot->readI32(this->limit);
           isset_limit = true;
@@ -3618,7 +4256,7 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
+      case 5:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           xfer += iprot->readI32(this->offset);
           isset_offset = true;
@@ -3639,6 +4277,8 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_projectName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_limit)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_offset)
@@ -3646,9 +4286,9 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjectsWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -3658,11 +4298,15 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::write(::apache::thrift:
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 3);
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->projectName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
   xfer += oprot->writeI32(this->limit);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
   xfer += oprot->writeI32(this->offset);
   xfer += oprot->writeFieldEnd();
 
@@ -3671,9 +4315,9 @@ uint32_t Airavata_getAllUserProjectsWithPagination_args::write(::apache::thrift:
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjectsWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -3683,11 +4327,15 @@ uint32_t Airavata_getAllUserProjectsWithPagination_pargs::write(::apache::thrift
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 3);
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->projectName)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
   xfer += oprot->writeI32((*(this->limit)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
   xfer += oprot->writeI32((*(this->offset)));
   xfer += oprot->writeFieldEnd();
 
@@ -3696,7 +4344,7 @@ uint32_t Airavata_getAllUserProjectsWithPagination_pargs::write(::apache::thrift
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjectsWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3720,14 +4368,14 @@ uint32_t Airavata_getAllUserProjectsWithPagination_result::read(::apache::thrift
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size37;
-            ::apache::thrift::protocol::TType _etype40;
-            xfer += iprot->readListBegin(_etype40, _size37);
-            this->success.resize(_size37);
-            uint32_t _i41;
-            for (_i41 = 0; _i41 < _size37; ++_i41)
+            uint32_t _size59;
+            ::apache::thrift::protocol::TType _etype62;
+            xfer += iprot->readListBegin(_etype62, _size59);
+            this->success.resize(_size59);
+            uint32_t _i63;
+            for (_i63 = 0; _i63 < _size59; ++_i63)
             {
-              xfer += this->success[_i41].read(iprot);
+              xfer += this->success[_i63].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -3772,20 +4420,20 @@ uint32_t Airavata_getAllUserProjectsWithPagination_result::read(::apache::thrift
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjectsWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter42;
-      for (_iter42 = this->success.begin(); _iter42 != this->success.end(); ++_iter42)
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter64;
+      for (_iter64 = this->success.begin(); _iter64 != this->success.end(); ++_iter64)
       {
-        xfer += (*_iter42).write(oprot);
+        xfer += (*_iter64).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -3808,7 +4456,7 @@ uint32_t Airavata_getAllUserProjectsWithPagination_result::write(::apache::thrif
   return xfer;
 }
 
-uint32_t Airavata_getAllUserProjectsWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3832,14 +4480,14 @@ uint32_t Airavata_getAllUserProjectsWithPagination_presult::read(::apache::thrif
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size43;
-            ::apache::thrift::protocol::TType _etype46;
-            xfer += iprot->readListBegin(_etype46, _size43);
-            (*(this->success)).resize(_size43);
-            uint32_t _i47;
-            for (_i47 = 0; _i47 < _size43; ++_i47)
+            uint32_t _size65;
+            ::apache::thrift::protocol::TType _etype68;
+            xfer += iprot->readListBegin(_etype68, _size65);
+            (*(this->success)).resize(_size65);
+            uint32_t _i69;
+            for (_i69 = 0; _i69 < _size65; ++_i69)
             {
-              xfer += (*(this->success))[_i47].read(iprot);
+              xfer += (*(this->success))[_i69].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -3884,7 +4532,7 @@ uint32_t Airavata_getAllUserProjectsWithPagination_presult::read(::apache::thrif
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3897,7 +4545,7 @@ uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::proto
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_projectName = false;
+  bool isset_description = false;
 
   while (true)
   {
@@ -3925,8 +4573,8 @@ uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::proto
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->projectName);
-          isset_projectName = true;
+          xfer += iprot->readString(this->description);
+          isset_description = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -3944,14 +4592,14 @@ uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::proto
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_projectName)
+  if (!isset_description)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -3961,8 +4609,8 @@ uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::prot
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->projectName);
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3970,9 +4618,9 @@ uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -3982,8 +4630,8 @@ uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::pro
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->projectName)));
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3991,7 +4639,7 @@ uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4015,14 +4663,14 @@ uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::pro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size48;
-            ::apache::thrift::protocol::TType _etype51;
-            xfer += iprot->readListBegin(_etype51, _size48);
-            this->success.resize(_size48);
-            uint32_t _i52;
-            for (_i52 = 0; _i52 < _size48; ++_i52)
+            uint32_t _size70;
+            ::apache::thrift::protocol::TType _etype73;
+            xfer += iprot->readListBegin(_etype73, _size70);
+            this->success.resize(_size70);
+            uint32_t _i74;
+            for (_i74 = 0; _i74 < _size70; ++_i74)
             {
-              xfer += this->success[_i52].read(iprot);
+              xfer += this->success[_i74].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4067,20 +4715,20 @@ uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter53;
-      for (_iter53 = this->success.begin(); _iter53 != this->success.end(); ++_iter53)
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter75;
+      for (_iter75 = this->success.begin(); _iter75 != this->success.end(); ++_iter75)
       {
-        xfer += (*_iter53).write(oprot);
+        xfer += (*_iter75).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -4103,7 +4751,7 @@ uint32_t Airavata_searchProjectsByProjectName_result::write(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4127,14 +4775,14 @@ uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::pr
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size54;
-            ::apache::thrift::protocol::TType _etype57;
-            xfer += iprot->readListBegin(_etype57, _size54);
-            (*(this->success)).resize(_size54);
-            uint32_t _i58;
-            for (_i58 = 0; _i58 < _size54; ++_i58)
+            uint32_t _size76;
+            ::apache::thrift::protocol::TType _etype79;
+            xfer += iprot->readListBegin(_etype79, _size76);
+            (*(this->success)).resize(_size76);
+            uint32_t _i80;
+            for (_i80 = 0; _i80 < _size76; ++_i80)
             {
-              xfer += (*(this->success))[_i58].read(iprot);
+              xfer += (*(this->success))[_i80].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4179,7 +4827,7 @@ uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4192,7 +4840,7 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache:
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_projectName = false;
+  bool isset_description = false;
   bool isset_limit = false;
   bool isset_offset = false;
 
@@ -4222,8 +4870,8 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache:
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->projectName);
-          isset_projectName = true;
+          xfer += iprot->readString(this->description);
+          isset_description = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -4257,7 +4905,7 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache:
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_projectName)
+  if (!isset_description)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_limit)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -4266,9 +4914,9 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache:
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -4278,8 +4926,8 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::write(::apache
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->projectName);
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
@@ -4295,9 +4943,9 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::write(::apache
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectNameWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -4307,8 +4955,8 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_pargs::write(::apach
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->projectName)));
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
@@ -4324,7 +4972,7 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_pargs::write(::apach
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4348,14 +4996,14 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::read(::apach
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size59;
-            ::apache::thrift::protocol::TType _etype62;
-            xfer += iprot->readListBegin(_etype62, _size59);
-            this->success.resize(_size59);
-            uint32_t _i63;
-            for (_i63 = 0; _i63 < _size59; ++_i63)
+            uint32_t _size81;
+            ::apache::thrift::protocol::TType _etype84;
+            xfer += iprot->readListBegin(_etype84, _size81);
+            this->success.resize(_size81);
+            uint32_t _i85;
+            for (_i85 = 0; _i85 < _size81; ++_i85)
             {
-              xfer += this->success[_i63].read(iprot);
+              xfer += this->success[_i85].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4400,20 +5048,20 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::read(::apach
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter64;
-      for (_iter64 = this->success.begin(); _iter64 != this->success.end(); ++_iter64)
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter86;
+      for (_iter86 = this->success.begin(); _iter86 != this->success.end(); ++_iter86)
       {
-        xfer += (*_iter64).write(oprot);
+        xfer += (*_iter86).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -4436,7 +5084,7 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::write(::apac
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectNameWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4460,14 +5108,14 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_presult::read(::apac
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size65;
-            ::apache::thrift::protocol::TType _etype68;
-            xfer += iprot->readListBegin(_etype68, _size65);
-            (*(this->success)).resize(_size65);
-            uint32_t _i69;
-            for (_i69 = 0; _i69 < _size65; ++_i69)
+            uint32_t _size87;
+            ::apache::thrift::protocol::TType _etype90;
+            xfer += iprot->readListBegin(_etype90, _size87);
+            (*(this->success)).resize(_size87);
+            uint32_t _i91;
+            for (_i91 = 0; _i91 < _size87; ++_i91)
             {
-              xfer += (*(this->success))[_i69].read(iprot);
+              xfer += (*(this->success))[_i91].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4512,7 +5160,7 @@ uint32_t Airavata_searchProjectsByProjectNameWithPagination_presult::read(::apac
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4525,7 +5173,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::proto
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_description = false;
+  bool isset_expName = false;
 
   while (true)
   {
@@ -4553,8 +5201,8 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::proto
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->description);
-          isset_description = true;
+          xfer += iprot->readString(this->expName);
+          isset_expName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -4572,14 +5220,14 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::proto
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_description)
+  if (!isset_expName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -4589,8 +5237,8 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::prot
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->description);
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->expName);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -4598,9 +5246,9 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -4610,8 +5258,8 @@ uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::pro
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->description)));
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->expName)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -4619,7 +5267,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4643,14 +5291,14 @@ uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::pro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size70;
-            ::apache::thrift::protocol::TType _etype73;
-            xfer += iprot->readListBegin(_etype73, _size70);
-            this->success.resize(_size70);
-            uint32_t _i74;
-            for (_i74 = 0; _i74 < _size70; ++_i74)
+            uint32_t _size92;
+            ::apache::thrift::protocol::TType _etype95;
+            xfer += iprot->readListBegin(_etype95, _size92);
+            this->success.resize(_size92);
+            uint32_t _i96;
+            for (_i96 = 0; _i96 < _size92; ++_i96)
             {
-              xfer += this->success[_i74].read(iprot);
+              xfer += this->success[_i96].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4695,20 +5343,20 @@ uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter75;
-      for (_iter75 = this->success.begin(); _iter75 != this->success.end(); ++_iter75)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter97;
+      for (_iter97 = this->success.begin(); _iter97 != this->success.end(); ++_iter97)
       {
-        xfer += (*_iter75).write(oprot);
+        xfer += (*_iter97).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -4731,7 +5379,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_result::write(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4755,14 +5403,14 @@ uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::pr
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size76;
-            ::apache::thrift::protocol::TType _etype79;
-            xfer += iprot->readListBegin(_etype79, _size76);
-            (*(this->success)).resize(_size76);
-            uint32_t _i80;
-            for (_i80 = 0; _i80 < _size76; ++_i80)
+            uint32_t _size98;
+            ::apache::thrift::protocol::TType _etype101;
+            xfer += iprot->readListBegin(_etype101, _size98);
+            (*(this->success)).resize(_size98);
+            uint32_t _i102;
+            for (_i102 = 0; _i102 < _size98; ++_i102)
             {
-              xfer += (*(this->success))[_i80].read(iprot);
+              xfer += (*(this->success))[_i102].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4807,7 +5455,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4820,7 +5468,7 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache:
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_description = false;
+  bool isset_expName = false;
   bool isset_limit = false;
   bool isset_offset = false;
 
@@ -4850,8 +5498,8 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache:
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->description);
-          isset_description = true;
+          xfer += iprot->readString(this->expName);
+          isset_expName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -4885,7 +5533,7 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache:
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_description)
+  if (!isset_expName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_limit)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -4894,9 +5542,9 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache:
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByNameWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -4906,8 +5554,8 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::write(::apache
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->description);
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->expName);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
@@ -4923,9 +5571,9 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::write(::apache
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDescWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByNameWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -4935,8 +5583,8 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_pargs::write(::apach
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->description)));
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->expName)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
@@ -4952,7 +5600,7 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_pargs::write(::apach
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByNameWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4976,14 +5624,14 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::read(::apach
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size81;
-            ::apache::thrift::protocol::TType _etype84;
-            xfer += iprot->readListBegin(_etype84, _size81);
-            this->success.resize(_size81);
-            uint32_t _i85;
-            for (_i85 = 0; _i85 < _size81; ++_i85)
+            uint32_t _size103;
+            ::apache::thrift::protocol::TType _etype106;
+            xfer += iprot->readListBegin(_etype106, _size103);
+            this->success.resize(_size103);
+            uint32_t _i107;
+            for (_i107 = 0; _i107 < _size103; ++_i107)
             {
-              xfer += this->success[_i85].read(iprot);
+              xfer += this->success[_i107].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5028,20 +5676,20 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::read(::apach
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByNameWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter86;
-      for (_iter86 = this->success.begin(); _iter86 != this->success.end(); ++_iter86)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter108;
+      for (_iter108 = this->success.begin(); _iter108 != this->success.end(); ++_iter108)
       {
-        xfer += (*_iter86).write(oprot);
+        xfer += (*_iter108).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -5064,7 +5712,7 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::write(::apac
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDescWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByNameWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5088,14 +5736,14 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_presult::read(::apac
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size87;
-            ::apache::thrift::protocol::TType _etype90;
-            xfer += iprot->readListBegin(_etype90, _size87);
-            (*(this->success)).resize(_size87);
-            uint32_t _i91;
-            for (_i91 = 0; _i91 < _size87; ++_i91)
+            uint32_t _size109;
+            ::apache::thrift::protocol::TType _etype112;
+            xfer += iprot->readListBegin(_etype112, _size109);
+            (*(this->success)).resize(_size109);
+            uint32_t _i113;
+            for (_i113 = 0; _i113 < _size109; ++_i113)
             {
-              xfer += (*(this->success))[_i91].read(iprot);
+              xfer += (*(this->success))[_i113].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5140,7 +5788,7 @@ uint32_t Airavata_searchProjectsByProjectDescWithPagination_presult::read(::apac
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5153,7 +5801,7 @@ uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol:
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_expName = false;
+  bool isset_description = false;
 
   while (true)
   {
@@ -5181,8 +5829,8 @@ uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol:
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->expName);
-          isset_expName = true;
+          xfer += iprot->readString(this->description);
+          isset_description = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -5200,14 +5848,14 @@ uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol:
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_expName)
+  if (!isset_description)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -5217,8 +5865,8 @@ uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->expName);
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5226,9 +5874,9 @@ uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -5238,8 +5886,8 @@ uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protoco
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->expName)));
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5247,7 +5895,7 @@ uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protoco
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5271,14 +5919,14 @@ uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protoco
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size92;
-            ::apache::thrift::protocol::TType _etype95;
-            xfer += iprot->readListBegin(_etype95, _size92);
-            this->success.resize(_size92);
-            uint32_t _i96;
-            for (_i96 = 0; _i96 < _size92; ++_i96)
+            uint32_t _size114;
+            ::apache::thrift::protocol::TType _etype117;
+            xfer += iprot->readListBegin(_etype117, _size114);
+            this->success.resize(_size114);
+            uint32_t _i118;
+            for (_i118 = 0; _i118 < _size114; ++_i118)
             {
-              xfer += this->success[_i96].read(iprot);
+              xfer += this->success[_i118].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5323,20 +5971,20 @@ uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protoco
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter97;
-      for (_iter97 = this->success.begin(); _iter97 != this->success.end(); ++_iter97)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter119;
+      for (_iter119 = this->success.begin(); _iter119 != this->success.end(); ++_iter119)
       {
-        xfer += (*_iter97).write(oprot);
+        xfer += (*_iter119).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -5359,7 +6007,7 @@ uint32_t Airavata_searchExperimentsByName_result::write(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5383,14 +6031,14 @@ uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protoc
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size98;
-            ::apache::thrift::protocol::TType _etype101;
-            xfer += iprot->readListBegin(_etype101, _size98);
-            (*(this->success)).resize(_size98);
-            uint32_t _i102;
-            for (_i102 = 0; _i102 < _size98; ++_i102)
+            uint32_t _size120;
+            ::apache::thrift::protocol::TType _etype123;
+            xfer += iprot->readListBegin(_etype123, _size120);
+            (*(this->success)).resize(_size120);
+            uint32_t _i124;
+            for (_i124 = 0; _i124 < _size120; ++_i124)
             {
-              xfer += (*(this->success))[_i102].read(iprot);
+              xfer += (*(this->success))[_i124].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5435,7 +6083,7 @@ uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDescWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5448,7 +6096,7 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thr
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_expName = false;
+  bool isset_description = false;
   bool isset_limit = false;
   bool isset_offset = false;
 
@@ -5478,8 +6126,8 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thr
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->expName);
-          isset_expName = true;
+          xfer += iprot->readString(this->description);
+          isset_description = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -5513,7 +6161,7 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thr
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_expName)
+  if (!isset_description)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_limit)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -5522,9 +6170,9 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thr
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByNameWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDescWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDescWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -5534,8 +6182,8 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_args::write(::apache::th
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->expName);
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
@@ -5551,9 +6199,9 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_args::write(::apache::th
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByNameWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDescWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDescWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -5563,8 +6211,8 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_pargs::write(::apache::t
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->expName)));
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
@@ -5580,7 +6228,7 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_pargs::write(::apache::t
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByNameWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDescWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5604,14 +6252,14 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_result::read(::apache::t
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size103;
-            ::apache::thrift::protocol::TType _etype106;
-            xfer += iprot->readListBegin(_etype106, _size103);
-            this->success.resize(_size103);
-            uint32_t _i107;
-            for (_i107 = 0; _i107 < _size103; ++_i107)
+            uint32_t _size125;
+            ::apache::thrift::protocol::TType _etype128;
+            xfer += iprot->readListBegin(_etype128, _size125);
+            this->success.resize(_size125);
+            uint32_t _i129;
+            for (_i129 = 0; _i129 < _size125; ++_i129)
             {
-              xfer += this->success[_i107].read(iprot);
+              xfer += this->success[_i129].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5656,20 +6304,20 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_result::read(::apache::t
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByNameWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDescWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDescWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter108;
-      for (_iter108 = this->success.begin(); _iter108 != this->success.end(); ++_iter108)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter130;
+      for (_iter130 = this->success.begin(); _iter130 != this->success.end(); ++_iter130)
       {
-        xfer += (*_iter108).write(oprot);
+        xfer += (*_iter130).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -5692,7 +6340,7 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_result::write(::apache::
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByNameWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDescWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5716,14 +6364,14 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_presult::read(::apache::
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size109;
-            ::apache::thrift::protocol::TType _etype112;
-            xfer += iprot->readListBegin(_etype112, _size109);
-            (*(this->success)).resize(_size109);
-            uint32_t _i113;
-            for (_i113 = 0; _i113 < _size109; ++_i113)
+            uint32_t _size131;
+            ::apache::thrift::protocol::TType _etype134;
+            xfer += iprot->readListBegin(_etype134, _size131);
+            (*(this->success)).resize(_size131);
+            uint32_t _i135;
+            for (_i135 = 0; _i135 < _size131; ++_i135)
             {
-              xfer += (*(this->success))[_i113].read(iprot);
+              xfer += (*(this->success))[_i135].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5768,7 +6416,7 @@ uint32_t Airavata_searchExperimentsByNameWithPagination_presult::read(::apache::
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByApplication_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5781,7 +6429,7 @@ uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol:
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_description = false;
+  bool isset_applicationId = false;
 
   while (true)
   {
@@ -5809,8 +6457,8 @@ uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol:
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->description);
-          isset_description = true;
+          xfer += iprot->readString(this->applicationId);
+          isset_applicationId = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -5828,14 +6476,14 @@ uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol:
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_description)
+  if (!isset_applicationId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplication_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -5845,8 +6493,8 @@ uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->description);
+  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->applicationId);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5854,9 +6502,9 @@ uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplication_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -5866,8 +6514,8 @@ uint32_t Airavata_searchExperimentsByDesc_pargs::write(::apache::thrift::protoco
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot-

<TRUNCATED>

[3/8] airavata git commit: adding missing API functionality to xsede branch from master

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 3938ddd..7ec2f28 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
@@ -47,6 +47,8 @@ interface AiravataIf {
   public function searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset);
   public function searchExperimentsByCreationTime($gatewayId, $userName, $fromTime, $toTime);
   public function searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset);
+  public function searchExperiments($gatewayId, $userName, $filters, $limit, $offset);
+  public function getExperimentStatistics($gatewayId, $fromTime, $toTime);
   public function getAllExperimentsInProject($projectId);
   public function getAllExperimentsInProjectWithPagination($projectId, $limit, $offset);
   public function getAllUserExperiments($gatewayId, $userName);
@@ -212,6 +214,9 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     if ($result->ase !== null) {
       throw $result->ase;
     }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
     throw new \Exception("getAPIVersion failed: unknown result");
   }
 
@@ -2009,6 +2014,132 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperimentsByCreationTimeWithPagination failed: unknown result");
   }
 
+  public function searchExperiments($gatewayId, $userName, $filters, $limit, $offset)
+  {
+    $this->send_searchExperiments($gatewayId, $userName, $filters, $limit, $offset);
+    return $this->recv_searchExperiments();
+  }
+
+  public function send_searchExperiments($gatewayId, $userName, $filters, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchExperiments_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->filters = $filters;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchExperiments', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchExperiments', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchExperiments()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchExperiments_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchExperiments_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      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 \Exception("searchExperiments failed: unknown result");
+  }
+
+  public function getExperimentStatistics($gatewayId, $fromTime, $toTime)
+  {
+    $this->send_getExperimentStatistics($gatewayId, $fromTime, $toTime);
+    return $this->recv_getExperimentStatistics();
+  }
+
+  public function send_getExperimentStatistics($gatewayId, $fromTime, $toTime)
+  {
+    $args = new \Airavata\API\Airavata_getExperimentStatistics_args();
+    $args->gatewayId = $gatewayId;
+    $args->fromTime = $fromTime;
+    $args->toTime = $toTime;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getExperimentStatistics', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getExperimentStatistics', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getExperimentStatistics()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getExperimentStatistics_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getExperimentStatistics_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      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 \Exception("getExperimentStatistics failed: unknown result");
+  }
+
   public function getAllExperimentsInProject($projectId)
   {
     $this->send_getAllExperimentsInProject($projectId);
@@ -7893,6 +8024,7 @@ class Airavata_getAPIVersion_result {
   public $ire = null;
   public $ace = null;
   public $ase = null;
+  public $ae = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -7916,6 +8048,11 @@ class Airavata_getAPIVersion_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AiravataSystemException',
           ),
+        4 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -7931,6 +8068,9 @@ class Airavata_getAPIVersion_result {
       if (isset($vals['ase'])) {
         $this->ase = $vals['ase'];
       }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
     }
   }
 
@@ -7984,217 +8124,10 @@ class Airavata_getAPIVersion_result {
             $xfer += $input->skip($ftype);
           }
           break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_result');
-    if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ire !== null) {
-      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
-      $xfer += $this->ire->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ace !== null) {
-      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
-      $xfer += $this->ace->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ase !== null) {
-      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
-      $xfer += $this->ase->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class Airavata_addGateway_args {
-  static $_TSPEC;
-
-  public $gateway = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'gateway',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Gateway',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['gateway'])) {
-        $this->gateway = $vals['gateway'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'Airavata_addGateway_args';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->gateway = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->gateway->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_addGateway_args');
-    if ($this->gateway !== null) {
-      if (!is_object($this->gateway)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('gateway', TType::STRUCT, 1);
-      $xfer += $this->gateway->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class Airavata_addGateway_result {
-  static $_TSPEC;
-
-  public $success = null;
-  public $ire = null;
-  public $ace = null;
-  public $ase = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRING,
-          ),
-        1 => array(
-          'var' => 'ire',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\InvalidRequestException',
-          ),
-        2 => array(
-          'var' => 'ace',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataClientException',
-          ),
-        3 => array(
-          'var' => 'ase',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataSystemException',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
-      if (isset($vals['ire'])) {
-        $this->ire = $vals['ire'];
-      }
-      if (isset($vals['ace'])) {
-        $this->ace = $vals['ace'];
-      }
-      if (isset($vals['ase'])) {
-        $this->ase = $vals['ase'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'Airavata_addGateway_result';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->ire = new \Airavata\API\Error\InvalidRequestException();
-            $xfer += $this->ire->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->ace = new \Airavata\API\Error\AiravataClientException();
-            $xfer += $this->ace->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
+        case 4:
           if ($ftype == TType::STRUCT) {
-            $this->ase = new \Airavata\API\Error\AiravataSystemException();
-            $xfer += $this->ase->read($input);
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8211,7 +8144,7 @@ class Airavata_addGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_addGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_result');
     if ($this->success !== null) {
       $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
       $xfer += $output->writeString($this->success);
@@ -8232,6 +8165,11 @@ class Airavata_addGateway_result {
       $xfer += $this->ase->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -8239,38 +8177,30 @@ class Airavata_addGateway_result {
 
 }
 
-class Airavata_updateGateway_args {
+class Airavata_addGateway_args {
   static $_TSPEC;
 
-  public $gatewayId = null;
-  public $updatedGateway = null;
+  public $gateway = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'updatedGateway',
+          'var' => 'gateway',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Gateway',
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['updatedGateway'])) {
-        $this->updatedGateway = $vals['updatedGateway'];
+      if (isset($vals['gateway'])) {
+        $this->gateway = $vals['gateway'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateGateway_args';
+    return 'Airavata_addGateway_args';
   }
 
   public function read($input)
@@ -8289,16 +8219,9 @@ class Airavata_updateGateway_args {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
           if ($ftype == TType::STRUCT) {
-            $this->updatedGateway = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->updatedGateway->read($input);
+            $this->gateway = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->gateway->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8315,18 +8238,13 @@ class Airavata_updateGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateGateway_args');
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedGateway !== null) {
-      if (!is_object($this->updatedGateway)) {
+    $xfer += $output->writeStructBegin('Airavata_addGateway_args');
+    if ($this->gateway !== null) {
+      if (!is_object($this->gateway)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('updatedGateway', TType::STRUCT, 2);
-      $xfer += $this->updatedGateway->write($output);
+      $xfer += $output->writeFieldBegin('gateway', TType::STRUCT, 1);
+      $xfer += $this->gateway->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -8336,9 +8254,10 @@ class Airavata_updateGateway_args {
 
 }
 
-class Airavata_updateGateway_result {
+class Airavata_addGateway_result {
   static $_TSPEC;
 
+  public $success = null;
   public $ire = null;
   public $ace = null;
   public $ase = null;
@@ -8346,6 +8265,10 @@ class Airavata_updateGateway_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRING,
+          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -8364,6 +8287,9 @@ class Airavata_updateGateway_result {
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -8377,7 +8303,7 @@ class Airavata_updateGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_updateGateway_result';
+    return 'Airavata_addGateway_result';
   }
 
   public function read($input)
@@ -8395,6 +8321,13 @@ class Airavata_updateGateway_result {
       }
       switch ($fid)
       {
+        case 0:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -8431,7 +8364,12 @@ class Airavata_updateGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_addGateway_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -8454,10 +8392,11 @@ class Airavata_updateGateway_result {
 
 }
 
-class Airavata_getGateway_args {
+class Airavata_updateGateway_args {
   static $_TSPEC;
 
   public $gatewayId = null;
+  public $updatedGateway = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -8466,17 +8405,25 @@ class Airavata_getGateway_args {
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
+        2 => array(
+          'var' => 'updatedGateway',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Gateway',
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
+      if (isset($vals['updatedGateway'])) {
+        $this->updatedGateway = $vals['updatedGateway'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getGateway_args';
+    return 'Airavata_updateGateway_args';
   }
 
   public function read($input)
@@ -8501,6 +8448,14 @@ class Airavata_getGateway_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->updatedGateway = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->updatedGateway->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -8513,12 +8468,20 @@ class Airavata_getGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_updateGateway_args');
     if ($this->gatewayId !== null) {
       $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->updatedGateway !== null) {
+      if (!is_object($this->updatedGateway)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('updatedGateway', TType::STRUCT, 2);
+      $xfer += $this->updatedGateway->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -8526,10 +8489,9 @@ class Airavata_getGateway_args {
 
 }
 
-class Airavata_getGateway_result {
+class Airavata_updateGateway_result {
   static $_TSPEC;
 
-  public $success = null;
   public $ire = null;
   public $ace = null;
   public $ase = null;
@@ -8537,11 +8499,6 @@ class Airavata_getGateway_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Gateway',
-          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -8560,9 +8517,6 @@ class Airavata_getGateway_result {
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -8576,7 +8530,7 @@ class Airavata_getGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_getGateway_result';
+    return 'Airavata_updateGateway_result';
   }
 
   public function read($input)
@@ -8594,14 +8548,6 @@ class Airavata_getGateway_result {
       }
       switch ($fid)
       {
-        case 0:
-          if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->success->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -8638,15 +8584,7 @@ class Airavata_getGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getGateway_result');
-    if ($this->success !== null) {
-      if (!is_object($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
-      $xfer += $this->success->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
+    $xfer += $output->writeStructBegin('Airavata_updateGateway_result');
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -8669,7 +8607,7 @@ class Airavata_getGateway_result {
 
 }
 
-class Airavata_deleteGateway_args {
+class Airavata_getGateway_args {
   static $_TSPEC;
 
   public $gatewayId = null;
@@ -8691,7 +8629,7 @@ class Airavata_deleteGateway_args {
   }
 
   public function getName() {
-    return 'Airavata_deleteGateway_args';
+    return 'Airavata_getGateway_args';
   }
 
   public function read($input)
@@ -8728,7 +8666,7 @@ class Airavata_deleteGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_getGateway_args');
     if ($this->gatewayId !== null) {
       $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
       $xfer += $output->writeString($this->gatewayId);
@@ -8741,7 +8679,7 @@ class Airavata_deleteGateway_args {
 
 }
 
-class Airavata_deleteGateway_result {
+class Airavata_getGateway_result {
   static $_TSPEC;
 
   public $success = null;
@@ -8754,7 +8692,8 @@ class Airavata_deleteGateway_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Gateway',
           ),
         1 => array(
           'var' => 'ire',
@@ -8790,7 +8729,7 @@ class Airavata_deleteGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_deleteGateway_result';
+    return 'Airavata_getGateway_result';
   }
 
   public function read($input)
@@ -8809,8 +8748,9 @@ class Airavata_deleteGateway_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->success->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8851,10 +8791,13 @@ class Airavata_deleteGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_getGateway_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_object($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $this->success->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -8879,19 +8822,29 @@ class Airavata_deleteGateway_result {
 
 }
 
-class Airavata_getAllGateways_args {
+class Airavata_deleteGateway_args {
   static $_TSPEC;
 
+  public $gatewayId = null;
 
-  public function __construct() {
+  public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
         );
     }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+    }
   }
 
   public function getName() {
-    return 'Airavata_getAllGateways_args';
+    return 'Airavata_deleteGateway_args';
   }
 
   public function read($input)
@@ -8909,6 +8862,13 @@ class Airavata_getAllGateways_args {
       }
       switch ($fid)
       {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -8921,7 +8881,12 @@ class Airavata_getAllGateways_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGateways_args');
+    $xfer += $output->writeStructBegin('Airavata_deleteGateway_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -8929,7 +8894,7 @@ class Airavata_getAllGateways_args {
 
 }
 
-class Airavata_getAllGateways_result {
+class Airavata_deleteGateway_result {
   static $_TSPEC;
 
   public $success = null;
@@ -8942,12 +8907,7 @@ class Airavata_getAllGateways_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Gateway',
-            ),
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -8983,7 +8943,7 @@ class Airavata_getAllGateways_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllGateways_result';
+    return 'Airavata_deleteGateway_result';
   }
 
   public function read($input)
@@ -9002,19 +8962,8 @@ class Airavata_getAllGateways_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::LST) {
-            $this->success = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
-            {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Workspace\Gateway();
-              $xfer += $elem5->read($input);
-              $this->success []= $elem5;
-            }
-            $xfer += $input->readListEnd();
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9055,22 +9004,10 @@ class Airavata_getAllGateways_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGateways_result');
+    $xfer += $output->writeStructBegin('Airavata_deleteGateway_result');
     if ($this->success !== null) {
-      if (!is_array($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->success));
-        {
-          foreach ($this->success as $iter6)
-          {
-            $xfer += $iter6->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -9095,29 +9032,19 @@ class Airavata_getAllGateways_result {
 
 }
 
-class Airavata_isGatewayExist_args {
+class Airavata_getAllGateways_args {
   static $_TSPEC;
 
-  public $gatewayId = null;
 
-  public function __construct($vals=null) {
+  public function __construct() {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        1 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
         );
     }
-    if (is_array($vals)) {
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-    }
   }
 
   public function getName() {
-    return 'Airavata_isGatewayExist_args';
+    return 'Airavata_getAllGateways_args';
   }
 
   public function read($input)
@@ -9135,13 +9062,6 @@ class Airavata_isGatewayExist_args {
       }
       switch ($fid)
       {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -9154,12 +9074,7 @@ class Airavata_isGatewayExist_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_args');
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
+    $xfer += $output->writeStructBegin('Airavata_getAllGateways_args');
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -9167,7 +9082,7 @@ class Airavata_isGatewayExist_args {
 
 }
 
-class Airavata_isGatewayExist_result {
+class Airavata_getAllGateways_result {
   static $_TSPEC;
 
   public $success = null;
@@ -9180,7 +9095,12 @@ class Airavata_isGatewayExist_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Gateway',
+            ),
           ),
         1 => array(
           'var' => 'ire',
@@ -9216,7 +9136,7 @@ class Airavata_isGatewayExist_result {
   }
 
   public function getName() {
-    return 'Airavata_isGatewayExist_result';
+    return 'Airavata_getAllGateways_result';
   }
 
   public function read($input)
@@ -9235,8 +9155,19 @@ class Airavata_isGatewayExist_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Workspace\Gateway();
+              $xfer += $elem5->read($input);
+              $this->success []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9277,10 +9208,22 @@ class Airavata_isGatewayExist_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllGateways_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter6)
+          {
+            $xfer += $iter6->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -9305,11 +9248,10 @@ class Airavata_isGatewayExist_result {
 
 }
 
-class Airavata_generateAndRegisterSSHKeys_args {
+class Airavata_isGatewayExist_args {
   static $_TSPEC;
 
   public $gatewayId = null;
-  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -9318,24 +9260,17 @@ class Airavata_generateAndRegisterSSHKeys_args {
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
-        2 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_generateAndRegisterSSHKeys_args';
+    return 'Airavata_isGatewayExist_args';
   }
 
   public function read($input)
@@ -9360,13 +9295,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -9379,17 +9307,12 @@ class Airavata_generateAndRegisterSSHKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_args');
     if ($this->gatewayId !== null) {
       $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -9397,7 +9320,7 @@ class Airavata_generateAndRegisterSSHKeys_args {
 
 }
 
-class Airavata_generateAndRegisterSSHKeys_result {
+class Airavata_isGatewayExist_result {
   static $_TSPEC;
 
   public $success = null;
@@ -9410,7 +9333,7 @@ class Airavata_generateAndRegisterSSHKeys_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -9446,7 +9369,7 @@ class Airavata_generateAndRegisterSSHKeys_result {
   }
 
   public function getName() {
-    return 'Airavata_generateAndRegisterSSHKeys_result';
+    return 'Airavata_isGatewayExist_result';
   }
 
   public function read($input)
@@ -9465,8 +9388,8 @@ class Airavata_generateAndRegisterSSHKeys_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9507,10 +9430,10 @@ class Airavata_generateAndRegisterSSHKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -9535,29 +9458,37 @@ class Airavata_generateAndRegisterSSHKeys_result {
 
 }
 
-class Airavata_getSSHPubKey_args {
+class Airavata_generateAndRegisterSSHKeys_args {
   static $_TSPEC;
 
-  public $airavataCredStoreToken = null;
+  public $gatewayId = null;
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'airavataCredStoreToken',
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['airavataCredStoreToken'])) {
-        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getSSHPubKey_args';
+    return 'Airavata_generateAndRegisterSSHKeys_args';
   }
 
   public function read($input)
@@ -9577,7 +9508,14 @@ class Airavata_getSSHPubKey_args {
       {
         case 1:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->airavataCredStoreToken);
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9594,10 +9532,15 @@ class Airavata_getSSHPubKey_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_args');
-    if ($this->airavataCredStoreToken !== null) {
-      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 1);
-      $xfer += $output->writeString($this->airavataCredStoreToken);
+    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -9607,7 +9550,7 @@ class Airavata_getSSHPubKey_args {
 
 }
 
-class Airavata_getSSHPubKey_result {
+class Airavata_generateAndRegisterSSHKeys_result {
   static $_TSPEC;
 
   public $success = null;
@@ -9656,7 +9599,7 @@ class Airavata_getSSHPubKey_result {
   }
 
   public function getName() {
-    return 'Airavata_getSSHPubKey_result';
+    return 'Airavata_generateAndRegisterSSHKeys_result';
   }
 
   public function read($input)
@@ -9717,7 +9660,7 @@ class Airavata_getSSHPubKey_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_result');
+    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_result');
     if ($this->success !== null) {
       $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
       $xfer += $output->writeString($this->success);
@@ -9745,29 +9688,29 @@ class Airavata_getSSHPubKey_result {
 
 }
 
-class Airavata_getAllUserSSHPubKeys_args {
+class Airavata_getSSHPubKey_args {
   static $_TSPEC;
 
-  public $userName = null;
+  public $airavataCredStoreToken = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'userName',
+          'var' => 'airavataCredStoreToken',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
+      if (isset($vals['airavataCredStoreToken'])) {
+        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllUserSSHPubKeys_args';
+    return 'Airavata_getSSHPubKey_args';
   }
 
   public function read($input)
@@ -9787,7 +9730,7 @@ class Airavata_getAllUserSSHPubKeys_args {
       {
         case 1:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
+            $xfer += $input->readString($this->airavataCredStoreToken);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9804,10 +9747,10 @@ class Airavata_getAllUserSSHPubKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_args');
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 1);
-      $xfer += $output->writeString($this->userName);
+    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_args');
+    if ($this->airavataCredStoreToken !== null) {
+      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 1);
+      $xfer += $output->writeString($this->airavataCredStoreToken);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -9817,7 +9760,7 @@ class Airavata_getAllUserSSHPubKeys_args {
 
 }
 
-class Airavata_getAllUserSSHPubKeys_result {
+class Airavata_getSSHPubKey_result {
   static $_TSPEC;
 
   public $success = null;
@@ -9830,15 +9773,7 @@ class Airavata_getAllUserSSHPubKeys_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
+          'type' => TType::STRING,
           ),
         1 => array(
           'var' => 'ire',
@@ -9874,7 +9809,7 @@ class Airavata_getAllUserSSHPubKeys_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllUserSSHPubKeys_result';
+    return 'Airavata_getSSHPubKey_result';
   }
 
   public function read($input)
@@ -9893,21 +9828,8 @@ class Airavata_getAllUserSSHPubKeys_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::MAP) {
-            $this->success = array();
-            $_size7 = 0;
-            $_ktype8 = 0;
-            $_vtype9 = 0;
-            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
-            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
-            {
-              $key12 = '';
-              $val13 = '';
-              $xfer += $input->readString($key12);
-              $xfer += $input->readString($val13);
-              $this->success[$key12] = $val13;
-            }
-            $xfer += $input->readMapEnd();
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9948,23 +9870,10 @@ class Airavata_getAllUserSSHPubKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_result');
     if ($this->success !== null) {
-      if (!is_array($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
-        {
-          foreach ($this->success as $kiter14 => $viter15)
-          {
-            $xfer += $output->writeString($kiter14);
-            $xfer += $output->writeString($viter15);
-          }
-        }
-        $output->writeMapEnd();
-      }
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -9989,38 +9898,29 @@ class Airavata_getAllUserSSHPubKeys_result {
 
 }
 
-class Airavata_createProject_args {
+class Airavata_getAllUserSSHPubKeys_args {
   static $_TSPEC;
 
-  public $gatewayId = null;
-  public $project = null;
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'gatewayId',
+          'var' => 'userName',
           'type' => TType::STRING,
           ),
-        2 => array(
-          'var' => 'project',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Project',
-          ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['project'])) {
-        $this->project = $vals['project'];
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_createProject_args';
+    return 'Airavata_getAllUserSSHPubKeys_args';
   }
 
   public function read($input)
@@ -10040,15 +9940,7 @@ class Airavata_createProject_args {
       {
         case 1:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->project = new \Airavata\Model\Workspace\Project();
-            $xfer += $this->project->read($input);
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10065,18 +9957,10 @@ class Airavata_createProject_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_createProject_args');
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->project !== null) {
-      if (!is_object($this->project)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('project', TType::STRUCT, 2);
-      $xfer += $this->project->write($output);
+    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_args');
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 1);
+      $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -10086,7 +9970,7 @@ class Airavata_createProject_args {
 
 }
 
-class Airavata_createProject_result {
+class Airavata_getAllUserSSHPubKeys_result {
   static $_TSPEC;
 
   public $success = null;
@@ -10099,7 +9983,15 @@ class Airavata_createProject_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
           ),
         1 => array(
           'var' => 'ire',
@@ -10135,7 +10027,7 @@ class Airavata_createProject_result {
   }
 
   public function getName() {
-    return 'Airavata_createProject_result';
+    return 'Airavata_getAllUserSSHPubKeys_result';
   }
 
   public function read($input)
@@ -10154,8 +10046,21 @@ class Airavata_createProject_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::MAP) {
+            $this->success = array();
+            $_size7 = 0;
+            $_ktype8 = 0;
+            $_vtype9 = 0;
+            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
+            {
+              $key12 = '';
+              $val13 = '';
+              $xfer += $input->readString($key12);
+              $xfer += $input->readString($val13);
+              $this->success[$key12] = $val13;
+            }
+            $xfer += $input->readMapEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10196,10 +10101,23 @@ class Airavata_createProject_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_createProject_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
+        {
+          foreach ($this->success as $kiter14 => $viter15)
+          {
+            $xfer += $output->writeString($kiter14);
+            $xfer += $output->writeString($viter15);
+          }
+        }
+        $output->writeMapEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -10224,38 +10142,38 @@ class Airavata_createProject_result {
 
 }
 
-class Airavata_updateProject_args {
+class Airavata_createProject_args {
   static $_TSPEC;
 
-  public $projectId = null;
-  public $updatedProject = null;
+  public $gatewayId = null;
+  public $project = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'projectId',
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         2 => array(
-          'var' => 'updatedProject',
+          'var' => 'project',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Project',
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['projectId'])) {
-        $this->projectId = $vals['projectId'];
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
       }
-      if (isset($vals['updatedProject'])) {
-        $this->updatedProject = $vals['updatedProject'];
+      if (isset($vals['project'])) {
+        $this->project = $vals['project'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateProject_args';
+    return 'Airavata_createProject_args';
   }
 
   public function read($input)
@@ -10275,15 +10193,15 @@ class Airavata_updateProject_args {
       {
         case 1:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->projectId);
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
           if ($ftype == TType::STRUCT) {
-            $this->updatedProject = new \Airavata\Model\Workspace\Project();
-            $xfer += $this->updatedProject->read($input);
+            $this->project = new \Airavata\Model\Workspace\Project();
+            $xfer += $this->project->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10300,18 +10218,18 @@ class Airavata_updateProject_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateProject_args');
-    if ($this->projectId !== null) {
-      $xfer += $output->writeFieldBegin('projectId', TType::STRING, 1);
-      $xfer += $output->writeString($this->projectId);
+    $xfer += $output->writeStructBegin('Airavata_createProject_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->updatedProject !== null) {
-      if (!is_object($this->updatedProject)) {
+    if ($this->project !== null) {
+      if (!is_object($this->project)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('updatedProject', TType::STRUCT, 2);
-      $xfer += $this->updatedProject->write($output);
+      $xfer += $output->writeFieldBegin('project', TType::STRUCT, 2);
+      $xfer += $this->project->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -10321,17 +10239,21 @@ class Airavata_updateProject_args {
 
 }
 
-class Airavata_updateProject_result {
+class Airavata_createProject_result {
   static $_TSPEC;
 
+  public $success = null;
   public $ire = null;
   public $ace = null;
   public $ase = null;
-  public $pnfe = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRING,
+          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -10347,14 +10269,12 @@ class Airavata_updateProject_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AiravataSystemException',
           ),
-        4 => array(
-          'var' => 'pnfe',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\ProjectNotFoundException',
-          ),
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -10364,14 +10284,11 @@ class Airavata_updateProject_result {
       if (isset($vals['ase'])) {
         $this->ase = $vals['ase'];
       }
-      if (isset($vals['pnfe'])) {
-        $this->pnfe = $vals['pnfe'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateProject_result';
+    return 'Airavata_createProject_result';
   }
 
   public function read($input)
@@ -10389,6 +10306,13 @@ class Airavata_updateProject_result {
       }
       switch ($fid)
       {
+        case 0:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -10413,14 +10337,6 @@ class Airavata_updateProject_result {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->pnfe = new \Airavata\API\Error\ProjectNotFoundException();
-            $xfer += $this->pnfe->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -10433,7 +10349,12 @@ class Airavata_updateProject_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateProject_result');
+    $xfer += $output->writeStructBegin('Airavata_createProject_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -10449,11 +10370,6 @@ class Airavata_updateProject_result {
       $xfer += $this->ase->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->pnfe !== null) {
-      $xfer += $output->writeFieldBegin('pnfe', TType::STRUCT, 4);
-      $xfer += $this->pnfe->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -10461,10 +10377,11 @@ class Airavata_updateProject_result {
 
 }
 
-class Airavata_getProject_args {
+class Airavata_updateProject_args {
   static $_TSPEC;
 
   public $projectId = null;
+  public $updatedProject = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -10473,17 +10390,25 @@ class Airavata_getProject_args {
           'var' => 'projectId',
           'type' => TType::STRING,
           ),
+        2 => array(
+          'var' => 'updatedProject',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Project',
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['projectId'])) {
         $this->projectId = $vals['projectId'];
       }
+      if (isset($vals['updatedProject'])) {
+        $this->updatedProject = $vals['updatedProject'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getProject_args';
+    return 'Airavata_updateProject_args';
   }
 
   public function read($input)
@@ -10508,6 +10433,14 @@ class Airavata_getProject_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->updatedProject = new \Airavata\Model\Workspace\Project();
+            $xfer += $this->updatedProject->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -10520,12 +10453,20 @@ class Airavata_getProject_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getProject_args');
+    $xfer += $output->writeStructBegin('Airavata_updateProject_args');
     if ($this->projectId !== null) {
       $xfer += $output->writeFieldBegin('projectId', TType::STRING, 1);
       $xfer += $output->writeString($this->projectId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->updatedProject !== null) {
+      if (!is_object($this->updatedProject)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('updatedProject', TType::STRUCT, 2);
+      $xfer += $this->updatedProject->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -10533,10 +10474,9 @@ class Airavata_getProject_args {
 
 }
 
-class Airavata_getProject_result {
+class Airavata_updateProject_result {
   static $_TSPEC;
 
-  public $success = null;
   public $ire = null;
   public $ace = null;
   public $ase = null;
@@ -10545,11 +10485,6 @@ class Airavata_getProject_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Project',
-          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -10573,9 +10508,6 @@ class Airavata_getProject_result {
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -10592,7 +10524,7 @@ class Airavata_getProject_result {
   }
 
   public function getName() {
-    return 'Airavata_getProject_result';
+    return 'Airavata_updateProject_result';
   }
 
   public function read($input)
@@ -10610,14 +10542,6 @@ class Airavata_getProject_result {
       }
       switch ($fid)
       {
-        case 0:
-          if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Workspace\Project();
-            $xfer += $this->success->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -10662,15 +10586,7 @@ class Airavata_getProject_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getProject_result');
-    if ($this->success !== null) {
-      if (!is_object($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
-      $xfer += $this->success->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
+    $xfer += $output->writeStructBegin('Airavata_updateProject_result');
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -10698,7 +10614,7 @@ class Airavata_getProject_result {
 
 }
 
-class Airavata_deleteProject_args {
+class Airavata_getProject_args {
   static $_TSPEC;
 
   public $projectId = null;
@@ -10720,7 +10636,7 @@ class Airavata_deleteProject_args {
   }
 
   public function getName() {
-    return 'Airavata_deleteProject_args';
+    return 'Airavata_getProject_args';
   }
 
   public function read($input)
@@ -10757,7 +10673,7 @@ class Airavata_deleteProject_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteProject_args');
+    $xfer += $output->writeStructBegin('Airavata_getProject_args');
     if ($this->projectId !== null) {
       $xfer += $output->writeFieldBegin('projectId', TType::STRING, 1);
       $xfer += $output->writeString($this->projectId);
@@ -10770,7 +10686,7 @@ class Airavata_deleteProject_args {
 
 }
 
-class Airavata_deleteProject_result {
+class Airavata_getProject_result {
   static $_TSPEC;
 
   public $success = null;
@@ -10784,7 +10700,8 @@ class Airavata_deleteProject_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Project',
           ),
         1 => array(
           'var' => 'ire',
@@ -10828,7 +10745,7 @@ class Airavata_deleteProject_result {
   }
 
   public function getName() {
-    return 'Airavata_deleteProject_result';
+    return 'Airavata_getProject_result';
   }
 
   public function read($input)
@@ -10847,8 +10764,9 @@ class Airavata_deleteProject_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Workspace\Project();
+            $xfer += $this->success->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10897,10 +10815,13 @@ class Airavata_deleteProject_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteProject_result');
+    $xfer += $output->writeStructBegin('Airavata_getProject_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_object($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $this->success->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -10930,37 +10851,29 @@ class Airavata_deleteProject_result {
 
 }
 
-class Airavata_getAllUserProjects_args {
+class Airavata_deleteProject_args {
   static $_TSPEC;
 
-  public $gatewayId = null;
-  public $userName = null;
+  public $projectId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'userName',
+          'var' => 'projectId',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
+      if (isset($vals['projectId'])) {
+        $this->projectId = $vals['projectId'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllUserProjects_args';
+    return 'Airavata_deleteProject_args';
   }
 
   public function read($input)
@@ -10980,14 +10893,7 @@ class Airavata_getAllUserProjects_args {
       {
         case 1:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
+            $xfer += $input->readString($this->projectId);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -11004,15 +10910,10 @@ class Airavata_getAllUserProjects_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserProjects_args');
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
+    $xfer += $output->writeStructBegin('Airavata_deleteProject_args');
+    if ($this->projectId !== null) {
+      $xfer += $output->writeFieldBegin('projectId', TType::STRING, 1);
+      $xfer += $output->writeString($this->projectId);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -11022,25 +10923,21 @@ class Airavata_getAllUserProjects_args {
 
 }
 
-class Airavata_getAllUserProjects_result {
+class Airavata_deleteProject_result {
   static $_TSPEC;
 
   public $success = null;
   public $ire = null;
   public $ace = null;
   public $ase = null;
+  public $pnfe = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Project',
-            ),
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -11057,6 +10954,11 @@ class Airavata_getAllUserProjects_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AiravataSystemException',
           ),
+        4 => array(
+          'var' => 'pnfe',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\ProjectNotFoundException',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -11072,11 +10974,14 @@ class Airavata_getAllUserProjects_result {
       if (isset($vals['ase'])) {
         $this->ase = $vals['ase'];
       }
+      if (isset($vals['pnfe'])) {
+        $this->pnfe = $vals['pnfe'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllUserProjects_result';
+    return 'Airavata_deleteProject_result';
   }
 
   public function read($input)
@@ -11095,19 +11000,267 @@ class Airavata_getAllUserProjects_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::LST) {
-            $this->success = array();
-            $_size16 = 0;
-            $_etype19 = 0;
-            $xfer += $input->readListBegin($_etype19, $_size16);
-            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
-            {
-              $elem21 = null;
-              $elem21 = new \Airavata\Model\Workspace\Project();
-              $xfer += $elem21->read($input);
-              $this->success []= $elem21;
-            }
-            $xfer += $input->readListEnd();
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->pnfe = new \Airavata\API\Error\ProjectNotFoundException();
+            $xfer += $this->pnfe->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_deleteProject_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->pnfe !== null) {
+      $xfer += $output->writeFieldBegin('pnfe', TType::STRUCT, 4);
+      $xfer += $this->pnfe->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getAllUserProjects_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getAllUserProjects_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getAllUserProjects_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getAllUserProjects_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getAllUserProjects_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size16 = 0;
+            $_etype19 = 0;
+            $xfer += $input->readListBegin($_etype19, $_size16);
+            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
+            {
+              $elem21 = null;
+              $elem21 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem21->read($input);
+              $this->success []= $elem21;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12082,12 +12235,608 @@ class Airavata_searchProjectsByProjectNameWithPagination_result {
 
 }
 
-class Airavata_searchProjectsByProjectDesc_args {
+class Airavata_searchProjectsByProjectDesc_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $description = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectDesc_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectDesc_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectDesc_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectDesc_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size44 = 0;
+            $_etype47 = 0;
+            $xfer += $input->readListBegin($_etype47, $_size44);
+            for ($_i48 = 0; $_i48 < $_size44; ++$_i48)
+            {
+              $elem49 = null;
+              $elem49 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem49->read($input);
+              $this->success []= $elem49;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectDesc_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter50)
+          {
+            $xfer += $iter50->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }

<TRUNCATED>

[4/8] airavata git commit: adding missing API functionality to xsede branch from master

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 8bdcb39..4a55771 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
@@ -62,6 +62,8 @@ class AiravataIf {
   virtual void searchExperimentsByStatusWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState, const int32_t limit, const int32_t offset) = 0;
   virtual void searchExperimentsByCreationTime(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime) = 0;
   virtual void searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime, const int32_t limit, const int32_t offset) = 0;
+  virtual void searchExperiments(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & filters, const int32_t limit, const int32_t offset) = 0;
+  virtual void getExperimentStatistics( ::apache::airavata::model::workspace::experiment::ExperimentStatistics& _return, const std::string& gatewayId, const int64_t fromTime, const int64_t toTime) = 0;
   virtual void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId) = 0;
   virtual void getAllExperimentsInProjectWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId, const int32_t limit, const int32_t offset) = 0;
   virtual void getAllUserExperiments(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& gatewayId, const std::string& userName) = 0;
@@ -280,6 +282,12 @@ class AiravataNull : virtual public AiravataIf {
   void searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const int64_t /* fromTime */, const int64_t /* toTime */, const int32_t /* limit */, const int32_t /* offset */) {
     return;
   }
+  void searchExperiments(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & /* filters */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
+  void getExperimentStatistics( ::apache::airavata::model::workspace::experiment::ExperimentStatistics& /* _return */, const std::string& /* gatewayId */, const int64_t /* fromTime */, const int64_t /* toTime */) {
+    return;
+  }
   void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & /* _return */, const std::string& /* projectId */) {
     return;
   }
@@ -640,11 +648,12 @@ class Airavata_getAPIVersion_pargs {
 };
 
 typedef struct _Airavata_getAPIVersion_result__isset {
-  _Airavata_getAPIVersion_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  _Airavata_getAPIVersion_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
+  bool ae;
 } _Airavata_getAPIVersion_result__isset;
 
 class Airavata_getAPIVersion_result {
@@ -659,6 +668,7 @@ class Airavata_getAPIVersion_result {
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
 
   _Airavata_getAPIVersion_result__isset __isset;
 
@@ -678,6 +688,10 @@ class Airavata_getAPIVersion_result {
     ase = val;
   }
 
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val) {
+    ae = val;
+  }
+
   bool operator == (const Airavata_getAPIVersion_result & rhs) const
   {
     if (!(success == rhs.success))
@@ -688,6 +702,8 @@ class Airavata_getAPIVersion_result {
       return false;
     if (!(ase == rhs.ase))
       return false;
+    if (!(ae == rhs.ae))
+      return false;
     return true;
   }
   bool operator != (const Airavata_getAPIVersion_result &rhs) const {
@@ -702,11 +718,12 @@ class Airavata_getAPIVersion_result {
 };
 
 typedef struct _Airavata_getAPIVersion_presult__isset {
-  _Airavata_getAPIVersion_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  _Airavata_getAPIVersion_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
+  bool ae;
 } _Airavata_getAPIVersion_presult__isset;
 
 class Airavata_getAPIVersion_presult {
@@ -719,6 +736,7 @@ class Airavata_getAPIVersion_presult {
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
 
   _Airavata_getAPIVersion_presult__isset __isset;
 
@@ -4972,6 +4990,324 @@ class Airavata_searchExperimentsByCreationTimeWithPagination_presult {
 
 };
 
+typedef struct _Airavata_searchExperiments_args__isset {
+  _Airavata_searchExperiments_args__isset() : filters(false) {}
+  bool filters;
+} _Airavata_searchExperiments_args__isset;
+
+class Airavata_searchExperiments_args {
+ public:
+
+  Airavata_searchExperiments_args() : gatewayId(), userName(), limit(0), offset(0) {
+  }
+
+  virtual ~Airavata_searchExperiments_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string>  filters;
+  int32_t limit;
+  int32_t offset;
+
+  _Airavata_searchExperiments_args__isset __isset;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_filters(const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & val) {
+    filters = val;
+  }
+
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchExperiments_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(filters == rhs.filters))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperiments_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperiments_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperiments_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperiments_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> * filters;
+  const int32_t* limit;
+  const int32_t* offset;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperiments_result__isset {
+  _Airavata_searchExperiments_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperiments_result__isset;
+
+class Airavata_searchExperiments_result {
+ public:
+
+  Airavata_searchExperiments_result() {
+  }
+
+  virtual ~Airavata_searchExperiments_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperiments_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperiments_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperiments_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperiments_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperiments_presult__isset {
+  _Airavata_searchExperiments_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperiments_presult__isset;
+
+class Airavata_searchExperiments_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperiments_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperiments_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_getExperimentStatistics_args {
+ public:
+
+  Airavata_getExperimentStatistics_args() : gatewayId(), fromTime(0), toTime(0) {
+  }
+
+  virtual ~Airavata_getExperimentStatistics_args() throw() {}
+
+  std::string gatewayId;
+  int64_t fromTime;
+  int64_t toTime;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_fromTime(const int64_t val) {
+    fromTime = val;
+  }
+
+  void __set_toTime(const int64_t val) {
+    toTime = val;
+  }
+
+  bool operator == (const Airavata_getExperimentStatistics_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(fromTime == rhs.fromTime))
+      return false;
+    if (!(toTime == rhs.toTime))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getExperimentStatistics_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getExperimentStatistics_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_getExperimentStatistics_pargs {
+ public:
+
+
+  virtual ~Airavata_getExperimentStatistics_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const int64_t* fromTime;
+  const int64_t* toTime;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getExperimentStatistics_result__isset {
+  _Airavata_getExperimentStatistics_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_getExperimentStatistics_result__isset;
+
+class Airavata_getExperimentStatistics_result {
+ public:
+
+  Airavata_getExperimentStatistics_result() {
+  }
+
+  virtual ~Airavata_getExperimentStatistics_result() throw() {}
+
+   ::apache::airavata::model::workspace::experiment::ExperimentStatistics success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_getExperimentStatistics_result__isset __isset;
+
+  void __set_success(const  ::apache::airavata::model::workspace::experiment::ExperimentStatistics& val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_getExperimentStatistics_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getExperimentStatistics_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getExperimentStatistics_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getExperimentStatistics_presult__isset {
+  _Airavata_getExperimentStatistics_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_getExperimentStatistics_presult__isset;
+
+class Airavata_getExperimentStatistics_presult {
+ public:
+
+
+  virtual ~Airavata_getExperimentStatistics_presult() throw() {}
+
+   ::apache::airavata::model::workspace::experiment::ExperimentStatistics* success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_getExperimentStatistics_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
 
 class Airavata_getAllExperimentsInProject_args {
  public:
@@ -18224,6 +18560,12 @@ class AiravataClient : virtual public AiravataIf {
   void searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime, const int32_t limit, const int32_t offset);
   void send_searchExperimentsByCreationTimeWithPagination(const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime, const int32_t limit, const int32_t offset);
   void recv_searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return);
+  void searchExperiments(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & filters, const int32_t limit, const int32_t offset);
+  void send_searchExperiments(const std::string& gatewayId, const std::string& userName, const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & filters, const int32_t limit, const int32_t offset);
+  void recv_searchExperiments(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return);
+  void getExperimentStatistics( ::apache::airavata::model::workspace::experiment::ExperimentStatistics& _return, const std::string& gatewayId, const int64_t fromTime, const int64_t toTime);
+  void send_getExperimentStatistics(const std::string& gatewayId, const int64_t fromTime, const int64_t toTime);
+  void recv_getExperimentStatistics( ::apache::airavata::model::workspace::experiment::ExperimentStatistics& _return);
   void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId);
   void send_getAllExperimentsInProject(const std::string& projectId);
   void recv_getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return);
@@ -18557,6 +18899,8 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
   void process_searchExperimentsByStatusWithPagination(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_searchExperimentsByCreationTime(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_searchExperimentsByCreationTimeWithPagination(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_searchExperiments(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_getExperimentStatistics(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getAllExperimentsInProject(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getAllExperimentsInProjectWithPagination(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getAllUserExperiments(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
@@ -18686,6 +19030,8 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
     processMap_["searchExperimentsByStatusWithPagination"] = &AiravataProcessor::process_searchExperimentsByStatusWithPagination;
     processMap_["searchExperimentsByCreationTime"] = &AiravataProcessor::process_searchExperimentsByCreationTime;
     processMap_["searchExperimentsByCreationTimeWithPagination"] = &AiravataProcessor::process_searchExperimentsByCreationTimeWithPagination;
+    processMap_["searchExperiments"] = &AiravataProcessor::process_searchExperiments;
+    processMap_["getExperimentStatistics"] = &AiravataProcessor::process_getExperimentStatistics;
     processMap_["getAllExperimentsInProject"] = &AiravataProcessor::process_getAllExperimentsInProject;
     processMap_["getAllExperimentsInProjectWithPagination"] = &AiravataProcessor::process_getAllExperimentsInProjectWithPagination;
     processMap_["getAllUserExperiments"] = &AiravataProcessor::process_getAllUserExperiments;
@@ -19105,6 +19451,26 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
+  void searchExperiments(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & filters, const int32_t limit, const int32_t offset) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->searchExperiments(_return, gatewayId, userName, filters, limit, offset);
+    }
+    ifaces_[i]->searchExperiments(_return, gatewayId, userName, filters, limit, offset);
+    return;
+  }
+
+  void getExperimentStatistics( ::apache::airavata::model::workspace::experiment::ExperimentStatistics& _return, const std::string& gatewayId, const int64_t fromTime, const int64_t toTime) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->getExperimentStatistics(_return, gatewayId, fromTime, toTime);
+    }
+    ifaces_[i]->getExperimentStatistics(_return, gatewayId, fromTime, toTime);
+    return;
+  }
+
   void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId) {
     size_t sz = ifaces_.size();
     size_t i = 0;

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 faf8c0f..f031bc9 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
@@ -189,6 +189,16 @@ class AiravataHandler : virtual public AiravataIf {
     printf("searchExperimentsByCreationTimeWithPagination\n");
   }
 
+  void searchExperiments(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::map< ::apache::airavata::model::workspace::experiment::ExperimentSearchFields::type, std::string> & filters, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchExperiments\n");
+  }
+
+  void getExperimentStatistics( ::apache::airavata::model::workspace::experiment::ExperimentStatistics& _return, const std::string& gatewayId, const int64_t fromTime, const int64_t toTime) {
+    // Your implementation goes here
+    printf("getExperimentStatistics\n");
+  }
+
   void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId) {
     // Your implementation goes here
     printf("getAllExperimentsInProject\n");

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
index 34e4aa6..1bc5369 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
@@ -55,6 +55,24 @@ const char* _kExperimentStateNames[] = {
 };
 const std::map<int, const char*> _ExperimentState_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(11, _kExperimentStateValues, _kExperimentStateNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
+int _kExperimentSearchFieldsValues[] = {
+  ExperimentSearchFields::EXPERIMENT_NAME,
+  ExperimentSearchFields::EXPERIMENT_DESC,
+  ExperimentSearchFields::APPLICATION_ID,
+  ExperimentSearchFields::FROM_DATE,
+  ExperimentSearchFields::TO_DATE,
+  ExperimentSearchFields::STATUS
+};
+const char* _kExperimentSearchFieldsNames[] = {
+  "EXPERIMENT_NAME",
+  "EXPERIMENT_DESC",
+  "APPLICATION_ID",
+  "FROM_DATE",
+  "TO_DATE",
+  "STATUS"
+};
+const std::map<int, const char*> _ExperimentSearchFields_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, _kExperimentSearchFieldsValues, _kExperimentSearchFieldsNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
 int _kWorkflowNodeStateValues[] = {
   WorkflowNodeState::INVOKED,
   WorkflowNodeState::EXECUTING,
@@ -3221,8 +3239,8 @@ void swap(Experiment &a, Experiment &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* ExperimentSummary::ascii_fingerprint = "44FD485ABF32F5EB94D6F393F51241B6";
-const uint8_t ExperimentSummary::binary_fingerprint[16] = {0x44,0xFD,0x48,0x5A,0xBF,0x32,0xF5,0xEB,0x94,0xD6,0xF3,0x93,0xF5,0x12,0x41,0xB6};
+const char* ExperimentSummary::ascii_fingerprint = "A1A9DDD1C0AA5DEEDC8413E553960BEF";
+const uint8_t ExperimentSummary::binary_fingerprint[16] = {0xA1,0xA9,0xDD,0xD1,0xC0,0xAA,0x5D,0xEE,0xDC,0x84,0x13,0xE5,0x53,0x96,0x0B,0xEF};
 
 uint32_t ExperimentSummary::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -3312,26 +3330,6 @@ uint32_t ExperimentSummary::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 9:
-        if (ftype == ::apache::thrift::protocol::T_LIST) {
-          {
-            this->errors.clear();
-            uint32_t _size123;
-            ::apache::thrift::protocol::TType _etype126;
-            xfer += iprot->readListBegin(_etype126, _size123);
-            this->errors.resize(_size123);
-            uint32_t _i127;
-            for (_i127 = 0; _i127 < _size123; ++_i127)
-            {
-              xfer += this->errors[_i127].read(iprot);
-            }
-            xfer += iprot->readListEnd();
-          }
-          this->__isset.errors = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -3392,19 +3390,6 @@ uint32_t ExperimentSummary::write(::apache::thrift::protocol::TProtocol* oprot)
     xfer += this->experimentStatus.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.errors) {
-    xfer += oprot->writeFieldBegin("errors", ::apache::thrift::protocol::T_LIST, 9);
-    {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->errors.size()));
-      std::vector<ErrorDetails> ::const_iterator _iter128;
-      for (_iter128 = this->errors.begin(); _iter128 != this->errors.end(); ++_iter128)
-      {
-        xfer += (*_iter128).write(oprot);
-      }
-      xfer += oprot->writeListEnd();
-    }
-    xfer += oprot->writeFieldEnd();
-  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -3420,7 +3405,255 @@ void swap(ExperimentSummary &a, ExperimentSummary &b) {
   swap(a.description, b.description);
   swap(a.applicationId, b.applicationId);
   swap(a.experimentStatus, b.experimentStatus);
-  swap(a.errors, b.errors);
+  swap(a.__isset, b.__isset);
+}
+
+const char* ExperimentStatistics::ascii_fingerprint = "30185B02179FA7FA5FE94244EB7C415D";
+const uint8_t ExperimentStatistics::binary_fingerprint[16] = {0x30,0x18,0x5B,0x02,0x17,0x9F,0xA7,0xFA,0x5F,0xE9,0x42,0x44,0xEB,0x7C,0x41,0x5D};
+
+uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_allExperimentCount = false;
+  bool isset_completedExperimentCount = false;
+  bool isset_failedExperimentCount = false;
+  bool isset_allExperiments = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->allExperimentCount);
+          isset_allExperimentCount = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->completedExperimentCount);
+          isset_completedExperimentCount = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->cancelledExperimentCount);
+          this->__isset.cancelledExperimentCount = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->failedExperimentCount);
+          isset_failedExperimentCount = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->allExperiments.clear();
+            uint32_t _size123;
+            ::apache::thrift::protocol::TType _etype126;
+            xfer += iprot->readListBegin(_etype126, _size123);
+            this->allExperiments.resize(_size123);
+            uint32_t _i127;
+            for (_i127 = 0; _i127 < _size123; ++_i127)
+            {
+              xfer += this->allExperiments[_i127].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          isset_allExperiments = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->completedExperiments.clear();
+            uint32_t _size128;
+            ::apache::thrift::protocol::TType _etype131;
+            xfer += iprot->readListBegin(_etype131, _size128);
+            this->completedExperiments.resize(_size128);
+            uint32_t _i132;
+            for (_i132 = 0; _i132 < _size128; ++_i132)
+            {
+              xfer += this->completedExperiments[_i132].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.completedExperiments = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->failedExperiments.clear();
+            uint32_t _size133;
+            ::apache::thrift::protocol::TType _etype136;
+            xfer += iprot->readListBegin(_etype136, _size133);
+            this->failedExperiments.resize(_size133);
+            uint32_t _i137;
+            for (_i137 = 0; _i137 < _size133; ++_i137)
+            {
+              xfer += this->failedExperiments[_i137].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.failedExperiments = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->cancelledExperiments.clear();
+            uint32_t _size138;
+            ::apache::thrift::protocol::TType _etype141;
+            xfer += iprot->readListBegin(_etype141, _size138);
+            this->cancelledExperiments.resize(_size138);
+            uint32_t _i142;
+            for (_i142 = 0; _i142 < _size138; ++_i142)
+            {
+              xfer += this->cancelledExperiments[_i142].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.cancelledExperiments = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_allExperimentCount)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_completedExperimentCount)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_failedExperimentCount)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_allExperiments)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  xfer += oprot->writeStructBegin("ExperimentStatistics");
+
+  xfer += oprot->writeFieldBegin("allExperimentCount", ::apache::thrift::protocol::T_I32, 1);
+  xfer += oprot->writeI32(this->allExperimentCount);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("completedExperimentCount", ::apache::thrift::protocol::T_I32, 2);
+  xfer += oprot->writeI32(this->completedExperimentCount);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.cancelledExperimentCount) {
+    xfer += oprot->writeFieldBegin("cancelledExperimentCount", ::apache::thrift::protocol::T_I32, 3);
+    xfer += oprot->writeI32(this->cancelledExperimentCount);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldBegin("failedExperimentCount", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->failedExperimentCount);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("allExperiments", ::apache::thrift::protocol::T_LIST, 5);
+  {
+    xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->allExperiments.size()));
+    std::vector<ExperimentSummary> ::const_iterator _iter143;
+    for (_iter143 = this->allExperiments.begin(); _iter143 != this->allExperiments.end(); ++_iter143)
+    {
+      xfer += (*_iter143).write(oprot);
+    }
+    xfer += oprot->writeListEnd();
+  }
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.completedExperiments) {
+    xfer += oprot->writeFieldBegin("completedExperiments", ::apache::thrift::protocol::T_LIST, 6);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->completedExperiments.size()));
+      std::vector<ExperimentSummary> ::const_iterator _iter144;
+      for (_iter144 = this->completedExperiments.begin(); _iter144 != this->completedExperiments.end(); ++_iter144)
+      {
+        xfer += (*_iter144).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.failedExperiments) {
+    xfer += oprot->writeFieldBegin("failedExperiments", ::apache::thrift::protocol::T_LIST, 7);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->failedExperiments.size()));
+      std::vector<ExperimentSummary> ::const_iterator _iter145;
+      for (_iter145 = this->failedExperiments.begin(); _iter145 != this->failedExperiments.end(); ++_iter145)
+      {
+        xfer += (*_iter145).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.cancelledExperiments) {
+    xfer += oprot->writeFieldBegin("cancelledExperiments", ::apache::thrift::protocol::T_LIST, 8);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->cancelledExperiments.size()));
+      std::vector<ExperimentSummary> ::const_iterator _iter146;
+      for (_iter146 = this->cancelledExperiments.begin(); _iter146 != this->cancelledExperiments.end(); ++_iter146)
+      {
+        xfer += (*_iter146).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(ExperimentStatistics &a, ExperimentStatistics &b) {
+  using ::std::swap;
+  swap(a.allExperimentCount, b.allExperimentCount);
+  swap(a.completedExperimentCount, b.completedExperimentCount);
+  swap(a.cancelledExperimentCount, b.cancelledExperimentCount);
+  swap(a.failedExperimentCount, b.failedExperimentCount);
+  swap(a.allExperiments, b.allExperiments);
+  swap(a.completedExperiments, b.completedExperiments);
+  swap(a.failedExperiments, b.failedExperiments);
+  swap(a.cancelledExperiments, b.cancelledExperiments);
   swap(a.__isset, b.__isset);
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
index 3f7f2b7..d041d2f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
@@ -54,6 +54,19 @@ struct ExperimentState {
 
 extern const std::map<int, const char*> _ExperimentState_VALUES_TO_NAMES;
 
+struct ExperimentSearchFields {
+  enum type {
+    EXPERIMENT_NAME = 0,
+    EXPERIMENT_DESC = 1,
+    APPLICATION_ID = 2,
+    FROM_DATE = 3,
+    TO_DATE = 4,
+    STATUS = 5
+  };
+};
+
+extern const std::map<int, const char*> _ExperimentSearchFields_VALUES_TO_NAMES;
+
 struct WorkflowNodeState {
   enum type {
     INVOKED = 0,
@@ -2008,19 +2021,18 @@ class Experiment {
 void swap(Experiment &a, Experiment &b);
 
 typedef struct _ExperimentSummary__isset {
-  _ExperimentSummary__isset() : creationTime(false), description(false), applicationId(false), experimentStatus(false), errors(false) {}
+  _ExperimentSummary__isset() : creationTime(false), description(false), applicationId(false), experimentStatus(false) {}
   bool creationTime;
   bool description;
   bool applicationId;
   bool experimentStatus;
-  bool errors;
 } _ExperimentSummary__isset;
 
 class ExperimentSummary {
  public:
 
-  static const char* ascii_fingerprint; // = "44FD485ABF32F5EB94D6F393F51241B6";
-  static const uint8_t binary_fingerprint[16]; // = {0x44,0xFD,0x48,0x5A,0xBF,0x32,0xF5,0xEB,0x94,0xD6,0xF3,0x93,0xF5,0x12,0x41,0xB6};
+  static const char* ascii_fingerprint; // = "A1A9DDD1C0AA5DEEDC8413E553960BEF";
+  static const uint8_t binary_fingerprint[16]; // = {0xA1,0xA9,0xDD,0xD1,0xC0,0xAA,0x5D,0xEE,0xDC,0x84,0x13,0xE5,0x53,0x96,0x0B,0xEF};
 
   ExperimentSummary() : experimentID(), projectID(), creationTime(0), userName(), name(), description(), applicationId() {
   }
@@ -2035,7 +2047,6 @@ class ExperimentSummary {
   std::string description;
   std::string applicationId;
   ExperimentStatus experimentStatus;
-  std::vector<ErrorDetails>  errors;
 
   _ExperimentSummary__isset __isset;
 
@@ -2075,11 +2086,6 @@ class ExperimentSummary {
     __isset.experimentStatus = true;
   }
 
-  void __set_errors(const std::vector<ErrorDetails> & val) {
-    errors = val;
-    __isset.errors = true;
-  }
-
   bool operator == (const ExperimentSummary & rhs) const
   {
     if (!(experimentID == rhs.experimentID))
@@ -2106,10 +2112,6 @@ class ExperimentSummary {
       return false;
     else if (__isset.experimentStatus && !(experimentStatus == rhs.experimentStatus))
       return false;
-    if (__isset.errors != rhs.__isset.errors)
-      return false;
-    else if (__isset.errors && !(errors == rhs.errors))
-      return false;
     return true;
   }
   bool operator != (const ExperimentSummary &rhs) const {
@@ -2125,6 +2127,113 @@ class ExperimentSummary {
 
 void swap(ExperimentSummary &a, ExperimentSummary &b);
 
+typedef struct _ExperimentStatistics__isset {
+  _ExperimentStatistics__isset() : cancelledExperimentCount(false), completedExperiments(false), failedExperiments(false), cancelledExperiments(false) {}
+  bool cancelledExperimentCount;
+  bool completedExperiments;
+  bool failedExperiments;
+  bool cancelledExperiments;
+} _ExperimentStatistics__isset;
+
+class ExperimentStatistics {
+ public:
+
+  static const char* ascii_fingerprint; // = "30185B02179FA7FA5FE94244EB7C415D";
+  static const uint8_t binary_fingerprint[16]; // = {0x30,0x18,0x5B,0x02,0x17,0x9F,0xA7,0xFA,0x5F,0xE9,0x42,0x44,0xEB,0x7C,0x41,0x5D};
+
+  ExperimentStatistics() : allExperimentCount(0), completedExperimentCount(0), cancelledExperimentCount(0), failedExperimentCount(0) {
+  }
+
+  virtual ~ExperimentStatistics() throw() {}
+
+  int32_t allExperimentCount;
+  int32_t completedExperimentCount;
+  int32_t cancelledExperimentCount;
+  int32_t failedExperimentCount;
+  std::vector<ExperimentSummary>  allExperiments;
+  std::vector<ExperimentSummary>  completedExperiments;
+  std::vector<ExperimentSummary>  failedExperiments;
+  std::vector<ExperimentSummary>  cancelledExperiments;
+
+  _ExperimentStatistics__isset __isset;
+
+  void __set_allExperimentCount(const int32_t val) {
+    allExperimentCount = val;
+  }
+
+  void __set_completedExperimentCount(const int32_t val) {
+    completedExperimentCount = val;
+  }
+
+  void __set_cancelledExperimentCount(const int32_t val) {
+    cancelledExperimentCount = val;
+    __isset.cancelledExperimentCount = true;
+  }
+
+  void __set_failedExperimentCount(const int32_t val) {
+    failedExperimentCount = val;
+  }
+
+  void __set_allExperiments(const std::vector<ExperimentSummary> & val) {
+    allExperiments = val;
+  }
+
+  void __set_completedExperiments(const std::vector<ExperimentSummary> & val) {
+    completedExperiments = val;
+    __isset.completedExperiments = true;
+  }
+
+  void __set_failedExperiments(const std::vector<ExperimentSummary> & val) {
+    failedExperiments = val;
+    __isset.failedExperiments = true;
+  }
+
+  void __set_cancelledExperiments(const std::vector<ExperimentSummary> & val) {
+    cancelledExperiments = val;
+    __isset.cancelledExperiments = true;
+  }
+
+  bool operator == (const ExperimentStatistics & rhs) const
+  {
+    if (!(allExperimentCount == rhs.allExperimentCount))
+      return false;
+    if (!(completedExperimentCount == rhs.completedExperimentCount))
+      return false;
+    if (__isset.cancelledExperimentCount != rhs.__isset.cancelledExperimentCount)
+      return false;
+    else if (__isset.cancelledExperimentCount && !(cancelledExperimentCount == rhs.cancelledExperimentCount))
+      return false;
+    if (!(failedExperimentCount == rhs.failedExperimentCount))
+      return false;
+    if (!(allExperiments == rhs.allExperiments))
+      return false;
+    if (__isset.completedExperiments != rhs.__isset.completedExperiments)
+      return false;
+    else if (__isset.completedExperiments && !(completedExperiments == rhs.completedExperiments))
+      return false;
+    if (__isset.failedExperiments != rhs.__isset.failedExperiments)
+      return false;
+    else if (__isset.failedExperiments && !(failedExperiments == rhs.failedExperiments))
+      return false;
+    if (__isset.cancelledExperiments != rhs.__isset.cancelledExperiments)
+      return false;
+    else if (__isset.cancelledExperiments && !(cancelledExperiments == rhs.cancelledExperiments))
+      return false;
+    return true;
+  }
+  bool operator != (const ExperimentStatistics &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const ExperimentStatistics & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+void swap(ExperimentStatistics &a, ExperimentStatistics &b);
+
 }}}}} // namespace
 
 #endif


[2/8] airavata git commit: adding missing API functionality to xsede branch from master

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
index 753dc13..db58bf9 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
@@ -44,6 +44,23 @@ final class ExperimentState {
   );
 }
 
+final class ExperimentSearchFields {
+  const EXPERIMENT_NAME = 0;
+  const EXPERIMENT_DESC = 1;
+  const APPLICATION_ID = 2;
+  const FROM_DATE = 3;
+  const TO_DATE = 4;
+  const STATUS = 5;
+  static public $__names = array(
+    0 => 'EXPERIMENT_NAME',
+    1 => 'EXPERIMENT_DESC',
+    2 => 'APPLICATION_ID',
+    3 => 'FROM_DATE',
+    4 => 'TO_DATE',
+    5 => 'STATUS',
+  );
+}
+
 final class WorkflowNodeState {
   const INVOKED = 0;
   const EXECUTING = 1;
@@ -4111,7 +4128,6 @@ class ExperimentSummary {
   public $description = null;
   public $applicationId = null;
   public $experimentStatus = null;
-  public $errors = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -4149,15 +4165,6 @@ class ExperimentSummary {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Experiment\ExperimentStatus',
           ),
-        9 => array(
-          'var' => 'errors',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\ErrorDetails',
-            ),
-          ),
         );
     }
     if (is_array($vals)) {
@@ -4185,9 +4192,6 @@ class ExperimentSummary {
       if (isset($vals['experimentStatus'])) {
         $this->experimentStatus = $vals['experimentStatus'];
       }
-      if (isset($vals['errors'])) {
-        $this->errors = $vals['errors'];
-      }
     }
   }
 
@@ -4267,24 +4271,6 @@ class ExperimentSummary {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 9:
-          if ($ftype == TType::LST) {
-            $this->errors = array();
-            $_size133 = 0;
-            $_etype136 = 0;
-            $xfer += $input->readListBegin($_etype136, $_size133);
-            for ($_i137 = 0; $_i137 < $_size133; ++$_i137)
-            {
-              $elem138 = null;
-              $elem138 = new \Airavata\Model\Workspace\Experiment\ErrorDetails();
-              $xfer += $elem138->read($input);
-              $this->errors []= $elem138;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -4341,17 +4327,324 @@ class ExperimentSummary {
       $xfer += $this->experimentStatus->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->errors !== null) {
-      if (!is_array($this->errors)) {
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class ExperimentStatistics {
+  static $_TSPEC;
+
+  public $allExperimentCount = null;
+  public $completedExperimentCount = null;
+  public $cancelledExperimentCount = null;
+  public $failedExperimentCount = null;
+  public $allExperiments = null;
+  public $completedExperiments = null;
+  public $failedExperiments = null;
+  public $cancelledExperiments = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'allExperimentCount',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'completedExperimentCount',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'cancelledExperimentCount',
+          'type' => TType::I32,
+          ),
+        4 => array(
+          'var' => 'failedExperimentCount',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'allExperiments',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ExperimentSummary',
+            ),
+          ),
+        6 => array(
+          'var' => 'completedExperiments',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ExperimentSummary',
+            ),
+          ),
+        7 => array(
+          'var' => 'failedExperiments',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ExperimentSummary',
+            ),
+          ),
+        8 => array(
+          'var' => 'cancelledExperiments',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ExperimentSummary',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['allExperimentCount'])) {
+        $this->allExperimentCount = $vals['allExperimentCount'];
+      }
+      if (isset($vals['completedExperimentCount'])) {
+        $this->completedExperimentCount = $vals['completedExperimentCount'];
+      }
+      if (isset($vals['cancelledExperimentCount'])) {
+        $this->cancelledExperimentCount = $vals['cancelledExperimentCount'];
+      }
+      if (isset($vals['failedExperimentCount'])) {
+        $this->failedExperimentCount = $vals['failedExperimentCount'];
+      }
+      if (isset($vals['allExperiments'])) {
+        $this->allExperiments = $vals['allExperiments'];
+      }
+      if (isset($vals['completedExperiments'])) {
+        $this->completedExperiments = $vals['completedExperiments'];
+      }
+      if (isset($vals['failedExperiments'])) {
+        $this->failedExperiments = $vals['failedExperiments'];
+      }
+      if (isset($vals['cancelledExperiments'])) {
+        $this->cancelledExperiments = $vals['cancelledExperiments'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ExperimentStatistics';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->allExperimentCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->completedExperimentCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->cancelledExperimentCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->failedExperimentCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::LST) {
+            $this->allExperiments = array();
+            $_size133 = 0;
+            $_etype136 = 0;
+            $xfer += $input->readListBegin($_etype136, $_size133);
+            for ($_i137 = 0; $_i137 < $_size133; ++$_i137)
+            {
+              $elem138 = null;
+              $elem138 = new \Airavata\Model\Workspace\Experiment\ExperimentSummary();
+              $xfer += $elem138->read($input);
+              $this->allExperiments []= $elem138;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::LST) {
+            $this->completedExperiments = array();
+            $_size139 = 0;
+            $_etype142 = 0;
+            $xfer += $input->readListBegin($_etype142, $_size139);
+            for ($_i143 = 0; $_i143 < $_size139; ++$_i143)
+            {
+              $elem144 = null;
+              $elem144 = new \Airavata\Model\Workspace\Experiment\ExperimentSummary();
+              $xfer += $elem144->read($input);
+              $this->completedExperiments []= $elem144;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::LST) {
+            $this->failedExperiments = array();
+            $_size145 = 0;
+            $_etype148 = 0;
+            $xfer += $input->readListBegin($_etype148, $_size145);
+            for ($_i149 = 0; $_i149 < $_size145; ++$_i149)
+            {
+              $elem150 = null;
+              $elem150 = new \Airavata\Model\Workspace\Experiment\ExperimentSummary();
+              $xfer += $elem150->read($input);
+              $this->failedExperiments []= $elem150;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::LST) {
+            $this->cancelledExperiments = array();
+            $_size151 = 0;
+            $_etype154 = 0;
+            $xfer += $input->readListBegin($_etype154, $_size151);
+            for ($_i155 = 0; $_i155 < $_size151; ++$_i155)
+            {
+              $elem156 = null;
+              $elem156 = new \Airavata\Model\Workspace\Experiment\ExperimentSummary();
+              $xfer += $elem156->read($input);
+              $this->cancelledExperiments []= $elem156;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('ExperimentStatistics');
+    if ($this->allExperimentCount !== null) {
+      $xfer += $output->writeFieldBegin('allExperimentCount', TType::I32, 1);
+      $xfer += $output->writeI32($this->allExperimentCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->completedExperimentCount !== null) {
+      $xfer += $output->writeFieldBegin('completedExperimentCount', TType::I32, 2);
+      $xfer += $output->writeI32($this->completedExperimentCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->cancelledExperimentCount !== null) {
+      $xfer += $output->writeFieldBegin('cancelledExperimentCount', TType::I32, 3);
+      $xfer += $output->writeI32($this->cancelledExperimentCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->failedExperimentCount !== null) {
+      $xfer += $output->writeFieldBegin('failedExperimentCount', TType::I32, 4);
+      $xfer += $output->writeI32($this->failedExperimentCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->allExperiments !== null) {
+      if (!is_array($this->allExperiments)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('errors', TType::LST, 9);
+      $xfer += $output->writeFieldBegin('allExperiments', TType::LST, 5);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->errors));
+        $output->writeListBegin(TType::STRUCT, count($this->allExperiments));
+        {
+          foreach ($this->allExperiments as $iter157)
+          {
+            $xfer += $iter157->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->completedExperiments !== null) {
+      if (!is_array($this->completedExperiments)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('completedExperiments', TType::LST, 6);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->completedExperiments));
+        {
+          foreach ($this->completedExperiments as $iter158)
+          {
+            $xfer += $iter158->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->failedExperiments !== null) {
+      if (!is_array($this->failedExperiments)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('failedExperiments', TType::LST, 7);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->failedExperiments));
+        {
+          foreach ($this->failedExperiments as $iter159)
+          {
+            $xfer += $iter159->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->cancelledExperiments !== null) {
+      if (!is_array($this->cancelledExperiments)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('cancelledExperiments', TType::LST, 8);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->cancelledExperiments));
         {
-          foreach ($this->errors as $iter139)
+          foreach ($this->cancelledExperiments as $iter160)
           {
-            $xfer += $iter139->write($output);
+            $xfer += $iter160->write($output);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 bba4dff..65092db 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
@@ -53,6 +53,8 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print '   searchExperimentsByStatusWithPagination(string gatewayId, string userName, ExperimentState experimentState, i32 limit, i32 offset)'
   print '   searchExperimentsByCreationTime(string gatewayId, string userName, i64 fromTime, i64 toTime)'
   print '   searchExperimentsByCreationTimeWithPagination(string gatewayId, string userName, i64 fromTime, i64 toTime, i32 limit, i32 offset)'
+  print '   searchExperiments(string gatewayId, string userName,  filters, i32 limit, i32 offset)'
+  print '  ExperimentStatistics getExperimentStatistics(string gatewayId, i64 fromTime, i64 toTime)'
   print '   getAllExperimentsInProject(string projectId)'
   print '   getAllExperimentsInProjectWithPagination(string projectId, i32 limit, i32 offset)'
   print '   getAllUserExperiments(string gatewayId, string userName)'
@@ -380,6 +382,18 @@ elif cmd == 'searchExperimentsByCreationTimeWithPagination':
     sys.exit(1)
   pp.pprint(client.searchExperimentsByCreationTimeWithPagination(args[0],args[1],eval(args[2]),eval(args[3]),eval(args[4]),eval(args[5]),))
 
+elif cmd == 'searchExperiments':
+  if len(args) != 5:
+    print 'searchExperiments requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchExperiments(args[0],args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
+elif cmd == 'getExperimentStatistics':
+  if len(args) != 3:
+    print 'getExperimentStatistics requires 3 args'
+    sys.exit(1)
+  pp.pprint(client.getExperimentStatistics(args[0],eval(args[1]),eval(args[2]),))
+
 elif cmd == 'getAllExperimentsInProject':
   if len(args) != 1:
     print 'getAllExperimentsInProject requires 1 args'

http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 a556289..da80fad 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
@@ -506,6 +506,49 @@ class Iface:
     """
     pass
 
+  def searchExperiments(self, gatewayId, userName, filters, limit, offset):
+    """
+    Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param filters
+          map of multiple filter criteria.
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
+    """
+    pass
+
+  def getExperimentStatistics(self, gatewayId, fromTime, toTime):
+    """
+    Get Experiment Statisitics for the given gateway for a specific time period
+    @param gatewayId
+          Identifier of the requested gateway
+    @param fromTime
+          Starting date time
+    @param toTime
+          Ending data time
+
+
+    Parameters:
+     - gatewayId
+     - fromTime
+     - toTime
+    """
+    pass
+
   def getAllExperimentsInProject(self, projectId):
     """
     Get all Experiments within a Project
@@ -591,7 +634,7 @@ class Iface:
          the ExperimentMetadata is a required field.
 
     @return
-      The server-side generated airavata experiment globally unique identifier.
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -638,7 +681,7 @@ class Iface:
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -683,7 +726,7 @@ class Iface:
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -764,7 +807,7 @@ class Iface:
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -842,7 +885,7 @@ class Iface:
          should be shared public by default.
 
     @return
-      The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -852,7 +895,7 @@ class Iface:
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -892,7 +935,7 @@ class Iface:
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -2151,6 +2194,8 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
+    if result.ae is not None:
+      raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getAPIVersion failed: unknown result");
 
   def addGateway(self, gateway):
@@ -3529,6 +3574,113 @@ class Client(Iface):
       raise result.ase
     raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTimeWithPagination failed: unknown result");
 
+  def searchExperiments(self, gatewayId, userName, filters, limit, offset):
+    """
+    Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param filters
+          map of multiple filter criteria.
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
+    """
+    self.send_searchExperiments(gatewayId, userName, filters, limit, offset)
+    return self.recv_searchExperiments()
+
+  def send_searchExperiments(self, gatewayId, userName, filters, limit, offset):
+    self._oprot.writeMessageBegin('searchExperiments', TMessageType.CALL, self._seqid)
+    args = searchExperiments_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.filters = filters
+    args.limit = limit
+    args.offset = offset
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperiments(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchExperiments_result()
+    result.read(self._iprot)
+    self._iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperiments failed: unknown result");
+
+  def getExperimentStatistics(self, gatewayId, fromTime, toTime):
+    """
+    Get Experiment Statisitics for the given gateway for a specific time period
+    @param gatewayId
+          Identifier of the requested gateway
+    @param fromTime
+          Starting date time
+    @param toTime
+          Ending data time
+
+
+    Parameters:
+     - gatewayId
+     - fromTime
+     - toTime
+    """
+    self.send_getExperimentStatistics(gatewayId, fromTime, toTime)
+    return self.recv_getExperimentStatistics()
+
+  def send_getExperimentStatistics(self, gatewayId, fromTime, toTime):
+    self._oprot.writeMessageBegin('getExperimentStatistics', TMessageType.CALL, self._seqid)
+    args = getExperimentStatistics_args()
+    args.gatewayId = gatewayId
+    args.fromTime = fromTime
+    args.toTime = toTime
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getExperimentStatistics(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getExperimentStatistics_result()
+    result.read(self._iprot)
+    self._iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentStatistics failed: unknown result");
+
   def getAllExperimentsInProject(self, projectId):
     """
     Get all Experiments within a Project
@@ -3740,7 +3892,7 @@ class Client(Iface):
          the ExperimentMetadata is a required field.
 
     @return
-      The server-side generated airavata experiment globally unique identifier.
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -3817,7 +3969,7 @@ class Client(Iface):
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -3893,7 +4045,7 @@ class Client(Iface):
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -4079,7 +4231,7 @@ class Client(Iface):
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -4375,7 +4527,7 @@ class Client(Iface):
          should be shared public by default.
 
     @return
-      The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -4385,7 +4537,7 @@ class Client(Iface):
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -4457,7 +4609,7 @@ class Client(Iface):
 
     @throws org.apache.airavata.model.error.AiravataClientException
        The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
+
          UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
             step, then Airavata Registry will not have a provenance area setup. The client has to follow
             gateway registration steps and retry this request.
@@ -8014,6 +8166,8 @@ class Processor(Iface, TProcessor):
     self._processMap["searchExperimentsByStatusWithPagination"] = Processor.process_searchExperimentsByStatusWithPagination
     self._processMap["searchExperimentsByCreationTime"] = Processor.process_searchExperimentsByCreationTime
     self._processMap["searchExperimentsByCreationTimeWithPagination"] = Processor.process_searchExperimentsByCreationTimeWithPagination
+    self._processMap["searchExperiments"] = Processor.process_searchExperiments
+    self._processMap["getExperimentStatistics"] = Processor.process_getExperimentStatistics
     self._processMap["getAllExperimentsInProject"] = Processor.process_getAllExperimentsInProject
     self._processMap["getAllExperimentsInProjectWithPagination"] = Processor.process_getAllExperimentsInProjectWithPagination
     self._processMap["getAllUserExperiments"] = Processor.process_getAllUserExperiments
@@ -8139,6 +8293,8 @@ class Processor(Iface, TProcessor):
       result.ace = ace
     except apache.airavata.api.error.ttypes.AiravataSystemException, ase:
       result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException, ae:
+      result.ae = ae
     oprot.writeMessageBegin("getAPIVersion", TMessageType.REPLY, seqid)
     result.write(oprot)
     oprot.writeMessageEnd()
@@ -8672,6 +8828,42 @@ class Processor(Iface, TProcessor):
     oprot.writeMessageEnd()
     oprot.trans.flush()
 
+  def process_searchExperiments(self, seqid, iprot, oprot):
+    args = searchExperiments_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = searchExperiments_result()
+    try:
+      result.success = self._handler.searchExperiments(args.gatewayId, args.userName, args.filters, args.limit, args.offset)
+    except apache.airavata.api.error.ttypes.InvalidRequestException, ire:
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException, ace:
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException, ase:
+      result.ase = ase
+    oprot.writeMessageBegin("searchExperiments", TMessageType.REPLY, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getExperimentStatistics(self, seqid, iprot, oprot):
+    args = getExperimentStatistics_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getExperimentStatistics_result()
+    try:
+      result.success = self._handler.getExperimentStatistics(args.gatewayId, args.fromTime, args.toTime)
+    except apache.airavata.api.error.ttypes.InvalidRequestException, ire:
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException, ace:
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException, ase:
+      result.ase = ase
+    oprot.writeMessageBegin("getExperimentStatistics", TMessageType.REPLY, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
   def process_getAllExperimentsInProject(self, seqid, iprot, oprot):
     args = getAllExperimentsInProject_args()
     args.read(iprot)
@@ -10468,6 +10660,7 @@ class getAPIVersion_result:
    - ire
    - ace
    - ase
+   - ae
   """
 
   thrift_spec = (
@@ -10475,13 +10668,15 @@ class getAPIVersion_result:
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 4
   )
 
-  def __init__(self, success=None, ire=None, ace=None, ase=None,):
+  def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
     self.success = success
     self.ire = ire
     self.ace = ace
     self.ase = ase
+    self.ae = ae
 
   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:
@@ -10515,6 +10710,12 @@ class getAPIVersion_result:
           self.ase.read(iprot)
         else:
           iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -10541,6 +10742,10 @@ class getAPIVersion_result:
       oprot.writeFieldBegin('ase', TType.STRUCT, 3)
       self.ase.write(oprot)
       oprot.writeFieldEnd()
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -16093,19 +16298,31 @@ class searchExperimentsByCreationTimeWithPagination_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getAllExperimentsInProject_args:
+class searchExperiments_args:
   """
   Attributes:
-   - projectId
+   - gatewayId
+   - userName
+   - filters
+   - limit
+   - offset
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRING, 'projectId', None, None, ), # 1
+    (1, TType.STRING, 'gatewayId', None, None, ), # 1
+    (2, TType.STRING, 'userName', None, None, ), # 2
+    (3, TType.MAP, 'filters', (TType.I32,None,TType.STRING,None), None, ), # 3
+    (4, TType.I32, 'limit', None, None, ), # 4
+    (5, TType.I32, 'offset', None, None, ), # 5
   )
 
-  def __init__(self, projectId=None,):
-    self.projectId = projectId
+  def __init__(self, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
+    self.gatewayId = gatewayId
+    self.userName = userName
+    self.filters = filters
+    self.limit = limit
+    self.offset = offset
 
   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:
@@ -16118,7 +16335,33 @@ class getAllExperimentsInProject_args:
         break
       if fid == 1:
         if ftype == TType.STRING:
-          self.projectId = iprot.readString();
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.MAP:
+          self.filters = {}
+          (_ktype129, _vtype130, _size128 ) = iprot.readMapBegin()
+          for _i132 in xrange(_size128):
+            _key133 = iprot.readI32();
+            _val134 = iprot.readString();
+            self.filters[_key133] = _val134
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.limit = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.offset = iprot.readI32();
         else:
           iprot.skip(ftype)
       else:
@@ -16130,17 +16373,43 @@ class getAllExperimentsInProject_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getAllExperimentsInProject_args')
-    if self.projectId is not None:
-      oprot.writeFieldBegin('projectId', TType.STRING, 1)
-      oprot.writeString(self.projectId)
+    oprot.writeStructBegin('searchExperiments_args')
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 1)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 2)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.filters is not None:
+      oprot.writeFieldBegin('filters', TType.MAP, 3)
+      oprot.writeMapBegin(TType.I32, TType.STRING, len(self.filters))
+      for kiter135,viter136 in self.filters.items():
+        oprot.writeI32(kiter135)
+        oprot.writeString(viter136)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.limit is not None:
+      oprot.writeFieldBegin('limit', TType.I32, 4)
+      oprot.writeI32(self.limit)
+      oprot.writeFieldEnd()
+    if self.offset is not None:
+      oprot.writeFieldBegin('offset', TType.I32, 5)
+      oprot.writeI32(self.offset)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.projectId is None:
-      raise TProtocol.TProtocolException(message='Required field projectId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    if self.limit is None:
+      raise TProtocol.TProtocolException(message='Required field limit is unset!')
+    if self.offset is None:
+      raise TProtocol.TProtocolException(message='Required field offset is unset!')
     return
 
 
@@ -16155,30 +16424,27 @@ class getAllExperimentsInProject_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getAllExperimentsInProject_result:
+class searchExperiments_result:
   """
   Attributes:
    - success
    - ire
    - ace
    - ase
-   - pnfe
   """
 
   thrift_spec = (
-    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.workspace.experiment.ttypes.Experiment, apache.airavata.model.workspace.experiment.ttypes.Experiment.thrift_spec)), None, ), # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.workspace.experiment.ttypes.ExperimentSummary, apache.airavata.model.workspace.experiment.ttypes.ExperimentSummary.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
-    (4, TType.STRUCT, 'pnfe', (apache.airavata.api.error.ttypes.ProjectNotFoundException, apache.airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ), # 4
   )
 
-  def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=None,):
+  def __init__(self, success=None, ire=None, ace=None, ase=None,):
     self.success = success
     self.ire = ire
     self.ace = ace
     self.ase = ase
-    self.pnfe = pnfe
 
   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:
@@ -16192,11 +16458,11 @@ class getAllExperimentsInProject_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype131, _size128) = iprot.readListBegin()
-          for _i132 in xrange(_size128):
-            _elem133 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
-            _elem133.read(iprot)
-            self.success.append(_elem133)
+          (_etype140, _size137) = iprot.readListBegin()
+          for _i141 in xrange(_size137):
+            _elem142 = apache.airavata.model.workspace.experiment.ttypes.ExperimentSummary()
+            _elem142.read(iprot)
+            self.success.append(_elem142)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -16218,12 +16484,6 @@ class getAllExperimentsInProject_result:
           self.ase.read(iprot)
         else:
           iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRUCT:
-          self.pnfe = apache.airavata.api.error.ttypes.ProjectNotFoundException()
-          self.pnfe.read(iprot)
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -16233,12 +16493,12 @@ class getAllExperimentsInProject_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getAllExperimentsInProject_result')
+    oprot.writeStructBegin('searchExperiments_result')
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter134 in self.success:
-        iter134.write(oprot)
+      for iter143 in self.success:
+        iter143.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -16253,10 +16513,6 @@ class getAllExperimentsInProject_result:
       oprot.writeFieldBegin('ase', TType.STRUCT, 3)
       self.ase.write(oprot)
       oprot.writeFieldEnd()
-    if self.pnfe is not None:
-      oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
-      self.pnfe.write(oprot)
-      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -16275,17 +16531,388 @@ class getAllExperimentsInProject_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getAllExperimentsInProjectWithPagination_args:
+class getExperimentStatistics_args:
   """
   Attributes:
-   - projectId
-   - limit
-   - offset
+   - gatewayId
+   - fromTime
+   - toTime
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRING, 'projectId', None, None, ), # 1
+    (1, TType.STRING, 'gatewayId', None, None, ), # 1
+    (2, TType.I64, 'fromTime', None, None, ), # 2
+    (3, TType.I64, 'toTime', None, None, ), # 3
+  )
+
+  def __init__(self, gatewayId=None, fromTime=None, toTime=None,):
+    self.gatewayId = gatewayId
+    self.fromTime = fromTime
+    self.toTime = toTime
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.fromTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.toTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getExperimentStatistics_args')
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 1)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.fromTime is not None:
+      oprot.writeFieldBegin('fromTime', TType.I64, 2)
+      oprot.writeI64(self.fromTime)
+      oprot.writeFieldEnd()
+    if self.toTime is not None:
+      oprot.writeFieldBegin('toTime', TType.I64, 3)
+      oprot.writeI64(self.toTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.fromTime is None:
+      raise TProtocol.TProtocolException(message='Required field fromTime is unset!')
+    if self.toTime is None:
+      raise TProtocol.TProtocolException(message='Required field toTime is unset!')
+    return
+
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getExperimentStatistics_result:
+  """
+  Attributes:
+   - success
+   - ire
+   - ace
+   - ase
+  """
+
+  thrift_spec = (
+    (0, TType.STRUCT, 'success', (apache.airavata.model.workspace.experiment.ttypes.ExperimentStatistics, apache.airavata.model.workspace.experiment.ttypes.ExperimentStatistics.thrift_spec), None, ), # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
+  )
+
+  def __init__(self, success=None, ire=None, ace=None, ase=None,):
+    self.success = success
+    self.ire = ire
+    self.ace = ace
+    self.ase = ase
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 0:
+        if ftype == TType.STRUCT:
+          self.success = apache.airavata.model.workspace.experiment.ttypes.ExperimentStatistics()
+          self.success.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getExperimentStatistics_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.STRUCT, 0)
+      self.success.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getAllExperimentsInProject_args:
+  """
+  Attributes:
+   - projectId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'projectId', None, None, ), # 1
+  )
+
+  def __init__(self, projectId=None,):
+    self.projectId = projectId
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getAllExperimentsInProject_args')
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 1)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.projectId is None:
+      raise TProtocol.TProtocolException(message='Required field projectId is unset!')
+    return
+
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getAllExperimentsInProject_result:
+  """
+  Attributes:
+   - success
+   - ire
+   - ace
+   - ase
+   - pnfe
+  """
+
+  thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.workspace.experiment.ttypes.Experiment, apache.airavata.model.workspace.experiment.ttypes.Experiment.thrift_spec)), None, ), # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'pnfe', (apache.airavata.api.error.ttypes.ProjectNotFoundException, apache.airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ), # 4
+  )
+
+  def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=None,):
+    self.success = success
+    self.ire = ire
+    self.ace = ace
+    self.ase = ase
+    self.pnfe = pnfe
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 0:
+        if ftype == TType.LIST:
+          self.success = []
+          (_etype147, _size144) = iprot.readListBegin()
+          for _i148 in xrange(_size144):
+            _elem149 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
+            _elem149.read(iprot)
+            self.success.append(_elem149)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.pnfe = apache.airavata.api.error.ttypes.ProjectNotFoundException()
+          self.pnfe.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getAllExperimentsInProject_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.LIST, 0)
+      oprot.writeListBegin(TType.STRUCT, len(self.success))
+      for iter150 in self.success:
+        iter150.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
+    if self.pnfe is not None:
+      oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
+      self.pnfe.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getAllExperimentsInProjectWithPagination_args:
+  """
+  Attributes:
+   - projectId
+   - limit
+   - offset
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'projectId', None, None, ), # 1
     (2, TType.I32, 'limit', None, None, ), # 2
     (3, TType.I32, 'offset', None, None, ), # 3
   )
@@ -16402,11 +17029,11 @@ class getAllExperimentsInProjectWithPagination_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype138, _size135) = iprot.readListBegin()
-          for _i139 in xrange(_size135):
-            _elem140 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
-            _elem140.read(iprot)
-            self.success.append(_elem140)
+          (_etype154, _size151) = iprot.readListBegin()
+          for _i155 in xrange(_size151):
+            _elem156 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
+            _elem156.read(iprot)
+            self.success.append(_elem156)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -16447,8 +17074,8 @@ class getAllExperimentsInProjectWithPagination_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter141 in self.success:
-        iter141.write(oprot)
+      for iter157 in self.success:
+        iter157.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -16595,11 +17222,11 @@ class getAllUserExperiments_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype145, _size142) = iprot.readListBegin()
-          for _i146 in xrange(_size142):
-            _elem147 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
-            _elem147.read(iprot)
-            self.success.append(_elem147)
+          (_etype161, _size158) = iprot.readListBegin()
+          for _i162 in xrange(_size158):
+            _elem163 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
+            _elem163.read(iprot)
+            self.success.append(_elem163)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -16634,8 +17261,8 @@ class getAllUserExperiments_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter148 in self.success:
-        iter148.write(oprot)
+      for iter164 in self.success:
+        iter164.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -16806,11 +17433,11 @@ class getAllUserExperimentsWithPagination_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype152, _size149) = iprot.readListBegin()
-          for _i153 in xrange(_size149):
-            _elem154 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
-            _elem154.read(iprot)
-            self.success.append(_elem154)
+          (_etype168, _size165) = iprot.readListBegin()
+          for _i169 in xrange(_size165):
+            _elem170 = apache.airavata.model.workspace.experiment.ttypes.Experiment()
+            _elem170.read(iprot)
+            self.success.append(_elem170)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -16845,8 +17472,8 @@ class getAllUserExperimentsWithPagination_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter155 in self.success:
-        iter155.write(oprot)
+      for iter171 in self.success:
+        iter171.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -18278,11 +18905,11 @@ class getExperimentOutputs_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype159, _size156) = iprot.readListBegin()
-          for _i160 in xrange(_size156):
-            _elem161 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
-            _elem161.read(iprot)
-            self.success.append(_elem161)
+          (_etype175, _size172) = iprot.readListBegin()
+          for _i176 in xrange(_size172):
+            _elem177 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem177.read(iprot)
+            self.success.append(_elem177)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -18323,8 +18950,8 @@ class getExperimentOutputs_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter162 in self.success:
-        iter162.write(oprot)
+      for iter178 in self.success:
+        iter178.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -18460,11 +19087,11 @@ class getIntermediateOutputs_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype166, _size163) = iprot.readListBegin()
-          for _i167 in xrange(_size163):
-            _elem168 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
-            _elem168.read(iprot)
-            self.success.append(_elem168)
+          (_etype182, _size179) = iprot.readListBegin()
+          for _i183 in xrange(_size179):
+            _elem184 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem184.read(iprot)
+            self.success.append(_elem184)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -18505,8 +19132,8 @@ class getIntermediateOutputs_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter169 in self.success:
-        iter169.write(oprot)
+      for iter185 in self.success:
+        iter185.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -18642,12 +19269,12 @@ class getJobStatuses_result:
       if fid == 0:
         if ftype == TType.MAP:
           self.success = {}
-          (_ktype171, _vtype172, _size170 ) = iprot.readMapBegin()
-          for _i174 in xrange(_size170):
-            _key175 = iprot.readString();
-            _val176 = apache.airavata.model.workspace.experiment.ttypes.JobStatus()
-            _val176.read(iprot)
-            self.success[_key175] = _val176
+          (_ktype187, _vtype188, _size186 ) = iprot.readMapBegin()
+          for _i190 in xrange(_size186):
+            _key191 = iprot.readString();
+            _val192 = apache.airavata.model.workspace.experiment.ttypes.JobStatus()
+            _val192.read(iprot)
+            self.success[_key191] = _val192
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -18688,9 +19315,9 @@ class getJobStatuses_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
-      for kiter177,viter178 in self.success.items():
-        oprot.writeString(kiter177)
-        viter178.write(oprot)
+      for kiter193,viter194 in self.success.items():
+        oprot.writeString(kiter193)
+        viter194.write(oprot)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -18826,11 +19453,11 @@ class getJobDetails_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype182, _size179) = iprot.readListBegin()
-          for _i183 in xrange(_size179):
-            _elem184 = apache.airavata.model.workspace.experiment.ttypes.JobDetails()
-            _elem184.read(iprot)
-            self.success.append(_elem184)
+          (_etype198, _size195) = iprot.readListBegin()
+          for _i199 in xrange(_size195):
+            _elem200 = apache.airavata.model.workspace.experiment.ttypes.JobDetails()
+            _elem200.read(iprot)
+            self.success.append(_elem200)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -18871,8 +19498,8 @@ class getJobDetails_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter185 in self.success:
-        iter185.write(oprot)
+      for iter201 in self.success:
+        iter201.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -19008,11 +19635,11 @@ class getDataTransferDetails_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype189, _size186) = iprot.readListBegin()
-          for _i190 in xrange(_size186):
-            _elem191 = apache.airavata.model.workspace.experiment.ttypes.DataTransferDetails()
-            _elem191.read(iprot)
-            self.success.append(_elem191)
+          (_etype205, _size202) = iprot.readListBegin()
+          for _i206 in xrange(_size202):
+            _elem207 = apache.airavata.model.workspace.experiment.ttypes.DataTransferDetails()
+            _elem207.read(iprot)
+            self.success.append(_elem207)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -19053,8 +19680,8 @@ class getDataTransferDetails_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter192 in self.success:
-        iter192.write(oprot)
+      for iter208 in self.success:
+        iter208.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -20053,11 +20680,11 @@ class getAllAppModules_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype196, _size193) = iprot.readListBegin()
-          for _i197 in xrange(_size193):
-            _elem198 = apache.airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-            _elem198.read(iprot)
-            self.success.append(_elem198)
+          (_etype212, _size209) = iprot.readListBegin()
+          for _i213 in xrange(_size209):
+            _elem214 = apache.airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+            _elem214.read(iprot)
+            self.success.append(_elem214)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -20092,8 +20719,8 @@ class getAllAppModules_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter199 in self.success:
-        iter199.write(oprot)
+      for iter215 in self.success:
+        iter215.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -21053,11 +21680,11 @@ class getAllApplicationDeployments_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype203, _size200) = iprot.readListBegin()
-          for _i204 in xrange(_size200):
-            _elem205 = apache.airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-            _elem205.read(iprot)
-            self.success.append(_elem205)
+          (_etype219, _size216) = iprot.readListBegin()
+          for _i220 in xrange(_size216):
+            _elem221 = apache.airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+            _elem221.read(iprot)
+            self.success.append(_elem221)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -21092,8 +21719,8 @@ class getAllApplicationDeployments_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter206 in self.success:
-        iter206.write(oprot)
+      for iter222 in self.success:
+        iter222.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -21222,10 +21849,10 @@ class getAppModuleDeployedResources_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype210, _size207) = iprot.readListBegin()
-          for _i211 in xrange(_size207):
-            _elem212 = iprot.readString();
-            self.success.append(_elem212)
+          (_etype226, _size223) = iprot.readListBegin()
+          for _i227 in xrange(_size223):
+            _elem228 = iprot.readString();
+            self.success.append(_elem228)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -21260,8 +21887,8 @@ class getAppModuleDeployedResources_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter213 in self.success:
-        oprot.writeString(iter213)
+      for iter229 in self.success:
+        oprot.writeString(iter229)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -22061,11 +22688,11 @@ class getAllApplicationInterfaceNames_result:
       if fid == 0:
         if ftype == TType.MAP:
           self.success = {}
-          (_ktype215, _vtype216, _size214 ) = iprot.readMapBegin()
-          for _i218 in xrange(_size214):
-            _key219 = iprot.readString();
-            _val220 = iprot.readString();
-            self.success[_key219] = _val220
+          (_ktype231, _vtype232, _size230 ) = iprot.readMapBegin()
+          for _i234 in xrange(_size230):
+            _key235 = iprot.readString();
+            _val236 = iprot.readString();
+            self.success[_key235] = _val236
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -22100,9 +22727,9 @@ class getAllApplicationInterfaceNames_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-      for kiter221,viter222 in self.success.items():
-        oprot.writeString(kiter221)
-        oprot.writeString(viter222)
+      for kiter237,viter238 in self.success.items():
+        oprot.writeString(kiter237)
+        oprot.writeString(viter238)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -22231,11 +22858,11 @@ class getAllApplicationInterfaces_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype226, _size223) = iprot.readListBegin()
-          for _i227 in xrange(_size223):
-            _elem228 = apache.airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
-            _elem228.read(iprot)
-            self.success.append(_elem228)
+          (_etype242, _size239) = iprot.readListBegin()
+          for _i243 in xrange(_size239):
+            _elem244 = apache.airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
+            _elem244.read(iprot)
+            self.success.append(_elem244)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -22270,8 +22897,8 @@ class getAllApplicationInterfaces_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter229 in self.success:
-        iter229.write(oprot)
+      for iter245 in self.success:
+        iter245.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -22400,11 +23027,11 @@ class getApplicationInputs_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype233, _size230) = iprot.readListBegin()
-          for _i234 in xrange(_size230):
-            _elem235 = apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType()
-            _elem235.read(iprot)
-            self.success.append(_elem235)
+          (_etype249, _size246) = iprot.readListBegin()
+          for _i250 in xrange(_size246):
+            _elem251 = apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType()
+            _elem251.read(iprot)
+            self.success.append(_elem251)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -22439,8 +23066,8 @@ class getApplicationInputs_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter236 in self.success:
-        iter236.write(oprot)
+      for iter252 in self.success:
+        iter252.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -22569,11 +23196,11 @@ class getApplicationOutputs_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype240, _size237) = iprot.readListBegin()
-          for _i241 in xrange(_size237):
-            _elem242 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
-            _elem242.read(iprot)
-            self.success.append(_elem242)
+          (_etype256, _size253) = iprot.readListBegin()
+          for _i257 in xrange(_size253):
+            _elem258 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem258.read(iprot)
+            self.success.append(_elem258)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -22608,8 +23235,8 @@ class getApplicationOutputs_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter243 in self.success:
-        iter243.write(oprot)
+      for iter259 in self.success:
+        iter259.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -22738,11 +23365,11 @@ class getAvailableAppInterfaceComputeResources_result:
       if fid == 0:
         if ftype == TType.MAP:
           self.success = {}
-          (_ktype245, _vtype246, _size244 ) = iprot.readMapBegin()
-          for _i248 in xrange(_size244):
-            _key249 = iprot.readString();
-            _val250 = iprot.readString();
-            self.success[_key249] = _val250
+          (_ktype261, _vtype262, _size260 ) = iprot.readMapBegin()
+          for _i264 in xrange(_size260):
+            _key265 = iprot.readString();
+            _val266 = iprot.readString();
+            self.success[_key265] = _val266
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -22777,9 +23404,9 @@ class getAvailableAppInterfaceComputeResources_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-      for kiter251,viter252 in self.success.items():
-        oprot.writeString(kiter251)
-        oprot.writeString(viter252)
+      for kiter267,viter268 in self.success.items():
+        oprot.writeString(kiter267)
+        oprot.writeString(viter268)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -23210,11 +23837,11 @@ class getAllComputeResourceNames_result:
       if fid == 0:
         if ftype == TType.MAP:
           self.success = {}
-          (_ktype254, _vtype255, _size253 ) = iprot.readMapBegin()
-          for _i257 in xrange(_size253):
-            _key258 = iprot.readString();
-            _val259 = iprot.readString();
-            self.success[_key258] = _val259
+          (_ktype270, _vtype271, _size269 ) = iprot.readMapBegin()
+          for _i273 in xrange(_size269):
+            _key274 = iprot.readString();
+            _val275 = iprot.readString();
+            self.success[_key274] = _val275
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -23249,9 +23876,9 @@ class getAllComputeResourceNames_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-      for kiter260,viter261 in self.success.items():
-        oprot.writeString(kiter260)
-        oprot.writeString(viter261)
+      for kiter276,viter277 in self.success.items():
+        oprot.writeString(kiter276)
+        oprot.writeString(viter277)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -28193,11 +28820,11 @@ class changeJobSubmissionPriorities_args:
       if fid == 1:
         if ftype == TType.MAP:
           self.jobSubmissionPriorityMap = {}
-          (_ktype263, _vtype264, _size262 ) = iprot.readMapBegin()
-          for _i266 in xrange(_size262):
-            _key267 = iprot.readString();
-            _val268 = iprot.readI32();
-            self.jobSubmissionPriorityMap[_key267] = _val268
+          (_ktype279, _vtype280, _size278 ) = iprot.readMapBegin()
+          for _i282 in xrange(_size278):
+            _key283 = iprot.readString();
+            _val284 = iprot.readI32();
+            self.jobSubmissionPriorityMap[_key283] = _val284
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -28214,9 +28841,9 @@ class changeJobSubmissionPriorities_args:
     if self.jobSubmissionPriorityMap is not None:
       oprot.writeFieldBegin('jobSubmissionPriorityMap', TType.MAP, 1)
       oprot.writeMapBegin(TType.STRING, TType.I32, len(self.jobSubmissionPriorityMap))
-      for kiter269,viter270 in self.jobSubmissionPriorityMap.items():
-        oprot.writeString(kiter269)
-        oprot.writeI32(viter270)
+      for kiter285,viter286 in self.jobSubmissionPriorityMap.items():
+        oprot.writeString(kiter285)
+        oprot.writeI32(viter286)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -28363,11 +28990,11 @@ class changeDataMovementPriorities_args:
       if fid == 1:
         if ftype == TType.MAP:
           self.dataMovementPriorityMap = {}
-          (_ktype272, _vtype273, _size271 ) = iprot.readMapBegin()
-          for _i275 in xrange(_size271):
-            _key276 = iprot.readString();
-            _val277 = iprot.readI32();
-            self.dataMovementPriorityMap[_key276] = _val277
+          (_ktype288, _vtype289, _size287 ) = iprot.readMapBegin()
+          for _i291 in xrange(_size287):
+            _key292 = iprot.readString();
+            _val293 = iprot.readI32();
+            self.dataMovementPriorityMap[_key292] = _val293
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -28384,9 +29011,9 @@ class changeDataMovementPriorities_args:
     if self.dataMovementPriorityMap is not None:
       oprot.writeFieldBegin('dataMovementPriorityMap', TType.MAP, 1)
       oprot.writeMapBegin(TType.STRING, TType.I32, len(self.dataMovementPriorityMap))
-      for kiter278,viter279 in self.dataMovementPriorityMap.items():
-        oprot.writeString(kiter278)
-        oprot.writeI32(viter279)
+      for kiter294,viter295 in self.dataMovementPriorityMap.items():
+        oprot.writeString(kiter294)
+        oprot.writeI32(viter295)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -30803,11 +31430,11 @@ class getAllGatewayComputeResourcePreferences_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype283, _size280) = iprot.readListBegin()
-          for _i284 in xrange(_size280):
-            _elem285 = apache.airavata.model.appcatalog.gatewayprofile.ttypes.ComputeResourcePreference()
-            _elem285.read(iprot)
-            self.success.append(_elem285)
+          (_etype299, _size296) = iprot.readListBegin()
+          for _i300 in xrange(_size296):
+            _elem301 = apache.airavata.model.appcatalog.gatewayprofile.ttypes.ComputeResourcePreference()
+            _elem301.read(iprot)
+            self.success.append(_elem301)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -30842,8 +31469,8 @@ class getAllGatewayComputeResourcePreferences_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter286 in self.success:
-        iter286.write(oprot)
+      for iter302 in self.success:
+        iter302.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -30952,11 +31579,11 @@ class getAllGatewayComputeResources_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype290, _size287) = iprot.readListBegin()
-          for _i291 in xrange(_size287):
-            _elem292 = apache.airavata.model.appcatalog.gatewayprofile.ttypes.GatewayResourceProfile()
-            _elem292.read(iprot)
-            self.success.append(_elem292)
+          (_etype306, _size303) = iprot.readListBegin()
+          for _i307 in xrange(_size303):
+            _elem308 = apache.airavata.model.appcatalog.gatewayprofile.ttypes.GatewayResourceProfile()
+            _elem308.read(iprot)
+            self.success.append(_elem308)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -30991,8 +31618,8 @@ class getAllGatewayComputeResources_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter293 in self.success:
-        iter293.write(oprot)
+      for iter309 in self.success:
+        iter309.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -31484,10 +32111,10 @@ class getAllWorkflows_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype297, _size294) = iprot.readListBegin()
-          for _i298 in xrange(_size294):
-            _elem299 = iprot.readString();
-            self.success.append(_elem299)
+          (_etype313, _size310) = iprot.readListBegin()
+          for _i314 in xrange(_size310):
+            _elem315 = iprot.readString();
+            self.success.append(_elem315)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -31522,8 +32149,8 @@ class getAllWorkflows_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter300 in self.success:
-        oprot.writeString(iter300)
+      for iter316 in self.success:
+        oprot.writeString(iter316)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:


[6/8] airavata git commit: adding missing API functionality to xsede branch from master

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 dd73b61..c1348c5 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
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
     /**
      * Fetch Apache Airavata API version
      */
-    public String getAPIVersion() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+    public String getAPIVersion() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     public String addGateway(org.apache.airavata.model.workspace.Gateway gateway) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
@@ -459,6 +459,45 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param filters
+     *       map of multiple filter criteria.
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param filters
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperiments(String gatewayId, String userName, Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Get Experiment Statisitics for the given gateway for a specific time period
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param fromTime
+     *       Starting date time
+     * @param toTime
+     *       Ending data time
+     * 
+     * 
+     * @param gatewayId
+     * @param fromTime
+     * @param toTime
+     */
+    public org.apache.airavata.model.workspace.experiment.ExperimentStatistics getExperimentStatistics(String gatewayId, long fromTime, long toTime) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Get all Experiments within a Project
      * 
      * @param projectId
@@ -534,7 +573,7 @@ import org.slf4j.LoggerFactory;
      *      the ExperimentMetadata is a required field.
      * 
      * @return
-     *   The server-side generated airavata experiment globally unique identifier.
+     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
      * 
      * @throws org.apache.airavata.model.error.InvalidRequestException
      *    For any incorrect forming of the request itself.
@@ -579,7 +618,7 @@ import org.slf4j.LoggerFactory;
      * 
      * @throws org.apache.airavata.model.error.AiravataClientException
      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-     *      
+     * 
      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
      *         gateway registration steps and retry this request.
@@ -622,7 +661,7 @@ import org.slf4j.LoggerFactory;
      * 
      * @throws org.apache.airavata.model.error.AiravataClientException
      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-     *      
+     * 
      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
      *         gateway registration steps and retry this request.
@@ -687,7 +726,7 @@ import org.slf4j.LoggerFactory;
      * 
      * @throws org.apache.airavata.model.error.AiravataClientException
      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-     *      
+     * 
      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
      *         gateway registration steps and retry this request.
@@ -733,7 +772,7 @@ import org.slf4j.LoggerFactory;
      *      should be shared public by default.
      * 
      * @return
-     *   The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
      * 
      * @throws org.apache.airavata.model.error.InvalidRequestException
      *    For any incorrect forming of the request itself.
@@ -743,7 +782,7 @@ import org.slf4j.LoggerFactory;
      * 
      * @throws org.apache.airavata.model.error.AiravataClientException
      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-     *      
+     * 
      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
      *         gateway registration steps and retry this request.
@@ -781,7 +820,7 @@ import org.slf4j.LoggerFactory;
      * 
      * @throws org.apache.airavata.model.error.AiravataClientException
      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-     *      
+     * 
      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
      *         gateway registration steps and retry this request.
@@ -1852,6 +1891,10 @@ import org.slf4j.LoggerFactory;
 
     public void searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchExperiments(String gatewayId, String userName, Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getExperimentStatistics(String gatewayId, long fromTime, long toTime, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void getAllExperimentsInProject(String projectId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
@@ -2066,7 +2109,7 @@ import org.slf4j.LoggerFactory;
       super(iprot, oprot);
     }
 
-    public String getAPIVersion() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    public String getAPIVersion() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
     {
       send_getAPIVersion();
       return recv_getAPIVersion();
@@ -2078,7 +2121,7 @@ import org.slf4j.LoggerFactory;
       sendBase("getAPIVersion", args);
     }
 
-    public String recv_getAPIVersion() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    public String recv_getAPIVersion() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
     {
       getAPIVersion_result result = new getAPIVersion_result();
       receiveBase(result, "getAPIVersion");
@@ -2094,6 +2137,9 @@ import org.slf4j.LoggerFactory;
       if (result.ase != null) {
         throw result.ase;
       }
+      if (result.ae != null) {
+        throw result.ae;
+      }
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAPIVersion failed: unknown result");
     }
 
@@ -3079,6 +3125,76 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTimeWithPagination failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperiments(String gatewayId, String userName, Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchExperiments(gatewayId, userName, filters, limit, offset);
+      return recv_searchExperiments();
+    }
+
+    public void send_searchExperiments(String gatewayId, String userName, Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchExperiments_args args = new searchExperiments_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setFilters(filters);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchExperiments", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> recv_searchExperiments() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchExperiments_result result = new searchExperiments_result();
+      receiveBase(result, "searchExperiments");
+      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, "searchExperiments failed: unknown result");
+    }
+
+    public org.apache.airavata.model.workspace.experiment.ExperimentStatistics getExperimentStatistics(String gatewayId, long fromTime, long toTime) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_getExperimentStatistics(gatewayId, fromTime, toTime);
+      return recv_getExperimentStatistics();
+    }
+
+    public void send_getExperimentStatistics(String gatewayId, long fromTime, long toTime) throws org.apache.thrift.TException
+    {
+      getExperimentStatistics_args args = new getExperimentStatistics_args();
+      args.setGatewayId(gatewayId);
+      args.setFromTime(fromTime);
+      args.setToTime(toTime);
+      sendBase("getExperimentStatistics", args);
+    }
+
+    public org.apache.airavata.model.workspace.experiment.ExperimentStatistics recv_getExperimentStatistics() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      getExperimentStatistics_result result = new getExperimentStatistics_result();
+      receiveBase(result, "getExperimentStatistics");
+      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, "getExperimentStatistics failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllExperimentsInProject(String projectId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException
     {
       send_getAllExperimentsInProject(projectId);
@@ -6251,7 +6367,7 @@ import org.slf4j.LoggerFactory;
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -7342,6 +7458,88 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchExperiments(String gatewayId, String userName, Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchExperiments_call method_call = new searchExperiments_call(gatewayId, userName, filters, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchExperiments_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters;
+      private int limit;
+      private int offset;
+      public searchExperiments_call(String gatewayId, String userName, Map<org.apache.airavata.model.workspace.experiment.ExperimentSearchFields,String> filters, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.filters = filters;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchExperiments", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchExperiments_args args = new searchExperiments_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setFilters(filters);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.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_searchExperiments();
+      }
+    }
+
+    public void getExperimentStatistics(String gatewayId, long fromTime, long toTime, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getExperimentStatistics_call method_call = new getExperimentStatistics_call(gatewayId, fromTime, toTime, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getExperimentStatistics_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private long fromTime;
+      private long toTime;
+      public getExperimentStatistics_call(String gatewayId, long fromTime, long toTime, 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.gatewayId = gatewayId;
+        this.fromTime = fromTime;
+        this.toTime = toTime;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getExperimentStatistics", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getExperimentStatistics_args args = new getExperimentStatistics_args();
+        args.setGatewayId(gatewayId);
+        args.setFromTime(fromTime);
+        args.setToTime(toTime);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.workspace.experiment.ExperimentStatistics getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.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_getExperimentStatistics();
+      }
+    }
+
     public void getAllExperimentsInProject(String projectId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       getAllExperimentsInProject_call method_call = new getAllExperimentsInProject_call(projectId, resultHandler, this, ___protocolFactory, ___transport);
@@ -10628,6 +10826,8 @@ import org.slf4j.LoggerFactory;
       processMap.put("searchExperimentsByStatusWithPagination", new searchExperimentsByStatusWithPagination());
       processMap.put("searchExperimentsByCreationTime", new searchExperimentsByCreationTime());
       processMap.put("searchExperimentsByCreationTimeWithPagination", new searchExperimentsByCreationTimeWithPagination());
+      processMap.put("searchExperiments", new searchExperiments());
+      processMap.put("getExperimentStatistics", new getExperimentStatistics());
       processMap.put("getAllExperimentsInProject", new getAllExperimentsInProject());
       processMap.put("getAllExperimentsInProjectWithPagination", new getAllExperimentsInProjectWithPagination());
       processMap.put("getAllUserExperiments", new getAllUserExperiments());
@@ -10750,6 +10950,8 @@ import org.slf4j.LoggerFactory;
           result.ace = ace;
         } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
           result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
         }
         return result;
       }
@@ -11576,6 +11778,62 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public static class searchExperiments<I extends Iface> extends org.apache.thrift.ProcessFunction<I, searchExperiments_args> {
+      public searchExperiments() {
+        super("searchExperiments");
+      }
+
+      public searchExperiments_args getEmptyArgsInstance() {
+        return new searchExperiments_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public searchExperiments_result getResult(I iface, searchExperiments_args args) throws org.apache.thrift.TException {
+        searchExperiments_result result = new searchExperiments_result();
+        try {
+          result.success = iface.searchExperiments(args.gatewayId, args.userName, args.filters, args.limit, args.offset);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
+    public static class getExperimentStatistics<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getExperimentStatistics_args> {
+      public getExperimentStatistics() {
+        super("getExperimentStatistics");
+      }
+
+      public getExperimentStatistics_args getEmptyArgsInstance() {
+        return new getExperimentStatistics_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getExperimentStatistics_result getResult(I iface, getExperimentStatistics_args args) throws org.apache.thrift.TException {
+        getExperimentStatistics_result result = new getExperimentStatistics_result();
+        try {
+          result.success = iface.getExperimentStatistics(args.gatewayId, args.fromTime, args.toTime);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        }
+        return result;
+      }
+    }
+
     public static class getAllExperimentsInProject<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getAllExperimentsInProject_args> {
       public getAllExperimentsInProject() {
         super("getAllExperimentsInProject");
@@ -14353,6 +14611,8 @@ import org.slf4j.LoggerFactory;
       processMap.put("searchExperimentsByStatusWithPagination", new searchExperimentsByStatusWithPagination());
       processMap.put("searchExperimentsByCreationTime", new searchExperimentsByCreationTime());
       processMap.put("searchExperimentsByCreationTimeWithPagination", new searchExperimentsByCreationTimeWithPagination());
+      processMap.put("searchExperiments", new searchExperiments());
+      processMap.put("getExperimentStatistics", new getExperimentStatistics());
       processMap.put("getAllExperimentsInProject", new getAllExperimentsInProject());
       processMap.put("getAllExperimentsInProjectWithPagination", new getAllExperimentsInProjectWithPagination());
       processMap.put("getAllUserExperiments", new getAllUserExperiments());
@@ -14494,6 +14754,11 @@ import org.slf4j.LoggerFactory;
                         result.setAseIsSet(true);
                         msg = result;
             }
+            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+                        result.setAeIsSet(true);
+                        msg = result;
+            }
              else 
             {
               msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
@@ -16478,20 +16743,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public static class getAllExperimentsInProject<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getAllExperimentsInProject_args, List<org.apache.airavata.model.workspace.experiment.Experiment>> {
-      public getAllExperimentsInProject() {
-        super("getAllExperimentsInProject");
+    public static class searchExperiments<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, searchExperiments_args, List<org.apache.airavata.model.workspace.experiment.ExperimentSummary>> {
+      public searchExperiments() {
+        super("searchExperiments");
       }
 
-      public getAllExperimentsInProject_args getEmptyArgsInstance() {
-        return new getAllExperimentsInProject_args();
+      public searchExperiments_args getEmptyArgsInstance() {
+        return new searchExperiments_args();
       }
 
-      public AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+      public AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.ExperimentSummary>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>>() { 
-          public void onComplete(List<org.apache.airavata.model.workspace.experiment.Experiment> o) {
-            getAllExperimentsInProject_result result = new getAllExperimentsInProject_result();
+        return new AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.ExperimentSummary>>() { 
+          public void onComplete(List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> o) {
+            searchExperiments_result result = new searchExperiments_result();
             result.success = o;
             try {
               fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
@@ -16504,7 +16769,7 @@ import org.slf4j.LoggerFactory;
           public void onError(Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
-            getAllExperimentsInProject_result result = new getAllExperimentsInProject_result();
+            searchExperiments_result result = new searchExperiments_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
                         result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
                         result.setIreIsSet(true);
@@ -16520,9 +16785,71 @@ import org.slf4j.LoggerFactory;
                         result.setAseIsSet(true);
                         msg = result;
             }
-            else             if (e instanceof org.apache.airavata.model.error.ProjectNotFoundException) {
-                        result.pnfe = (org.apache.airavata.model.error.ProjectNotFoundException) e;
-                        result.setPnfeIsSet(true);
+             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, searchExperiments_args args, org.apache.thrift.async.AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.ExperimentSummary>> resultHandler) throws TException {
+        iface.searchExperiments(args.gatewayId, args.userName, args.filters, args.limit, args.offset,resultHandler);
+      }
+    }
+
+    public static class getExperimentStatistics<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getExperimentStatistics_args, org.apache.airavata.model.workspace.experiment.ExperimentStatistics> {
+      public getExperimentStatistics() {
+        super("getExperimentStatistics");
+      }
+
+      public getExperimentStatistics_args getEmptyArgsInstance() {
+        return new getExperimentStatistics_args();
+      }
+
+      public AsyncMethodCallback<org.apache.airavata.model.workspace.experiment.ExperimentStatistics> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<org.apache.airavata.model.workspace.experiment.ExperimentStatistics>() { 
+          public void onComplete(org.apache.airavata.model.workspace.experiment.ExperimentStatistics o) {
+            getExperimentStatistics_result result = new getExperimentStatistics_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;
+            getExperimentStatistics_result result = new getExperimentStatistics_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
                         msg = result;
             }
              else 
@@ -16545,25 +16872,25 @@ import org.slf4j.LoggerFactory;
         return false;
       }
 
-      public void start(I iface, getAllExperimentsInProject_args args, org.apache.thrift.async.AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>> resultHandler) throws TException {
-        iface.getAllExperimentsInProject(args.projectId,resultHandler);
+      public void start(I iface, getExperimentStatistics_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.workspace.experiment.ExperimentStatistics> resultHandler) throws TException {
+        iface.getExperimentStatistics(args.gatewayId, args.fromTime, args.toTime,resultHandler);
       }
     }
 
-    public static class getAllExperimentsInProjectWithPagination<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getAllExperimentsInProjectWithPagination_args, List<org.apache.airavata.model.workspace.experiment.Experiment>> {
-      public getAllExperimentsInProjectWithPagination() {
-        super("getAllExperimentsInProjectWithPagination");
+    public static class getAllExperimentsInProject<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getAllExperimentsInProject_args, List<org.apache.airavata.model.workspace.experiment.Experiment>> {
+      public getAllExperimentsInProject() {
+        super("getAllExperimentsInProject");
       }
 
-      public getAllExperimentsInProjectWithPagination_args getEmptyArgsInstance() {
-        return new getAllExperimentsInProjectWithPagination_args();
+      public getAllExperimentsInProject_args getEmptyArgsInstance() {
+        return new getAllExperimentsInProject_args();
       }
 
       public AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>>() { 
           public void onComplete(List<org.apache.airavata.model.workspace.experiment.Experiment> o) {
-            getAllExperimentsInProjectWithPagination_result result = new getAllExperimentsInProjectWithPagination_result();
+            getAllExperimentsInProject_result result = new getAllExperimentsInProject_result();
             result.success = o;
             try {
               fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
@@ -16576,7 +16903,79 @@ import org.slf4j.LoggerFactory;
           public void onError(Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
-            getAllExperimentsInProjectWithPagination_result result = new getAllExperimentsInProjectWithPagination_result();
+            getAllExperimentsInProject_result result = new getAllExperimentsInProject_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.ProjectNotFoundException) {
+                        result.pnfe = (org.apache.airavata.model.error.ProjectNotFoundException) e;
+                        result.setPnfeIsSet(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, getAllExperimentsInProject_args args, org.apache.thrift.async.AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>> resultHandler) throws TException {
+        iface.getAllExperimentsInProject(args.projectId,resultHandler);
+      }
+    }
+
+    public static class getAllExperimentsInProjectWithPagination<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getAllExperimentsInProjectWithPagination_args, List<org.apache.airavata.model.workspace.experiment.Experiment>> {
+      public getAllExperimentsInProjectWithPagination() {
+        super("getAllExperimentsInProjectWithPagination");
+      }
+
+      public getAllExperimentsInProjectWithPagination_args getEmptyArgsInstance() {
+        return new getAllExperimentsInProjectWithPagination_args();
+      }
+
+      public AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<List<org.apache.airavata.model.workspace.experiment.Experiment>>() { 
+          public void onComplete(List<org.apache.airavata.model.workspace.experiment.Experiment> o) {
+            getAllExperimentsInProjectWithPagination_result result = new getAllExperimentsInProjectWithPagination_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;
+            getAllExperimentsInProjectWithPagination_result result = new getAllExperimentsInProjectWithPagination_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
                         result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
                         result.setIreIsSet(true);
@@ -23233,6 +23632,7 @@ import org.slf4j.LoggerFactory;
     private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
     private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
     private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+    private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -23244,13 +23644,15 @@ import org.slf4j.LoggerFactory;
     public org.apache.airavata.model.error.InvalidRequestException ire; // required
     public org.apache.airavata.model.error.AiravataClientException ace; // required
     public org.apache.airavata.model.error.AiravataSystemException ase; // required
+    public org.apache.airavata.model.error.AuthorizationException ae; // 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 {
       SUCCESS((short)0, "success"),
       IRE((short)1, "ire"),
       ACE((short)2, "ace"),
-      ASE((short)3, "ase");
+      ASE((short)3, "ase"),
+      AE((short)4, "ae");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -23273,6 +23675,8 @@ import org.slf4j.LoggerFactory;
             return ACE;
           case 3: // ASE
             return ASE;
+          case 4: // AE
+            return AE;
           default:
             return null;
         }
@@ -23324,6 +23728,8 @@ import org.slf4j.LoggerFactory;
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       tmpMap.put(_Fields.ASE, new org.apache.thrift.meta_data.FieldMetaData("ase", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getAPIVersion_result.class, metaDataMap);
     }
@@ -23335,13 +23741,15 @@ import org.slf4j.LoggerFactory;
       String success,
       org.apache.airavata.model.error.InvalidRequestException ire,
       org.apache.airavata.model.error.AiravataClientException ace,
-      org.apache.airavata.model.error.AiravataSystemException ase)
+      org.apache.airavata.model.error.AiravataSystemException ase,
+      org.apache.airavata.model.error.AuthorizationException ae)
     {
       this();
       this.success = success;
       this.ire = ire;
       this.ace = ace;
       this.ase = ase;
+      this.ae = ae;
     }
 
     /**
@@ -23360,6 +23768,9 @@ import org.slf4j.LoggerFactory;
       if (other.isSetAse()) {
         this.ase = new org.apache.airavata.model.error.AiravataSystemException(other.ase);
       }
+      if (other.isSetAe()) {
+        this.ae = new org.apache.airavata.model.error.AuthorizationException(other.ae);
+      }
     }
 
     public getAPIVersion_result deepCopy() {
@@ -23372,6 +23783,7 @@ import org.slf4j.LoggerFactory;
       this.ire = null;
       this.ace = null;
       this.ase = null;
+      this.ae = null;
     }
 
     public String getSuccess() {
@@ -23470,6 +23882,30 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public org.apache.airavata.model.error.AuthorizationException getAe() {
+      return this.ae;
+    }
+
+    public getAPIVersion_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+      this.ae = ae;
+      return this;
+    }
+
+    public void unsetAe() {
+      this.ae = null;
+    }
+
+    /** Returns true if field ae is set (has been assigned a value) and false otherwise */
+    public boolean isSetAe() {
+      return this.ae != null;
+    }
+
+    public void setAeIsSet(boolean value) {
+      if (!value) {
+        this.ae = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case SUCCESS:
@@ -23504,6 +23940,14 @@ import org.slf4j.LoggerFactory;
         }
         break;
 
+      case AE:
+        if (value == null) {
+          unsetAe();
+        } else {
+          setAe((org.apache.airavata.model.error.AuthorizationException)value);
+        }
+        break;
+
       }
     }
 
@@ -23521,6 +23965,9 @@ import org.slf4j.LoggerFactory;
       case ASE:
         return getAse();
 
+      case AE:
+        return getAe();
+
       }
       throw new IllegalStateException();
     }
@@ -23540,6 +23987,8 @@ import org.slf4j.LoggerFactory;
         return isSetAce();
       case ASE:
         return isSetAse();
+      case AE:
+        return isSetAe();
       }
       throw new IllegalStateException();
     }
@@ -23593,6 +24042,15 @@ import org.slf4j.LoggerFactory;
           return false;
       }
 
+      boolean this_present_ae = true && this.isSetAe();
+      boolean that_present_ae = true && that.isSetAe();
+      if (this_present_ae || that_present_ae) {
+        if (!(this_present_ae && that_present_ae))
+          return false;
+        if (!this.ae.equals(that.ae))
+          return false;
+      }
+
       return true;
     }
 
@@ -23649,6 +24107,16 @@ import org.slf4j.LoggerFactory;
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetAe()).compareTo(other.isSetAe());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAe()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ae, other.ae);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -23700,6 +24168,14 @@ import org.slf4j.LoggerFactory;
         sb.append(this.ase);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("ae:");
+      if (this.ae == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ae);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -23778,6 +24254,15 @@ import org.slf4j.LoggerFactory;
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 4: // AE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+                struct.ae.read(iprot);
+                struct.setAeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -23813,6 +24298,11 @@ import org.slf4j.LoggerFactory;
           struct.ase.write(oprot);
           oprot.writeFieldEnd();
         }
+        if (struct.ae != null) {
+          oprot.writeFieldBegin(AE_FIELD_DESC);
+          struct.ae.write(oprot);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -23843,7 +24333,10 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetAse()) {
           optionals.set(3);
         }
-        oprot.writeBitSet(optionals, 4);
+        if (struct.isSetAe()) {
+          optionals.set(4);
+        }
+        oprot.writeBitSet(optionals, 5);
         if (struct.isSetSuccess()) {
           oprot.writeString(struct.success);
         }
@@ -23856,12 +24349,15 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetAse()) {
           struct.ase.write(oprot);
         }
+        if (struct.isSetAe()) {
+          struct.ae.write(oprot);
+        }
       }
 
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, getAPIVersion_result struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(4);
+        BitSet incoming = iprot.readBitSet(5);
         if (incoming.get(0)) {
           struct.success = iprot.readString();
           struct.setSuccessIsSet(true);
@@ -23881,6 +24377,11 @@ import org.slf4j.LoggerFactory;
           struct.ase.read(iprot);
           struct.setAseIsSet(true);
         }
+        if (incoming.get(4)) {
+          struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+          struct.ae.read(iprot);
+          struct.setAeIsSet(true);
+        }
       }
     }
 
@@ -36626,25 +37127,2521 @@ import org.slf4j.LoggerFactory;
 
     @Override
     public String toString() {
-      StringBuilder sb = new StringBuilder("deleteProject_args(");
+      StringBuilder sb = new StringBuilder("deleteProject_args(");
+      boolean first = true;
+
+      sb.append("projectId:");
+      if (this.projectId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.projectId);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (projectId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class deleteProject_argsStandardSchemeFactory implements SchemeFactory {
+      public deleteProject_argsStandardScheme getScheme() {
+        return new deleteProject_argsStandardScheme();
+      }
+    }
+
+    private static class deleteProject_argsStandardScheme extends StandardScheme<deleteProject_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deleteProject_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // PROJECT_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.projectId = iprot.readString();
+                struct.setProjectIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, deleteProject_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.projectId != null) {
+          oprot.writeFieldBegin(PROJECT_ID_FIELD_DESC);
+          oprot.writeString(struct.projectId);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deleteProject_argsTupleSchemeFactory implements SchemeFactory {
+      public deleteProject_argsTupleScheme getScheme() {
+        return new deleteProject_argsTupleScheme();
+      }
+    }
+
+    private static class deleteProject_argsTupleScheme extends TupleScheme<deleteProject_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deleteProject_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        oprot.writeString(struct.projectId);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deleteProject_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        struct.projectId = iprot.readString();
+        struct.setProjectIdIsSet(true);
+      }
+    }
+
+  }
+
+  public static class deleteProject_result implements org.apache.thrift.TBase<deleteProject_result, deleteProject_result._Fields>, java.io.Serializable, Cloneable, Comparable<deleteProject_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deleteProject_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
+    private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+    private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+    private static final org.apache.thrift.protocol.TField PNFE_FIELD_DESC = new org.apache.thrift.protocol.TField("pnfe", org.apache.thrift.protocol.TType.STRUCT, (short)4);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deleteProject_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deleteProject_resultTupleSchemeFactory());
+    }
+
+    public boolean success; // required
+    public org.apache.airavata.model.error.InvalidRequestException ire; // required
+    public org.apache.airavata.model.error.AiravataClientException ace; // required
+    public org.apache.airavata.model.error.AiravataSystemException ase; // required
+    public org.apache.airavata.model.error.ProjectNotFoundException pnfe; // 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 {
+      SUCCESS((short)0, "success"),
+      IRE((short)1, "ire"),
+      ACE((short)2, "ace"),
+      ASE((short)3, "ase"),
+      PNFE((short)4, "pnfe");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          case 1: // IRE
+            return IRE;
+          case 2: // ACE
+            return ACE;
+          case 3: // ASE
+            return ASE;
+          case 4: // PNFE
+            return PNFE;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+      tmpMap.put(_Fields.IRE, new org.apache.thrift.meta_data.FieldMetaData("ire", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.ACE, new org.apache.thrift.meta_data.FieldMetaData("ace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.ASE, new org.apache.thrift.meta_data.FieldMetaData("ase", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.PNFE, new org.apache.thrift.meta_data.FieldMetaData("pnfe", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deleteProject_result.class, metaDataMap);
+    }
+
+    public deleteProject_result() {
+    }
+
+    public deleteProject_result(
+      boolean success,
+      org.apache.airavata.model.error.InvalidRequestException ire,
+      org.apache.airavata.model.error.AiravataClientException ace,
+      org.apache.airavata.model.error.AiravataSystemException ase,
+      org.apache.airavata.model.error.ProjectNotFoundException pnfe)
+    {
+      this();
+      this.success = success;
+      setSuccessIsSet(true);
+      this.ire = ire;
+      this.ace = ace;
+      this.ase = ase;
+      this.pnfe = pnfe;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deleteProject_result(deleteProject_result other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.success = other.success;
+      if (other.isSetIre()) {
+        this.ire = new org.apache.airavata.model.error.InvalidRequestException(other.ire);
+      }
+      if (other.isSetAce()) {
+        this.ace = new org.apache.airavata.model.error.AiravataClientException(other.ace);
+      }
+      if (other.isSetAse()) {
+        this.ase = new org.apache.airavata.model.error.AiravataSystemException(other.ase);
+      }
+      if (other.isSetPnfe()) {
+        this.pnfe = new org.apache.airavata.model.error.ProjectNotFoundException(other.pnfe);
+      }
+    }
+
+    public deleteProject_result deepCopy() {
+      return new deleteProject_result(this);
+    }
+
+    @Override
+    public void clear() {
+      setSuccessIsSet(false);
+      this.success = false;
+      this.ire = null;
+      this.ace = null;
+      this.ase = null;
+      this.pnfe = null;
+    }
+
+    public boolean isSuccess() {
+      return this.success;
+    }
+
+    public deleteProject_result setSuccess(boolean success) {
+      this.success = success;
+      setSuccessIsSet(true);
+      return this;
+    }
+
+    public void unsetSuccess() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+    }
+
+    public org.apache.airavata.model.error.InvalidRequestException getIre() {
+      return this.ire;
+    }
+
+    public deleteProject_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
+      this.ire = ire;
+      return this;
+    }
+
+    public void unsetIre() {
+      this.ire = null;
+    }
+
+    /** Returns true if field ire is set (has been assigned a value) and false otherwise */
+    public boolean isSetIre() {
+      return this.ire != null;
+    }
+
+    public void setIreIsSet(boolean value) {
+      if (!value) {
+        this.ire = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AiravataClientException getAce() {
+      return this.ace;
+    }
+
+    public deleteProject_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
+      this.ace = ace;
+      return this;
+    }
+
+    public void unsetAce() {
+      this.ace = null;
+    }
+
+    /** Returns true if field ace is set (has been assigned a value) and false otherwise */
+    public boolean isSetAce() {
+      return this.ace != null;
+    }
+
+    public void setAceIsSet(boolean value) {
+      if (!value) {
+        this.ace = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AiravataSystemException getAse() {
+      return this.ase;
+    }
+
+    public deleteProject_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
+      this.ase = ase;
+      return this;
+    }
+
+    public void unsetAse() {
+      this.ase = null;
+    }
+
+    /** Returns true if field ase is set (has been assigned a value) and false otherwise */
+    public boolean isSetAse() {
+      return this.ase != null;
+    }
+
+    public void setAseIsSet(boolean value) {
+      if (!value) {
+        this.ase = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.ProjectNotFoundException getPnfe() {
+      return this.pnfe;
+    }
+
+    public deleteProject_result setPnfe(org.apache.airavata.model.error.ProjectNotFoundException pnfe) {
+      this.pnfe = pnfe;
+      return this;
+    }
+
+    public void unsetPnfe() {
+      this.pnfe = null;
+    }
+
+    /** Returns true if field pnfe is set (has been assigned a value) and false otherwise */
+    public boolean isSetPnfe() {
+      return this.pnfe != null;
+    }
+
+    public void setPnfeIsSet(boolean value) {
+      if (!value) {
+        this.pnfe = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Boolean)value);
+        }
+        break;
+
+      case IRE:
+        if (value == null) {
+          unsetIre();
+        } else {
+          setIre((org.apache.airavata.model.error.InvalidRequestException)value);
+        }
+        break;
+
+      case ACE:
+        if (value == null) {
+          unsetAce();
+        } else {
+          setAce((org.apache.airavata.model.error.AiravataClientException)value);
+        }
+        break;
+
+      case ASE:
+        if (value == null) {
+          unsetAse();
+        } else {
+          setAse((org.apache.airavata.model.error.AiravataSystemException)value);
+        }
+        break;
+
+      case PNFE:
+        if (value == null) {
+          unsetPnfe();
+        } else {
+          setPnfe((org.apache.airavata.model.error.ProjectNotFoundException)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return Boolean.valueOf(isSuccess());
+
+      case IRE:
+        return getIre();
+
+      case ACE:
+        return getAce();
+
+      case ASE:
+        return getAse();
+
+      case PNFE:
+        return getPnfe();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      case IRE:
+        return isSetIre();
+      case ACE:
+        return isSetAce();
+      case ASE:
+        return isSetAse();
+      case PNFE:
+        return isSetPnfe();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deleteProject_result)
+        return this.equals((deleteProject_result)that);
+      return false;
+    }
+
+    public boolean equals(deleteProject_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true;
+      boolean that_present_success = true;
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (this.success != that.success)
+          return false;
+      }
+
+      boolean this_present_ire = true && this.isSetIre();
+      boolean that_present_ire = true && that.isSetIre();
+      if (this_present_ire || that_present_ire) {
+        if (!(this_present_ire && that_present_ire))
+          return false;
+        if (!this.ire.equals(that.ire))
+          return false;
+      }
+
+      boolean this_present_ace = true && this.isSetAce();
+      boolean that_present_ace = true && that.isSetAce();
+      if (this_present_ace || that_present_ace) {
+        if (!(this_present_ace && that_present_ace))
+          return false;
+        if (!this.ace.equals(that.ace))
+          return false;
+      }
+
+      boolean this_present_ase = true && this.isSetAse();
+      boolean that_present_ase = true && that.isSetAse();
+      if (this_present_ase || that_present_ase) {
+        if (!(this_present_ase && that_present_ase))
+          return false;
+        if (!this.ase.equals(that.ase))
+          return false;
+      }
+
+      boolean this_present_pnfe = true && this.isSetPnfe();
+      boolean that_present_pnfe = true && that.isSetPnfe();
+      if (this_present_pnfe || that_present_pnfe) {
+        if (!(this_present_pnfe && that_present_pnfe))
+          return false;
+        if (!this.pnfe.equals(that.pnfe))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    @Override
+    public int compareTo(deleteProject_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetIre()).compareTo(other.isSetIre());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetIre()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ire, other.ire);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAce()).compareTo(other.isSetAce());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAce()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ace, other.ace);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAse()).compareTo(other.isSetAse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ase, other.ase);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetPnfe()).compareTo(other.isSetPnfe());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetPnfe()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.pnfe, other.pnfe);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+      }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("deleteProject_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      sb.append(this.success);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ire:");
+      if (this.ire == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ire);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ace:");
+      if (this.ace == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ace);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ase:");
+      if (this.ase == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ase);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("pnfe:");
+      if (this.pnfe == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.pnfe);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class deleteProject_resultStandardSchemeFactory implements SchemeFactory {
+      public deleteProject_resultStandardScheme getScheme() {
+        return new deleteProject_resultStandardScheme();
+      }
+    }
+
+    private static class deleteProject_resultStandardScheme extends StandardScheme<deleteProject_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deleteProject_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                struct.success = iprot.readBool();
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 1: // IRE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
+                struct.ire.read(iprot);
+                struct.setIreIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // ACE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ace = new org.apache.airavata.model.error.AiravataClientException();
+                struct.ace.read(iprot);
+                struct.setAceIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // ASE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
+                struct.ase.read(iprot);
+                struct.setAseIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // PNFE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.pnfe = new org.apache.airavata.model.error.ProjectNotFoundException();
+                struct.pnfe.read(iprot);
+                struct.setPnfeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, deleteProject_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ire != null) {
+          oprot.writeFieldBegin(IRE_FIELD_DESC);
+          struct.ire.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ace != null) {
+          oprot.writeFieldBegin(ACE_FIELD_DESC);
+          struct.ace.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ase != null) {
+          oprot.writeFieldBegin(ASE_FIELD_DESC);
+          struct.ase.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.pnfe != null) {
+          oprot.writeFieldBegin(PNFE_FIELD_DESC);
+          struct.pnfe.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deleteProject_resultTupleSchemeFactory implements SchemeFactory {
+      public deleteProject_resultTupleScheme getScheme() {
+        return new deleteProject_resultTupleScheme();
+      }
+    }
+
+    private static class deleteProject_resultTupleScheme extends TupleScheme<deleteProject_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deleteProject_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        if (struct.isSetIre()) {
+          optionals.set(1);
+        }
+        if (struct.isSetAce()) {
+          optionals.set(2);
+        }
+        if (struct.isSetAse()) {
+          optionals.set(3);
+        }
+        if (struct.isSetPnfe()) {
+          optionals.set(4);
+        }
+        oprot.writeBitSet(optionals, 5);
+        if (struct.isSetSuccess()) {
+          oprot.writeBool(struct.success);
+        }
+        if (struct.isSetIre()) {
+          struct.ire.write(oprot);
+        }
+        if (struct.isSetAce()) {
+          struct.ace.write(oprot);
+        }
+        if (struct.isSetAse()) {
+          struct.ase.write(oprot);
+        }
+        if (struct.isSetPnfe()) {
+          struct.pnfe.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deleteProject_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(5);
+        if (incoming.get(0)) {
+          struct.success = iprot.readBool();
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
+          struct.ire.read(iprot);
+          struct.setIreIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.ace = new org.apache.airavata.model.error.AiravataClientException();
+          struct.ace.read(iprot);
+          struct.setAceIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
+          struct.ase.read(iprot);
+          struct.setAseIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.pnfe = new org.apache.airavata.model.error.ProjectNotFoundException();
+          struct.pnfe.read(iprot);
+          struct.setPnfeIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class getAllUserProjects_args implements org.apache.thrift.TBase<getAllUserProjects_args, getAllUserProjects_args._Fields>, java.io.Serializable, Cloneable, Comparable<getAllUserProjects_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAllUserProjects_args");
+
+    private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new getAllUserProjects_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new getAllUserProjects_argsTupleSchemeFactory());
+    }
+
+    public String gatewayId; // required
+    public String userName; // 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 {
+      GATEWAY_ID((short)1, "gatewayId"),
+      USER_NAME((short)2, "userName");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // GATEWAY_ID
+            return GATEWAY_ID;
+          case 2: // USER_NAME
+            return USER_NAME;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getAllUserProjects_args.class, metaDataMap);
+    }
+
+    public getAllUserProjects_args() {
+    }
+
+    public getAllUserProjects_args(
+      String gatewayId,
+      String userName)
+    {
+      this();
+      this.gatewayId = gatewayId;
+      this.userName = userName;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getAllUserProjects_args(getAllUserProjects_args other) {
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
+      if (other.isSetUserName()) {
+        this.userName = other.userName;
+      }
+    }
+
+    public getAllUserProjects_args deepCopy() {
+      return new getAllUserProjects_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.gatewayId = null;
+      this.userName = null;
+    }
+
+    public String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public getAllUserProjects_args setGatewayId(String gatewayId) {
+      this.gatewayId = gatewayId;
+      return this;
+    }
+
+    public void unsetGatewayId() {
+      this.gatewayId = null;
+    }
+
+    /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGatewayId() {
+      return this.gatewayId != null;
+    }
+
+    public void setGatewayIdIsSet(boolean value) {
+      if (!value) {
+        this.gatewayId = null;
+      }
+    }
+
+    public String getUserName() {
+      return this.userName;
+    }
+
+    public getAllUserProjects_args setUserName(String userName) {
+      this.userName = userName;
+      return this;
+    }
+
+    public void unsetUserName() {
+      this.userName = null;
+    }
+
+    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserName() {
+      return this.userName != null;
+    }
+
+    public void setUserNameIsSet(boolean value) {
+      if (!value) {
+        this.userName = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((String)value);
+        }
+        break;
+
+      case USER_NAME:
+        if (value == null) {
+          unsetUserName();
+        } else {
+          setUserName((String)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GATEWAY_ID:
+        return getGatewayId();
+
+      case USER_NAME:
+        return getUserName();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case GATEWAY_ID:
+        return isSetGatewayId();
+      case USER_NAME:
+        return isSetUserName();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getAllUserProjects_args)
+        return this.equals((getAllUserProjects_args)that);
+      return false;
+    }
+
+    public boolean equals(getAllUserProjects_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_gatewayId = true && this.isSetGatewayId();
+      boolean that_present_gatewayId = true && that.isSetGatewayId();
+      if (this_present_gatewayId || that_present_gatewayId) {
+        if (!(this_present_gatewayId && that_present_gatewayId))
+          return false;
+        if (!this.gatewayId.equals(that.gatewayId))
+          return false;
+      }
+
+      boolean this_present_userName = true && this.isSetUserName();
+      boolean that_present_userName = true && that.isSetUserName();
+      if (this_present_userName || that_present_userName) {
+        if (!(this_present_userName && that_present_userName))
+          return false;
+        if (!this.userName.equals(that.userName))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    @Override
+    public int compareTo(getAllUserProjects_args other) {
+      if (!getClass().equals(other.getClass()

<TRUNCATED>

[8/8] airavata git commit: adding createExperimentSummary method to Utils class in registry resources

Posted by sc...@apache.org.
adding createExperimentSummary method to Utils class in registry resources


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

Branch: refs/heads/xsede-tutorial-2015
Commit: 82913953c9460efebfcdd8b40d2798552caaa395
Parents: 811fd17
Author: Supun Nakandala <sc...@apache.org>
Authored: Tue Jun 23 21:53:03 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Tue Jun 23 21:53:03 2015 +0530

----------------------------------------------------------------------
 .../registry/jpa/resources/Utils.java           | 35 ++++++++++++++++++++
 1 file changed, 35 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/82913953/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
index 34bd1fd..ff3fd87 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
@@ -214,6 +214,13 @@ public class Utils {
                     logger.error("Object should be a Experiment.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Experiment.");
                 }
+            case EXPERIMENT_SUMMARY:
+                if (o instanceof  Experiment){
+                    return createExperimentSummary((Experiment)o);
+                }else {
+                    logger.error("Object should be a ExperimentSummary.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a ExperimentSummary.");
+                }
             case NOTIFICATION_EMAIL:
                 if (o instanceof  Notification_Email){
                     return createNotificationEmail((Notification_Email)o);
@@ -472,6 +479,34 @@ public class Utils {
         return experimentResource;
     }
 
+    private static ExperimentSummaryResource createExperimentSummary(Experiment o) {
+        ExperimentSummaryResource experimentSummaryResource = new ExperimentSummaryResource();
+        if (o != null){
+            experimentSummaryResource.setExecutionUser(o.getExecutionUser());
+            experimentSummaryResource.setExpID(o.getExpId());
+            experimentSummaryResource.setExpName(o.getExpName());
+            experimentSummaryResource.setProjectID(o.getProjectId());
+            experimentSummaryResource.setCreationTime(o.getCreationTime());
+            experimentSummaryResource.setDescription(o.getExpDesc());
+            experimentSummaryResource.setApplicationId(o.getApplicationId());
+
+            if(o.getStatuses() != null && !o.getStatuses().isEmpty()) {
+                Status experimentStatus = o.getStatuses().iterator().next();
+                if (experimentStatus != null) {
+                    StatusResource statusResource = new StatusResource();
+                    statusResource.setStatusId(experimentStatus.getStatusId());
+                    statusResource.setJobId(experimentStatus.getJobId());
+                    statusResource.setState(experimentStatus.getState());
+                    statusResource.setStatusUpdateTime(experimentStatus.getStatusUpdateTime());
+                    statusResource.setStatusType(experimentStatus.getStatusType());
+                    experimentSummaryResource.setStatus(statusResource);
+                }
+            }
+        }
+
+        return experimentSummaryResource;
+    }
+
     private static Resource createNotificationEmail (Notification_Email o){
         NotificationEmailResource emailResource = new NotificationEmailResource();
         if (o != null){


[7/8] airavata git commit: adding missing API functionality to xsede branch from master

Posted by sc...@apache.org.
adding missing API functionality to xsede branch from master


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

Branch: refs/heads/xsede-tutorial-2015
Commit: 811fd17e17baa8e6d71af88f5d75ff7598a7d04e
Parents: 7b9418a
Author: Supun Nakandala <sc...@apache.org>
Authored: Tue Jun 23 14:02:20 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Tue Jun 23 14:02:20 2015 +0530

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  109 +
 .../java/org/apache/airavata/api/Airavata.java  | 9382 ++++++++++++------
 .../main/resources/lib/airavata/Airavata.cpp    | 3030 ++++--
 .../src/main/resources/lib/airavata/Airavata.h  |  370 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |   10 +
 .../lib/airavata/experimentModel_types.cpp      |  305 +-
 .../lib/airavata/experimentModel_types.h        |  137 +-
 .../resources/lib/Airavata/API/Airavata.php     | 3326 ++++---
 .../Model/Workspace/Experiment/Types.php        |  367 +-
 .../lib/apache/airavata/api/Airavata-remote     |   14 +
 .../lib/apache/airavata/api/Airavata.py         | 1057 +-
 .../model/workspace/experiment/ttypes.py        |  237 +-
 .../workspace/experiment/ExperimentSummary.java |  163 +-
 .../airavataAPI.thrift                          |   80 +-
 .../experimentModel.thrift                      |   23 +-
 .../persistance/registry/jpa/ResourceType.java  |    1 +
 .../registry/jpa/impl/ExperimentRegistry.java   |  121 +-
 .../registry/jpa/impl/RegistryImpl.java         |    3 +
 .../registry/jpa/model/Experiment.java          |   12 +
 .../resources/ExperimentStatisticsResource.java |  133 +
 .../resources/ExperimentSummaryResource.java    |  135 +
 .../registry/jpa/resources/WorkerResource.java  |  276 +-
 .../jpa/utils/ThriftDataModelConversion.java    |   65 +-
 .../registry/cpi/RegistryModelType.java         |    1 +
 24 files changed, 13102 insertions(+), 6255 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/811fd17e/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 fff3810..4279350 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
@@ -928,6 +928,115 @@ public class AiravataServerHandler implements Airavata.Iface {
     }
 
     /**
+     * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param filters
+     *       map of multiple filter criteria.
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<ExperimentSummary> searchExperiments(String gatewayId, String userName, Map<ExperimentSearchFields, String> filters, int limit, int offset)
+            throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        if (!validateString(userName)){
+            logger.error("Username cannot be empty. Please provide a valid user..");
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Username cannot be empty. Please provide a valid user..");
+            throw exception;
+        }
+        if (!isGatewayExist(gatewayId)){
+            logger.error("Gateway does not exist.Please provide a valid gateway id...");
+            throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+        }
+        try {
+            if (!ResourceUtils.isUserExist(userName)){
+                logger.error("User does not exist in the system. Please provide a valid user..");
+                AiravataSystemException exception = new AiravataSystemException();
+                exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+                exception.setMessage("User does not exist in the system. Please provide a valid user..");
+                throw exception;
+            }
+            List<ExperimentSummary> summaries = new ArrayList<ExperimentSummary>();
+            registry = RegistryFactory.getRegistry(gatewayId);
+            Map<String, String> regFilters = new HashMap();
+            regFilters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
+            regFilters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
+            for(Map.Entry<ExperimentSearchFields, String> entry : filters.entrySet())
+            {
+                if(entry.getKey().equals(ExperimentSearchFields.EXPERIMENT_NAME)){
+                    regFilters.put(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME, entry.getValue());
+                }else if(entry.getKey().equals(ExperimentSearchFields.EXPERIMENT_DESC)){
+                    regFilters.put(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC, entry.getValue());
+                }else if(entry.getKey().equals(ExperimentSearchFields.APPLICATION_ID)){
+                    regFilters.put(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID, entry.getValue());
+                }else if(entry.getKey().equals(ExperimentSearchFields.STATUS)){
+                    regFilters.put(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS, entry.getValue());
+                }else if(entry.getKey().equals(ExperimentSearchFields.FROM_DATE)){
+                    regFilters.put(Constants.FieldConstants.ExperimentConstants.FROM_DATE, entry.getValue());
+                }else if(entry.getKey().equals(ExperimentSearchFields.TO_DATE)){
+                    regFilters.put(Constants.FieldConstants.ExperimentConstants.TO_DATE, entry.getValue());
+                }
+            }
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, regFilters, limit,
+                    offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
+            for (Object object : results) {
+                summaries.add((ExperimentSummary) object);
+            }
+            return summaries;
+        }catch (Exception e) {
+            logger.error("Error while retrieving experiments", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving experiments. More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    /**
+     * Get Experiment execution statisitics by sending the gateway id and the time period interested in.
+     * This method will retrun an ExperimentStatistics object which contains the number of successfully
+     * completed experiments, failed experiments etc.
+     * @param gatewayId
+     * @param fromTime
+     * @param toTime
+     * @return
+     * @throws InvalidRequestException
+     * @throws AiravataClientException
+     * @throws AiravataSystemException
+     * @throws TException
+     */
+    @Override
+    public ExperimentStatistics getExperimentStatistics(String gatewayId, long fromTime, long toTime) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        if (!isGatewayExist(gatewayId)){
+            logger.error("Gateway does not exist.Please provide a valid gateway id...");
+            throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+        }
+        try {
+            Map<String, String> filters = new HashMap();
+            filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
+            filters.put(Constants.FieldConstants.ExperimentConstants.FROM_DATE, fromTime+"");
+            filters.put(Constants.FieldConstants.ExperimentConstants.TO_DATE, toTime+"");
+
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT_STATISTICS, filters);
+            return (ExperimentStatistics) results.get(0);
+        }catch (Exception e) {
+            logger.error("Error while retrieving experiments", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving experiments. More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    /**
      * Get all Experiments within a Project
      *
      * @param projectId