scout-gear 10.7.4 → 10.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -4
  3. data/.vimproject +9 -14
  4. data/Rakefile +1 -4
  5. data/VERSION +1 -1
  6. data/lib/scout/association/index.rb +3 -3
  7. data/lib/scout/entity/identifiers.rb +5 -2
  8. data/lib/scout/entity/property.rb +1 -1
  9. data/lib/scout/knowledge_base/description.rb +108 -0
  10. data/lib/scout/knowledge_base/entity.rb +6 -1
  11. data/lib/scout/knowledge_base/registry.rb +43 -15
  12. data/lib/scout/knowledge_base.rb +3 -2
  13. data/lib/scout/tsv/change_id/translate.rb +9 -2
  14. data/lib/scout/tsv/open.rb +10 -0
  15. data/lib/scout/tsv/parser.rb +14 -3
  16. data/lib/scout/workflow/deployment/orchestrator.rb +9 -1
  17. data/lib/scout/workflow/deployment/queue.rb +26 -0
  18. data/lib/scout/workflow/entity.rb +99 -0
  19. data/lib/scout/workflow/export.rb +72 -0
  20. data/lib/scout/workflow/persist.rb +6 -0
  21. data/lib/scout/workflow/step/file.rb +3 -3
  22. data/lib/scout/workflow/step/info.rb +6 -0
  23. data/lib/scout/workflow/step/inputs.rb +11 -1
  24. data/lib/scout/workflow/step/provenance.rb +1 -2
  25. data/lib/scout/workflow/step/status.rb +1 -0
  26. data/lib/scout/workflow/step.rb +5 -3
  27. data/lib/scout/workflow/task/inputs.rb +2 -1
  28. data/lib/scout/workflow/task.rb +2 -1
  29. data/lib/scout/workflow.rb +11 -3
  30. data/lib/scout-gear.rb +5 -1
  31. data/scout-gear.gemspec +14 -18
  32. data/scout_commands/kb/config +3 -0
  33. data/scout_commands/kb/list +1 -0
  34. data/scout_commands/kb/query +2 -1
  35. data/scout_commands/kb/register +3 -1
  36. data/scout_commands/kb/show +4 -2
  37. data/scout_commands/workflow/cmd +116 -0
  38. data/scout_commands/workflow/process +82 -0
  39. data/scout_commands/workflow/task +15 -3
  40. data/test/data/person/README.md +17 -0
  41. data/test/scout/knowledge_base/test_description.rb +59 -0
  42. data/test/scout/workflow/task/test_dependencies.rb +7 -7
  43. data/test/scout/workflow/test_definition.rb +2 -2
  44. data/test/scout/workflow/test_entity.rb +58 -0
  45. data/test/scout/workflow/test_step.rb +1 -1
  46. metadata +14 -57
  47. data/lib/scout/offsite/exceptions.rb +0 -9
  48. data/lib/scout/offsite/ssh.rb +0 -175
  49. data/lib/scout/offsite/step.rb +0 -100
  50. data/lib/scout/offsite/sync.rb +0 -55
  51. data/lib/scout/offsite.rb +0 -3
  52. data/scout_commands/offsite +0 -30
  53. data/test/scout/offsite/test_ssh.rb +0 -15
  54. data/test/scout/offsite/test_step.rb +0 -32
  55. data/test/scout/offsite/test_sync.rb +0 -36
  56. data/test/scout/offsite/test_task.rb +0 -0
  57. data/test/scout/test_offsite.rb +0 -0
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'scout'
4
+
5
+ $0 = "scout #{$previous_commands.any? ? $previous_commands*" " + " " : "" }#{ File.basename(__FILE__) }" if $previous_commands
6
+
7
+ options = SOPT.setup <<EOF
8
+
9
+ Run a workflow command
10
+
11
+ $ #{$0} <workflow> <command> [<subcommands>] [<options>] [<arg> ...]
12
+
13
+ -h--help Print this help
14
+ EOF
15
+ if options[:help]
16
+ if defined? scout_usage
17
+ scout_usage
18
+ else
19
+ puts SOPT.doc
20
+ end
21
+ exit 0
22
+ end
23
+
24
+ workflow = ARGV.shift
25
+
26
+ if workflow == '-h'
27
+ if defined? scout_usage
28
+ scout_usage
29
+ else
30
+ puts SOPT.doc
31
+ end
32
+ exit 0
33
+ end
34
+
35
+ raise ParameterException, "No workflow specified" if workflow.nil?
36
+
37
+ require 'scout/workflow'
38
+
39
+ wf = Workflow.require_workflow workflow
40
+ dir = $command_dir = wf.libdir.share.scout_commands.find
41
+
42
+ def prev_dir(prev)
43
+ scout_command_dir = $command_dir
44
+
45
+ prev.each do |previous_command|
46
+ scout_command_dir = scout_command_dir[previous_command]
47
+ end
48
+
49
+ scout_command_dir
50
+ end
51
+
52
+ def commands(prev)
53
+ scout_command_dir = prev_dir(prev)
54
+
55
+ command_file_dirs = scout_command_dir.find_all
56
+ command_files = command_file_dirs.collect{|d| d.glob('*') }.flatten
57
+ command_files.collect{|p| File.basename(p) }.uniq.reject{|p| p =~ /\.desc$/}.sort
58
+ end
59
+
60
+
61
+ prev = []
62
+
63
+ $previous_commands << ' cmd'
64
+ $previous_commands << ' ' << workflow
65
+
66
+ begin
67
+ while ARGV.any?
68
+ command = ARGV.shift
69
+ case
70
+ when File.directory?(dir[command].find)
71
+ prev << command
72
+ $previous_commands << command
73
+ dir = dir[command]
74
+ when File.directory?(dir[command].find)
75
+ prev << command
76
+ dir = dir[command]
77
+ when dir[command].exists?
78
+ load dir[command].find
79
+ exit 0
80
+ else
81
+ if command == 'bootstrap'
82
+ if wf.libdir["test_workflow.rb"].exists?
83
+ Log.info "No bootstrap for #{ workflow }, running test_workflow.rb instead"
84
+ CMD.cmd_log('ruby', wf.libdir["test_workflow.rb"].find)
85
+ else
86
+ Log.info "No bootstrap for #{ workflow }, running examples instead"
87
+ CMD.cmd_log("scout workflow example #{ workflow }")
88
+ exit 0
89
+ end
90
+ end
91
+
92
+ raise ParameterException, "Error: Command not understood: #{command}"
93
+ end
94
+ end
95
+ end
96
+
97
+ puts SOPT.doc
98
+ puts
99
+ puts Log.color :magenta, "## COMMANDS"
100
+ puts
101
+ puts Log.color :magenta, "Command:"
102
+ puts
103
+ puts " scout #{$previous_commands * " "} "
104
+ puts
105
+ puts Log.color :magenta, "Subcommands:"
106
+ puts
107
+
108
+ commands(prev).each do |command|
109
+ directory = File.directory? dir[command].find
110
+ if directory
111
+ puts " " << Log.color(:blue, command)
112
+ else
113
+ puts " " << command
114
+ end
115
+ end
116
+
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'scout'
4
+ require 'scout/workflow/deployment/queue'
5
+ require 'scout/workflow/deployment/orchestrator'
6
+
7
+ $0 = "scout #{$previous_commands.any? ? $previous_commands*" " + " " : "" }#{ File.basename(__FILE__) }" if $previous_commands
8
+
9
+ options = SOPT.setup <<EOF
10
+
11
+ Process the queue
12
+
13
+ $ #{$0} [<options>] ([<workflow>] [<task>] [<name>] | <filename>)
14
+
15
+ -h--help Print this help
16
+ -l--list List queue jobs
17
+ --continuous Process continuously
18
+ --produce_timer* Produce timer for sleeping
19
+ --produce_cpus* Cpus to use concurrently producing jobs
20
+ EOF
21
+ if options[:help]
22
+ if defined? scout_usage
23
+ scout_usage
24
+ else
25
+ puts SOPT.doc
26
+ end
27
+ exit 0
28
+ end
29
+ list, continuous = IndiferentHash.process_options options, :list, :continuous
30
+
31
+ queue_dir = Scout.var.queue
32
+
33
+ class TrayAgain < Exception; end
34
+
35
+ begin
36
+ if ARGV.empty?
37
+ files = queue_dir.glob("*/*/*")
38
+ if list
39
+ puts files * "\n"
40
+ exit
41
+ end
42
+ else
43
+ workflow, task, name = ARGV
44
+
45
+ # First deal with fixed files
46
+ if task.nil?
47
+ if Open.exists?(workflow)
48
+ Workflow.unqueue files.first
49
+ exit
50
+
51
+ else
52
+ files = queue_dir.glob("#{workflow}/*/*")
53
+ end
54
+ elsif name.nil?
55
+ files = queue_dir.glob("#{workflow}/#{task}/*")
56
+ else
57
+ files = queue_dir.glob("#{workflow}/#{task}/#{name}*")
58
+ end
59
+ end
60
+
61
+ jobs = files.collect{|file| Workflow.queue_job(file) }
62
+ begin
63
+ options.keys.each do |key|
64
+ options[key.to_sym] = options.delete(key)
65
+ end
66
+ Workflow.produce(jobs, **options)
67
+ rescue Workflow::Orchestrator::NoWork
68
+ end
69
+
70
+ files.each do |f| Open.rm_rf f end
71
+
72
+ Workflow.job_cache.clear
73
+
74
+ if continuous
75
+ Log.debug "Continuous processing"
76
+ sleep 1
77
+ raise Workflow::Orchestrator::NoWork
78
+ end
79
+ rescue Workflow::Orchestrator::NoWork
80
+ retry
81
+ end
82
+
@@ -20,8 +20,9 @@ $ #{$0} [<options>] <workflow> <task>
20
20
  --update Update jobs with newer dependencies
21
21
  --deploy* Deploy mode: serial, local, or SLURM (default 'serial')
22
22
  --fork Fork and return path
23
+ --load_inputs* Directory or file with inputs files to load
24
+ --save_inputs* Directory or tar.gz file path to store inputs
23
25
  -jn--jobname* Name to use as job identifier
24
- -li--load_inputs* Directory with inputs files to load
25
26
  -pf--printpath Print the file path
26
27
  -prov--provenance Print the step provenance
27
28
  -cl--clean Clean the last step
@@ -40,8 +41,8 @@ task = workflow.tasks[task_name.to_sym] if task_name
40
41
 
41
42
  options[:help] = true if task.nil?
42
43
 
43
- help, provenance, clean, recursive_clean, clean_task, load_inputs, jobname, printpath, deploy, override_deps, do_fork = IndiferentHash.process_options options,
44
- :help, :provenance, :clean, :recursive_clean, :clean_task, :load_inputs, :jobname, :printpath, :deploy, :override_deps, :fork,
44
+ help, provenance, clean, recursive_clean, clean_task, load_inputs, save_inputs, jobname, printpath, deploy, override_deps, do_fork = IndiferentHash.process_options options,
45
+ :help, :provenance, :clean, :recursive_clean, :clean_task, :load_inputs, :save_inputs, :jobname, :printpath, :deploy, :override_deps, :fork,
45
46
  :deploy => 'serial'
46
47
 
47
48
  if help
@@ -93,12 +94,23 @@ end
93
94
 
94
95
  if provenance
95
96
  puts Step.prov_report(job)
97
+
96
98
  elsif do_fork
97
99
  job.fork
98
100
  puts job.path
99
101
  exit 0
102
+ elsif save_inputs
103
+ puts job.save_inputs(save_inputs)
104
+ exit 0
100
105
  else
106
+
101
107
  case deploy
108
+ when "queue"
109
+ if ! job.done?
110
+ save_inputs = Scout.var.queue[workflow.to_s][task_name][job.clean_name].find
111
+ puts job.save_inputs(save_inputs)
112
+ exit
113
+ end
102
114
  when "serial"
103
115
  job.run(true)
104
116
  when "local"
@@ -0,0 +1,17 @@
1
+ Databases describing people and their relationships.
2
+
3
+ # Brothers
4
+
5
+ Sibling relationships. The first of the pair is the Older
6
+
7
+ # Marriages
8
+
9
+ Marriages between people.
10
+
11
+ Date: Date when the marriage occurred
12
+
13
+ # Parents
14
+
15
+ List parents.
16
+
17
+ Type of parent: father or mother
@@ -0,0 +1,59 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ require 'scout/knowledge_base'
5
+ class TestKnowledgebaseDesc < Test::Unit::TestCase
6
+ def test_brothers_registry
7
+ TmpFile.with_dir do |dir|
8
+ brothers = datafile_test(:person).brothers
9
+ kb = KnowledgeBase.new dir
10
+ kb.register :brothers, brothers, description: "Sibling relationships."
11
+ assert_equal "Sibling relationships.", kb.description(:brothers)
12
+ end
13
+ end
14
+
15
+ def test_brothers_README
16
+ TmpFile.with_dir do |dir|
17
+ brothers = datafile_test(:person).brothers
18
+ kb = KnowledgeBase.new dir
19
+ kb.register :brothers, brothers
20
+ kb.dir['brothers.md'].write "Sibling relationships."
21
+ assert_equal "Sibling relationships.", kb.description(:brothers)
22
+ end
23
+ end
24
+
25
+ def test_broters_kb_README
26
+ TmpFile.with_dir do |dir|
27
+ brothers = datafile_test(:person).brothers
28
+ kb = KnowledgeBase.new dir
29
+ kb.register :brothers, brothers
30
+ kb.dir['README.md'].write <<-EOF
31
+ Databases describing people and their relationships.
32
+
33
+ # Brothers
34
+
35
+ Sibling relationships.
36
+ EOF
37
+ assert_equal "Sibling relationships.", kb.description(:brothers)
38
+ end
39
+ end
40
+
41
+ def test_brothers_kb_source_README
42
+ TmpFile.with_dir do |dir|
43
+ brothers = datafile_test(:person).brothers
44
+ kb = KnowledgeBase.new dir
45
+ kb.register :brothers, brothers
46
+ assert_include kb.description(:brothers), "Sibling relationships."
47
+ end
48
+ end
49
+
50
+ def test_full_description
51
+ TmpFile.with_dir do |dir|
52
+ brothers = datafile_test(:person).brothers
53
+ kb = KnowledgeBase.new dir
54
+ kb.register :brothers, brothers
55
+ assert_include kb.markdown(:brothers), "Older"
56
+ end
57
+ end
58
+ end
59
+
@@ -120,7 +120,7 @@ class TestTaskDependencies < Test::Unit::TestCase
120
120
  job = wf.job(:my_sum, :input1 => 2, :input2 => 3)
121
121
  assert_equal 5, job.run
122
122
 
123
- TmpFile.with_file(4) do |file|
123
+ TmpFile.with_file("4") do |file|
124
124
  job = wf.job(:my_sum, :input1 => 2, :input2 => 3, "TaskInputs#step2"=> file)
125
125
  assert_equal 6, job.run
126
126
  assert_not_equal Task::DEFAULT_NAME, job.name
@@ -238,7 +238,7 @@ class TestTaskDependencies < Test::Unit::TestCase
238
238
  input :input1, :string
239
239
  task :step1 => :string do |i| i end
240
240
 
241
- dep :step1, :input1 => 1 do |id,options|
241
+ dep :step1, :input1 => "1" do |id,options|
242
242
  {:inputs => options}
243
243
  end
244
244
  task :step2 => :string do |i| step(:step1).load end
@@ -271,7 +271,7 @@ class TestTaskDependencies < Test::Unit::TestCase
271
271
  input :input1, :string
272
272
  task :step1 => :string do |i| i end
273
273
 
274
- dep :step1, :input1 => 1 do |id,options|
274
+ dep :step1, :input1 => "1" do |id,options|
275
275
  [{:inputs => options}]
276
276
  end
277
277
  input :input2, :string
@@ -289,7 +289,7 @@ class TestTaskDependencies < Test::Unit::TestCase
289
289
  input :input1, :string
290
290
  task :step1 => :string do |i| i end
291
291
 
292
- dep :step1, :input1 => 1
292
+ dep :step1, :input1 => "1"
293
293
  input :input2, :string
294
294
  task :step2 => :string do |i| step(:step1).load end
295
295
  end
@@ -304,9 +304,9 @@ class TestTaskDependencies < Test::Unit::TestCase
304
304
  wf = Workflow.annonymous_workflow "TaskInputs" do
305
305
  input :input1, :integer, "", 1
306
306
  input :input2, :integer, "", 0
307
- task :step1 => :string do |i1,i2| i1 + i2 end
307
+ task :step1 => :string do |i1,i2| (i1 + i2).to_s end
308
308
 
309
- dep :step1, :input2 => 1
309
+ dep :step1, :input2 => "1"
310
310
  task :step2 => :string do |i| step(:step1).load end
311
311
 
312
312
  dep :step2
@@ -334,7 +334,7 @@ class TestTaskDependencies < Test::Unit::TestCase
334
334
  if i1 < 0
335
335
  raise ScoutException
336
336
  else
337
- i1
337
+ i1.to_s
338
338
  end
339
339
  end
340
340
 
@@ -64,7 +64,7 @@ class TestWorkflowDefinition < Test::Unit::TestCase
64
64
  refute Open.exist?(dep_path)
65
65
  Scout::Config::CACHE.replace old_cache
66
66
  assert_include job.archived_info, dep_path
67
- assert_equal :done, job.archived_info[dep_path][:status]
67
+ assert_equal :done, job.archived_info[dep_path][:status].to_sym
68
68
  end
69
69
 
70
70
  def test_task_alias_remove_dep_partial
@@ -95,7 +95,7 @@ class TestWorkflowDefinition < Test::Unit::TestCase
95
95
  assert call_name.done?
96
96
  Scout::Config::CACHE.replace old_cache
97
97
  assert_include job.archived_info, call_name.path
98
- assert_equal :done, job.archived_info[call_name.path][:status]
98
+ assert_equal :done, job.archived_info[call_name.path][:status].to_sym
99
99
  end
100
100
  end
101
101
 
@@ -0,0 +1,58 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestWorkflowEntity < Test::Unit::TestCase
5
+ def get_EWF
6
+ @m ||= Module.new do
7
+ extend EntityWorkflow
8
+
9
+ self.name = 'TestEWF'
10
+
11
+ property :introduction do
12
+ "Mi name is #{self}"
13
+ end
14
+
15
+ entity_task hi: :string do
16
+ "Hi. #{entity.introduction}"
17
+ end
18
+
19
+ list_task group_hi: :string do
20
+ "Here is the group: " + entity_list.hi * "; "
21
+ end
22
+
23
+ list_task bye: :array do
24
+ entity_list.collect do |e|
25
+ "Bye from #{e}"
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ def test_property_job
32
+ ewf = get_EWF
33
+
34
+ e = ewf.setup("Miki")
35
+
36
+ assert_equal "Mi name is Miki", e.introduction
37
+ assert_equal "Hi. Mi name is Miki", e.hi
38
+ end
39
+
40
+ def test_list
41
+ ewf = get_EWF
42
+
43
+ l = ewf.setup(["Miki", "Clei"])
44
+
45
+ assert_equal 2, l.hi.length
46
+
47
+ assert_include l.group_hi, "group: "
48
+ end
49
+
50
+ def test_multiple
51
+ ewf = get_EWF
52
+
53
+ l = ewf.setup(["Miki", "Clei"])
54
+
55
+ assert_equal 2, l.bye.length
56
+ end
57
+ end
58
+
@@ -387,7 +387,7 @@ class TestWorkflowStep < Test::Unit::TestCase
387
387
  step1.fork(false, sem)
388
388
  step2.fork(false, sem)
389
389
  sleep 1
390
- assert((step1.status == :queue) || (step2.status == :queue))
390
+ assert((step1.status.to_sym == :queue) || (step2.status.to_sym == :queue))
391
391
  step1.join
392
392
  step2.join
393
393
  assert_equal "done2", step2.run
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scout-gear
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.7.4
4
+ version: 10.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-10 00:00:00.000000000 Z
10
+ date: 2025-04-08 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: scout-essentials
@@ -65,34 +65,6 @@ dependencies:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
- - !ruby/object:Gem::Dependency
69
- name: rdoc
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '3.12'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '3.12'
82
- - !ruby/object:Gem::Dependency
83
- name: bundler
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1.0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '1.0'
96
68
  - !ruby/object:Gem::Dependency
97
69
  name: juwelier
98
70
  requirement: !ruby/object:Gem::Requirement
@@ -107,22 +79,8 @@ dependencies:
107
79
  - - "~>"
108
80
  - !ruby/object:Gem::Version
109
81
  version: 2.1.0
110
- - !ruby/object:Gem::Dependency
111
- name: simplecov
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- description: Temporary files, logs, path, resources, persistence, workflows, TSV,
125
- etc.
82
+ description: 'Scout gear: workflow, TSVs, persistence, entities, associations, and
83
+ knowledge_bases.'
126
84
  email: mikisvaz@gmail.com
127
85
  executables:
128
86
  - scout
@@ -156,17 +114,13 @@ files:
156
114
  - lib/scout/entity/object.rb
157
115
  - lib/scout/entity/property.rb
158
116
  - lib/scout/knowledge_base.rb
117
+ - lib/scout/knowledge_base/description.rb
159
118
  - lib/scout/knowledge_base/enrichment.rb
160
119
  - lib/scout/knowledge_base/entity.rb
161
120
  - lib/scout/knowledge_base/list.rb
162
121
  - lib/scout/knowledge_base/query.rb
163
122
  - lib/scout/knowledge_base/registry.rb
164
123
  - lib/scout/knowledge_base/traverse.rb
165
- - lib/scout/offsite.rb
166
- - lib/scout/offsite/exceptions.rb
167
- - lib/scout/offsite/ssh.rb
168
- - lib/scout/offsite/step.rb
169
- - lib/scout/offsite/sync.rb
170
124
  - lib/scout/persist/engine.rb
171
125
  - lib/scout/persist/engine/fix_width_table.rb
172
126
  - lib/scout/persist/engine/packed_index.rb
@@ -214,10 +168,14 @@ files:
214
168
  - lib/scout/workflow/definition.rb
215
169
  - lib/scout/workflow/deployment.rb
216
170
  - lib/scout/workflow/deployment/orchestrator.rb
171
+ - lib/scout/workflow/deployment/queue.rb
217
172
  - lib/scout/workflow/deployment/trace.rb
218
173
  - lib/scout/workflow/documentation.rb
174
+ - lib/scout/workflow/entity.rb
219
175
  - lib/scout/workflow/exceptions.rb
176
+ - lib/scout/workflow/export.rb
220
177
  - lib/scout/workflow/path.rb
178
+ - lib/scout/workflow/persist.rb
221
179
  - lib/scout/workflow/step.rb
222
180
  - lib/scout/workflow/step/archive.rb
223
181
  - lib/scout/workflow/step/children.rb
@@ -252,14 +210,15 @@ files:
252
210
  - scout_commands/kb/show
253
211
  - scout_commands/kb/traverse
254
212
  - scout_commands/log
255
- - scout_commands/offsite
256
213
  - scout_commands/rbbt
257
214
  - scout_commands/resource/produce
258
215
  - scout_commands/template
259
216
  - scout_commands/update
217
+ - scout_commands/workflow/cmd
260
218
  - scout_commands/workflow/info
261
219
  - scout_commands/workflow/install
262
220
  - scout_commands/workflow/list
221
+ - scout_commands/workflow/process
263
222
  - scout_commands/workflow/prov
264
223
  - scout_commands/workflow/task
265
224
  - scout_commands/workflow/trace
@@ -269,6 +228,7 @@ files:
269
228
  - share/software/install_helpers
270
229
  - share/templates/command
271
230
  - share/templates/workflow.rb
231
+ - test/data/person/README.md
272
232
  - test/data/person/brothers
273
233
  - test/data/person/identifiers
274
234
  - test/data/person/marriages
@@ -281,16 +241,13 @@ files:
281
241
  - test/scout/entity/test_named_array.rb
282
242
  - test/scout/entity/test_object.rb
283
243
  - test/scout/entity/test_property.rb
244
+ - test/scout/knowledge_base/test_description.rb
284
245
  - test/scout/knowledge_base/test_enrichment.rb
285
246
  - test/scout/knowledge_base/test_entity.rb
286
247
  - test/scout/knowledge_base/test_list.rb
287
248
  - test/scout/knowledge_base/test_query.rb
288
249
  - test/scout/knowledge_base/test_registry.rb
289
250
  - test/scout/knowledge_base/test_traverse.rb
290
- - test/scout/offsite/test_ssh.rb
291
- - test/scout/offsite/test_step.rb
292
- - test/scout/offsite/test_sync.rb
293
- - test/scout/offsite/test_task.rb
294
251
  - test/scout/persist/engine/test_fix_width_table.rb
295
252
  - test/scout/persist/engine/test_packed_index.rb
296
253
  - test/scout/persist/engine/test_sharder.rb
@@ -308,7 +265,6 @@ files:
308
265
  - test/scout/test_association.rb
309
266
  - test/scout/test_entity.rb
310
267
  - test/scout/test_knowledge_base.rb
311
- - test/scout/test_offsite.rb
312
268
  - test/scout/test_semaphore.rb
313
269
  - test/scout/test_tsv.rb
314
270
  - test/scout/test_work_queue.rb
@@ -351,6 +307,7 @@ files:
351
307
  - test/scout/workflow/task/test_inputs.rb
352
308
  - test/scout/workflow/test_definition.rb
353
309
  - test/scout/workflow/test_documentation.rb
310
+ - test/scout/workflow/test_entity.rb
354
311
  - test/scout/workflow/test_path.rb
355
312
  - test/scout/workflow/test_step.rb
356
313
  - test/scout/workflow/test_task.rb
@@ -1,9 +0,0 @@
1
- class SSHProcessFailed < StandardError
2
- attr_accessor :host, :cmd
3
- def initialize(host, cmd)
4
- @host = host
5
- @cmd = cmd
6
- message = "SSH server #{host} failed cmd '#{cmd}'"
7
- super(message)
8
- end
9
- end