airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sma...@apache.org
Subject [02/44] airavata git commit: changing few API methods to adhere to security solution.
Date Tue, 21 Jul 2015 04:41:45 GMT
http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/constants.py
new file mode 100644
index 0000000..f9a2df5
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/ttypes.py
new file mode 100644
index 0000000..29fe575
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/commons/ttypes.py
@@ -0,0 +1,335 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ErrorModel:
+  """
+  Attributes:
+   - errorId
+   - creationTime
+   - actualErrorMessage
+   - userFriendlyMessage
+   - transientOrPersistent
+   - rootCauseErrorIdList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'errorId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'actualErrorMessage', None, None, ), # 3
+    (4, TType.STRING, 'userFriendlyMessage', None, None, ), # 4
+    (5, TType.BOOL, 'transientOrPersistent', None, False, ), # 5
+    (6, TType.LIST, 'rootCauseErrorIdList', (TType.STRING,None), None, ), # 6
+  )
+
+  def __init__(self, errorId=thrift_spec[1][4], creationTime=None, actualErrorMessage=None, userFriendlyMessage=None, transientOrPersistent=thrift_spec[5][4], rootCauseErrorIdList=None,):
+    self.errorId = errorId
+    self.creationTime = creationTime
+    self.actualErrorMessage = actualErrorMessage
+    self.userFriendlyMessage = userFriendlyMessage
+    self.transientOrPersistent = transientOrPersistent
+    self.rootCauseErrorIdList = rootCauseErrorIdList
+
+  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.errorId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.actualErrorMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.userFriendlyMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.transientOrPersistent = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.rootCauseErrorIdList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.rootCauseErrorIdList.append(_elem5)
+          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('ErrorModel')
+    if self.errorId is not None:
+      oprot.writeFieldBegin('errorId', TType.STRING, 1)
+      oprot.writeString(self.errorId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.actualErrorMessage is not None:
+      oprot.writeFieldBegin('actualErrorMessage', TType.STRING, 3)
+      oprot.writeString(self.actualErrorMessage)
+      oprot.writeFieldEnd()
+    if self.userFriendlyMessage is not None:
+      oprot.writeFieldBegin('userFriendlyMessage', TType.STRING, 4)
+      oprot.writeString(self.userFriendlyMessage)
+      oprot.writeFieldEnd()
+    if self.transientOrPersistent is not None:
+      oprot.writeFieldBegin('transientOrPersistent', TType.BOOL, 5)
+      oprot.writeBool(self.transientOrPersistent)
+      oprot.writeFieldEnd()
+    if self.rootCauseErrorIdList is not None:
+      oprot.writeFieldBegin('rootCauseErrorIdList', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRING, len(self.rootCauseErrorIdList))
+      for iter6 in self.rootCauseErrorIdList:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.errorId is None:
+      raise TProtocol.TProtocolException(message='Required field errorId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.errorId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.actualErrorMessage)
+    value = (value * 31) ^ hash(self.userFriendlyMessage)
+    value = (value * 31) ^ hash(self.transientOrPersistent)
+    value = (value * 31) ^ hash(self.rootCauseErrorIdList)
+    return value
+
+  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 ValidatorResult:
+  """
+  This data structure can be used to store the validation results
+  captured during validation step and during the launchExperiment
+  operation it can be easilly checked to see the errors occured
+  during the experiment launch operation
+
+
+  Attributes:
+   - result
+   - errorDetails
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'result', None, None, ), # 1
+    (2, TType.STRING, 'errorDetails', None, None, ), # 2
+  )
+
+  def __init__(self, result=None, errorDetails=None,):
+    self.result = result
+    self.errorDetails = errorDetails
+
+  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.BOOL:
+          self.result = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorDetails = 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('ValidatorResult')
+    if self.result is not None:
+      oprot.writeFieldBegin('result', TType.BOOL, 1)
+      oprot.writeBool(self.result)
+      oprot.writeFieldEnd()
+    if self.errorDetails is not None:
+      oprot.writeFieldBegin('errorDetails', TType.STRING, 2)
+      oprot.writeString(self.errorDetails)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.result is None:
+      raise TProtocol.TProtocolException(message='Required field result is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.result)
+    value = (value * 31) ^ hash(self.errorDetails)
+    return value
+
+  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 ValidationResults:
+  """
+  Attributes:
+   - validationState
+   - validationResultList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'validationState', None, None, ), # 1
+    (2, TType.LIST, 'validationResultList', (TType.STRUCT,(ValidatorResult, ValidatorResult.thrift_spec)), None, ), # 2
+  )
+
+  def __init__(self, validationState=None, validationResultList=None,):
+    self.validationState = validationState
+    self.validationResultList = validationResultList
+
+  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.BOOL:
+          self.validationState = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.validationResultList = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = ValidatorResult()
+            _elem12.read(iprot)
+            self.validationResultList.append(_elem12)
+          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('ValidationResults')
+    if self.validationState is not None:
+      oprot.writeFieldBegin('validationState', TType.BOOL, 1)
+      oprot.writeBool(self.validationState)
+      oprot.writeFieldEnd()
+    if self.validationResultList is not None:
+      oprot.writeFieldBegin('validationResultList', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.validationResultList))
+      for iter13 in self.validationResultList:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationState is None:
+      raise TProtocol.TProtocolException(message='Required field validationState is unset!')
+    if self.validationResultList is None:
+      raise TProtocol.TProtocolException(message='Required field validationResultList is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationState)
+    value = (value * 31) ^ hash(self.validationResultList)
+    return value
+
+  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/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
new file mode 100644
index 0000000..15b7342
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
@@ -0,0 +1,944 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.status.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentType:
+  SINGLE_APPLICATION = 0
+  WORKFLOW = 1
+
+  _VALUES_TO_NAMES = {
+    0: "SINGLE_APPLICATION",
+    1: "WORKFLOW",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SINGLE_APPLICATION": 0,
+    "WORKFLOW": 1,
+  }
+
+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 UserConfigurationDataModel:
+  """
+  A structure holding the experiment configuration.
+
+
+
+  Attributes:
+   - airavataAutoSchedule
+   - overrideManualScheduledParams
+   - shareExperimentPublicly
+   - computationalResourceScheduling
+   - throttleResources
+   - userDN
+   - generateCert
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'airavataAutoSchedule', None, False, ), # 1
+    (2, TType.BOOL, 'overrideManualScheduledParams', None, False, ), # 2
+    (3, TType.BOOL, 'shareExperimentPublicly', None, False, ), # 3
+    (4, TType.STRUCT, 'computationalResourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 4
+    (5, TType.BOOL, 'throttleResources', None, False, ), # 5
+    (6, TType.STRING, 'userDN', None, None, ), # 6
+    (7, TType.BOOL, 'generateCert', None, False, ), # 7
+  )
+
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4],):
+    self.airavataAutoSchedule = airavataAutoSchedule
+    self.overrideManualScheduledParams = overrideManualScheduledParams
+    self.shareExperimentPublicly = shareExperimentPublicly
+    self.computationalResourceScheduling = computationalResourceScheduling
+    self.throttleResources = throttleResources
+    self.userDN = userDN
+    self.generateCert = generateCert
+
+  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.BOOL:
+          self.airavataAutoSchedule = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overrideManualScheduledParams = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.BOOL:
+          self.shareExperimentPublicly = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.computationalResourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.computationalResourceScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.throttleResources = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userDN = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.BOOL:
+          self.generateCert = iprot.readBool();
+        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('UserConfigurationDataModel')
+    if self.airavataAutoSchedule is not None:
+      oprot.writeFieldBegin('airavataAutoSchedule', TType.BOOL, 1)
+      oprot.writeBool(self.airavataAutoSchedule)
+      oprot.writeFieldEnd()
+    if self.overrideManualScheduledParams is not None:
+      oprot.writeFieldBegin('overrideManualScheduledParams', TType.BOOL, 2)
+      oprot.writeBool(self.overrideManualScheduledParams)
+      oprot.writeFieldEnd()
+    if self.shareExperimentPublicly is not None:
+      oprot.writeFieldBegin('shareExperimentPublicly', TType.BOOL, 3)
+      oprot.writeBool(self.shareExperimentPublicly)
+      oprot.writeFieldEnd()
+    if self.computationalResourceScheduling is not None:
+      oprot.writeFieldBegin('computationalResourceScheduling', TType.STRUCT, 4)
+      self.computationalResourceScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.throttleResources is not None:
+      oprot.writeFieldBegin('throttleResources', TType.BOOL, 5)
+      oprot.writeBool(self.throttleResources)
+      oprot.writeFieldEnd()
+    if self.userDN is not None:
+      oprot.writeFieldBegin('userDN', TType.STRING, 6)
+      oprot.writeString(self.userDN)
+      oprot.writeFieldEnd()
+    if self.generateCert is not None:
+      oprot.writeFieldBegin('generateCert', TType.BOOL, 7)
+      oprot.writeBool(self.generateCert)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataAutoSchedule is None:
+      raise TProtocol.TProtocolException(message='Required field airavataAutoSchedule is unset!')
+    if self.overrideManualScheduledParams is None:
+      raise TProtocol.TProtocolException(message='Required field overrideManualScheduledParams is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataAutoSchedule)
+    value = (value * 31) ^ hash(self.overrideManualScheduledParams)
+    value = (value * 31) ^ hash(self.shareExperimentPublicly)
+    value = (value * 31) ^ hash(self.computationalResourceScheduling)
+    value = (value * 31) ^ hash(self.throttleResources)
+    value = (value * 31) ^ hash(self.userDN)
+    value = (value * 31) ^ hash(self.generateCert)
+    return value
+
+  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 ExperimentModel:
+  """
+  A structure holding the experiment metadata and its child models.
+
+  userName:
+    The user name of the targeted gateway end user on whose behalf the experiment is being created.
+      the associated gateway identity can only be inferred from the security hand-shake so as to avoid
+      authorized Airavata Clients mimicking an unauthorized request. If a gateway is not registered with
+      Airavata, an authorization exception is thrown.
+
+  experimentName:
+    The name of the experiment as defined by the user. The name need not be unique as uniqueness is enforced
+       by the generated experiment id.
+
+  experimentDescription:
+     The verbose description of the experiment. This is an optional parameter.
+
+  Attributes:
+   - experimentId
+   - projectId
+   - gatewayId
+   - experimentType
+   - userName
+   - experimentName
+   - creationTime
+   - description
+   - executionId
+   - gatewayExecutionId
+   - enableEmailNotification
+   - emailAddresses
+   - userConfigurationData
+   - experimentInputs
+   - experimentOutputs
+   - experimentStatus
+   - errors
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'experimentId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'projectId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.I32, 'experimentType', None,     0, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'experimentName', None, None, ), # 6
+    (7, TType.I64, 'creationTime', None, None, ), # 7
+    (8, TType.STRING, 'description', None, None, ), # 8
+    (9, TType.STRING, 'executionId', None, None, ), # 9
+    (10, TType.STRING, 'gatewayExecutionId', None, None, ), # 10
+    (11, TType.BOOL, 'enableEmailNotification', None, None, ), # 11
+    (12, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 12
+    (13, TType.STRUCT, 'userConfigurationData', (UserConfigurationDataModel, UserConfigurationDataModel.thrift_spec), None, ), # 13
+    (14, TType.LIST, 'experimentInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 14
+    (15, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 15
+    (16, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 16
+    (17, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 17
+  )
+
+  def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None,):
+    self.experimentId = experimentId
+    self.projectId = projectId
+    self.gatewayId = gatewayId
+    self.experimentType = experimentType
+    self.userName = userName
+    self.experimentName = experimentName
+    self.creationTime = creationTime
+    self.description = description
+    self.executionId = executionId
+    self.gatewayExecutionId = gatewayExecutionId
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+    self.userConfigurationData = userConfigurationData
+    self.experimentInputs = experimentInputs
+    self.experimentOutputs = experimentOutputs
+    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:
+      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.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.experimentType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.experimentName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.description = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.executionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.gatewayExecutionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.emailAddresses.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.STRUCT:
+          self.userConfigurationData = UserConfigurationDataModel()
+          self.userConfigurationData.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.LIST:
+          self.experimentInputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.experimentInputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.LIST:
+          self.experimentOutputs = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.experimentOutputs.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.STRUCT:
+          self.experimentStatus = apache.airavata.model.status.ttypes.ExperimentStatus()
+          self.experimentStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem23.read(iprot)
+            self.errors.append(_elem23)
+          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('ExperimentModel')
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 1)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 2)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.experimentType is not None:
+      oprot.writeFieldBegin('experimentType', TType.I32, 4)
+      oprot.writeI32(self.experimentType)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.experimentName is not None:
+      oprot.writeFieldBegin('experimentName', TType.STRING, 6)
+      oprot.writeString(self.experimentName)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 7)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 8)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.executionId is not None:
+      oprot.writeFieldBegin('executionId', TType.STRING, 9)
+      oprot.writeString(self.executionId)
+      oprot.writeFieldEnd()
+    if self.gatewayExecutionId is not None:
+      oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 10)
+      oprot.writeString(self.gatewayExecutionId)
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 11)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter24 in self.emailAddresses:
+        oprot.writeString(iter24)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.userConfigurationData is not None:
+      oprot.writeFieldBegin('userConfigurationData', TType.STRUCT, 13)
+      self.userConfigurationData.write(oprot)
+      oprot.writeFieldEnd()
+    if self.experimentInputs is not None:
+      oprot.writeFieldBegin('experimentInputs', TType.LIST, 14)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs))
+      for iter25 in self.experimentInputs:
+        iter25.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.experimentOutputs is not None:
+      oprot.writeFieldBegin('experimentOutputs', TType.LIST, 15)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs))
+      for iter26 in self.experimentOutputs:
+        iter26.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.experimentStatus is not None:
+      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 16)
+      self.experimentStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 17)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter27 in self.errors:
+        iter27.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    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.experimentType is None:
+      raise TProtocol.TProtocolException(message='Required field experimentType is unset!')
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    if self.experimentName is None:
+      raise TProtocol.TProtocolException(message='Required field experimentName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.projectId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.experimentType)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.experimentName)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.executionId)
+    value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    value = (value * 31) ^ hash(self.userConfigurationData)
+    value = (value * 31) ^ hash(self.experimentInputs)
+    value = (value * 31) ^ hash(self.experimentOutputs)
+    value = (value * 31) ^ hash(self.experimentStatus)
+    value = (value * 31) ^ hash(self.errors)
+    return value
+
+  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 ExperimentSummaryModel:
+  """
+  Attributes:
+   - experimentId
+   - projectId
+   - gatewayId
+   - creationTime
+   - userName
+   - name
+   - description
+   - executionId
+   - experimentStatus
+   - statusUpdateTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'experimentId', None, None, ), # 1
+    (2, TType.STRING, 'projectId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.I64, 'creationTime', None, None, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'name', None, None, ), # 6
+    (7, TType.STRING, 'description', None, None, ), # 7
+    (8, TType.STRING, 'executionId', None, None, ), # 8
+    (9, TType.STRING, 'experimentStatus', None, None, ), # 9
+    (10, TType.I64, 'statusUpdateTime', None, None, ), # 10
+  )
+
+  def __init__(self, experimentId=None, projectId=None, gatewayId=None, creationTime=None, userName=None, name=None, description=None, executionId=None, experimentStatus=None, statusUpdateTime=None,):
+    self.experimentId = experimentId
+    self.projectId = projectId
+    self.gatewayId = gatewayId
+    self.creationTime = creationTime
+    self.userName = userName
+    self.name = name
+    self.description = description
+    self.executionId = executionId
+    self.experimentStatus = experimentStatus
+    self.statusUpdateTime = statusUpdateTime
+
+  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.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.description = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.executionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.experimentStatus = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.statusUpdateTime = 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('ExperimentSummaryModel')
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 1)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 2)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 6)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 7)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.executionId is not None:
+      oprot.writeFieldBegin('executionId', TType.STRING, 8)
+      oprot.writeString(self.executionId)
+      oprot.writeFieldEnd()
+    if self.experimentStatus is not None:
+      oprot.writeFieldBegin('experimentStatus', TType.STRING, 9)
+      oprot.writeString(self.experimentStatus)
+      oprot.writeFieldEnd()
+    if self.statusUpdateTime is not None:
+      oprot.writeFieldBegin('statusUpdateTime', TType.I64, 10)
+      oprot.writeI64(self.statusUpdateTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    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.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.projectId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.executionId)
+    value = (value * 31) ^ hash(self.experimentStatus)
+    value = (value * 31) ^ hash(self.statusUpdateTime)
+    return value
+
+  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 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,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 5
+    (6, TType.LIST, 'completedExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 6
+    (7, TType.LIST, 'failedExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'cancelledExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.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 = []
+          (_etype31, _size28) = iprot.readListBegin()
+          for _i32 in xrange(_size28):
+            _elem33 = ExperimentSummaryModel()
+            _elem33.read(iprot)
+            self.allExperiments.append(_elem33)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.completedExperiments = []
+          (_etype37, _size34) = iprot.readListBegin()
+          for _i38 in xrange(_size34):
+            _elem39 = ExperimentSummaryModel()
+            _elem39.read(iprot)
+            self.completedExperiments.append(_elem39)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.failedExperiments = []
+          (_etype43, _size40) = iprot.readListBegin()
+          for _i44 in xrange(_size40):
+            _elem45 = ExperimentSummaryModel()
+            _elem45.read(iprot)
+            self.failedExperiments.append(_elem45)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.cancelledExperiments = []
+          (_etype49, _size46) = iprot.readListBegin()
+          for _i50 in xrange(_size46):
+            _elem51 = ExperimentSummaryModel()
+            _elem51.read(iprot)
+            self.cancelledExperiments.append(_elem51)
+          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 iter52 in self.allExperiments:
+        iter52.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 iter53 in self.completedExperiments:
+        iter53.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 iter54 in self.failedExperiments:
+        iter54.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 iter55 in self.cancelledExperiments:
+        iter55.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 __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.allExperimentCount)
+    value = (value * 31) ^ hash(self.completedExperimentCount)
+    value = (value * 31) ^ hash(self.cancelledExperimentCount)
+    value = (value * 31) ^ hash(self.failedExperimentCount)
+    value = (value * 31) ^ hash(self.allExperiments)
+    value = (value * 31) ^ hash(self.completedExperiments)
+    value = (value * 31) ^ hash(self.failedExperiments)
+    value = (value * 31) ^ hash(self.cancelledExperiments)
+    return value
+
+  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/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
new file mode 100644
index 0000000..cdf406b
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
@@ -0,0 +1,183 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.status.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class JobModel:
+  """
+  Attributes:
+   - jobId
+   - taskId
+   - jobDescription
+   - creationTime
+   - jobStatus
+   - computeResourceConsumed
+   - jobName
+   - workingDir
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobId', None, None, ), # 1
+    (2, TType.STRING, 'taskId', None, None, ), # 2
+    (3, TType.STRING, 'jobDescription', None, None, ), # 3
+    (4, TType.I64, 'creationTime', None, None, ), # 4
+    (5, TType.STRUCT, 'jobStatus', (apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec), None, ), # 5
+    (6, TType.STRING, 'computeResourceConsumed', None, None, ), # 6
+    (7, TType.STRING, 'jobName', None, None, ), # 7
+    (8, TType.STRING, 'workingDir', None, None, ), # 8
+  )
+
+  def __init__(self, jobId=None, taskId=None, jobDescription=None, creationTime=None, jobStatus=None, computeResourceConsumed=None, jobName=None, workingDir=None,):
+    self.jobId = jobId
+    self.taskId = taskId
+    self.jobDescription = jobDescription
+    self.creationTime = creationTime
+    self.jobStatus = jobStatus
+    self.computeResourceConsumed = computeResourceConsumed
+    self.jobName = jobName
+    self.workingDir = workingDir
+
+  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.jobId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.jobDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.jobStatus = apache.airavata.model.status.ttypes.JobStatus()
+          self.jobStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.computeResourceConsumed = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.jobName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.workingDir = 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('JobModel')
+    if self.jobId is not None:
+      oprot.writeFieldBegin('jobId', TType.STRING, 1)
+      oprot.writeString(self.jobId)
+      oprot.writeFieldEnd()
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 2)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.jobDescription is not None:
+      oprot.writeFieldBegin('jobDescription', TType.STRING, 3)
+      oprot.writeString(self.jobDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.jobStatus is not None:
+      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 5)
+      self.jobStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.computeResourceConsumed is not None:
+      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 6)
+      oprot.writeString(self.computeResourceConsumed)
+      oprot.writeFieldEnd()
+    if self.jobName is not None:
+      oprot.writeFieldBegin('jobName', TType.STRING, 7)
+      oprot.writeString(self.jobName)
+      oprot.writeFieldEnd()
+    if self.workingDir is not None:
+      oprot.writeFieldBegin('workingDir', TType.STRING, 8)
+      oprot.writeString(self.workingDir)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobId is None:
+      raise TProtocol.TProtocolException(message='Required field jobId is unset!')
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.jobDescription is None:
+      raise TProtocol.TProtocolException(message='Required field jobDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobId)
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.jobDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.jobStatus)
+    value = (value * 31) ^ hash(self.computeResourceConsumed)
+    value = (value * 31) ^ hash(self.jobName)
+    value = (value * 31) ^ hash(self.workingDir)
+    return value
+
+  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/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/constants.py
index f9a2df5..99717a9 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/constants.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/constants.py
@@ -9,4 +9,3 @@
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 from ttypes import *
 
-DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/ttypes.py
index 94b2d30..24fbc4b 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/messaging/event/ttypes.py
@@ -9,6 +9,7 @@
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 import apache.airavata.model.status.ttypes
 import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
 
 
 from thrift.transport import TTransport

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
new file mode 100644
index 0000000..10104e4
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
@@ -0,0 +1,360 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.task.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.scheduling.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ProcessModel:
+  """
+  ProcessModel: A structure holding the process details. The infromation is derived based on user provided
+           configuration data or system inferred information from scheduling and QoS parameters.
+
+  processDetail:
+    A friendly description of the process, usally used to communicate information to users.
+
+
+
+  Attributes:
+   - processId
+   - experimentId
+   - creationTime
+   - lastUpdateTime
+   - processStatus
+   - processDetail
+   - applicationInterfaceId
+   - applicationDeploymentId
+   - computeResourceId
+   - processInputs
+   - processOutputs
+   - resourceSchedule
+   - tasks
+   - taskDag
+   - processError
+   - gatewayExecutionId
+   - enableEmailNotification
+   - emailAddresses
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.I64, 'creationTime', None, None, ), # 3
+    (4, TType.I64, 'lastUpdateTime', None, None, ), # 4
+    (5, TType.STRUCT, 'processStatus', (apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec), None, ), # 5
+    (6, TType.STRING, 'processDetail', None, None, ), # 6
+    (7, TType.STRING, 'applicationInterfaceId', None, None, ), # 7
+    (8, TType.STRING, 'applicationDeploymentId', None, None, ), # 8
+    (9, TType.STRING, 'computeResourceId', None, None, ), # 9
+    (10, TType.LIST, 'processInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'processOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 11
+    (12, TType.STRUCT, 'resourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
+    (13, TType.LIST, 'tasks', (TType.STRUCT,(apache.airavata.model.task.ttypes.TaskModel, apache.airavata.model.task.ttypes.TaskModel.thrift_spec)), None, ), # 13
+    (14, TType.STRING, 'taskDag', None, None, ), # 14
+    (15, TType.STRUCT, 'processError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 15
+    (16, TType.STRING, 'gatewayExecutionId', None, None, ), # 16
+    (17, TType.BOOL, 'enableEmailNotification', None, None, ), # 17
+    (18, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 18
+  )
+
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None,):
+    self.processId = processId
+    self.experimentId = experimentId
+    self.creationTime = creationTime
+    self.lastUpdateTime = lastUpdateTime
+    self.processStatus = processStatus
+    self.processDetail = processDetail
+    self.applicationInterfaceId = applicationInterfaceId
+    self.applicationDeploymentId = applicationDeploymentId
+    self.computeResourceId = computeResourceId
+    self.processInputs = processInputs
+    self.processOutputs = processOutputs
+    self.resourceSchedule = resourceSchedule
+    self.tasks = tasks
+    self.taskDag = taskDag
+    self.processError = processError
+    self.gatewayExecutionId = gatewayExecutionId
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+
+  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.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.lastUpdateTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.processStatus = apache.airavata.model.status.ttypes.ProcessStatus()
+          self.processStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.processDetail = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.applicationInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.applicationDeploymentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.processInputs = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem5.read(iprot)
+            self.processInputs.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.processOutputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem11.read(iprot)
+            self.processOutputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRUCT:
+          self.resourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.resourceSchedule.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.tasks = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.task.ttypes.TaskModel()
+            _elem17.read(iprot)
+            self.tasks.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRING:
+          self.taskDag = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.STRUCT:
+          self.processError = apache.airavata.model.commons.ttypes.ErrorModel()
+          self.processError.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.STRING:
+          self.gatewayExecutionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 18:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = iprot.readString();
+            self.emailAddresses.append(_elem23)
+          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('ProcessModel')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 3)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastUpdateTime is not None:
+      oprot.writeFieldBegin('lastUpdateTime', TType.I64, 4)
+      oprot.writeI64(self.lastUpdateTime)
+      oprot.writeFieldEnd()
+    if self.processStatus is not None:
+      oprot.writeFieldBegin('processStatus', TType.STRUCT, 5)
+      self.processStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.processDetail is not None:
+      oprot.writeFieldBegin('processDetail', TType.STRING, 6)
+      oprot.writeString(self.processDetail)
+      oprot.writeFieldEnd()
+    if self.applicationInterfaceId is not None:
+      oprot.writeFieldBegin('applicationInterfaceId', TType.STRING, 7)
+      oprot.writeString(self.applicationInterfaceId)
+      oprot.writeFieldEnd()
+    if self.applicationDeploymentId is not None:
+      oprot.writeFieldBegin('applicationDeploymentId', TType.STRING, 8)
+      oprot.writeString(self.applicationDeploymentId)
+      oprot.writeFieldEnd()
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 9)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.processInputs is not None:
+      oprot.writeFieldBegin('processInputs', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.processInputs))
+      for iter24 in self.processInputs:
+        iter24.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.processOutputs is not None:
+      oprot.writeFieldBegin('processOutputs', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.processOutputs))
+      for iter25 in self.processOutputs:
+        iter25.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.resourceSchedule is not None:
+      oprot.writeFieldBegin('resourceSchedule', TType.STRUCT, 12)
+      self.resourceSchedule.write(oprot)
+      oprot.writeFieldEnd()
+    if self.tasks is not None:
+      oprot.writeFieldBegin('tasks', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.tasks))
+      for iter26 in self.tasks:
+        iter26.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskDag is not None:
+      oprot.writeFieldBegin('taskDag', TType.STRING, 14)
+      oprot.writeString(self.taskDag)
+      oprot.writeFieldEnd()
+    if self.processError is not None:
+      oprot.writeFieldBegin('processError', TType.STRUCT, 15)
+      self.processError.write(oprot)
+      oprot.writeFieldEnd()
+    if self.gatewayExecutionId is not None:
+      oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 16)
+      oprot.writeString(self.gatewayExecutionId)
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 17)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 18)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter27 in self.emailAddresses:
+        oprot.writeString(iter27)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastUpdateTime)
+    value = (value * 31) ^ hash(self.processStatus)
+    value = (value * 31) ^ hash(self.processDetail)
+    value = (value * 31) ^ hash(self.applicationInterfaceId)
+    value = (value * 31) ^ hash(self.applicationDeploymentId)
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.processInputs)
+    value = (value * 31) ^ hash(self.processOutputs)
+    value = (value * 31) ^ hash(self.resourceSchedule)
+    value = (value * 31) ^ hash(self.tasks)
+    value = (value * 31) ^ hash(self.taskDag)
+    value = (value * 31) ^ hash(self.processError)
+    value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    return value
+
+  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/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc524490/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/scheduling/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


Mime
View raw message