You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/11/10 20:07:52 UTC

[1/3] airavata-php-gateway git commit: AIRAVATA-2207 Using new ByAdmin methods to bypass sharing permissions

Repository: airavata-php-gateway
Updated Branches:
  refs/heads/develop 7fe660409 -> 4398906de


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/4398906d/app/libraries/ExperimentUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php
index f629399..fdaa434 100755
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -203,7 +203,11 @@ class ExperimentUtilities
     public static function get_experiment($expId)
     {
         try {
-            return Airavata::getExperiment(Session::get('authz-token'), $expId);
+            if (Session::has("admin") || Session::has("admin-read-only")) {
+                return Airavata::getExperimentByAdmin(Session::get('authz-token'), $expId);
+            } else {
+                return Airavata::getExperiment(Session::get('authz-token'), $expId);
+            }
         } catch (InvalidRequestException $ire) {
             CommonUtilities::print_error_message('<p>InvalidRequestException: ' . $ire->getMessage() . '</p>');
         } catch (ExperimentNotFoundException $enf) {
@@ -586,8 +590,16 @@ class ExperimentUtilities
     {
         try {
             //create new experiment to receive the clone
-            $experiment = Airavata::getExperiment(Session::get('authz-token'), $expId);
-            $cloneId = Airavata::cloneExperiment(Session::get('authz-token'), $expId, 'Clone of ' . $experiment->experimentName, $projectId);
+            if (Session::has("admin") || Session::has("admin-read-only")) {
+
+                $experiment = Airavata::getExperimentByAdmin(Session::get('authz-token'), $expId);
+                $cloneId = Airavata::cloneExperimentByAdmin(Session::get('authz-token'), $expId, 'Clone of ' . $experiment->experimentName, $projectId);
+            } else {
+
+                $experiment = Airavata::getExperiment(Session::get('authz-token'), $expId);
+                $cloneId = Airavata::cloneExperiment(Session::get('authz-token'), $expId, 'Clone of ' . $experiment->experimentName, $projectId);
+            }
+
             //updating the experiment inputs and output path
             $experiment = Airavata::getExperiment(Session::get('authz-token'), $cloneId);
             $experimentInputs = $experiment->experimentInputs;


[3/3] airavata-php-gateway git commit: AIRAVATA-2207 Using new ByAdmin methods to bypass sharing permissions

Posted by sc...@apache.org.
AIRAVATA-2207 Using new ByAdmin methods to bypass sharing permissions


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

Branch: refs/heads/develop
Commit: 4398906de4bf4761dd61a7bde39bff8d46cc35dd
Parents: 7fe6604
Author: Marcus Christie <ma...@iu.edu>
Authored: Thu Nov 10 14:44:23 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Thu Nov 10 14:44:23 2016 -0500

----------------------------------------------------------------------
 app/libraries/Airavata/API/Airavata.php | 3202 ++++++++++++++++++--------
 app/libraries/ExperimentUtilities.php   |   18 +-
 2 files changed, 2263 insertions(+), 957 deletions(-)
----------------------------------------------------------------------



[2/3] airavata-php-gateway git commit: AIRAVATA-2207 Using new ByAdmin methods to bypass sharing permissions

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/4398906d/app/libraries/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/API/Airavata.php b/app/libraries/Airavata/API/Airavata.php
index 5739ce5..fe72dce 100644
--- a/app/libraries/Airavata/API/Airavata.php
+++ b/app/libraries/Airavata/API/Airavata.php
@@ -880,6 +880,67 @@ interface AiravataIf {
    */
   public function getExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
+   *   *
+   *   * Get Experiment by an admin user
+   *   *
+   *   * Used by an admin user to fetch previously created experiment metadata.
+   *   *
+   *   * @param airavataExperimentId
+   *   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+   *   *
+   *   * @return ExperimentModel
+   *   *   This method will return the previously stored experiment metadata.
+   *   *
+   *   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *   *    For any incorrect forming of the request itself.
+   *   *
+   *   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   *   *
+   *   * @throws org.apache.airavata.model.error.AiravataClientException
+   *   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   *   *
+   *   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *   *         gateway registration steps and retry this request.
+   *   *
+   *   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *   *         For now this is a place holder.
+   *   *
+   *   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *   *         is implemented, the authorization will be more substantial.
+   *   *
+   *   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *   *       rather an Airavata Administrator will be notified to take corrective action.
+   *   *
+   * *
+   * 
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $airavataExperimentId
+   * @return \Airavata\Model\Experiment\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.
+   * 
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\ExperimentNotFoundException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getExperimentByAdmin(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
+  /**
    * 
    * Get Complete Experiment Details
    * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
@@ -1271,6 +1332,63 @@ interface AiravataIf {
   public function cloneExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $existingExperimentID, $newExperimentName, $newExperimentProjectId);
   /**
    * 
+   * Clone an Existing Experiment by an admin user
+   * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+   *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
+   * 
+   * @param newExperimentName
+   *    experiment name that should be used in the cloned experiment
+   * 
+   * @param updatedExperiment
+   *    Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+   *      the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+   *      should be shared public by default.
+   * @param newExperimentProjectId
+   *    The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+   *      in the same project as the existing experiment.
+   * 
+   * @return
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+   * 
+   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *    For any incorrect forming of the request itself.
+   * 
+   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataClientException
+   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   * 
+   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *         gateway registration steps and retry this request.
+   * 
+   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *         For now this is a place holder.
+   * 
+   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *         is implemented, the authorization will be more substantial.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *       rather an Airavata Administrator will be notified to take corrective action.
+   * 
+   * 
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $existingExperimentID
+   * @param string $newExperimentName
+   * @param string $newExperimentProjectId
+   * @return string
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\ExperimentNotFoundException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   * @throws \Airavata\API\Error\ProjectNotFoundException
+   */
+  public function cloneExperimentByAdmin(\Airavata\Model\Security\AuthzToken $authzToken, $existingExperimentID, $newExperimentName, $newExperimentProjectId);
+  /**
+   * 
    * Terminate a running Experiment.
    * 
    * @gatewayId
@@ -3761,6 +3879,15 @@ interface AiravataIf {
    */
   public function getAllWorkflows(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId);
   /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @return \Airavata\Model\Status\QueueStatusModel[]
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getLatestQueueStatuses(\Airavata\Model\Security\AuthzToken $authzToken);
+  /**
    * 
    * API Methods Related for Work-Flow Submission Features.
    * 
@@ -6366,6 +6493,73 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getExperiment failed: unknown result");
   }
 
+  public function getExperimentByAdmin(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId)
+  {
+    $this->send_getExperimentByAdmin($authzToken, $airavataExperimentId);
+    return $this->recv_getExperimentByAdmin();
+  }
+
+  public function send_getExperimentByAdmin(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId)
+  {
+    $args = new \Airavata\API\Airavata_getExperimentByAdmin_args();
+    $args->authzToken = $authzToken;
+    $args->airavataExperimentId = $airavataExperimentId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getExperimentByAdmin', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getExperimentByAdmin', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getExperimentByAdmin()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getExperimentByAdmin_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getExperimentByAdmin_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->enf !== null) {
+      throw $result->enf;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("getExperimentByAdmin failed: unknown result");
+  }
+
   public function getDetailedExperimentTree(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId)
   {
     $this->send_getDetailedExperimentTree($authzToken, $airavataExperimentId);
@@ -7143,6 +7337,78 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("cloneExperiment failed: unknown result");
   }
 
+  public function cloneExperimentByAdmin(\Airavata\Model\Security\AuthzToken $authzToken, $existingExperimentID, $newExperimentName, $newExperimentProjectId)
+  {
+    $this->send_cloneExperimentByAdmin($authzToken, $existingExperimentID, $newExperimentName, $newExperimentProjectId);
+    return $this->recv_cloneExperimentByAdmin();
+  }
+
+  public function send_cloneExperimentByAdmin(\Airavata\Model\Security\AuthzToken $authzToken, $existingExperimentID, $newExperimentName, $newExperimentProjectId)
+  {
+    $args = new \Airavata\API\Airavata_cloneExperimentByAdmin_args();
+    $args->authzToken = $authzToken;
+    $args->existingExperimentID = $existingExperimentID;
+    $args->newExperimentName = $newExperimentName;
+    $args->newExperimentProjectId = $newExperimentProjectId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'cloneExperimentByAdmin', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('cloneExperimentByAdmin', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_cloneExperimentByAdmin()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_cloneExperimentByAdmin_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_cloneExperimentByAdmin_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->enf !== null) {
+      throw $result->enf;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    if ($result->pnfe !== null) {
+      throw $result->pnfe;
+    }
+    throw new \Exception("cloneExperimentByAdmin failed: unknown result");
+  }
+
   public function terminateExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId, $gatewayId)
   {
     $this->send_terminateExperiment($authzToken, $airavataExperimentId, $gatewayId);
@@ -13562,6 +13828,69 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getAllWorkflows failed: unknown result");
   }
 
+  public function getLatestQueueStatuses(\Airavata\Model\Security\AuthzToken $authzToken)
+  {
+    $this->send_getLatestQueueStatuses($authzToken);
+    return $this->recv_getLatestQueueStatuses();
+  }
+
+  public function send_getLatestQueueStatuses(\Airavata\Model\Security\AuthzToken $authzToken)
+  {
+    $args = new \Airavata\API\Airavata_getLatestQueueStatuses_args();
+    $args->authzToken = $authzToken;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getLatestQueueStatuses', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getLatestQueueStatuses', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getLatestQueueStatuses()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getLatestQueueStatuses_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getLatestQueueStatuses_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("getLatestQueueStatuses failed: unknown result");
+  }
+
   public function getWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId)
   {
     $this->send_getWorkflow($authzToken, $workflowTemplateId);
@@ -26181,7 +26510,7 @@ class Airavata_getExperiment_result {
 
 }
 
-class Airavata_getDetailedExperimentTree_args {
+class Airavata_getExperimentByAdmin_args {
   static $_TSPEC;
 
   /**
@@ -26218,7 +26547,7 @@ class Airavata_getDetailedExperimentTree_args {
   }
 
   public function getName() {
-    return 'Airavata_getDetailedExperimentTree_args';
+    return 'Airavata_getExperimentByAdmin_args';
   }
 
   public function read($input)
@@ -26263,7 +26592,7 @@ class Airavata_getDetailedExperimentTree_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getDetailedExperimentTree_args');
+    $xfer += $output->writeStructBegin('Airavata_getExperimentByAdmin_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -26284,7 +26613,7 @@ class Airavata_getDetailedExperimentTree_args {
 
 }
 
-class Airavata_getDetailedExperimentTree_result {
+class Airavata_getExperimentByAdmin_result {
   static $_TSPEC;
 
   /**
@@ -26370,7 +26699,7 @@ class Airavata_getDetailedExperimentTree_result {
   }
 
   public function getName() {
-    return 'Airavata_getDetailedExperimentTree_result';
+    return 'Airavata_getExperimentByAdmin_result';
   }
 
   public function read($input)
@@ -26448,7 +26777,7 @@ class Airavata_getDetailedExperimentTree_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getDetailedExperimentTree_result');
+    $xfer += $output->writeStructBegin('Airavata_getExperimentByAdmin_result');
     if ($this->success !== null) {
       if (!is_object($this->success)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -26489,7 +26818,7 @@ class Airavata_getDetailedExperimentTree_result {
 
 }
 
-class Airavata_updateExperiment_args {
+class Airavata_getDetailedExperimentTree_args {
   static $_TSPEC;
 
   /**
@@ -26500,10 +26829,6 @@ class Airavata_updateExperiment_args {
    * @var string
    */
   public $airavataExperimentId = null;
-  /**
-   * @var \Airavata\Model\Experiment\ExperimentModel
-   */
-  public $experiment = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -26517,11 +26842,6 @@ class Airavata_updateExperiment_args {
           'var' => 'airavataExperimentId',
           'type' => TType::STRING,
           ),
-        3 => array(
-          'var' => 'experiment',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Experiment\ExperimentModel',
-          ),
         );
     }
     if (is_array($vals)) {
@@ -26531,14 +26851,11 @@ class Airavata_updateExperiment_args {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
-      if (isset($vals['experiment'])) {
-        $this->experiment = $vals['experiment'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateExperiment_args';
+    return 'Airavata_getDetailedExperimentTree_args';
   }
 
   public function read($input)
@@ -26571,14 +26888,6 @@ class Airavata_updateExperiment_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->experiment = new \Airavata\Model\Experiment\ExperimentModel();
-            $xfer += $this->experiment->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -26591,7 +26900,7 @@ class Airavata_updateExperiment_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateExperiment_args');
+    $xfer += $output->writeStructBegin('Airavata_getDetailedExperimentTree_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -26605,14 +26914,6 @@ class Airavata_updateExperiment_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->experiment !== null) {
-      if (!is_object($this->experiment)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('experiment', TType::STRUCT, 3);
-      $xfer += $this->experiment->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -26620,10 +26921,14 @@ class Airavata_updateExperiment_args {
 
 }
 
-class Airavata_updateExperiment_result {
+class Airavata_getDetailedExperimentTree_result {
   static $_TSPEC;
 
   /**
+   * @var \Airavata\Model\Experiment\ExperimentModel
+   */
+  public $success = null;
+  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -26647,6 +26952,11 @@ class Airavata_updateExperiment_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Experiment\ExperimentModel',
+          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -26675,6 +26985,9 @@ class Airavata_updateExperiment_result {
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -26694,7 +27007,7 @@ class Airavata_updateExperiment_result {
   }
 
   public function getName() {
-    return 'Airavata_updateExperiment_result';
+    return 'Airavata_getDetailedExperimentTree_result';
   }
 
   public function read($input)
@@ -26712,6 +27025,14 @@ class Airavata_updateExperiment_result {
       }
       switch ($fid)
       {
+        case 0:
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Experiment\ExperimentModel();
+            $xfer += $this->success->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -26764,7 +27085,15 @@ class Airavata_updateExperiment_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateExperiment_result');
+    $xfer += $output->writeStructBegin('Airavata_getDetailedExperimentTree_result');
+    if ($this->success !== null) {
+      if (!is_object($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $this->success->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -26797,7 +27126,7 @@ class Airavata_updateExperiment_result {
 
 }
 
-class Airavata_updateExperimentConfiguration_args {
+class Airavata_updateExperiment_args {
   static $_TSPEC;
 
   /**
@@ -26809,9 +27138,9 @@ class Airavata_updateExperimentConfiguration_args {
    */
   public $airavataExperimentId = null;
   /**
-   * @var \Airavata\Model\Experiment\UserConfigurationDataModel
+   * @var \Airavata\Model\Experiment\ExperimentModel
    */
-  public $userConfiguration = null;
+  public $experiment = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -26826,9 +27155,9 @@ class Airavata_updateExperimentConfiguration_args {
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'userConfiguration',
+          'var' => 'experiment',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Experiment\UserConfigurationDataModel',
+          'class' => '\Airavata\Model\Experiment\ExperimentModel',
           ),
         );
     }
@@ -26839,14 +27168,14 @@ class Airavata_updateExperimentConfiguration_args {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
-      if (isset($vals['userConfiguration'])) {
-        $this->userConfiguration = $vals['userConfiguration'];
+      if (isset($vals['experiment'])) {
+        $this->experiment = $vals['experiment'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateExperimentConfiguration_args';
+    return 'Airavata_updateExperiment_args';
   }
 
   public function read($input)
@@ -26881,8 +27210,8 @@ class Airavata_updateExperimentConfiguration_args {
           break;
         case 3:
           if ($ftype == TType::STRUCT) {
-            $this->userConfiguration = new \Airavata\Model\Experiment\UserConfigurationDataModel();
-            $xfer += $this->userConfiguration->read($input);
+            $this->experiment = new \Airavata\Model\Experiment\ExperimentModel();
+            $xfer += $this->experiment->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -26899,7 +27228,7 @@ class Airavata_updateExperimentConfiguration_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateExperimentConfiguration_args');
+    $xfer += $output->writeStructBegin('Airavata_updateExperiment_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -26913,12 +27242,12 @@ class Airavata_updateExperimentConfiguration_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userConfiguration !== null) {
-      if (!is_object($this->userConfiguration)) {
+    if ($this->experiment !== null) {
+      if (!is_object($this->experiment)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('userConfiguration', TType::STRUCT, 3);
-      $xfer += $this->userConfiguration->write($output);
+      $xfer += $output->writeFieldBegin('experiment', TType::STRUCT, 3);
+      $xfer += $this->experiment->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -26928,10 +27257,26 @@ class Airavata_updateExperimentConfiguration_args {
 
 }
 
-class Airavata_updateExperimentConfiguration_result {
+class Airavata_updateExperiment_result {
   static $_TSPEC;
 
   /**
+   * @var \Airavata\API\Error\InvalidRequestException
+   */
+  public $ire = null;
+  /**
+   * @var \Airavata\API\Error\ExperimentNotFoundException
+   */
+  public $enf = null;
+  /**
+   * @var \Airavata\API\Error\AiravataClientException
+   */
+  public $ace = null;
+  /**
+   * @var \Airavata\API\Error\AiravataSystemException
+   */
+  public $ase = null;
+  /**
    * @var \Airavata\API\Error\AuthorizationException
    */
   public $ae = null;
@@ -26940,6 +27285,26 @@ class Airavata_updateExperimentConfiguration_result {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'enf',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\ExperimentNotFoundException',
+          ),
+        3 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        4 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        5 => array(
           'var' => 'ae',
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AuthorizationException',
@@ -26947,6 +27312,18 @@ class Airavata_updateExperimentConfiguration_result {
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['enf'])) {
+        $this->enf = $vals['enf'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
       if (isset($vals['ae'])) {
         $this->ae = $vals['ae'];
       }
@@ -26954,7 +27331,7 @@ class Airavata_updateExperimentConfiguration_result {
   }
 
   public function getName() {
-    return 'Airavata_updateExperimentConfiguration_result';
+    return 'Airavata_updateExperiment_result';
   }
 
   public function read($input)
@@ -26974,6 +27351,38 @@ class Airavata_updateExperimentConfiguration_result {
       {
         case 1:
           if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->enf = new \Airavata\API\Error\ExperimentNotFoundException();
+            $xfer += $this->enf->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
             $this->ae = new \Airavata\API\Error\AuthorizationException();
             $xfer += $this->ae->read($input);
           } else {
@@ -26992,9 +27401,29 @@ class Airavata_updateExperimentConfiguration_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateExperimentConfiguration_result');
+    $xfer += $output->writeStructBegin('Airavata_updateExperiment_result');
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->enf !== null) {
+      $xfer += $output->writeFieldBegin('enf', TType::STRUCT, 2);
+      $xfer += $this->enf->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 3);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 4);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 1);
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 5);
       $xfer += $this->ae->write($output);
       $xfer += $output->writeFieldEnd();
     }
@@ -27005,7 +27434,7 @@ class Airavata_updateExperimentConfiguration_result {
 
 }
 
-class Airavata_updateResourceScheduleing_args {
+class Airavata_updateExperimentConfiguration_args {
   static $_TSPEC;
 
   /**
@@ -27017,9 +27446,9 @@ class Airavata_updateResourceScheduleing_args {
    */
   public $airavataExperimentId = null;
   /**
-   * @var \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel
+   * @var \Airavata\Model\Experiment\UserConfigurationDataModel
    */
-  public $resourceScheduling = null;
+  public $userConfiguration = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -27034,9 +27463,9 @@ class Airavata_updateResourceScheduleing_args {
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'resourceScheduling',
+          'var' => 'userConfiguration',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Scheduling\ComputationalResourceSchedulingModel',
+          'class' => '\Airavata\Model\Experiment\UserConfigurationDataModel',
           ),
         );
     }
@@ -27047,14 +27476,14 @@ class Airavata_updateResourceScheduleing_args {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
-      if (isset($vals['resourceScheduling'])) {
-        $this->resourceScheduling = $vals['resourceScheduling'];
+      if (isset($vals['userConfiguration'])) {
+        $this->userConfiguration = $vals['userConfiguration'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateResourceScheduleing_args';
+    return 'Airavata_updateExperimentConfiguration_args';
   }
 
   public function read($input)
@@ -27089,8 +27518,8 @@ class Airavata_updateResourceScheduleing_args {
           break;
         case 3:
           if ($ftype == TType::STRUCT) {
-            $this->resourceScheduling = new \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel();
-            $xfer += $this->resourceScheduling->read($input);
+            $this->userConfiguration = new \Airavata\Model\Experiment\UserConfigurationDataModel();
+            $xfer += $this->userConfiguration->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -27107,7 +27536,7 @@ class Airavata_updateResourceScheduleing_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateResourceScheduleing_args');
+    $xfer += $output->writeStructBegin('Airavata_updateExperimentConfiguration_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -27121,12 +27550,12 @@ class Airavata_updateResourceScheduleing_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->resourceScheduling !== null) {
-      if (!is_object($this->resourceScheduling)) {
+    if ($this->userConfiguration !== null) {
+      if (!is_object($this->userConfiguration)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('resourceScheduling', TType::STRUCT, 3);
-      $xfer += $this->resourceScheduling->write($output);
+      $xfer += $output->writeFieldBegin('userConfiguration', TType::STRUCT, 3);
+      $xfer += $this->userConfiguration->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -27136,7 +27565,7 @@ class Airavata_updateResourceScheduleing_args {
 
 }
 
-class Airavata_updateResourceScheduleing_result {
+class Airavata_updateExperimentConfiguration_result {
   static $_TSPEC;
 
   /**
@@ -27162,7 +27591,7 @@ class Airavata_updateResourceScheduleing_result {
   }
 
   public function getName() {
-    return 'Airavata_updateResourceScheduleing_result';
+    return 'Airavata_updateExperimentConfiguration_result';
   }
 
   public function read($input)
@@ -27200,7 +27629,7 @@ class Airavata_updateResourceScheduleing_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateResourceScheduleing_result');
+    $xfer += $output->writeStructBegin('Airavata_updateExperimentConfiguration_result');
     if ($this->ae !== null) {
       $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 1);
       $xfer += $this->ae->write($output);
@@ -27213,7 +27642,7 @@ class Airavata_updateResourceScheduleing_result {
 
 }
 
-class Airavata_validateExperiment_args {
+class Airavata_updateResourceScheduleing_args {
   static $_TSPEC;
 
   /**
@@ -27224,6 +27653,10 @@ class Airavata_validateExperiment_args {
    * @var string
    */
   public $airavataExperimentId = null;
+  /**
+   * @var \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel
+   */
+  public $resourceScheduling = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -27237,6 +27670,11 @@ class Airavata_validateExperiment_args {
           'var' => 'airavataExperimentId',
           'type' => TType::STRING,
           ),
+        3 => array(
+          'var' => 'resourceScheduling',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Scheduling\ComputationalResourceSchedulingModel',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -27246,11 +27684,14 @@ class Airavata_validateExperiment_args {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
+      if (isset($vals['resourceScheduling'])) {
+        $this->resourceScheduling = $vals['resourceScheduling'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_validateExperiment_args';
+    return 'Airavata_updateResourceScheduleing_args';
   }
 
   public function read($input)
@@ -27283,6 +27724,14 @@ class Airavata_validateExperiment_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->resourceScheduling = new \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel();
+            $xfer += $this->resourceScheduling->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -27295,7 +27744,7 @@ class Airavata_validateExperiment_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_validateExperiment_args');
+    $xfer += $output->writeStructBegin('Airavata_updateResourceScheduleing_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -27309,6 +27758,14 @@ class Airavata_validateExperiment_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->resourceScheduling !== null) {
+      if (!is_object($this->resourceScheduling)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('resourceScheduling', TType::STRUCT, 3);
+      $xfer += $this->resourceScheduling->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -27316,30 +27773,10 @@ class Airavata_validateExperiment_args {
 
 }
 
-class Airavata_validateExperiment_result {
+class Airavata_updateResourceScheduleing_result {
   static $_TSPEC;
 
   /**
-   * @var bool
-   */
-  public $success = null;
-  /**
-   * @var \Airavata\API\Error\InvalidRequestException
-   */
-  public $ire = null;
-  /**
-   * @var \Airavata\API\Error\ExperimentNotFoundException
-   */
-  public $enf = null;
-  /**
-   * @var \Airavata\API\Error\AiravataClientException
-   */
-  public $ace = null;
-  /**
-   * @var \Airavata\API\Error\AiravataSystemException
-   */
-  public $ase = null;
-  /**
    * @var \Airavata\API\Error\AuthorizationException
    */
   public $ae = null;
@@ -27347,31 +27784,7 @@ class Airavata_validateExperiment_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::BOOL,
-          ),
         1 => array(
-          'var' => 'ire',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\InvalidRequestException',
-          ),
-        2 => array(
-          'var' => 'enf',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\ExperimentNotFoundException',
-          ),
-        3 => array(
-          'var' => 'ace',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataClientException',
-          ),
-        4 => array(
-          'var' => 'ase',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataSystemException',
-          ),
-        5 => array(
           'var' => 'ae',
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AuthorizationException',
@@ -27379,21 +27792,6 @@ class Airavata_validateExperiment_result {
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
-      if (isset($vals['ire'])) {
-        $this->ire = $vals['ire'];
-      }
-      if (isset($vals['enf'])) {
-        $this->enf = $vals['enf'];
-      }
-      if (isset($vals['ace'])) {
-        $this->ace = $vals['ace'];
-      }
-      if (isset($vals['ase'])) {
-        $this->ase = $vals['ase'];
-      }
       if (isset($vals['ae'])) {
         $this->ae = $vals['ae'];
       }
@@ -27401,7 +27799,7 @@ class Airavata_validateExperiment_result {
   }
 
   public function getName() {
-    return 'Airavata_validateExperiment_result';
+    return 'Airavata_updateResourceScheduleing_result';
   }
 
   public function read($input)
@@ -27419,47 +27817,8 @@ class Airavata_validateExperiment_result {
       }
       switch ($fid)
       {
-        case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         case 1:
           if ($ftype == TType::STRUCT) {
-            $this->ire = new \Airavata\API\Error\InvalidRequestException();
-            $xfer += $this->ire->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->enf = new \Airavata\API\Error\ExperimentNotFoundException();
-            $xfer += $this->enf->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->ace = new \Airavata\API\Error\AiravataClientException();
-            $xfer += $this->ace->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->ase = new \Airavata\API\Error\AiravataSystemException();
-            $xfer += $this->ase->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::STRUCT) {
             $this->ae = new \Airavata\API\Error\AuthorizationException();
             $xfer += $this->ae->read($input);
           } else {
@@ -27478,34 +27837,9 @@ class Airavata_validateExperiment_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_validateExperiment_result');
-    if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ire !== null) {
-      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
-      $xfer += $this->ire->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->enf !== null) {
-      $xfer += $output->writeFieldBegin('enf', TType::STRUCT, 2);
-      $xfer += $this->enf->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ace !== null) {
-      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 3);
-      $xfer += $this->ace->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ase !== null) {
-      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 4);
-      $xfer += $this->ase->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
+    $xfer += $output->writeStructBegin('Airavata_updateResourceScheduleing_result');
     if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 5);
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 1);
       $xfer += $this->ae->write($output);
       $xfer += $output->writeFieldEnd();
     }
@@ -27516,7 +27850,7 @@ class Airavata_validateExperiment_result {
 
 }
 
-class Airavata_launchExperiment_args {
+class Airavata_validateExperiment_args {
   static $_TSPEC;
 
   /**
@@ -27527,10 +27861,6 @@ class Airavata_launchExperiment_args {
    * @var string
    */
   public $airavataExperimentId = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -27544,10 +27874,6 @@ class Airavata_launchExperiment_args {
           'var' => 'airavataExperimentId',
           'type' => TType::STRING,
           ),
-        3 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
@@ -27557,14 +27883,11 @@ class Airavata_launchExperiment_args {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_launchExperiment_args';
+    return 'Airavata_validateExperiment_args';
   }
 
   public function read($input)
@@ -27597,13 +27920,6 @@ class Airavata_launchExperiment_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -27616,7 +27932,7 @@ class Airavata_launchExperiment_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_launchExperiment_args');
+    $xfer += $output->writeStructBegin('Airavata_validateExperiment_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -27630,11 +27946,6 @@ class Airavata_launchExperiment_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -27642,10 +27953,14 @@ class Airavata_launchExperiment_args {
 
 }
 
-class Airavata_launchExperiment_result {
+class Airavata_validateExperiment_result {
   static $_TSPEC;
 
   /**
+   * @var bool
+   */
+  public $success = null;
+  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -27669,6 +27984,10 @@ class Airavata_launchExperiment_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -27697,6 +28016,9 @@ class Airavata_launchExperiment_result {
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -27716,7 +28038,7 @@ class Airavata_launchExperiment_result {
   }
 
   public function getName() {
-    return 'Airavata_launchExperiment_result';
+    return 'Airavata_validateExperiment_result';
   }
 
   public function read($input)
@@ -27734,6 +28056,13 @@ class Airavata_launchExperiment_result {
       }
       switch ($fid)
       {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -27786,7 +28115,12 @@ class Airavata_launchExperiment_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_launchExperiment_result');
+    $xfer += $output->writeStructBegin('Airavata_validateExperiment_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -27819,7 +28153,7 @@ class Airavata_launchExperiment_result {
 
 }
 
-class Airavata_getExperimentStatus_args {
+class Airavata_launchExperiment_args {
   static $_TSPEC;
 
   /**
@@ -27830,6 +28164,10 @@ class Airavata_getExperimentStatus_args {
    * @var string
    */
   public $airavataExperimentId = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -27843,6 +28181,10 @@ class Airavata_getExperimentStatus_args {
           'var' => 'airavataExperimentId',
           'type' => TType::STRING,
           ),
+        3 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -27852,11 +28194,14 @@ class Airavata_getExperimentStatus_args {
       if (isset($vals['airavataExperimentId'])) {
         $this->airavataExperimentId = $vals['airavataExperimentId'];
       }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getExperimentStatus_args';
+    return 'Airavata_launchExperiment_args';
   }
 
   public function read($input)
@@ -27889,6 +28234,13 @@ class Airavata_getExperimentStatus_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -27901,7 +28253,7 @@ class Airavata_getExperimentStatus_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getExperimentStatus_args');
+    $xfer += $output->writeStructBegin('Airavata_launchExperiment_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -27915,6 +28267,11 @@ class Airavata_getExperimentStatus_args {
       $xfer += $output->writeString($this->airavataExperimentId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -27922,14 +28279,10 @@ class Airavata_getExperimentStatus_args {
 
 }
 
-class Airavata_getExperimentStatus_result {
+class Airavata_launchExperiment_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Status\ExperimentStatus
-   */
-  public $success = null;
-  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -27953,11 +28306,6 @@ class Airavata_getExperimentStatus_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\ExperimentStatus',
-          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -27986,9 +28334,6 @@ class Airavata_getExperimentStatus_result {
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -28008,7 +28353,7 @@ class Airavata_getExperimentStatus_result {
   }
 
   public function getName() {
-    return 'Airavata_getExperimentStatus_result';
+    return 'Airavata_launchExperiment_result';
   }
 
   public function read($input)
@@ -28026,14 +28371,306 @@ class Airavata_getExperimentStatus_result {
       }
       switch ($fid)
       {
-        case 0:
-          if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Status\ExperimentStatus();
-            $xfer += $this->success->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->enf = new \Airavata\API\Error\ExperimentNotFoundException();
+            $xfer += $this->enf->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_launchExperiment_result');
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->enf !== null) {
+      $xfer += $output->writeFieldBegin('enf', TType::STRUCT, 2);
+      $xfer += $this->enf->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 3);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 4);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 5);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getExperimentStatus_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $airavataExperimentId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'airavataExperimentId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['airavataExperimentId'])) {
+        $this->airavataExperimentId = $vals['airavataExperimentId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getExperimentStatus_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->airavataExperimentId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getExperimentStatus_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->airavataExperimentId !== null) {
+      $xfer += $output->writeFieldBegin('airavataExperimentId', TType::STRING, 2);
+      $xfer += $output->writeString($this->airavataExperimentId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getExperimentStatus_result {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Status\ExperimentStatus
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\API\Error\InvalidRequestException
+   */
+  public $ire = null;
+  /**
+   * @var \Airavata\API\Error\ExperimentNotFoundException
+   */
+  public $enf = null;
+  /**
+   * @var \Airavata\API\Error\AiravataClientException
+   */
+  public $ace = null;
+  /**
+   * @var \Airavata\API\Error\AiravataSystemException
+   */
+  public $ase = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Status\ExperimentStatus',
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'enf',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\ExperimentNotFoundException',
+          ),
+        3 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        4 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        5 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['enf'])) {
+        $this->enf = $vals['enf'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getExperimentStatus_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Status\ExperimentStatus();
+            $xfer += $this->success->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -28540,7 +29177,338 @@ class Airavata_getIntermediateOutputs_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getIntermediateOutputs_args');
+    $xfer += $output->writeStructBegin('Airavata_getIntermediateOutputs_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->airavataExperimentId !== null) {
+      $xfer += $output->writeFieldBegin('airavataExperimentId', TType::STRING, 2);
+      $xfer += $output->writeString($this->airavataExperimentId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getIntermediateOutputs_result {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Application\Io\OutputDataObjectType[]
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\API\Error\InvalidRequestException
+   */
+  public $ire = null;
+  /**
+   * @var \Airavata\API\Error\ExperimentNotFoundException
+   */
+  public $enf = null;
+  /**
+   * @var \Airavata\API\Error\AiravataClientException
+   */
+  public $ace = null;
+  /**
+   * @var \Airavata\API\Error\AiravataSystemException
+   */
+  public $ase = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Application\Io\OutputDataObjectType',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'enf',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\ExperimentNotFoundException',
+          ),
+        3 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        4 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        5 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['enf'])) {
+        $this->enf = $vals['enf'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getIntermediateOutputs_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size113 = 0;
+            $_etype116 = 0;
+            $xfer += $input->readListBegin($_etype116, $_size113);
+            for ($_i117 = 0; $_i117 < $_size113; ++$_i117)
+            {
+              $elem118 = null;
+              $elem118 = new \Airavata\Model\Application\Io\OutputDataObjectType();
+              $xfer += $elem118->read($input);
+              $this->success []= $elem118;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->enf = new \Airavata\API\Error\ExperimentNotFoundException();
+            $xfer += $this->enf->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getIntermediateOutputs_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter119)
+          {
+            $xfer += $iter119->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->enf !== null) {
+      $xfer += $output->writeFieldBegin('enf', TType::STRUCT, 2);
+      $xfer += $this->enf->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 3);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 4);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 5);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getJobStatuses_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $airavataExperimentId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'airavataExperimentId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['airavataExperimentId'])) {
+        $this->airavataExperimentId = $vals['airavataExperimentId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getJobStatuses_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->airavataExperimentId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getJobStatuses_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -28561,11 +29529,11 @@ class Airavata_getIntermediateOutputs_args {
 
 }
 
-class Airavata_getIntermediateOutputs_result {
+class Airavata_getJobStatuses_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Application\Io\OutputDataObjectType[]
+   * @var array
    */
   public $success = null;
   /**
@@ -28594,11 +29562,15 @@ class Airavata_getIntermediateOutputs_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRUCT,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Application\Io\OutputDataObjectType',
+            'class' => '\Airavata\Model\Status\JobStatus',
             ),
           ),
         1 => array(
@@ -28651,7 +29623,7 @@ class Airavata_getIntermediateOutputs_result {
   }
 
   public function getName() {
-    return 'Airavata_getIntermediateOutputs_result';
+    return 'Airavata_getJobStatuses_result';
   }
 
   public function read($input)
@@ -28670,19 +29642,22 @@ class Airavata_getIntermediateOutputs_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::LST) {
+          if ($ftype == TType::MAP) {
             $this->success = array();
-            $_size113 = 0;
-            $_etype116 = 0;
-            $xfer += $input->readListBegin($_etype116, $_size113);
-            for ($_i117 = 0; $_i117 < $_size113; ++$_i117)
+            $_size120 = 0;
+            $_ktype121 = 0;
+            $_vtype122 = 0;
+            $xfer += $input->readMapBegin($_ktype121, $_vtype122, $_size120);
+            for ($_i124 = 0; $_i124 < $_size120; ++$_i124)
             {
-              $elem118 = null;
-              $elem118 = new \Airavata\Model\Application\Io\OutputDataObjectType();
-              $xfer += $elem118->read($input);
-              $this->success []= $elem118;
+              $key125 = '';
+              $val126 = new \Airavata\Model\Status\JobStatus();
+              $xfer += $input->readString($key125);
+              $val126 = new \Airavata\Model\Status\JobStatus();
+              $xfer += $val126->read($input);
+              $this->success[$key125] = $val126;
             }
-            $xfer += $input->readListEnd();
+            $xfer += $input->readMapEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -28739,21 +29714,22 @@ class Airavata_getIntermediateOutputs_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getIntermediateOutputs_result');
+    $xfer += $output->writeStructBegin('Airavata_getJobStatuses_result');
     if ($this->success !== null) {
       if (!is_array($this->success)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->success));
+        $output->writeMapBegin(TType::STRING, TType::STRUCT, count($this->success));
         {
-          foreach ($this->success as $iter119)
+          foreach ($this->success as $kiter127 => $viter128)
           {
-            $xfer += $iter119->write($output);
+            $xfer += $output->writeString($kiter127);
+            $xfer += $viter128->write($output);
           }
         }
-        $output->writeListEnd();
+        $output->writeMapEnd();
       }
       $xfer += $output->writeFieldEnd();
     }
@@ -28789,7 +29765,7 @@ class Airavata_getIntermediateOutputs_result {
 
 }
 
-class Airavata_getJobStatuses_args {
+class Airavata_getJobDetails_args {
   static $_TSPEC;
 
   /**
@@ -28826,7 +29802,7 @@ class Airavata_getJobStatuses_args {
   }
 
   public function getName() {
-    return 'Airavata_getJobStatuses_args';
+    return 'Airavata_getJobDetails_args';
   }
 
   public function read($input)
@@ -28871,7 +29847,7 @@ class Airavata_getJobStatuses_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getJobStatuses_args');
+    $xfer += $output->writeStructBegin('Airavata_getJobDetails_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -28892,11 +29868,11 @@ class Airavata_getJobStatuses_args {
 
 }
 
-class Airavata_getJobStatuses_result {
+class Airavata_getJobDetails_result {
   static $_TSPEC;
 
   /**
-   * @var array
+   * @var \Airavata\Model\Job\JobModel[]
    */
   public $success = null;
   /**
@@ -28925,15 +29901,11 @@ class Airavata_getJobStatuses_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRUCT,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Status\JobStatus',
+            'class' => '\Airavata\Model\Job\JobModel',
             ),
           ),
         1 => array(
@@ -28986,7 +29958,7 @@ class Airavata_getJobStatuses_result {
   }
 
   public function getName() {
-    return 'Airavata_getJobStatuses_result';
+    return 'Airavata_getJobDetails_result';
   }
 
   public function read($input)
@@ -29005,22 +29977,19 @@ class Airavata_getJobStatuses_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::MAP) {
+          if ($ftype == TType::LST) {
             $this->success = array();
-            $_size120 = 0;
-            $_ktype121 = 0;
-            $_vtype122 = 0;
-            $xfer += $input->readMapBegin($_ktype121, $_vtype122, $_size120);
-            for ($_i124 = 0; $_i124 < $_size120; ++$_i124)
+            $_size129 = 0;
+            $_etype132 = 0;
+            $xfer += $input->readListBegin($_etype132, $_size129);
+            for ($_i133 = 0; $_i133 < $_size129; ++$_i133)
             {
-              $key125 = '';
-              $val126 = new \Airavata\Model\Status\JobStatus();
-              $xfer += $input->readString($key125);
-              $val126 = new \Airavata\Model\Status\JobStatus();
-              $xfer += $val126->read($input);
-              $this->success[$key125] = $val126;
+              $elem134 = null;
+              $elem134 = new \Airavata\Model\Job\JobModel();
+              $xfer += $elem134->read($input);
+              $this->success []= $elem134;
             }
-            $xfer += $input->readMapEnd();
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -29077,22 +30046,21 @@ class Airavata_getJobStatuses_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getJobStatuses_result');
+    $xfer += $output->writeStructBegin('Airavata_getJobDetails_result');
     if ($this->success !== null) {
       if (!is_array($this->success)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
       {
-        $output->writeMapBegin(TType::STRING, TType::STRUCT, count($this->success));
+        $output->writeListBegin(TType::STRUCT, count($this->success));
         {
-          foreach ($this->success as $kiter127 => $viter128)
+          foreach ($this->success as $iter135)
           {
-            $xfer += $output->writeString($kiter127);
-            $xfer += $viter128->write($output);
+            $xfer += $iter135->write($output);
           }
         }
-        $output->writeMapEnd();
+        $output->writeListEnd();
       }
       $xfer += $output->writeFieldEnd();
     }
@@ -29128,7 +30096,7 @@ class Airavata_getJobStatuses_result {
 
 }
 
-class Airavata_getJobDetails_args {
+class Airavata_cloneExperiment_args {
   static $_TSPEC;
 
   /**
@@ -29138,7 +30106,15 @@ class Airavata_getJobDetails_args {
   /**
    * @var string
    */
-  public $airavataExperimentId = null;
+  public $existingExperimentID = null;
+  /**
+   * @var string
+   */
+  public $newExperimentName = null;
+  /**
+   * @var string
+   */
+  public $newExperimentProjectId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -29149,7 +30125,15 @@ class Airavata_getJobDetails_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'airavataExperimentId',
+          'var' => 'existingExperimentID',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'newExperimentName',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'newExperimentProjectId',
           'type' => TType::STRING,
           ),
         );
@@ -29158,14 +30142,20 @@ class Airavata_getJobDetails_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['airavataExperimentId'])) {
-        $this->airavataExperimentId = $vals['airavataExperimentId'];
+      if (isset($vals['existingExperimentID'])) {
+        $this->existingExperimentID = $vals['existingExperimentID'];
+      }
+      if (isset($vals['newExperimentName'])) {
+        $this->newExperimentName = $vals['newExperimentName'];
+      }
+      if (isset($vals['newExperimentProjectId'])) {
+        $this->newExperimentProjectId = $vals['newExperimentProjectId'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getJobDetails_args';
+    return 'Airavata_cloneExperiment_args';
   }
 
   public function read($input)
@@ -29193,7 +30183,21 @@ class Airavata_getJobDetails_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->airavataExperimentId);
+            $xfer += $input->readString($this->existingExperimentID);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->newExperimentName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->newExperimentProjectId);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -29210,7 +30214,7 @@ class Airavata_getJobDetails_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getJobDetails_args');
+    $xfer += $output->writeStructBegin('Airavata_cloneExperiment_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -29219,9 +30223,19 @@ class Airavata_getJobDetails_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->airavataExperimentId !== null) {
-      $xfer += $output->writeFieldBegin('airavataExperimentId', TType::STRING, 2);
-      $xfer += $output->writeString($this->airavataExperimentId);
+    if ($this->existingExperimentID !== null) {
+      $xfer += $output->writeFieldBegin('existingExperimentID', TType::STRING, 2);
+      $xfer += $output->writeString($this->existingExperimentID);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->newExperimentName !== null) {
+      $xfer += $output->writeFieldBegin('newExperimentName', TType::STRING, 3);
+      $xfer += $output->writeString($this->newExperimentName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->newExperimentProjectId !== null) {
+      $xfer += $output->writeFieldBegin('newExperimentProjectId', TType::STRING, 4);
+      $xfer += $output->writeString($this->newExperimentProjectId);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -29231,11 +30245,11 @@ class Airavata_getJobDetails_args {
 
 }
 
-class Airavata_getJobDetails_result {
+class Airavata_cloneExperiment_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Job\JobModel[]
+   * @var string
    */
   public $success = null;
   /**
@@ -29258,18 +30272,17 @@ class Airavata_getJobDetails_result {
    * @var \Airavata\API\Error\AuthorizationException
    */
   public $ae = null;
+  /**
+   * @var \Airavata\API\Error\ProjectNotFoundException
+   */
+  public $pnfe = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Job\JobModel',
-            ),
+          'type' => TType::STRING,
           ),
         1 => array(
           'var' => 'ire',
@@ -29296,6 +30309,11 @@ class Airavata_getJobDetails_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AuthorizationException',
           ),
+        6 => array(
+          'var' => 'pnfe',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\ProjectNotFoundException',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -29317,11 +30335,14 @@ class Airavata_getJobDetails_result {
       if (isset($vals['ae'])) {
         $this->ae = $vals['ae'];
       }
+      if (isset($vals['pnfe'])) {
+        $this->pnfe = $vals['pnfe'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getJobDetails_result';
+    return 'Airavata_cloneExperiment_result';
   }
 
   public function read($input)
@@ -29340,19 +30361,8 @@ class Airavata_getJobDetails_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::LST) {
-     

<TRUNCATED>