You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2019/06/27 22:50:23 UTC

[airavata-php-gateway] 02/02: AIRAVATA-3089 Use last status in array since it is the most recent one

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata-php-gateway.git

commit ea03e19640d44a6613f8e312ee6ee17e62af01d2
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Jun 27 18:47:49 2019 -0400

    AIRAVATA-3089 Use last status in array since it is the most recent one
---
 app/controllers/ExperimentController.php     |  2 +-
 app/libraries/ExperimentUtilities.php        | 10 +++++++---
 app/views/experiment/summary.blade.php       |  6 +++---
 app/views/partials/experiment-info.blade.php | 16 ++++++++--------
 4 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php
index f754213..c44aef6 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -176,7 +176,7 @@ class ExperimentController extends BaseController
 //            var_dump( $jobDetails); exit;
         foreach( $jobDetails as $index => $jobDetail){
             if(isset($jobDetail->jobStatuses) and !empty($jobDetail->jobStatuses)){
-                  $jobDetails[ $index]->jobStatuses[0]->jobStateName = JobState::$__names[$jobDetail->jobStatuses[0]->jobState];
+                  ExperimentUtilities::latestStatus($jobDetails[$index]->jobStatuses)->jobStateName = JobState::$__names[ExperimentUtilities::latestStatus($jobDetail->jobStatuses)->jobState];
             }
             else{
                 $jobDetails[ $index]->jobStatuses = [new stdClass()];
diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php
index 16612fd..b150de4 100755
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -1112,7 +1112,7 @@ class ExperimentUtilities
 
 
         if( is_array( $experiment->experimentStatus ) )
-            $experimentStatusString = $expVal["experimentStates"][$experiment->experimentStatus[0]->state];
+            $experimentStatusString = $expVal["experimentStates"][ExperimentUtilities::latestStatus($experiment->experimentStatus)->state];
         else {
             $experimentStatusString = $experiment->experimentStatus;
         }
@@ -1122,7 +1122,7 @@ class ExperimentUtilities
             $experimentStatus = $experiment->experimentStatus;
 
             if( is_array( $experiment->experimentStatus ) )
-                $expVal["experimentTimeOfStateChange"] = $experimentStatus[0]->timeOfStateChange / 1000; // divide by 1000 since timeOfStateChange is in ms
+                $expVal["experimentTimeOfStateChange"] = ExperimentUtilities::latestStatus($experimentStatus)->timeOfStateChange / 1000; // divide by 1000 since timeOfStateChange is in ms
             $expVal["experimentCreationTime"] = $experiment->creationTime / 1000; // divide by 1000 since creationTime is in ms
         }
 
@@ -1193,7 +1193,7 @@ class ExperimentUtilities
             }
         }*/
         if (isset($jobStatus) && count($jobStatus) > 0) {
-            $jobState = JobState::$__names[array_values($jobStatus)[0]->jobState];
+            $jobState = JobState::$__names[ExperimentUtilities::latestStatus(array_values($jobStatus))->jobState];
         } else {
             $jobState = null;
         }
@@ -1521,6 +1521,10 @@ class ExperimentUtilities
         ExperimentUtilities::share_experiment($expId, $users);
     }
 
+    public static function latestStatus($statusArray) {
+        return $statusArray ? $statusArray[count($statusArray) - 1] : null;
+    }
+
     /**
      * Set sharing privileges for a given experiment.
      * @param $expId
diff --git a/app/views/experiment/summary.blade.php b/app/views/experiment/summary.blade.php
index 647d26c..8214d3a 100755
--- a/app/views/experiment/summary.blade.php
+++ b/app/views/experiment/summary.blade.php
@@ -25,7 +25,7 @@
         var currentJobStatuses = {};
 
         @foreach( $expVal["jobDetails"] as $index => $jobDetail)
-        currentJobStatuses["{{$jobDetail->jobId}}"] = "{{ $jobDetail->jobStatuses[0]->jobStateName}}";
+        currentJobStatuses["{{$jobDetail->jobId}}"] = "{{ ExperimentUtilities::latestStatus($jobDetail->jobStatuses)->jobStateName}}";
         @endforeach
 
         var isStatusChanged = function(experimentTimeOfStateChange, jobStatuses) {
@@ -68,8 +68,8 @@
                         for (var jobIndex in jobDetails){
                             if (jobDetails.hasOwnProperty(jobIndex)) {
                                 var jobDetail = jobDetails[jobIndex];
-                                // Assuming only one job status per job
-                                jobStatuses[jobDetail["jobId"]] = jobDetail["jobStatuses"]["0"]["jobStateName"];
+                                // last status is the most recent one
+                                jobStatuses[jobDetail["jobId"]] = jobDetail["jobStatuses"][jobDetail["jobStatuses"].length - 1]["jobStateName"];
                             }
                         }
 
diff --git a/app/views/partials/experiment-info.blade.php b/app/views/partials/experiment-info.blade.php
index e174900..93768dd 100644
--- a/app/views/partials/experiment-info.blade.php
+++ b/app/views/partials/experiment-info.blade.php
@@ -105,7 +105,7 @@
                         <tr>
                             <td>{{$jobDetail->jobName}}</td>
                             <td>{{ $jobDetail->jobId}}</td>
-                            <td>{{$jobDetail->jobStatuses[0]->jobStateName }}</td>
+                            <td>{{ ExperimentUtilities::latestStatus($jobDetail->jobStatuses)->jobStateName }}</td>
                             <td class="time" unix-time="{{$jobDetail->creationTime}}"></td>
                         </tr>
                     </table>
@@ -184,7 +184,7 @@
         </tr>
         <tr>
             <td><strong>Outputs</strong></td>
-            <td>{{ ExperimentUtilities::list_output_files($experiment->experimentOutputs, $experiment->experimentStatus[0]->state, false) }}</td>
+            <td>{{ ExperimentUtilities::list_output_files($experiment->experimentOutputs, ExperimentUtilities::latestStatus($experiment->experimentStatus)->state, false) }}</td>
         </tr>
         <tr>
             <td><strong>Storage Directory</strong></td>
@@ -211,8 +211,8 @@
         </tr>
         {{--@endif--}}
         @foreach( $expVal["jobDetails"] as $index => $jobDetail)
-            @if($experiment->experimentStatus[0]->state == \Airavata\Model\Status\ExperimentState::FAILED
-                    || $jobDetail->jobStatuses[0]->jobStateName == "FAILED")
+            @if(ExperimentUtilities::latestStatus($experiment->experimentStatus)->state == \Airavata\Model\Status\ExperimentState::FAILED
+                    || ExperimentUtilities::latestStatus($jobDetail->jobStatuses)->jobStateName == "FAILED")
             <tr>
                 <th>Job Submission Response</th>
                 <td>{{$jobDetail->stdOut . $jobDetail->stdErr}}</td>
@@ -352,9 +352,9 @@
                                     <dl class="well dl-horizontal">
                                         <dt>Task Id : </dt> <dd>{{ $task->taskId }}</dd>
                                         <dt>Task Type : </dt> <dd>{{ $expVal["taskTypes"][$task->taskType] }}</dd>
-                                        <dt>Task Status : </dt> <dd>{{ $expVal["taskStates"][$task->taskStatuses[0]->state] }}</dd>
-                                        <dt>Task Status Time : </dt> <dd class="time" unix-time="{{{ $task->taskStatuses[0]->timeOfStateChange}}}"></dd>
-                                        <dt>Task Status Reason : </dt> <dd>{{{ $task->taskStatuses[0]->reason }}}</dd>
+                                        <dt>Task Status : </dt> <dd>{{ $expVal["taskStates"][ExperimentUtilities::latestStatus($task->taskStatuses)->state] }}</dd>
+                                        <dt>Task Status Time : </dt> <dd class="time" unix-time="{{{ ExperimentUtilities::latestStatus($task->taskStatuses)->timeOfStateChange}}}"></dd>
+                                        <dt>Task Status Reason : </dt> <dd>{{{ ExperimentUtilities::latestStatus($task->taskStatuses)->reason }}}</dd>
                                     @if( is_object( $task->taskErrors))
                                         <dt>Task Error Id : </dt><dd>{{ $task->taskErrors[0]->errorId }}</dd>
                                         <dt>Task Error Msg : </dt><dd>{{ $task->taskErrors[0]->userFriendlyMessage }} <a tabindex="0" class="popover-taskinfo btn btn-sm btn-default" role="button" data-toggle="popover" data-html="true" title="Detailed Task Information" data-content="{{ str_replace( ',', '<br/><br/>', $task->taskError->actualErrorMessage ) }}">More Info</a></dd>
@@ -376,7 +376,7 @@
                         <li>
                             <span class="alert"><i class="icon-time"></i>
                                 <p>Outputs<hr/>
-                                {{ ExperimentUtilities::list_process_output_files( $process->processOutputs, $process->processStatuses[0]->state) }}</p>
+                                {{ ExperimentUtilities::list_process_output_files( $process->processOutputs, ExperimentUtilities::latestStatus($process->processStatuses)->state) }}</p>
                             </span>
                         </li>
                     </ul>