<?php include "airavata.php"; $projId = createProject("admin", "test"); echo var_dump($projId); $expId = createExperiment("admin", "exp5", $projId, "test", "{\"input1\":\"13\",\"input2\":\"3\",\"input3\":\"true\"}"); // $expId = "exp5_e7b826cf-a429-4b3e-b519-28d859fe4b64"; echo var_dump($expId); $res = launchExperiment($expId); echo var_dump($res); while (($status = get_experiment_status($expId)) != "COMPLETED") { echo "{$status}\n"; sleep(1); } $results = getOutput($expId); echo var_dump($results);
function getOutput($expId) { $transport = new TSocket($GLOBALS['AIRAVATA_SERVER'], $GLOBALS['AIRAVATA_PORT']); $transport->setSendTimeout($GLOBALS['AIRAVATA_TIMEOUT']); $protocol = new TBinaryProtocol($transport); $errors = array('CANCELED' => "Experiment Cancelled", 'SUSPENDED' => "Experiment Suspended", 'FAILED' => "Experiment Failed"); try { $airavataclient = new AiravataClient($protocol); $transport->open(); while (($status = get_experiment_status($airavataclient, $expId)) != "COMPLETED") { if (isset($errors[$status])) { $transport->close(); return "{\"error\":\"" . $errors[$status] . "\"}"; exit; } sleep(1); } $outputs = $airavataclient->getExperimentOutputs($expId); $transport->close(); $outputData = array(); if (!empty($outputs[0]->value)) { $out = json_decode($outputs[0]->value); $out->Computational_Host = $GLOBALS["RESOURCE_HOST"]; $outputData["output"] = json_encode($out); } else { $outputData["error"] = $outputs[1]->value; } } catch (InvalidRequestException $ire) { $outputData["error"] = 'InvalidRequestException: ' . $ire->getMessage(); } catch (AiravataClientException $ace) { $outputData["error"] = 'Airavata System Exception: ' . $ace->getMessage(); } catch (AiravataSystemException $ase) { $outputData["error"] = 'Airavata System Exception: ' . $ase->getMessage(); } catch (TException $tx) { $outputData["error"] = 'Exception: ' . $tx->getMessage(); } catch (ExperimentNotFoundException $enf) { $outputData["error"] = 'ExperimentNotFoundException: ' . $enf->getMessage(); } catch (TTransportException $tte) { $outputData["error"] = 'TTransportException: ' . $tte->getMessage(); } catch (\Exception $e) { $outputData["error"] = 'Exception: ' . $e->getMessage(); } return json_encode($outputData); }