Repository: airavata Updated Branches: refs/heads/develop a6de53904 -> 4f7af6a9a
http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php index fd56220..d01c0d0 100644 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php +++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php @@ -355,6 +355,10 @@ class ExperimentModel { * @var \Airavata\Model\Commons\ErrorModel[] */ public $errors = null; + /** + * @var \Airavata\Model\Process\ProcessModel[] + */ + public $processes = null; public function __construct($vals=null) { if (!isset(self::$_TSPEC)) { @@ -448,6 +452,15 @@ class ExperimentModel { 'class' => '\Airavata\Model\Commons\ErrorModel', ), ), + 18 => array( + 'var' => 'processes', + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Airavata\Model\Process\ProcessModel', + ), + ), ); } if (is_array($vals)) { @@ -502,6 +515,9 @@ class ExperimentModel { if (isset($vals['errors'])) { $this->errors = $vals['errors']; } + if (isset($vals['processes'])) { + $this->processes = $vals['processes']; + } } } @@ -688,6 +704,24 @@ class ExperimentModel { $xfer += $input->skip($ftype); } break; + case 18: + if ($ftype == TType::LST) { + $this->processes = array(); + $_size24 = 0; + $_etype27 = 0; + $xfer += $input->readListBegin($_etype27, $_size24); + for ($_i28 = 0; $_i28 < $_size24; ++$_i28) + { + $elem29 = null; + $elem29 = new \Airavata\Model\Process\ProcessModel(); + $xfer += $elem29->read($input); + $this->processes []= $elem29; + } + $xfer += $input->readListEnd(); + } else { + $xfer += $input->skip($ftype); + } + break; default: $xfer += $input->skip($ftype); break; @@ -764,9 +798,9 @@ class ExperimentModel { { $output->writeListBegin(TType::STRING, count($this->emailAddresses)); { - foreach ($this->emailAddresses as $iter24) + foreach ($this->emailAddresses as $iter30) { - $xfer += $output->writeString($iter24); + $xfer += $output->writeString($iter30); } } $output->writeListEnd(); @@ -789,9 +823,9 @@ class ExperimentModel { { $output->writeListBegin(TType::STRUCT, count($this->experimentInputs)); { - foreach ($this->experimentInputs as $iter25) + foreach ($this->experimentInputs as $iter31) { - $xfer += $iter25->write($output); + $xfer += $iter31->write($output); } } $output->writeListEnd(); @@ -806,9 +840,9 @@ class ExperimentModel { { $output->writeListBegin(TType::STRUCT, count($this->experimentOutputs)); { - foreach ($this->experimentOutputs as $iter26) + foreach ($this->experimentOutputs as $iter32) { - $xfer += $iter26->write($output); + $xfer += $iter32->write($output); } } $output->writeListEnd(); @@ -831,9 +865,26 @@ class ExperimentModel { { $output->writeListBegin(TType::STRUCT, count($this->errors)); { - foreach ($this->errors as $iter27) + foreach ($this->errors as $iter33) + { + $xfer += $iter33->write($output); + } + } + $output->writeListEnd(); + } + $xfer += $output->writeFieldEnd(); + } + if ($this->processes !== null) { + if (!is_array($this->processes)) { + throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA); + } + $xfer += $output->writeFieldBegin('processes', TType::LST, 18); + { + $output->writeListBegin(TType::STRUCT, count($this->processes)); + { + foreach ($this->processes as $iter34) { - $xfer += $iter27->write($output); + $xfer += $iter34->write($output); } } $output->writeListEnd(); @@ -1391,15 +1442,15 @@ class ExperimentStatistics { case 7: if ($ftype == TType::LST) { $this->allExperiments = array(); - $_size28 = 0; - $_etype31 = 0; - $xfer += $input->readListBegin($_etype31, $_size28); - for ($_i32 = 0; $_i32 < $_size28; ++$_i32) + $_size35 = 0; + $_etype38 = 0; + $xfer += $input->readListBegin($_etype38, $_size35); + for ($_i39 = 0; $_i39 < $_size35; ++$_i39) { - $elem33 = null; - $elem33 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); - $xfer += $elem33->read($input); - $this->allExperiments []= $elem33; + $elem40 = null; + $elem40 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); + $xfer += $elem40->read($input); + $this->allExperiments []= $elem40; } $xfer += $input->readListEnd(); } else { @@ -1409,15 +1460,15 @@ class ExperimentStatistics { case 8: if ($ftype == TType::LST) { $this->completedExperiments = array(); - $_size34 = 0; - $_etype37 = 0; - $xfer += $input->readListBegin($_etype37, $_size34); - for ($_i38 = 0; $_i38 < $_size34; ++$_i38) + $_size41 = 0; + $_etype44 = 0; + $xfer += $input->readListBegin($_etype44, $_size41); + for ($_i45 = 0; $_i45 < $_size41; ++$_i45) { - $elem39 = null; - $elem39 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); - $xfer += $elem39->read($input); - $this->completedExperiments []= $elem39; + $elem46 = null; + $elem46 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); + $xfer += $elem46->read($input); + $this->completedExperiments []= $elem46; } $xfer += $input->readListEnd(); } else { @@ -1427,15 +1478,15 @@ class ExperimentStatistics { case 9: if ($ftype == TType::LST) { $this->failedExperiments = array(); - $_size40 = 0; - $_etype43 = 0; - $xfer += $input->readListBegin($_etype43, $_size40); - for ($_i44 = 0; $_i44 < $_size40; ++$_i44) + $_size47 = 0; + $_etype50 = 0; + $xfer += $input->readListBegin($_etype50, $_size47); + for ($_i51 = 0; $_i51 < $_size47; ++$_i51) { - $elem45 = null; - $elem45 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); - $xfer += $elem45->read($input); - $this->failedExperiments []= $elem45; + $elem52 = null; + $elem52 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); + $xfer += $elem52->read($input); + $this->failedExperiments []= $elem52; } $xfer += $input->readListEnd(); } else { @@ -1445,15 +1496,15 @@ class ExperimentStatistics { case 10: if ($ftype == TType::LST) { $this->cancelledExperiments = array(); - $_size46 = 0; - $_etype49 = 0; - $xfer += $input->readListBegin($_etype49, $_size46); - for ($_i50 = 0; $_i50 < $_size46; ++$_i50) + $_size53 = 0; + $_etype56 = 0; + $xfer += $input->readListBegin($_etype56, $_size53); + for ($_i57 = 0; $_i57 < $_size53; ++$_i57) { - $elem51 = null; - $elem51 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); - $xfer += $elem51->read($input); - $this->cancelledExperiments []= $elem51; + $elem58 = null; + $elem58 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); + $xfer += $elem58->read($input); + $this->cancelledExperiments []= $elem58; } $xfer += $input->readListEnd(); } else { @@ -1463,15 +1514,15 @@ class ExperimentStatistics { case 11: if ($ftype == TType::LST) { $this->createdExperiments = array(); - $_size52 = 0; - $_etype55 = 0; - $xfer += $input->readListBegin($_etype55, $_size52); - for ($_i56 = 0; $_i56 < $_size52; ++$_i56) + $_size59 = 0; + $_etype62 = 0; + $xfer += $input->readListBegin($_etype62, $_size59); + for ($_i63 = 0; $_i63 < $_size59; ++$_i63) { - $elem57 = null; - $elem57 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); - $xfer += $elem57->read($input); - $this->createdExperiments []= $elem57; + $elem64 = null; + $elem64 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); + $xfer += $elem64->read($input); + $this->createdExperiments []= $elem64; } $xfer += $input->readListEnd(); } else { @@ -1481,15 +1532,15 @@ class ExperimentStatistics { case 12: if ($ftype == TType::LST) { $this->runningExperiments = array(); - $_size58 = 0; - $_etype61 = 0; - $xfer += $input->readListBegin($_etype61, $_size58); - for ($_i62 = 0; $_i62 < $_size58; ++$_i62) + $_size65 = 0; + $_etype68 = 0; + $xfer += $input->readListBegin($_etype68, $_size65); + for ($_i69 = 0; $_i69 < $_size65; ++$_i69) { - $elem63 = null; - $elem63 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); - $xfer += $elem63->read($input); - $this->runningExperiments []= $elem63; + $elem70 = null; + $elem70 = new \Airavata\Model\Experiment\ExperimentSummaryModel(); + $xfer += $elem70->read($input); + $this->runningExperiments []= $elem70; } $xfer += $input->readListEnd(); } else { @@ -1547,9 +1598,9 @@ class ExperimentStatistics { { $output->writeListBegin(TType::STRUCT, count($this->allExperiments)); { - foreach ($this->allExperiments as $iter64) + foreach ($this->allExperiments as $iter71) { - $xfer += $iter64->write($output); + $xfer += $iter71->write($output); } } $output->writeListEnd(); @@ -1564,9 +1615,9 @@ class ExperimentStatistics { { $output->writeListBegin(TType::STRUCT, count($this->completedExperiments)); { - foreach ($this->completedExperiments as $iter65) + foreach ($this->completedExperiments as $iter72) { - $xfer += $iter65->write($output); + $xfer += $iter72->write($output); } } $output->writeListEnd(); @@ -1581,9 +1632,9 @@ class ExperimentStatistics { { $output->writeListBegin(TType::STRUCT, count($this->failedExperiments)); { - foreach ($this->failedExperiments as $iter66) + foreach ($this->failedExperiments as $iter73) { - $xfer += $iter66->write($output); + $xfer += $iter73->write($output); } } $output->writeListEnd(); @@ -1598,9 +1649,9 @@ class ExperimentStatistics { { $output->writeListBegin(TType::STRUCT, count($this->cancelledExperiments)); { - foreach ($this->cancelledExperiments as $iter67) + foreach ($this->cancelledExperiments as $iter74) { - $xfer += $iter67->write($output); + $xfer += $iter74->write($output); } } $output->writeListEnd(); @@ -1615,9 +1666,9 @@ class ExperimentStatistics { { $output->writeListBegin(TType::STRUCT, count($this->createdExperiments)); { - foreach ($this->createdExperiments as $iter68) + foreach ($this->createdExperiments as $iter75) { - $xfer += $iter68->write($output); + $xfer += $iter75->write($output); } } $output->writeListEnd(); @@ -1632,9 +1683,9 @@ class ExperimentStatistics { { $output->writeListBegin(TType::STRUCT, count($this->runningExperiments)); { - foreach ($this->runningExperiments as $iter69) + foreach ($this->runningExperiments as $iter76) { - $xfer += $iter69->write($output); + $xfer += $iter76->write($output); } } $output->writeListEnd(); http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php index df9e68d..deae011 100644 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php +++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php @@ -102,6 +102,10 @@ class TaskModel { * @var \Airavata\Model\Commons\ErrorModel */ public $taskError = null; + /** + * @var \Airavata\Model\Job\JobModel[] + */ + public $jobs = null; public function __construct($vals=null) { if (!isset(self::$_TSPEC)) { @@ -144,6 +148,15 @@ class TaskModel { 'type' => TType::STRUCT, 'class' => '\Airavata\Model\Commons\ErrorModel', ), + 10 => array( + 'var' => 'jobs', + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Airavata\Model\Job\JobModel', + ), + ), ); } if (is_array($vals)) { @@ -174,6 +187,9 @@ class TaskModel { if (isset($vals['taskError'])) { $this->taskError = $vals['taskError']; } + if (isset($vals['jobs'])) { + $this->jobs = $vals['jobs']; + } } } @@ -261,6 +277,24 @@ class TaskModel { $xfer += $input->skip($ftype); } break; + case 10: + if ($ftype == TType::LST) { + $this->jobs = array(); + $_size0 = 0; + $_etype3 = 0; + $xfer += $input->readListBegin($_etype3, $_size0); + for ($_i4 = 0; $_i4 < $_size0; ++$_i4) + { + $elem5 = null; + $elem5 = new \Airavata\Model\Job\JobModel(); + $xfer += $elem5->read($input); + $this->jobs []= $elem5; + } + $xfer += $input->readListEnd(); + } else { + $xfer += $input->skip($ftype); + } + break; default: $xfer += $input->skip($ftype); break; @@ -325,6 +359,23 @@ class TaskModel { $xfer += $this->taskError->write($output); $xfer += $output->writeFieldEnd(); } + if ($this->jobs !== null) { + if (!is_array($this->jobs)) { + throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA); + } + $xfer += $output->writeFieldBegin('jobs', TType::LST, 10); + { + $output->writeListBegin(TType::STRUCT, count($this->jobs)); + { + foreach ($this->jobs as $iter6) + { + $xfer += $iter6->write($output); + } + } + $output->writeListEnd(); + } + $xfer += $output->writeFieldEnd(); + } $xfer += $output->writeFieldStop(); $xfer += $output->writeStructEnd(); return $xfer; http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote index 7330142..96cf8bd 100755 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote @@ -53,6 +53,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help': print(' string createExperiment(AuthzToken authzToken, string gatewayId, ExperimentModel experiment)') print(' bool deleteExperiment(AuthzToken authzToken, string experimentId)') print(' ExperimentModel getExperiment(AuthzToken authzToken, string airavataExperimentId)') + print(' ExperimentModel getDetailedExperimentTree(AuthzToken authzToken, string airavataExperimentId)') print(' void updateExperiment(AuthzToken authzToken, string airavataExperimentId, ExperimentModel experiment)') print(' void updateExperimentConfiguration(AuthzToken authzToken, string airavataExperimentId, UserConfigurationDataModel userConfiguration)') print(' void updateResourceScheduleing(AuthzToken authzToken, string airavataExperimentId, ComputationalResourceSchedulingModel resourceScheduling)') @@ -383,6 +384,12 @@ elif cmd == 'getExperiment': sys.exit(1) pp.pprint(client.getExperiment(eval(args[0]),args[1],)) +elif cmd == 'getDetailedExperimentTree': + if len(args) != 2: + print('getDetailedExperimentTree requires 2 args') + sys.exit(1) + pp.pprint(client.getDetailedExperimentTree(eval(args[0]),args[1],)) + elif cmd == 'updateExperiment': if len(args) != 3: print('updateExperiment requires 3 args') http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py index 779a25a..a447541 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py @@ -11,6 +11,7 @@ import apache.airavata.model.application.io.ttypes import apache.airavata.model.scheduling.ttypes import apache.airavata.model.commons.ttypes import apache.airavata.model.status.ttypes +import apache.airavata.model.process.ttypes from thrift.transport import TTransport @@ -252,6 +253,7 @@ class ExperimentModel: - experimentOutputs - experimentStatus - errors + - processes """ thrift_spec = ( @@ -273,9 +275,10 @@ class ExperimentModel: (15, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 15 (16, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 16 (17, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 17 + (18, TType.LIST, 'processes', (TType.STRUCT,(apache.airavata.model.process.ttypes.ProcessModel, apache.airavata.model.process.ttypes.ProcessModel.thrift_spec)), None, ), # 18 ) - def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None,): + def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None, processes=None,): self.experimentId = experimentId self.projectId = projectId self.gatewayId = gatewayId @@ -293,6 +296,7 @@ class ExperimentModel: self.experimentOutputs = experimentOutputs self.experimentStatus = experimentStatus self.errors = errors + self.processes = processes def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -413,6 +417,17 @@ class ExperimentModel: iprot.readListEnd() else: iprot.skip(ftype) + elif fid == 18: + if ftype == TType.LIST: + self.processes = [] + (_etype27, _size24) = iprot.readListBegin() + for _i28 in xrange(_size24): + _elem29 = apache.airavata.model.process.ttypes.ProcessModel() + _elem29.read(iprot) + self.processes.append(_elem29) + iprot.readListEnd() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -470,8 +485,8 @@ class ExperimentModel: if self.emailAddresses is not None: oprot.writeFieldBegin('emailAddresses', TType.LIST, 12) oprot.writeListBegin(TType.STRING, len(self.emailAddresses)) - for iter24 in self.emailAddresses: - oprot.writeString(iter24) + for iter30 in self.emailAddresses: + oprot.writeString(iter30) oprot.writeListEnd() oprot.writeFieldEnd() if self.userConfigurationData is not None: @@ -481,15 +496,15 @@ class ExperimentModel: if self.experimentInputs is not None: oprot.writeFieldBegin('experimentInputs', TType.LIST, 14) oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs)) - for iter25 in self.experimentInputs: - iter25.write(oprot) + for iter31 in self.experimentInputs: + iter31.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.experimentOutputs is not None: oprot.writeFieldBegin('experimentOutputs', TType.LIST, 15) oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs)) - for iter26 in self.experimentOutputs: - iter26.write(oprot) + for iter32 in self.experimentOutputs: + iter32.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.experimentStatus is not None: @@ -499,8 +514,15 @@ class ExperimentModel: if self.errors is not None: oprot.writeFieldBegin('errors', TType.LIST, 17) oprot.writeListBegin(TType.STRUCT, len(self.errors)) - for iter27 in self.errors: - iter27.write(oprot) + for iter33 in self.errors: + iter33.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.processes is not None: + oprot.writeFieldBegin('processes', TType.LIST, 18) + oprot.writeListBegin(TType.STRUCT, len(self.processes)) + for iter34 in self.processes: + iter34.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -541,6 +563,7 @@ class ExperimentModel: value = (value * 31) ^ hash(self.experimentOutputs) value = (value * 31) ^ hash(self.experimentStatus) value = (value * 31) ^ hash(self.errors) + value = (value * 31) ^ hash(self.processes) return value def __repr__(self): @@ -849,66 +872,66 @@ class ExperimentStatistics: elif fid == 7: if ftype == TType.LIST: self.allExperiments = [] - (_etype31, _size28) = iprot.readListBegin() - for _i32 in xrange(_size28): - _elem33 = ExperimentSummaryModel() - _elem33.read(iprot) - self.allExperiments.append(_elem33) + (_etype38, _size35) = iprot.readListBegin() + for _i39 in xrange(_size35): + _elem40 = ExperimentSummaryModel() + _elem40.read(iprot) + self.allExperiments.append(_elem40) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 8: if ftype == TType.LIST: self.completedExperiments = [] - (_etype37, _size34) = iprot.readListBegin() - for _i38 in xrange(_size34): - _elem39 = ExperimentSummaryModel() - _elem39.read(iprot) - self.completedExperiments.append(_elem39) + (_etype44, _size41) = iprot.readListBegin() + for _i45 in xrange(_size41): + _elem46 = ExperimentSummaryModel() + _elem46.read(iprot) + self.completedExperiments.append(_elem46) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 9: if ftype == TType.LIST: self.failedExperiments = [] - (_etype43, _size40) = iprot.readListBegin() - for _i44 in xrange(_size40): - _elem45 = ExperimentSummaryModel() - _elem45.read(iprot) - self.failedExperiments.append(_elem45) + (_etype50, _size47) = iprot.readListBegin() + for _i51 in xrange(_size47): + _elem52 = ExperimentSummaryModel() + _elem52.read(iprot) + self.failedExperiments.append(_elem52) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 10: if ftype == TType.LIST: self.cancelledExperiments = [] - (_etype49, _size46) = iprot.readListBegin() - for _i50 in xrange(_size46): - _elem51 = ExperimentSummaryModel() - _elem51.read(iprot) - self.cancelledExperiments.append(_elem51) + (_etype56, _size53) = iprot.readListBegin() + for _i57 in xrange(_size53): + _elem58 = ExperimentSummaryModel() + _elem58.read(iprot) + self.cancelledExperiments.append(_elem58) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 11: if ftype == TType.LIST: self.createdExperiments = [] - (_etype55, _size52) = iprot.readListBegin() - for _i56 in xrange(_size52): - _elem57 = ExperimentSummaryModel() - _elem57.read(iprot) - self.createdExperiments.append(_elem57) + (_etype62, _size59) = iprot.readListBegin() + for _i63 in xrange(_size59): + _elem64 = ExperimentSummaryModel() + _elem64.read(iprot) + self.createdExperiments.append(_elem64) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 12: if ftype == TType.LIST: self.runningExperiments = [] - (_etype61, _size58) = iprot.readListBegin() - for _i62 in xrange(_size58): - _elem63 = ExperimentSummaryModel() - _elem63.read(iprot) - self.runningExperiments.append(_elem63) + (_etype68, _size65) = iprot.readListBegin() + for _i69 in xrange(_size65): + _elem70 = ExperimentSummaryModel() + _elem70.read(iprot) + self.runningExperiments.append(_elem70) iprot.readListEnd() else: iprot.skip(ftype) @@ -949,43 +972,43 @@ class ExperimentStatistics: if self.allExperiments is not None: oprot.writeFieldBegin('allExperiments', TType.LIST, 7) oprot.writeListBegin(TType.STRUCT, len(self.allExperiments)) - for iter64 in self.allExperiments: - iter64.write(oprot) + for iter71 in self.allExperiments: + iter71.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.completedExperiments is not None: oprot.writeFieldBegin('completedExperiments', TType.LIST, 8) oprot.writeListBegin(TType.STRUCT, len(self.completedExperiments)) - for iter65 in self.completedExperiments: - iter65.write(oprot) + for iter72 in self.completedExperiments: + iter72.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.failedExperiments is not None: oprot.writeFieldBegin('failedExperiments', TType.LIST, 9) oprot.writeListBegin(TType.STRUCT, len(self.failedExperiments)) - for iter66 in self.failedExperiments: - iter66.write(oprot) + for iter73 in self.failedExperiments: + iter73.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.cancelledExperiments is not None: oprot.writeFieldBegin('cancelledExperiments', TType.LIST, 10) oprot.writeListBegin(TType.STRUCT, len(self.cancelledExperiments)) - for iter67 in self.cancelledExperiments: - iter67.write(oprot) + for iter74 in self.cancelledExperiments: + iter74.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.createdExperiments is not None: oprot.writeFieldBegin('createdExperiments', TType.LIST, 11) oprot.writeListBegin(TType.STRUCT, len(self.createdExperiments)) - for iter68 in self.createdExperiments: - iter68.write(oprot) + for iter75 in self.createdExperiments: + iter75.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.runningExperiments is not None: oprot.writeFieldBegin('runningExperiments', TType.LIST, 12) oprot.writeListBegin(TType.STRUCT, len(self.runningExperiments)) - for iter69 in self.runningExperiments: - iter69.write(oprot) + for iter76 in self.runningExperiments: + iter76.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py index 3582bf2..e6dcb62 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py @@ -11,6 +11,7 @@ import apache.airavata.model.commons.ttypes import apache.airavata.model.status.ttypes import apache.airavata.model.appcatalog.computeresource.ttypes import apache.airavata.model.application.io.ttypes +import apache.airavata.model.job.ttypes from thrift.transport import TTransport @@ -93,6 +94,7 @@ class TaskModel: - taskDetail - subTaskModel - taskError + - jobs """ thrift_spec = ( @@ -106,9 +108,10 @@ class TaskModel: (7, TType.STRING, 'taskDetail', None, None, ), # 7 (8, TType.STRING, 'subTaskModel', None, None, ), # 8 (9, TType.STRUCT, 'taskError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 9 + (10, TType.LIST, 'jobs', (TType.STRUCT,(apache.airavata.model.job.ttypes.JobModel, apache.airavata.model.job.ttypes.JobModel.thrift_spec)), None, ), # 10 ) - def __init__(self, taskId=thrift_spec[1][4], taskType=None, parentProcessId=None, creationTime=None, lastUpdateTime=None, taskStatus=None, taskDetail=None, subTaskModel=None, taskError=None,): + def __init__(self, taskId=thrift_spec[1][4], taskType=None, parentProcessId=None, creationTime=None, lastUpdateTime=None, taskStatus=None, taskDetail=None, subTaskModel=None, taskError=None, jobs=None,): self.taskId = taskId self.taskType = taskType self.parentProcessId = parentProcessId @@ -118,6 +121,7 @@ class TaskModel: self.taskDetail = taskDetail self.subTaskModel = subTaskModel self.taskError = taskError + self.jobs = jobs def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -175,6 +179,17 @@ class TaskModel: self.taskError.read(iprot) else: iprot.skip(ftype) + elif fid == 10: + if ftype == TType.LIST: + self.jobs = [] + (_etype3, _size0) = iprot.readListBegin() + for _i4 in xrange(_size0): + _elem5 = apache.airavata.model.job.ttypes.JobModel() + _elem5.read(iprot) + self.jobs.append(_elem5) + iprot.readListEnd() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -221,6 +236,13 @@ class TaskModel: oprot.writeFieldBegin('taskError', TType.STRUCT, 9) self.taskError.write(oprot) oprot.writeFieldEnd() + if self.jobs is not None: + oprot.writeFieldBegin('jobs', TType.LIST, 10) + oprot.writeListBegin(TType.STRUCT, len(self.jobs)) + for iter6 in self.jobs: + iter6.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -251,6 +273,7 @@ class TaskModel: value = (value * 31) ^ hash(self.taskDetail) value = (value * 31) ^ hash(self.subTaskModel) value = (value * 31) ^ hash(self.taskError) + value = (value * 31) ^ hash(self.jobs) return value def __repr__(self): http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/thrift-interface-descriptions/airavata-api/airavata_api.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/airavata_api.thrift b/thrift-interface-descriptions/airavata-api/airavata_api.thrift index 82830e2..7bce41a 100644 --- a/thrift-interface-descriptions/airavata-api/airavata_api.thrift +++ b/thrift-interface-descriptions/airavata-api/airavata_api.thrift @@ -606,6 +606,50 @@ service Airavata { 4: airavata_errors.AiravataSystemException ase, 5: airavata_errors.AuthorizationException ae) + + /** + * Fetch the completed nested tree structue of previously created experiment metadata which includes processes -> + * tasks -> jobs information. + * + * @param airavataExperimentId + * The identifier for the requested experiment. This is returned during the create experiment step. + * + * @return experimentMetada + * 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. + * + */ + experiment_model.ExperimentModel getDetailedExperimentTree(1: required security_model.AuthzToken authzToken, + 2: required string airavataExperimentId) + throws (1: airavata_errors.InvalidRequestException ire, + 2: airavata_errors.ExperimentNotFoundException enf, + 3: airavata_errors.AiravataClientException ace, + 4: airavata_errors.AiravataSystemException ase, + 5: airavata_errors.AuthorizationException ae) + + /** * Configure a previously created experiment with required inputs, scheduling and other quality of service * parameters. This method only updates the experiment object within the registry. The experiment has to be launched http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/thrift-interface-descriptions/airavata-api/experiment_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/experiment_model.thrift b/thrift-interface-descriptions/airavata-api/experiment_model.thrift index eeb9b86..fa15459 100644 --- a/thrift-interface-descriptions/airavata-api/experiment_model.thrift +++ b/thrift-interface-descriptions/airavata-api/experiment_model.thrift @@ -22,6 +22,7 @@ include "scheduling_model.thrift" include "airavata_commons.thrift" include "status_models.thrift" + include "process_model.thrift" namespace java org.apache.airavata.model.experiment namespace php Airavata.Model.Experiment @@ -91,7 +92,8 @@ struct ExperimentModel { 14: optional list<application_io_models.InputDataObjectType> experimentInputs, 15: optional list<application_io_models.OutputDataObjectType> experimentOutputs, 16: optional status_models.ExperimentStatus experimentStatus, - 17: optional list<airavata_commons.ErrorModel> errors + 17: optional list<airavata_commons.ErrorModel> errors, + 18: optional list<process_model.ProcessModel> processes } struct ExperimentSummaryModel { http://git-wip-us.apache.org/repos/asf/airavata/blob/4f7af6a9/thrift-interface-descriptions/airavata-api/task_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/task_model.thrift b/thrift-interface-descriptions/airavata-api/task_model.thrift index 798c51d..4dd1d84 100644 --- a/thrift-interface-descriptions/airavata-api/task_model.thrift +++ b/thrift-interface-descriptions/airavata-api/task_model.thrift @@ -22,6 +22,7 @@ include "airavata_commons.thrift" include "status_models.thrift" include "compute_resource_model.thrift" include "application_io_models.thrift" +include "job_model.thrift" namespace java org.apache.airavata.model.task namespace php Airavata.Model.Task @@ -59,7 +60,8 @@ struct TaskModel { 6: required status_models.TaskStatus taskStatus, 7: optional string taskDetail, 8: optional binary subTaskModel, - 9: optional airavata_commons.ErrorModel taskError + 9: optional airavata_commons.ErrorModel taskError, + 10: optional list<job_model.JobModel> jobs } /**
