You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by nd...@apache.org on 2015/05/01 23:33:28 UTC

[41/57] [partial] airavata-php-gateway git commit: AIRAVATA 1632 + Job Description for Admin Dashboard

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/libraries/Airavata/Model/Workspace/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/Model/Workspace/Experiment/Types.php b/app/libraries/Airavata/Model/Workspace/Experiment/Types.php
new file mode 100644
index 0000000..753dc13
--- /dev/null
+++ b/app/libraries/Airavata/Model/Workspace/Experiment/Types.php
@@ -0,0 +1,4374 @@
+<?php
+namespace Airavata\Model\Workspace\Experiment;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class ExperimentState {
+  const CREATED = 0;
+  const VALIDATED = 1;
+  const SCHEDULED = 2;
+  const LAUNCHED = 3;
+  const EXECUTING = 4;
+  const CANCELING = 5;
+  const CANCELED = 6;
+  const SUSPENDED = 7;
+  const COMPLETED = 8;
+  const FAILED = 9;
+  const UNKNOWN = 10;
+  static public $__names = array(
+    0 => 'CREATED',
+    1 => 'VALIDATED',
+    2 => 'SCHEDULED',
+    3 => 'LAUNCHED',
+    4 => 'EXECUTING',
+    5 => 'CANCELING',
+    6 => 'CANCELED',
+    7 => 'SUSPENDED',
+    8 => 'COMPLETED',
+    9 => 'FAILED',
+    10 => 'UNKNOWN',
+  );
+}
+
+final class WorkflowNodeState {
+  const INVOKED = 0;
+  const EXECUTING = 1;
+  const CANCELING = 2;
+  const CANCELED = 3;
+  const SUSPENDED = 4;
+  const COMPLETED = 5;
+  const FAILED = 6;
+  const UNKNOWN = 7;
+  static public $__names = array(
+    0 => 'INVOKED',
+    1 => 'EXECUTING',
+    2 => 'CANCELING',
+    3 => 'CANCELED',
+    4 => 'SUSPENDED',
+    5 => 'COMPLETED',
+    6 => 'FAILED',
+    7 => 'UNKNOWN',
+  );
+}
+
+final class TaskState {
+  const WAITING = 0;
+  const STARTED = 1;
+  const PRE_PROCESSING = 2;
+  const CONFIGURING_WORKSPACE = 3;
+  const INPUT_DATA_STAGING = 4;
+  const OUTPUT_DATA_STAGING = 5;
+  const POST_PROCESSING = 6;
+  const EXECUTING = 7;
+  const CANCELING = 8;
+  const CANCELED = 9;
+  const COMPLETED = 10;
+  const FAILED = 11;
+  const UNKNOWN = 12;
+  static public $__names = array(
+    0 => 'WAITING',
+    1 => 'STARTED',
+    2 => 'PRE_PROCESSING',
+    3 => 'CONFIGURING_WORKSPACE',
+    4 => 'INPUT_DATA_STAGING',
+    5 => 'OUTPUT_DATA_STAGING',
+    6 => 'POST_PROCESSING',
+    7 => 'EXECUTING',
+    8 => 'CANCELING',
+    9 => 'CANCELED',
+    10 => 'COMPLETED',
+    11 => 'FAILED',
+    12 => 'UNKNOWN',
+  );
+}
+
+final class JobState {
+  const SUBMITTED = 0;
+  const UN_SUBMITTED = 1;
+  const SETUP = 2;
+  const QUEUED = 3;
+  const ACTIVE = 4;
+  const COMPLETE = 5;
+  const CANCELING = 6;
+  const CANCELED = 7;
+  const FAILED = 8;
+  const HELD = 9;
+  const SUSPENDED = 10;
+  const UNKNOWN = 11;
+  static public $__names = array(
+    0 => 'SUBMITTED',
+    1 => 'UN_SUBMITTED',
+    2 => 'SETUP',
+    3 => 'QUEUED',
+    4 => 'ACTIVE',
+    5 => 'COMPLETE',
+    6 => 'CANCELING',
+    7 => 'CANCELED',
+    8 => 'FAILED',
+    9 => 'HELD',
+    10 => 'SUSPENDED',
+    11 => 'UNKNOWN',
+  );
+}
+
+final class TransferState {
+  const DIRECTORY_SETUP = 0;
+  const UPLOAD = 1;
+  const DOWNLOAD = 2;
+  const ACTIVE = 3;
+  const COMPLETE = 4;
+  const STDOUT_DOWNLOAD = 5;
+  const STDERROR_DOWNLOAD = 6;
+  const CANCELING = 7;
+  const CANCELED = 8;
+  const FAILED = 9;
+  const HELD = 10;
+  const SUSPENDED = 11;
+  const UNKNOWN = 12;
+  static public $__names = array(
+    0 => 'DIRECTORY_SETUP',
+    1 => 'UPLOAD',
+    2 => 'DOWNLOAD',
+    3 => 'ACTIVE',
+    4 => 'COMPLETE',
+    5 => 'STDOUT_DOWNLOAD',
+    6 => 'STDERROR_DOWNLOAD',
+    7 => 'CANCELING',
+    8 => 'CANCELED',
+    9 => 'FAILED',
+    10 => 'HELD',
+    11 => 'SUSPENDED',
+    12 => 'UNKNOWN',
+  );
+}
+
+final class ActionableGroup {
+  const RESOURCE_ADMINS = 0;
+  const AIRAVATA_ADMINS = 1;
+  const GATEWAYS_ADMINS = 2;
+  const USER = 3;
+  const CANNOT_BE_DETERMINED = 4;
+  static public $__names = array(
+    0 => 'RESOURCE_ADMINS',
+    1 => 'AIRAVATA_ADMINS',
+    2 => 'GATEWAYS_ADMINS',
+    3 => 'USER',
+    4 => 'CANNOT_BE_DETERMINED',
+  );
+}
+
+final class ErrorCategory {
+  const FILE_SYSTEM_FAILURE = 0;
+  const APPLICATION_FAILURE = 1;
+  const RESOURCE_NODE_FAILURE = 2;
+  const DISK_FULL = 3;
+  const INSUFFICIENT_ALLOCATION = 4;
+  const SYSTEM_MAINTENANCE = 5;
+  const AIRAVATA_INTERNAL_ERROR = 6;
+  const CANNOT_BE_DETERMINED = 7;
+  static public $__names = array(
+    0 => 'FILE_SYSTEM_FAILURE',
+    1 => 'APPLICATION_FAILURE',
+    2 => 'RESOURCE_NODE_FAILURE',
+    3 => 'DISK_FULL',
+    4 => 'INSUFFICIENT_ALLOCATION',
+    5 => 'SYSTEM_MAINTENANCE',
+    6 => 'AIRAVATA_INTERNAL_ERROR',
+    7 => 'CANNOT_BE_DETERMINED',
+  );
+}
+
+final class CorrectiveAction {
+  const RETRY_SUBMISSION = 0;
+  const CONTACT_SUPPORT = 1;
+  const CANNOT_BE_DETERMINED = 2;
+  static public $__names = array(
+    0 => 'RETRY_SUBMISSION',
+    1 => 'CONTACT_SUPPORT',
+    2 => 'CANNOT_BE_DETERMINED',
+  );
+}
+
+final class ExecutionUnit {
+  const INPUT = 0;
+  const APPLICATION = 1;
+  const OUTPUT = 2;
+  const OTHER = 3;
+  static public $__names = array(
+    0 => 'INPUT',
+    1 => 'APPLICATION',
+    2 => 'OUTPUT',
+    3 => 'OTHER',
+  );
+}
+
+class ExperimentStatus {
+  static $_TSPEC;
+
+  public $experimentState = null;
+  public $timeOfStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'experimentState',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['experimentState'])) {
+        $this->experimentState = $vals['experimentState'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ExperimentStatus';
+  }
+
+  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->experimentState);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } 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('ExperimentStatus');
+    if ($this->experimentState !== null) {
+      $xfer += $output->writeFieldBegin('experimentState', TType::I32, 1);
+      $xfer += $output->writeI32($this->experimentState);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class WorkflowNodeStatus {
+  static $_TSPEC;
+
+  public $workflowNodeState = null;
+  public $timeOfStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'workflowNodeState',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['workflowNodeState'])) {
+        $this->workflowNodeState = $vals['workflowNodeState'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'WorkflowNodeStatus';
+  }
+
+  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->workflowNodeState);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } 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('WorkflowNodeStatus');
+    if ($this->workflowNodeState !== null) {
+      $xfer += $output->writeFieldBegin('workflowNodeState', TType::I32, 1);
+      $xfer += $output->writeI32($this->workflowNodeState);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TaskStatus {
+  static $_TSPEC;
+
+  public $executionState = null;
+  public $timeOfStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'executionState',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['executionState'])) {
+        $this->executionState = $vals['executionState'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TaskStatus';
+  }
+
+  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->executionState);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } 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('TaskStatus');
+    if ($this->executionState !== null) {
+      $xfer += $output->writeFieldBegin('executionState', TType::I32, 1);
+      $xfer += $output->writeI32($this->executionState);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class JobStatus {
+  static $_TSPEC;
+
+  public $jobState = null;
+  public $timeOfStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobState',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobState'])) {
+        $this->jobState = $vals['jobState'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'JobStatus';
+  }
+
+  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->jobState);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } 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('JobStatus');
+    if ($this->jobState !== null) {
+      $xfer += $output->writeFieldBegin('jobState', TType::I32, 1);
+      $xfer += $output->writeI32($this->jobState);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TransferStatus {
+  static $_TSPEC;
+
+  public $transferState = null;
+  public $timeOfStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'transferState',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['transferState'])) {
+        $this->transferState = $vals['transferState'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TransferStatus';
+  }
+
+  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->transferState);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } 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('TransferStatus');
+    if ($this->transferState !== null) {
+      $xfer += $output->writeFieldBegin('transferState', TType::I32, 1);
+      $xfer += $output->writeI32($this->transferState);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class ApplicationStatus {
+  static $_TSPEC;
+
+  public $applicationState = null;
+  public $timeOfStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'applicationState',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['applicationState'])) {
+        $this->applicationState = $vals['applicationState'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ApplicationStatus';
+  }
+
+  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->applicationState);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } 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('ApplicationStatus');
+    if ($this->applicationState !== null) {
+      $xfer += $output->writeFieldBegin('applicationState', TType::STRING, 1);
+      $xfer += $output->writeString($this->applicationState);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class ComputationalResourceScheduling {
+  static $_TSPEC;
+
+  public $resourceHostId = null;
+  public $totalCPUCount = null;
+  public $nodeCount = null;
+  public $numberOfThreads = null;
+  public $queueName = null;
+  public $wallTimeLimit = null;
+  public $jobStartTime = null;
+  public $totalPhysicalMemory = null;
+  public $computationalProjectAccount = null;
+  public $chassisName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'resourceHostId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'totalCPUCount',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'nodeCount',
+          'type' => TType::I32,
+          ),
+        4 => array(
+          'var' => 'numberOfThreads',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'queueName',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'wallTimeLimit',
+          'type' => TType::I32,
+          ),
+        7 => array(
+          'var' => 'jobStartTime',
+          'type' => TType::I32,
+          ),
+        8 => array(
+          'var' => 'totalPhysicalMemory',
+          'type' => TType::I32,
+          ),
+        9 => array(
+          'var' => 'computationalProjectAccount',
+          'type' => TType::STRING,
+          ),
+        10 => array(
+          'var' => 'chassisName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['resourceHostId'])) {
+        $this->resourceHostId = $vals['resourceHostId'];
+      }
+      if (isset($vals['totalCPUCount'])) {
+        $this->totalCPUCount = $vals['totalCPUCount'];
+      }
+      if (isset($vals['nodeCount'])) {
+        $this->nodeCount = $vals['nodeCount'];
+      }
+      if (isset($vals['numberOfThreads'])) {
+        $this->numberOfThreads = $vals['numberOfThreads'];
+      }
+      if (isset($vals['queueName'])) {
+        $this->queueName = $vals['queueName'];
+      }
+      if (isset($vals['wallTimeLimit'])) {
+        $this->wallTimeLimit = $vals['wallTimeLimit'];
+      }
+      if (isset($vals['jobStartTime'])) {
+        $this->jobStartTime = $vals['jobStartTime'];
+      }
+      if (isset($vals['totalPhysicalMemory'])) {
+        $this->totalPhysicalMemory = $vals['totalPhysicalMemory'];
+      }
+      if (isset($vals['computationalProjectAccount'])) {
+        $this->computationalProjectAccount = $vals['computationalProjectAccount'];
+      }
+      if (isset($vals['chassisName'])) {
+        $this->chassisName = $vals['chassisName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ComputationalResourceScheduling';
+  }
+
+  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->resourceHostId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->totalCPUCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->nodeCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->numberOfThreads);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->queueName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->wallTimeLimit);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->jobStartTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->totalPhysicalMemory);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->computationalProjectAccount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->chassisName);
+          } 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('ComputationalResourceScheduling');
+    if ($this->resourceHostId !== null) {
+      $xfer += $output->writeFieldBegin('resourceHostId', TType::STRING, 1);
+      $xfer += $output->writeString($this->resourceHostId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->totalCPUCount !== null) {
+      $xfer += $output->writeFieldBegin('totalCPUCount', TType::I32, 2);
+      $xfer += $output->writeI32($this->totalCPUCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nodeCount !== null) {
+      $xfer += $output->writeFieldBegin('nodeCount', TType::I32, 3);
+      $xfer += $output->writeI32($this->nodeCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->numberOfThreads !== null) {
+      $xfer += $output->writeFieldBegin('numberOfThreads', TType::I32, 4);
+      $xfer += $output->writeI32($this->numberOfThreads);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->queueName !== null) {
+      $xfer += $output->writeFieldBegin('queueName', TType::STRING, 5);
+      $xfer += $output->writeString($this->queueName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->wallTimeLimit !== null) {
+      $xfer += $output->writeFieldBegin('wallTimeLimit', TType::I32, 6);
+      $xfer += $output->writeI32($this->wallTimeLimit);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobStartTime !== null) {
+      $xfer += $output->writeFieldBegin('jobStartTime', TType::I32, 7);
+      $xfer += $output->writeI32($this->jobStartTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->totalPhysicalMemory !== null) {
+      $xfer += $output->writeFieldBegin('totalPhysicalMemory', TType::I32, 8);
+      $xfer += $output->writeI32($this->totalPhysicalMemory);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->computationalProjectAccount !== null) {
+      $xfer += $output->writeFieldBegin('computationalProjectAccount', TType::STRING, 9);
+      $xfer += $output->writeString($this->computationalProjectAccount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->chassisName !== null) {
+      $xfer += $output->writeFieldBegin('chassisName', TType::STRING, 10);
+      $xfer += $output->writeString($this->chassisName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class AdvancedInputDataHandling {
+  static $_TSPEC;
+
+  public $stageInputFilesToWorkingDir = false;
+  public $parentWorkingDirectory = null;
+  public $uniqueWorkingDirectory = null;
+  public $cleanUpWorkingDirAfterJob = false;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'stageInputFilesToWorkingDir',
+          'type' => TType::BOOL,
+          ),
+        2 => array(
+          'var' => 'parentWorkingDirectory',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'uniqueWorkingDirectory',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'cleanUpWorkingDirAfterJob',
+          'type' => TType::BOOL,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['stageInputFilesToWorkingDir'])) {
+        $this->stageInputFilesToWorkingDir = $vals['stageInputFilesToWorkingDir'];
+      }
+      if (isset($vals['parentWorkingDirectory'])) {
+        $this->parentWorkingDirectory = $vals['parentWorkingDirectory'];
+      }
+      if (isset($vals['uniqueWorkingDirectory'])) {
+        $this->uniqueWorkingDirectory = $vals['uniqueWorkingDirectory'];
+      }
+      if (isset($vals['cleanUpWorkingDirAfterJob'])) {
+        $this->cleanUpWorkingDirAfterJob = $vals['cleanUpWorkingDirAfterJob'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'AdvancedInputDataHandling';
+  }
+
+  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::BOOL) {
+            $xfer += $input->readBool($this->stageInputFilesToWorkingDir);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->parentWorkingDirectory);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->uniqueWorkingDirectory);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->cleanUpWorkingDirAfterJob);
+          } 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('AdvancedInputDataHandling');
+    if ($this->stageInputFilesToWorkingDir !== null) {
+      $xfer += $output->writeFieldBegin('stageInputFilesToWorkingDir', TType::BOOL, 1);
+      $xfer += $output->writeBool($this->stageInputFilesToWorkingDir);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->parentWorkingDirectory !== null) {
+      $xfer += $output->writeFieldBegin('parentWorkingDirectory', TType::STRING, 2);
+      $xfer += $output->writeString($this->parentWorkingDirectory);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->uniqueWorkingDirectory !== null) {
+      $xfer += $output->writeFieldBegin('uniqueWorkingDirectory', TType::STRING, 3);
+      $xfer += $output->writeString($this->uniqueWorkingDirectory);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->cleanUpWorkingDirAfterJob !== null) {
+      $xfer += $output->writeFieldBegin('cleanUpWorkingDirAfterJob', TType::BOOL, 4);
+      $xfer += $output->writeBool($this->cleanUpWorkingDirAfterJob);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class AdvancedOutputDataHandling {
+  static $_TSPEC;
+
+  public $outputDataDir = null;
+  public $dataRegistryURL = null;
+  public $persistOutputData = true;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        2 => array(
+          'var' => 'outputDataDir',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'dataRegistryURL',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'persistOutputData',
+          'type' => TType::BOOL,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['outputDataDir'])) {
+        $this->outputDataDir = $vals['outputDataDir'];
+      }
+      if (isset($vals['dataRegistryURL'])) {
+        $this->dataRegistryURL = $vals['dataRegistryURL'];
+      }
+      if (isset($vals['persistOutputData'])) {
+        $this->persistOutputData = $vals['persistOutputData'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'AdvancedOutputDataHandling';
+  }
+
+  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 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->outputDataDir);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->dataRegistryURL);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->persistOutputData);
+          } 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('AdvancedOutputDataHandling');
+    if ($this->outputDataDir !== null) {
+      $xfer += $output->writeFieldBegin('outputDataDir', TType::STRING, 2);
+      $xfer += $output->writeString($this->outputDataDir);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataRegistryURL !== null) {
+      $xfer += $output->writeFieldBegin('dataRegistryURL', TType::STRING, 3);
+      $xfer += $output->writeString($this->dataRegistryURL);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->persistOutputData !== null) {
+      $xfer += $output->writeFieldBegin('persistOutputData', TType::BOOL, 4);
+      $xfer += $output->writeBool($this->persistOutputData);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class QualityOfServiceParams {
+  static $_TSPEC;
+
+  public $startExecutionAt = null;
+  public $executeBefore = null;
+  public $numberofRetries = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'startExecutionAt',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'executeBefore',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'numberofRetries',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['startExecutionAt'])) {
+        $this->startExecutionAt = $vals['startExecutionAt'];
+      }
+      if (isset($vals['executeBefore'])) {
+        $this->executeBefore = $vals['executeBefore'];
+      }
+      if (isset($vals['numberofRetries'])) {
+        $this->numberofRetries = $vals['numberofRetries'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'QualityOfServiceParams';
+  }
+
+  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->startExecutionAt);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->executeBefore);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->numberofRetries);
+          } 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('QualityOfServiceParams');
+    if ($this->startExecutionAt !== null) {
+      $xfer += $output->writeFieldBegin('startExecutionAt', TType::STRING, 1);
+      $xfer += $output->writeString($this->startExecutionAt);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->executeBefore !== null) {
+      $xfer += $output->writeFieldBegin('executeBefore', TType::STRING, 2);
+      $xfer += $output->writeString($this->executeBefore);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->numberofRetries !== null) {
+      $xfer += $output->writeFieldBegin('numberofRetries', TType::I32, 3);
+      $xfer += $output->writeI32($this->numberofRetries);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class UserConfigurationData {
+  static $_TSPEC;
+
+  public $airavataAutoSchedule = false;
+  public $overrideManualScheduledParams = false;
+  public $shareExperimentPublicly = false;
+  public $computationalResourceScheduling = null;
+  public $advanceInputDataHandling = null;
+  public $advanceOutputDataHandling = null;
+  public $qosParams = null;
+  public $throttleResources = false;
+  public $userDN = null;
+  public $generateCert = false;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'airavataAutoSchedule',
+          'type' => TType::BOOL,
+          ),
+        2 => array(
+          'var' => 'overrideManualScheduledParams',
+          'type' => TType::BOOL,
+          ),
+        3 => array(
+          'var' => 'shareExperimentPublicly',
+          'type' => TType::BOOL,
+          ),
+        4 => array(
+          'var' => 'computationalResourceScheduling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling',
+          ),
+        5 => array(
+          'var' => 'advanceInputDataHandling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\AdvancedInputDataHandling',
+          ),
+        6 => array(
+          'var' => 'advanceOutputDataHandling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\AdvancedOutputDataHandling',
+          ),
+        7 => array(
+          'var' => 'qosParams',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\QualityOfServiceParams',
+          ),
+        8 => array(
+          'var' => 'throttleResources',
+          'type' => TType::BOOL,
+          ),
+        9 => array(
+          'var' => 'userDN',
+          'type' => TType::STRING,
+          ),
+        10 => array(
+          'var' => 'generateCert',
+          'type' => TType::BOOL,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['airavataAutoSchedule'])) {
+        $this->airavataAutoSchedule = $vals['airavataAutoSchedule'];
+      }
+      if (isset($vals['overrideManualScheduledParams'])) {
+        $this->overrideManualScheduledParams = $vals['overrideManualScheduledParams'];
+      }
+      if (isset($vals['shareExperimentPublicly'])) {
+        $this->shareExperimentPublicly = $vals['shareExperimentPublicly'];
+      }
+      if (isset($vals['computationalResourceScheduling'])) {
+        $this->computationalResourceScheduling = $vals['computationalResourceScheduling'];
+      }
+      if (isset($vals['advanceInputDataHandling'])) {
+        $this->advanceInputDataHandling = $vals['advanceInputDataHandling'];
+      }
+      if (isset($vals['advanceOutputDataHandling'])) {
+        $this->advanceOutputDataHandling = $vals['advanceOutputDataHandling'];
+      }
+      if (isset($vals['qosParams'])) {
+        $this->qosParams = $vals['qosParams'];
+      }
+      if (isset($vals['throttleResources'])) {
+        $this->throttleResources = $vals['throttleResources'];
+      }
+      if (isset($vals['userDN'])) {
+        $this->userDN = $vals['userDN'];
+      }
+      if (isset($vals['generateCert'])) {
+        $this->generateCert = $vals['generateCert'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'UserConfigurationData';
+  }
+
+  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::BOOL) {
+            $xfer += $input->readBool($this->airavataAutoSchedule);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->overrideManualScheduledParams);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->shareExperimentPublicly);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->computationalResourceScheduling = new \Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling();
+            $xfer += $this->computationalResourceScheduling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->advanceInputDataHandling = new \Airavata\Model\Workspace\Experiment\AdvancedInputDataHandling();
+            $xfer += $this->advanceInputDataHandling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRUCT) {
+            $this->advanceOutputDataHandling = new \Airavata\Model\Workspace\Experiment\AdvancedOutputDataHandling();
+            $xfer += $this->advanceOutputDataHandling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRUCT) {
+            $this->qosParams = new \Airavata\Model\Workspace\Experiment\QualityOfServiceParams();
+            $xfer += $this->qosParams->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->throttleResources);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userDN);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->generateCert);
+          } 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('UserConfigurationData');
+    if ($this->airavataAutoSchedule !== null) {
+      $xfer += $output->writeFieldBegin('airavataAutoSchedule', TType::BOOL, 1);
+      $xfer += $output->writeBool($this->airavataAutoSchedule);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->overrideManualScheduledParams !== null) {
+      $xfer += $output->writeFieldBegin('overrideManualScheduledParams', TType::BOOL, 2);
+      $xfer += $output->writeBool($this->overrideManualScheduledParams);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->shareExperimentPublicly !== null) {
+      $xfer += $output->writeFieldBegin('shareExperimentPublicly', TType::BOOL, 3);
+      $xfer += $output->writeBool($this->shareExperimentPublicly);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->computationalResourceScheduling !== null) {
+      if (!is_object($this->computationalResourceScheduling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('computationalResourceScheduling', TType::STRUCT, 4);
+      $xfer += $this->computationalResourceScheduling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->advanceInputDataHandling !== null) {
+      if (!is_object($this->advanceInputDataHandling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('advanceInputDataHandling', TType::STRUCT, 5);
+      $xfer += $this->advanceInputDataHandling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->advanceOutputDataHandling !== null) {
+      if (!is_object($this->advanceOutputDataHandling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('advanceOutputDataHandling', TType::STRUCT, 6);
+      $xfer += $this->advanceOutputDataHandling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->qosParams !== null) {
+      if (!is_object($this->qosParams)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('qosParams', TType::STRUCT, 7);
+      $xfer += $this->qosParams->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->throttleResources !== null) {
+      $xfer += $output->writeFieldBegin('throttleResources', TType::BOOL, 8);
+      $xfer += $output->writeBool($this->throttleResources);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userDN !== null) {
+      $xfer += $output->writeFieldBegin('userDN', TType::STRING, 9);
+      $xfer += $output->writeString($this->userDN);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->generateCert !== null) {
+      $xfer += $output->writeFieldBegin('generateCert', TType::BOOL, 10);
+      $xfer += $output->writeBool($this->generateCert);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class ErrorDetails {
+  static $_TSPEC;
+
+  public $errorID = "DO_NOT_SET_AT_CLIENTS";
+  public $creationTime = null;
+  public $actualErrorMessage = null;
+  public $userFriendlyMessage = null;
+  public $errorCategory = null;
+  public $transientOrPersistent = false;
+  public $correctiveAction = null;
+  public $actionableGroup = null;
+  public $rootCauseErrorIdList = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'errorID',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'actualErrorMessage',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'userFriendlyMessage',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'errorCategory',
+          'type' => TType::I32,
+          ),
+        6 => array(
+          'var' => 'transientOrPersistent',
+          'type' => TType::BOOL,
+          ),
+        7 => array(
+          'var' => 'correctiveAction',
+          'type' => TType::I32,
+          ),
+        8 => array(
+          'var' => 'actionableGroup',
+          'type' => TType::I32,
+          ),
+        9 => array(
+          'var' => 'rootCauseErrorIdList',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['errorID'])) {
+        $this->errorID = $vals['errorID'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['actualErrorMessage'])) {
+        $this->actualErrorMessage = $vals['actualErrorMessage'];
+      }
+      if (isset($vals['userFriendlyMessage'])) {
+        $this->userFriendlyMessage = $vals['userFriendlyMessage'];
+      }
+      if (isset($vals['errorCategory'])) {
+        $this->errorCategory = $vals['errorCategory'];
+      }
+      if (isset($vals['transientOrPersistent'])) {
+        $this->transientOrPersistent = $vals['transientOrPersistent'];
+      }
+      if (isset($vals['correctiveAction'])) {
+        $this->correctiveAction = $vals['correctiveAction'];
+      }
+      if (isset($vals['actionableGroup'])) {
+        $this->actionableGroup = $vals['actionableGroup'];
+      }
+      if (isset($vals['rootCauseErrorIdList'])) {
+        $this->rootCauseErrorIdList = $vals['rootCauseErrorIdList'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ErrorDetails';
+  }
+
+  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->errorID);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->actualErrorMessage);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userFriendlyMessage);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->errorCategory);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->transientOrPersistent);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->correctiveAction);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->actionableGroup);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::LST) {
+            $this->rootCauseErrorIdList = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $xfer += $input->readString($elem5);
+              $this->rootCauseErrorIdList []= $elem5;
+            }
+            $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('ErrorDetails');
+    if ($this->errorID !== null) {
+      $xfer += $output->writeFieldBegin('errorID', TType::STRING, 1);
+      $xfer += $output->writeString($this->errorID);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 2);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->actualErrorMessage !== null) {
+      $xfer += $output->writeFieldBegin('actualErrorMessage', TType::STRING, 3);
+      $xfer += $output->writeString($this->actualErrorMessage);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userFriendlyMessage !== null) {
+      $xfer += $output->writeFieldBegin('userFriendlyMessage', TType::STRING, 4);
+      $xfer += $output->writeString($this->userFriendlyMessage);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->errorCategory !== null) {
+      $xfer += $output->writeFieldBegin('errorCategory', TType::I32, 5);
+      $xfer += $output->writeI32($this->errorCategory);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->transientOrPersistent !== null) {
+      $xfer += $output->writeFieldBegin('transientOrPersistent', TType::BOOL, 6);
+      $xfer += $output->writeBool($this->transientOrPersistent);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->correctiveAction !== null) {
+      $xfer += $output->writeFieldBegin('correctiveAction', TType::I32, 7);
+      $xfer += $output->writeI32($this->correctiveAction);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->actionableGroup !== null) {
+      $xfer += $output->writeFieldBegin('actionableGroup', TType::I32, 8);
+      $xfer += $output->writeI32($this->actionableGroup);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->rootCauseErrorIdList !== null) {
+      if (!is_array($this->rootCauseErrorIdList)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('rootCauseErrorIdList', TType::LST, 9);
+      {
+        $output->writeListBegin(TType::STRING, count($this->rootCauseErrorIdList));
+        {
+          foreach ($this->rootCauseErrorIdList as $iter6)
+          {
+            $xfer += $output->writeString($iter6);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class JobDetails {
+  static $_TSPEC;
+
+  public $jobID = "DO_NOT_SET_AT_CLIENTS";
+  public $jobDescription = null;
+  public $creationTime = null;
+  public $jobStatus = null;
+  public $applicationStatus = null;
+  public $errors = null;
+  public $computeResourceConsumed = null;
+  public $jobName = null;
+  public $workingDir = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobID',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'jobDescription',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        4 => array(
+          'var' => 'jobStatus',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\JobStatus',
+          ),
+        5 => array(
+          'var' => 'applicationStatus',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\ApplicationStatus',
+          ),
+        6 => array(
+          'var' => 'errors',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ErrorDetails',
+            ),
+          ),
+        7 => array(
+          'var' => 'computeResourceConsumed',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'jobName',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'workingDir',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobID'])) {
+        $this->jobID = $vals['jobID'];
+      }
+      if (isset($vals['jobDescription'])) {
+        $this->jobDescription = $vals['jobDescription'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['jobStatus'])) {
+        $this->jobStatus = $vals['jobStatus'];
+      }
+      if (isset($vals['applicationStatus'])) {
+        $this->applicationStatus = $vals['applicationStatus'];
+      }
+      if (isset($vals['errors'])) {
+        $this->errors = $vals['errors'];
+      }
+      if (isset($vals['computeResourceConsumed'])) {
+        $this->computeResourceConsumed = $vals['computeResourceConsumed'];
+      }
+      if (isset($vals['jobName'])) {
+        $this->jobName = $vals['jobName'];
+      }
+      if (isset($vals['workingDir'])) {
+        $this->workingDir = $vals['workingDir'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'JobDetails';
+  }
+
+  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->jobID);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->jobStatus = new \Airavata\Model\Workspace\Experiment\JobStatus();
+            $xfer += $this->jobStatus->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->applicationStatus = new \Airavata\Model\Workspace\Experiment\ApplicationStatus();
+            $xfer += $this->applicationStatus->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::LST) {
+            $this->errors = array();
+            $_size7 = 0;
+            $_etype10 = 0;
+            $xfer += $input->readListBegin($_etype10, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
+            {
+              $elem12 = null;
+              $elem12 = new \Airavata\Model\Workspace\Experiment\ErrorDetails();
+              $xfer += $elem12->read($input);
+              $this->errors []= $elem12;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->computeResourceConsumed);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->workingDir);
+          } 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('JobDetails');
+    if ($this->jobID !== null) {
+      $xfer += $output->writeFieldBegin('jobID', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobID);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobDescription !== null) {
+      $xfer += $output->writeFieldBegin('jobDescription', TType::STRING, 2);
+      $xfer += $output->writeString($this->jobDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 3);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobStatus !== null) {
+      if (!is_object($this->jobStatus)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('jobStatus', TType::STRUCT, 4);
+      $xfer += $this->jobStatus->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationStatus !== null) {
+      if (!is_object($this->applicationStatus)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('applicationStatus', TType::STRUCT, 5);
+      $xfer += $this->applicationStatus->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->errors !== null) {
+      if (!is_array($this->errors)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('errors', TType::LST, 6);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->errors));
+        {
+          foreach ($this->errors as $iter13)
+          {
+            $xfer += $iter13->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->computeResourceConsumed !== null) {
+      $xfer += $output->writeFieldBegin('computeResourceConsumed', TType::STRING, 7);
+      $xfer += $output->writeString($this->computeResourceConsumed);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobName !== null) {
+      $xfer += $output->writeFieldBegin('jobName', TType::STRING, 8);
+      $xfer += $output->writeString($this->jobName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->workingDir !== null) {
+      $xfer += $output->writeFieldBegin('workingDir', TType::STRING, 9);
+      $xfer += $output->writeString($this->workingDir);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DataTransferDetails {
+  static $_TSPEC;
+
+  public $transferID = "DO_NOT_SET_AT_CLIENTS";
+  public $creationTime = null;
+  public $transferDescription = null;
+  public $transferStatus = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'transferID',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'transferDescription',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'transferStatus',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\TransferStatus',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['transferID'])) {
+        $this->transferID = $vals['transferID'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['transferDescription'])) {
+        $this->transferDescription = $vals['transferDescription'];
+      }
+      if (isset($vals['transferStatus'])) {
+        $this->transferStatus = $vals['transferStatus'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DataTransferDetails';
+  }
+
+  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->transferID);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->transferDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->transferStatus = new \Airavata\Model\Workspace\Experiment\TransferStatus();
+            $xfer += $this->transferStatus->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('DataTransferDetails');
+    if ($this->transferID !== null) {
+      $xfer += $output->writeFieldBegin('transferID', TType::STRING, 1);
+      $xfer += $output->writeString($this->transferID);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 2);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->transferDescription !== null) {
+      $xfer += $output->writeFieldBegin('transferDescription', TType::STRING, 3);
+      $xfer += $output->writeString($this->transferDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->transferStatus !== null) {
+      if (!is_object($this->transferStatus)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('transferStatus', TType::STRUCT, 4);
+      $xfer += $this->transferStatus->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TaskDetails {
+  static $_TSPEC;
+
+  public $taskID = "DO_NOT_SET_AT_CLIENTS";
+  public $creationTime = null;
+  public $applicationId = null;
+  public $applicationVersion = null;
+  public $applicationDeploymentId = null;
+  public $applicationInputs = null;
+  public $applicationOutputs = null;
+  public $taskScheduling = null;
+  public $advancedInputDataHandling = null;
+  public $advancedOutputDataHandling = null;
+  public $taskStatus = null;
+  public $jobDetailsList = null;
+  public $dataTransferDetailsList = null;
+  public $errors = null;
+  public $enableEmailNotification = null;
+  public $emailAddresses = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'taskID',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'applicationId',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'applicationVersion',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'applicationDeploymentId',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'applicationInputs',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\InputDataObjectType',
+            ),
+          ),
+        7 => array(
+          'var' => 'applicationOutputs',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType',
+            ),
+          ),
+        8 => array(
+          'var' => 'taskScheduling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling',
+          ),
+        9 => array(
+          'var' => 'advancedInputDataHandling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\AdvancedInputDataHandling',
+          ),
+        10 => array(
+          'var' => 'advancedOutputDataHandling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\AdvancedOutputDataHandling',
+          ),
+        11 => array(
+          'var' => 'taskStatus',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Experiment\TaskStatus',
+          ),
+        12 => array(
+          'var' => 'jobDetailsList',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\JobDetails',
+            ),
+          ),
+        13 => array(
+          'var' => 'dataTransferDetailsList',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\DataTransferDetails',
+            ),
+          ),
+        14 => array(
+          'var' => 'errors',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ErrorDetails',
+            ),
+          ),
+        15 => array(
+          'var' => 'enableEmailNotification',
+          'type' => TType::BOOL,
+          ),
+        16 => array(
+          'var' => 'emailAddresses',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['taskID'])) {
+        $this->taskID = $vals['taskID'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['applicationId'])) {
+        $this->applicationId = $vals['applicationId'];
+      }
+      if (isset($vals['applicationVersion'])) {
+        $this->applicationVersion = $vals['applicationVersion'];
+      }
+      if (isset($vals['applicationDeploymentId'])) {
+        $this->applicationDeploymentId = $vals['applicationDeploymentId'];
+      }
+      if (isset($vals['applicationInputs'])) {
+        $this->applicationInputs = $vals['applicationInputs'];
+      }
+      if (isset($vals['applicationOutputs'])) {
+        $this->applicationOutputs = $vals['applicationOutputs'];
+      }
+      if (isset($vals['taskScheduling'])) {
+        $this->taskScheduling = $vals['taskScheduling'];
+      }
+      if (isset($vals['advancedInputDataHandling'])) {
+        $this->advancedInputDataHandling = $vals['advancedInputDataHandling'];
+      }
+      if (isset($vals['advancedOutputDataHandling'])) {
+        $this->advancedOutputDataHandling = $vals['advancedOutputDataHandling'];
+      }
+      if (isset($vals['taskStatus'])) {
+        $this->taskStatus = $vals['taskStatus'];
+      }
+      if (isset($vals['jobDetailsList'])) {
+        $this->jobDetailsList = $vals['jobDetailsList'];
+      }
+      if (isset($vals['dataTransferDetailsList'])) {
+        $this->dataTransferDetailsList = $vals['dataTransferDetailsList'];
+      }
+      if (isset($vals['errors'])) {
+        $this->errors = $vals['errors'];
+      }
+      if (isset($vals['enableEmailNotification'])) {
+        $this->enableEmailNotification = $vals['enableEmailNotification'];
+      }
+      if (isset($vals['emailAddresses'])) {
+        $this->emailAddresses = $vals['emailAddresses'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TaskDetails';
+  }
+
+  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->taskID);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationVersion);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationDeploymentId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::LST) {
+            $this->applicationInputs = array();
+            $_size14 = 0;
+            $_etype17 = 0;
+            $xfer += $input->readListBegin($_etype17, $_size14);
+            for ($_i18 = 0; $_i18 < $_size14; ++$_i18)
+            {
+              $elem19 = null;
+              $elem19 = new \Airavata\Model\AppCatalog\AppInterface\InputDataObjectType();
+              $xfer += $elem19->read($input);
+              $this->applicationInputs []= $elem19;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::LST) {
+            $this->applicationOutputs = array();
+            $_size20 = 0;
+            $_etype23 = 0;
+            $xfer += $input->readListBegin($_etype23, $_size20);
+            for ($_i24 = 0; $_i24 < $_size20; ++$_i24)
+            {
+              $elem25 = null;
+              $elem25 = new \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType();
+              $xfer += $elem25->read($input);
+              $this->applicationOutputs []= $elem25;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRUCT) {
+            $this->taskScheduling = new \Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling();
+            $xfer += $this->taskScheduling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRUCT) {
+            $this->advancedInputDataHandling = new \Airavata\Model\Workspace\Experiment\AdvancedInputDataHandling();
+            $xfer += $this->advancedInputDataHandling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::STRUCT) {
+            $this->advancedOutputDataHandling = new \Airavata\Model\Workspace\Experiment\AdvancedOutputDataHandling();
+            $xfer += $this->advancedOutputDataHandling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::STRUCT) {
+            $this->taskStatus = new \Airavata\Model\Workspace\Experiment\TaskStatus();
+            $xfer += $this->taskStatus->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::LST) {
+            $this->jobDetailsList = array();
+            $_size26 = 0;
+            $_etype29 = 0;
+            $xfer += $input->readListBegin($_etype29, $_size26);
+            for ($_i30 = 0; $_i30 < $_size26; ++$_i30)
+            {
+              $elem31 = null;
+              $elem31 = new \Airavata\Model\Workspace\Experiment\JobDetails();
+              $xfer += $elem31->read($input);
+              $this->jobDetailsList []= $elem31;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::LST) {
+            $this->dataTransferDetailsList = array();
+            $_size32 = 0;
+            $_etype35 = 0;
+            $xfer += $input->readListBegin($_etype35, $_size32);
+            for ($_i36 = 0; $_i36 < $_size32; ++$_i36)
+            {
+              $elem37 = null;
+              $elem37 = new \Airavata\Model\Workspace\Experiment\DataTransferDetails();
+              $xfer += $elem37->read($input);
+              $this->dataTransferDetailsList []= $elem37;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::LST) {
+            $this->errors = array();
+            $_size38 = 0;
+            $_etype41 = 0;
+            $xfer += $input->readListBegin($_etype41, $_size38);
+            for ($_i42 = 0; $_i42 < $_size38; ++$_i42)
+            {
+              $elem43 = null;
+              $elem43 = new \Airavata\Model\Workspace\Experiment\ErrorDetails();
+              $xfer += $elem43->read($input);
+              $this->errors []= $elem43;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 15:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->enableEmailNotification);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 16:
+          if ($ftype == TType::LST) {
+            $this->emailAddresses = array();
+            $_size44 = 0;
+            $_etype47 = 0;
+            $xfer += $input->readListBegin($_etype47, $_size44);
+            for ($_i48 = 0; $_i48 < $_size44; ++$_i48)
+            {
+              $elem49 = null;
+              $xfer += $input->readString($elem49);
+              $this->emailAddresses []= $elem49;
+            }
+            $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('TaskDetails');
+    if ($this->taskID !== null) {
+      $xfer += $output->writeFieldBegin('taskID', TType::STRING, 1);
+      $xfer += $output->writeString($this->taskID);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 2);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationId !== null) {
+      $xfer += $output->writeFieldBegin('applicationId', TType::STRING, 3);
+      $xfer += $output->writeString($this->applicationId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationVersion !== null) {
+      $xfer += $output->writeFieldBegin('applicationVersion', TType::STRING, 4);
+      $xfer += $output->writeString($this->applicationVersion);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationDeploymentId !== null) {
+      $xfer += $output->writeFieldBegin('applicationDeploymentId', TType::STRING, 5);
+      $xfer += $output->writeString($this->applicationDeploymentId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationInputs !== null) {
+      if (!is_array($this->applicationInputs)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('applicationInputs', TType::LST, 6);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->applicationInputs));
+        {
+          foreach ($this->applicationInputs as $iter50)
+          {
+            $xfer += $iter50->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationOutputs !== null) {
+      if (!is_array($this->applicationOutputs)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('applicationOutputs', TType::LST, 7);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->applicationOutputs));
+        {
+          foreach ($this->applicationOutputs as $iter51)
+          {
+            $xfer += $iter51->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->taskScheduling !== null) {
+      if (!is_object($this->taskScheduling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('taskScheduling', TType::STRUCT, 8);
+      $xfer += $this->taskScheduling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->advancedInputDataHandling !== null) {
+      if (!is_object($this->advancedInputDataHandling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('advancedInputDataHandling', TType::STRUCT, 9);
+      $xfer += $this->advancedInputDataHandling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->advancedOutputDataHandling !== null) {
+      if (!is_object($this->advancedOutputDataHandling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('advancedOutputDataHandling', TType::STRUCT, 10);
+      $xfer += $this->advancedOutputDataHandling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->taskStatus !== null) {
+      if (!is_object($this->taskStatus)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('taskStatus', TType::STRUCT, 11);
+      $xfer += $this->taskStatus->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobDetailsList !== null) {
+      if (!is_array($this->jobDetailsList)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('jobDetailsList', TType::LST, 12);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->jobDetailsList));
+        {
+          foreach ($this->jobDetailsList as $iter52)
+          {
+            $xfer += $iter52->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataTransferDetailsList !== null) {
+      if (!is_array($this->dataTransferDetailsList)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('dataTransferDetailsList', TType::LST, 13);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->dataTransferDetailsList));
+        {
+          foreach ($this->dataTransferDetailsList as $iter53)
+          {
+            $xfer += $iter53->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->errors !== null) {
+      if (!is_array($this->errors)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('errors', TType::LST, 14);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->errors));
+        {
+          foreach ($this->errors as $iter54)
+          {
+            $xfer += $iter54->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->enableEmailNotification !== null) {
+      $xfer += $output->writeFieldBegin('enableEmailNotification', TType::BOOL, 15);
+      $xfer += $output->writeBool($this->enableEmailNotification);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->emailAddresses !== null) {
+      if

<TRUNCATED>