10671: Changed default assigments to be before validation. Also make sure started_at...
[arvados.git] / services / api / app / models / pipeline_instance.rb
index 77a0736b000d669d298abc93ad95d12417e8a3d1..f84c4a310fd19904f4f5f85cdbea23a4c0b83770 100644 (file)
@@ -10,6 +10,7 @@ class PipelineInstance < ArvadosModel
   before_validation :bootstrap_components
   before_validation :update_state
   before_validation :verify_status
+  before_validation :update_timestamps_when_state_changes
   before_create :set_state_before_save
   before_save :set_state_before_save
 
@@ -136,4 +137,17 @@ class PipelineInstance < ArvadosModel
     end
   end
 
+  def update_timestamps_when_state_changes
+    return if not (state_changed? or new_record?)
+
+    case state
+    when RunningOnServer, RunningOnClient
+      self.started_at ||= db_current_time
+    when Failed, Complete
+      current_time = db_current_time
+      self.started_at ||= current_time
+      self.finished_at ||= current_time
+    end
+  end
+
 end