fix job dependencies -- grok arrays and hashes in script_parameters
authorTom Clegg <tom@clinicalfuture.com>
Tue, 16 Jul 2013 23:20:58 +0000 (19:20 -0400)
committerTom Clegg <tom@clinicalfuture.com>
Tue, 16 Jul 2013 23:20:58 +0000 (19:20 -0400)
services/api/app/models/job.rb

index 0fa80214f75089507774cf6af372d7256e356ca9..c299d9d73f66eef3372c0201040e45b217b1182a 100644 (file)
@@ -75,10 +75,17 @@ class Job < ArvadosModel
 
   def dependencies
     deps = {}
-    self.script_parameters.values.each do |v|
-      next unless v.is_a? String
-      v.match(/^(([0-9a-f]{32})\b(\+[^,]+)?,?)*$/) do |locator|
-        deps[locator] = true
+    queue = self.script_parameters.values
+    while not queue.empty?
+      queue = queue.flatten.compact.collect do |v|
+        if v.is_a? Hash
+          v.values
+        elsif v.is_a? String
+          v.match(/^(([0-9a-f]{32})\b(\+[^,]+)?,?)*$/) do |locator|
+            deps[locator.to_s] = true
+          end
+          nil
+        end
       end
     end
     deps.keys