2882: Added button to cancel a running job.
authorPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 2 Jun 2014 18:47:33 +0000 (14:47 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 2 Jun 2014 18:47:33 +0000 (14:47 -0400)
apps/workbench/app/controllers/jobs_controller.rb
apps/workbench/app/models/job.rb
apps/workbench/app/views/jobs/_show_status.html.erb
apps/workbench/config/routes.rb

index f693fa6428fde5ee5899ab6a4758b4120bb1adb2..841d3a9fdc6827486a7f54948e6c63ee4b3b5b1a 100644 (file)
@@ -31,6 +31,11 @@ class JobsController < ApplicationController
     end
   end
 
+  def cancel
+    @object.cancel
+    redirect_to @object
+  end
+
   def show
     generate_provenance([@object])
   end
index 56428abb2c54e3b2ea0967d2a08da2bb2092b62e..8dd66ed6b9296ed00396b8924f50d152388841ed 100644 (file)
@@ -10,4 +10,8 @@ class Job < ArvadosBase
   def self.creatable?
     false
   end
+
+  def cancel
+    arvados_api_client.api "jobs/#{self.uuid}/", "cancel", {}
+  end
 end
index 660aa9565c8ea1b710d6364946a4c4f7c02f07a6..99f24142ce5b30bc401284412206daaeb11f7048 100644 (file)
@@ -1,27 +1,33 @@
 
 <div class="pull-right">
-Re-run job using version:
-<%= form_tag '/jobs', style: "display:inline; padding-left: 1em" do |f| %>
-<% [:script, :script_version, :repository, :output_is_persistent, :supplied_script_version, :nondeterministic].each do |d| %>
-  <%= hidden_field :job, d, :value => @object[d] %>
-<% end %>
-<% [:script_parameters, :runtime_constraints].each do |d| %>
-  <%= hidden_field :job, d, :value => JSON.dump(@object[d]) %>
-<% end %>
-<%= hidden_field :options, :no_reuse, :value => true %>
-<%= button_tag "Same (#{@object.script_version.slice 0,8}...)", {class: 'btn btn-primary', id: "run-pipeline-button"} %>
-<% end %>
+  <% if @object.running %>
+    <%= form_tag "/jobs/#{@object.uuid}/cancel", style: "display:inline; padding-left: 1em" do |f| %>
+    <%= button_tag "Cancel running job", {class: 'btn btn-danger', id: "cancel-job-button"} %>
+    <% end %>
+  <% else %>
+    Re-run job using version:
+    <%= form_tag '/jobs', style: "display:inline; padding-left: 1em" do |f| %>
+    <% [:script, :script_version, :repository, :output_is_persistent, :supplied_script_version, :nondeterministic].each do |d| %>
+      <%= hidden_field :job, d, :value => @object[d] %>
+    <% end %>
+    <% [:script_parameters, :runtime_constraints].each do |d| %>
+      <%= hidden_field :job, d, :value => JSON.dump(@object[d]) %>
+    <% end %>
+    <%= hidden_field :options, :no_reuse, :value => true %>
+    <%= button_tag "Same (#{@object.script_version.slice 0,8}...)", {class: 'btn btn-primary', id: "re-run-same-job-button"} %>
+  <% end %>
 
-<%= form_tag '/jobs', style: "display:inline" do |f| %>
-<% [:script, :repository, :output_is_persistent, :supplied_script_version, :nondeterministic].each do |d| %>
-  <%= hidden_field :job, d, :value => @object[d] %>
-<% end %>
-<%= hidden_field :job, :script_version, :value => @object[:supplied_script_version] %>
-<% [:script_parameters, :runtime_constraints].each do |d| %>
-  <%= hidden_field :job, d, :value => JSON.dump(@object[d]) %>
+  <%= form_tag '/jobs', style: "display:inline" do |f| %>
+  <% [:script, :repository, :output_is_persistent, :supplied_script_version, :nondeterministic].each do |d| %>
+    <%= hidden_field :job, d, :value => @object[d] %>
+  <% end %>
+  <%= hidden_field :job, :script_version, :value => @object[:supplied_script_version] %>
+  <% [:script_parameters, :runtime_constraints].each do |d| %>
+    <%= hidden_field :job, d, :value => JSON.dump(@object[d]) %>
+  <% end %>
+  <%= hidden_field :options, :no_reuse, :value => true %>
+  <%= button_tag "Latest (#{@object.repository}/#{@object.supplied_script_version})", {class: 'btn btn-primary', id: "re-run-latest-job-button"} %>
 <% end %>
-<%= hidden_field :options, :no_reuse, :value => true %>
-<%= button_tag "Latest (#{@object.repository}/#{@object.supplied_script_version})", {class: 'btn btn-primary', id: "run-pipeline-button"} %>
 <% end %>
 </div>
 
index b4da656bc3a42208764c9a7dfc01f1fd14f82f40..383d4421e2eb0e84e7cd1d14b94ea1e51e739e2a 100644 (file)
@@ -18,7 +18,9 @@ ArvadosWorkbench::Application.routes.draw do
   resources :virtual_machines
   resources :authorized_keys
   resources :job_tasks
-  resources :jobs
+  resources :jobs do
+    post 'cancel', :on => :member
+  end
   match '/logout' => 'sessions#destroy', via: [:get, :post]
   get '/logged_out' => 'sessions#index'
   resources :users do