2352: when using arv-run-pipeline-instance, set state to RunningOnClient.
authorradhika <radhika@curoverse.com>
Mon, 5 May 2014 21:12:27 +0000 (17:12 -0400)
committerradhika <radhika@curoverse.com>
Mon, 5 May 2014 21:12:27 +0000 (17:12 -0400)
sdk/cli/bin/arv-run-pipeline-instance
services/api/app/models/pipeline_instance.rb

index 2751c08ef1705aba2f8dfac9b34a26c90f50642f..60d5c38cf956b26958d2a8c24dcc2a13a8c1bf9e 100755 (executable)
@@ -413,18 +413,10 @@ class WhRunPipelineInstance
   end
 
   def setup_instance
-    if $options[:submit]
-      @instance ||= PipelineInstance.
-        create(:components => @components,
+    @instance ||= PipelineInstance.
+      create(:components => @components,
              :pipeline_template_uuid => @template[:uuid],
-             :active => true)
-    else
-      @instance ||= PipelineInstance.
-        create(:components => @components,
-             :pipeline_template_uuid => @template[:uuid],
-             :state => 'RunningOnClient',
-             :active => false)
-    end
+             :state => 'RunningOnClient')
     self
   end
 
index 73f56d1344f7f2d7981c2f37bb3c739aa66b6ae9..258ee2729a54b07bc1eabb9cdd74d0aaffa43baa 100644 (file)
@@ -98,7 +98,7 @@ class PipelineInstance < ArvadosModel
   end
 
   def self.queue
-    self.where('active = true')
+    self.where("active = true or state = 'RunningOnClient'")
   end
 
   protected
@@ -172,7 +172,9 @@ class PipelineInstance < ArvadosModel
       end
     elsif 'active'.in? changed_attributes
       if self.active
-        self.state = RunningOnServer
+        if self.state == New || self.state == Ready || self.state == Paused
+          self.state = RunningOnServer
+        end
       else
         if self.components_look_ready?
           self.state = Ready
@@ -180,25 +182,21 @@ class PipelineInstance < ArvadosModel
           self.state = New
         end
       end
-    elsif 'components'.in? changed_attributes
-      if !self.state || self.state == New || !self.active
-        if self.components_look_ready?
-          self.state = Ready
-        else
-          self.state = New
-        end
+    end
+
+    if 'components'.in? changed_attributes
+      if self.components_look_ready? && (!self.state || self.state == New)
+        self.state = Ready
       end
     end
   end
 
   def set_state_before_save
-    if !self.state || self.state == New
+    if !self.state || self.state == New || self.state == Ready || self.state == Paused
       if self.active
         self.state = RunningOnServer
-      elsif self.components_look_ready?
+      elsif self.components_look_ready? && (!self.state || self.state == New)
         self.state = Ready
-      else
-        self.state = New
       end
     end
   end