[ARVADOS] updated: 8d37eefb14b5bea1044063affa6e299d8ca92c37

Git user git at public.curoverse.com
Fri Aug 19 17:07:50 EDT 2016


Summary of changes:
 .../app/controllers/work_units_controller.rb       | 78 ++++++++++++++++++++++
 apps/workbench/app/models/container_work_unit.rb   |  7 ++
 .../app/models/pipeline_instance_work_unit.rb      |  4 ++
 apps/workbench/app/models/work_unit.rb             |  4 ++
 .../app/views/projects/_show_dashboard.html.erb    | 18 +----
 apps/workbench/config/routes.rb                    |  1 +
 6 files changed, 97 insertions(+), 15 deletions(-)

       via  8d37eefb14b5bea1044063affa6e299d8ca92c37 (commit)
      from  cc6c230a91c01c03c9d7455bead45715037b4b95 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 8d37eefb14b5bea1044063affa6e299d8ca92c37
Author: radhika <radhika at curoverse.com>
Date:   Fri Aug 19 17:06:41 2016 -0400

    9767: create a pipeline instance or container request depending on the template selected.

diff --git a/apps/workbench/app/controllers/work_units_controller.rb b/apps/workbench/app/controllers/work_units_controller.rb
index ff69d89..6cda2e8 100644
--- a/apps/workbench/app/controllers/work_units_controller.rb
+++ b/apps/workbench/app/controllers/work_units_controller.rb
@@ -34,4 +34,82 @@ class WorkUnitsController < ApplicationController
   def next_page_href with_params={}
     @next_page_href
   end
+
+  def create
+    template_uuid = params['work_unit']['template_uuid']
+
+    attrs = {}
+    res = resource_class_for_uuid(template_uuid)
+    if res == PipelineTemplate
+      model_class = PipelineInstance
+      attrs['pipeline_template_uuid'] = template_uuid
+    elsif res == Workflow
+      # workflow json
+      workflow = Workflow.find? template_uuid
+      if workflow.workflow
+        begin
+          wf_json = JSON.dump(YAML::load(workflow.workflow))
+        rescue => e
+          logger.error "Error converting workflow yaml to json: #{e.message}"
+          raise ArgumentError, "Error converting workflow yaml to json: #{e.message}"
+        end
+      end
+
+      model_class = ContainerRequest
+
+      attrs['properties'] = {'template_uuid' => template_uuid}
+      attrs['priority'] = 1
+      attrs['state'] = "Uncommitted"
+
+      # required
+      attrs['command'] = ["arvados-cwl-runner", "--local", "--api=containers", "/var/lib/cwl/workflow.json", "/var/lib/cwl/cwl.input.json"]
+      attrs['container_image'] = "arvados/jobs"
+      attrs['cwd'] = "/var/spool/cwl"
+      attrs['output_path'] = "/var/spool/cwl"
+
+      # mounts
+      mounts = {
+        "/var/lib/cwl/cwl.input.json" => {
+          "kind" => "json",
+          "content" => {}
+        },
+        "stdout" => {
+          "kind" => "file",
+          "path" => "/var/spool/cwl/cwl.output.json"
+        },
+        "/var/spool/cwl" => {
+          "kind" => "collection",
+          "writable" => true
+        }
+      }
+      if wf_json
+        mounts["/var/lib/cwl/workflow.json"] = {
+          "kind" => "json",
+          "content" => {
+            "class" => wf_json
+          }
+        }
+      end
+      attrs['mounts'] = mounts
+
+      # runtime constriants
+      runtime_constraints = {
+        "vcpus" => 1,
+        "ram" => 256000000,
+        "API" => true
+      }
+      attrs['runtime_constraints'] = runtime_constraints
+    else
+      raise ArgumentError, "Unsupported template uuid: #{template_uuid}"
+    end
+
+    attrs['owner_uuid'] = params['work_unit']['owner_uuid']
+    @object ||= model_class.new attrs
+
+    if @object.save
+      redirect_to @object
+    else
+      render_error status: 422
+    end
+  end
 end
diff --git a/apps/workbench/app/models/container_work_unit.rb b/apps/workbench/app/models/container_work_unit.rb
index 4f4c915..1ed182c 100644
--- a/apps/workbench/app/models/container_work_unit.rb
+++ b/apps/workbench/app/models/container_work_unit.rb
@@ -142,6 +142,13 @@ class ContainerWorkUnit < ProxyWorkUnit
     end
   end
 
+  def template_uuid
+    properties = get(:properties)
+    if properties
+      properties[:workflow_uuid]
+    end
+  end
+
   # End combined propeties
 
   protected
diff --git a/apps/workbench/app/models/pipeline_instance_work_unit.rb b/apps/workbench/app/models/pipeline_instance_work_unit.rb
index 889fa1a..dd5685a 100644
--- a/apps/workbench/app/models/pipeline_instance_work_unit.rb
+++ b/apps/workbench/app/models/pipeline_instance_work_unit.rb
@@ -51,4 +51,8 @@ class PipelineInstanceWorkUnit < ProxyWorkUnit
   def title
     "pipeline"
   end
+
+  def template_uuid
+    get(:pipeline_template_uuid)
+  end
 end
diff --git a/apps/workbench/app/models/work_unit.rb b/apps/workbench/app/models/work_unit.rb
index 0d194b8..7373bc2 100644
--- a/apps/workbench/app/models/work_unit.rb
+++ b/apps/workbench/app/models/work_unit.rb
@@ -195,4 +195,8 @@ class WorkUnit
   def render_log
     # return partial and locals to be rendered
   end
+
+  def template_uuid
+    # return the uuid of this work unit's template, if one exists
+  end
 end
diff --git a/apps/workbench/app/views/projects/_show_dashboard.html.erb b/apps/workbench/app/views/projects/_show_dashboard.html.erb
index 0b0b7e8..ef947ed 100644
--- a/apps/workbench/app/views/projects/_show_dashboard.html.erb
+++ b/apps/workbench/app/views/projects/_show_dashboard.html.erb
@@ -8,23 +8,11 @@
               <span>
                 <%= link_to(
                 choose_work_unit_templates_path(
-                  title: 'Choose a process to run:',
+                  title: 'Choose a pipeline or process to run:',
                   action_name: 'Next: choose inputs <i class="fa fa-fw fa-arrow-circle-right"></i>',
-                  action_href: pipeline_instances_path,
+                  action_href: work_units_path,
                   action_method: 'post',
-                  action_data: {'selection_param' => 'pipeline_instance[pipeline_template_uuid]', 'pipeline_instance[owner_uuid]' => current_user.uuid, 'success' => 'redirect-to-created-object'}.to_json),
-                { class: "btn btn-primary btn-xs", remote: true }) do %>
-                  <i class="fa fa-fw fa-gear"></i> Run a process...
-                <% end %>
-              </span>
-              <span>
-                <%= link_to(
-                choose_pipeline_templates_path(
-                  title: 'Choose a pipeline to run:',
-                  action_name: 'Next: choose inputs <i class="fa fa-fw fa-arrow-circle-right"></i>',
-                  action_href: pipeline_instances_path,
-                  action_method: 'post',
-                  action_data: {'selection_param' => 'pipeline_instance[pipeline_template_uuid]', 'pipeline_instance[owner_uuid]' => current_user.uuid, 'success' => 'redirect-to-created-object'}.to_json),
+                  action_data: {'selection_param' => 'work_unit[template_uuid]', 'work_unit[owner_uuid]' => current_user.uuid, 'success' => 'redirect-to-created-object'}.to_json),
                 { class: "btn btn-primary btn-xs", remote: true }) do %>
                   <i class="fa fa-fw fa-gear"></i> Run a pipeline...
                 <% end %>
diff --git a/apps/workbench/config/routes.rb b/apps/workbench/config/routes.rb
index bc45a4b..7f78548 100644
--- a/apps/workbench/config/routes.rb
+++ b/apps/workbench/config/routes.rb
@@ -15,6 +15,7 @@ ArvadosWorkbench::Application.routes.draw do
   get "star" => 'actions#star', :as => :star
   get "all_processes" => 'work_units#index', :as => :all_processes
   get "choose_work_unit_templates" => 'work_unit_templates#choose', :as => :choose_work_unit_templates
+  resources :work_units
   resources :nodes
   resources :humans
   resources :traits

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list