Merge branch '8784-dir-listings'
[arvados.git] / services / api / db / migrate / 20140129184311_normalize_collection_uuids_in_script_parameters.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 class NormalizeCollectionUuidsInScriptParameters < ActiveRecord::Migration
6   include CurrentApiClient
7   def up
8     act_as_system_user do
9       PipelineInstance.all.each do |pi|
10         pi.save! if fix_values_recursively(pi.components)
11       end
12       Job.all.each do |j|
13         changed = false
14         j.script_parameters.each do |p, v|
15           if v.is_a? String and v.match /\+K/
16             v.gsub! /\+K\@\w+/, ''
17             changed = true
18           end
19         end
20         j.save! if changed
21       end
22     end
23   end
24
25   def down
26   end
27
28   protected
29   def fix_values_recursively fixme
30     changed = false
31     if fixme.is_a? String
32       if fixme.match /\+K/
33         fixme.gsub! /\+K\@\w+/, ''
34         return true
35       else
36         return false
37       end
38     elsif fixme.is_a? Array
39       fixme.each do |v|
40         changed = fix_values_recursively(v) || changed
41       end
42     elsif fixme.is_a? Hash
43       fixme.each do |p, v|
44         changed = fix_values_recursively(v) || changed
45       end
46     end
47     changed
48   end
49 end