fairy 0.6.0

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 (186) hide show
  1. data/LICENSE +674 -0
  2. data/Makefile +116 -0
  3. data/README +15 -0
  4. data/bin/fairy +582 -0
  5. data/bin/fairy-cat +74 -0
  6. data/bin/fairy-cp +128 -0
  7. data/bin/fairy-rm +122 -0
  8. data/bin/subcmd/controller +41 -0
  9. data/bin/subcmd/inspector +81 -0
  10. data/bin/subcmd/master +43 -0
  11. data/bin/subcmd/node +47 -0
  12. data/bin/subcmd/processor +54 -0
  13. data/doc/programming-interface.html +240 -0
  14. data/doc/programming-interface.rd +300 -0
  15. data/etc/fairy.conf.tmpl +118 -0
  16. data/ext/simple_hash/extconf.rb +4 -0
  17. data/ext/simple_hash/simple_hash.c +42 -0
  18. data/fairy.gemspec +60 -0
  19. data/lib/fairy/client/addins.rb +20 -0
  20. data/lib/fairy/client/barrier.rb +29 -0
  21. data/lib/fairy/client/basic-group-by.rb +52 -0
  22. data/lib/fairy/client/cat.rb +41 -0
  23. data/lib/fairy/client/direct-product.rb +51 -0
  24. data/lib/fairy/client/equijoin.rb +79 -0
  25. data/lib/fairy/client/exec.rb +54 -0
  26. data/lib/fairy/client/filter.rb +62 -0
  27. data/lib/fairy/client/find.rb +35 -0
  28. data/lib/fairy/client/group-by.rb +194 -0
  29. data/lib/fairy/client/here.rb +84 -0
  30. data/lib/fairy/client/inject.rb +70 -0
  31. data/lib/fairy/client/input-file.rb +53 -0
  32. data/lib/fairy/client/input-iota.rb +49 -0
  33. data/lib/fairy/client/input-local-file.rb +188 -0
  34. data/lib/fairy/client/input-varray.rb +30 -0
  35. data/lib/fairy/client/input.rb +42 -0
  36. data/lib/fairy/client/io-filter.rb +26 -0
  37. data/lib/fairy/client/junction.rb +31 -0
  38. data/lib/fairy/client/map.rb +34 -0
  39. data/lib/fairy/client/merge-group-by.rb +71 -0
  40. data/lib/fairy/client/output-file.rb +64 -0
  41. data/lib/fairy/client/output-local-file.rb +60 -0
  42. data/lib/fairy/client/output-null.rb +47 -0
  43. data/lib/fairy/client/output-varray.rb +50 -0
  44. data/lib/fairy/client/output.rb +29 -0
  45. data/lib/fairy/client/roma-put.rb +62 -0
  46. data/lib/fairy/client/roma.rb +156 -0
  47. data/lib/fairy/client/seg-join.rb +61 -0
  48. data/lib/fairy/client/seg-map.rb +78 -0
  49. data/lib/fairy/client/seg-shuffle.rb +35 -0
  50. data/lib/fairy/client/seg-split.rb +27 -0
  51. data/lib/fairy/client/seg-zip.rb +60 -0
  52. data/lib/fairy/client/select.rb +38 -0
  53. data/lib/fairy/client/sort.rb +48 -0
  54. data/lib/fairy/client/sort18.rb +56 -0
  55. data/lib/fairy/client/sort19.rb +61 -0
  56. data/lib/fairy/client/there.rb +47 -0
  57. data/lib/fairy/client/top_n_into_roma.rb +34 -0
  58. data/lib/fairy/client/wc.rb +92 -0
  59. data/lib/fairy/controller.rb +1103 -0
  60. data/lib/fairy/logger.rb +107 -0
  61. data/lib/fairy/master/addins.rb +20 -0
  62. data/lib/fairy/master/atom.rb +17 -0
  63. data/lib/fairy/master/c-barrier.rb +283 -0
  64. data/lib/fairy/master/c-basic-group-by.rb +250 -0
  65. data/lib/fairy/master/c-cat.rb +159 -0
  66. data/lib/fairy/master/c-direct-product.rb +203 -0
  67. data/lib/fairy/master/c-exec.rb +68 -0
  68. data/lib/fairy/master/c-filter.rb +422 -0
  69. data/lib/fairy/master/c-find.rb +138 -0
  70. data/lib/fairy/master/c-group-by.rb +64 -0
  71. data/lib/fairy/master/c-here.rb +80 -0
  72. data/lib/fairy/master/c-inject.rb +119 -0
  73. data/lib/fairy/master/c-input-file.rb +46 -0
  74. data/lib/fairy/master/c-input-iota.rb +66 -0
  75. data/lib/fairy/master/c-input-local-file.rb +117 -0
  76. data/lib/fairy/master/c-input-varray.rb +53 -0
  77. data/lib/fairy/master/c-input.rb +24 -0
  78. data/lib/fairy/master/c-inputtable.rb +31 -0
  79. data/lib/fairy/master/c-inputtable18.rb +36 -0
  80. data/lib/fairy/master/c-inputtable19.rb +35 -0
  81. data/lib/fairy/master/c-io-filter.rb +28 -0
  82. data/lib/fairy/master/c-junction.rb +54 -0
  83. data/lib/fairy/master/c-map.rb +27 -0
  84. data/lib/fairy/master/c-merge-group-by.rb +241 -0
  85. data/lib/fairy/master/c-output-file.rb +84 -0
  86. data/lib/fairy/master/c-output-local-file.rb +19 -0
  87. data/lib/fairy/master/c-output-null.rb +45 -0
  88. data/lib/fairy/master/c-output-varray.rb +57 -0
  89. data/lib/fairy/master/c-output.rb +20 -0
  90. data/lib/fairy/master/c-seg-join.rb +141 -0
  91. data/lib/fairy/master/c-seg-map.rb +26 -0
  92. data/lib/fairy/master/c-seg-shuffle.rb +87 -0
  93. data/lib/fairy/master/c-seg-split.rb +110 -0
  94. data/lib/fairy/master/c-seg-zip.rb +132 -0
  95. data/lib/fairy/master/c-select.rb +27 -0
  96. data/lib/fairy/master/c-sort.rb +108 -0
  97. data/lib/fairy/master/c-there.rb +57 -0
  98. data/lib/fairy/master/c-wc.rb +232 -0
  99. data/lib/fairy/master/job-interpriter.rb +19 -0
  100. data/lib/fairy/master/scheduler.rb +24 -0
  101. data/lib/fairy/master.rb +329 -0
  102. data/lib/fairy/node/addins.rb +19 -0
  103. data/lib/fairy/node/p-barrier.rb +95 -0
  104. data/lib/fairy/node/p-basic-group-by.rb +252 -0
  105. data/lib/fairy/node/p-direct-product.rb +153 -0
  106. data/lib/fairy/node/p-exec.rb +30 -0
  107. data/lib/fairy/node/p-filter.rb +363 -0
  108. data/lib/fairy/node/p-find.rb +111 -0
  109. data/lib/fairy/node/p-group-by.rb +1534 -0
  110. data/lib/fairy/node/p-here.rb +21 -0
  111. data/lib/fairy/node/p-identity.rb +24 -0
  112. data/lib/fairy/node/p-inject.rb +127 -0
  113. data/lib/fairy/node/p-input-file.rb +108 -0
  114. data/lib/fairy/node/p-input-iota.rb +39 -0
  115. data/lib/fairy/node/p-input-local-file.rb +61 -0
  116. data/lib/fairy/node/p-input-varray.rb +26 -0
  117. data/lib/fairy/node/p-io-filter.rb +28 -0
  118. data/lib/fairy/node/p-map.rb +40 -0
  119. data/lib/fairy/node/p-merger-group-by.rb +48 -0
  120. data/lib/fairy/node/p-output-file.rb +104 -0
  121. data/lib/fairy/node/p-output-local-file.rb +14 -0
  122. data/lib/fairy/node/p-output-null.rb +32 -0
  123. data/lib/fairy/node/p-output-varray.rb +41 -0
  124. data/lib/fairy/node/p-seg-join.rb +82 -0
  125. data/lib/fairy/node/p-seg-map.rb +34 -0
  126. data/lib/fairy/node/p-seg-split.rb +61 -0
  127. data/lib/fairy/node/p-seg-zip.rb +79 -0
  128. data/lib/fairy/node/p-select.rb +40 -0
  129. data/lib/fairy/node/p-single-exportable.rb +90 -0
  130. data/lib/fairy/node/p-sort.rb +195 -0
  131. data/lib/fairy/node/p-task.rb +113 -0
  132. data/lib/fairy/node/p-there.rb +44 -0
  133. data/lib/fairy/node/p-wc.rb +266 -0
  134. data/lib/fairy/node.rb +187 -0
  135. data/lib/fairy/processor.rb +510 -0
  136. data/lib/fairy/share/base-app.rb +114 -0
  137. data/lib/fairy/share/block-source.rb +234 -0
  138. data/lib/fairy/share/conf.rb +396 -0
  139. data/lib/fairy/share/debug.rb +21 -0
  140. data/lib/fairy/share/encoding.rb +17 -0
  141. data/lib/fairy/share/fast-tempfile.rb +93 -0
  142. data/lib/fairy/share/file-place.rb +176 -0
  143. data/lib/fairy/share/hash-1.rb +20 -0
  144. data/lib/fairy/share/hash-md5.rb +28 -0
  145. data/lib/fairy/share/hash-murmur.rb +69 -0
  146. data/lib/fairy/share/hash-rb18.rb +20 -0
  147. data/lib/fairy/share/hash-simple-hash.rb +28 -0
  148. data/lib/fairy/share/inspector.rb +16 -0
  149. data/lib/fairy/share/lc/exceptions.rb +82 -0
  150. data/lib/fairy/share/lc/ja/exceptions.rb +81 -0
  151. data/lib/fairy/share/locale.rb +17 -0
  152. data/lib/fairy/share/log.rb +215 -0
  153. data/lib/fairy/share/pool-dictionary.rb +53 -0
  154. data/lib/fairy/share/port-marshaled-queue.rb +347 -0
  155. data/lib/fairy/share/port.rb +1697 -0
  156. data/lib/fairy/share/reference.rb +45 -0
  157. data/lib/fairy/share/stdout.rb +56 -0
  158. data/lib/fairy/share/tr.rb +16 -0
  159. data/lib/fairy/share/varray.rb +147 -0
  160. data/lib/fairy/share/vfile.rb +183 -0
  161. data/lib/fairy/version.rb +8 -0
  162. data/lib/fairy.rb +206 -0
  163. data/sample/grep.rb +46 -0
  164. data/sample/ping.rb +19 -0
  165. data/sample/sort.rb +102 -0
  166. data/sample/wordcount.rb +61 -0
  167. data/spec/README +12 -0
  168. data/spec/fairy1_spec.rb +31 -0
  169. data/spec/fairy2_spec.rb +42 -0
  170. data/spec/fairy3_spec.rb +126 -0
  171. data/spec/fairy4_spec.rb +63 -0
  172. data/spec/fairy5_spec.rb +45 -0
  173. data/spec/fairy6_spec.rb +52 -0
  174. data/spec/fairy7_spec.rb +58 -0
  175. data/spec/fairy8_spec.rb +48 -0
  176. data/spec/mkdat.rb +148 -0
  177. data/spec/run_all.sh +65 -0
  178. data/test/testc.rb +7111 -0
  179. data/tools/cap_recipe/Capfile +144 -0
  180. data/tools/cap_recipe/cluster.yml.sample +14 -0
  181. data/tools/fairy_perf_graph.rb +444 -0
  182. data/tools/git-tag +44 -0
  183. data/tools/log-analysis.rb +62 -0
  184. data/tools/svn-ls-diff +38 -0
  185. data/tools/svn-tags +37 -0
  186. metadata +298 -0
data/bin/fairy-cat ADDED
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ #
4
+ # Copyright (C) 2007-2010 Rakuten, Inc.
5
+ #
6
+
7
+ require "optparse"
8
+ require "irb/locale"
9
+
10
+ require "fairy"
11
+ require "fairy/share/base-app"
12
+ require "fairy/share/vfile"
13
+
14
+ $0 = "fairy cat #{ARGV.join(' ')}"
15
+
16
+ module Fairy
17
+ class CopyAPP<BaseAPP
18
+
19
+ def initialize
20
+ super
21
+
22
+ @master_host = ENV["FAIRY_MASTER_HOST"]
23
+ @master_host ||= CONF.MASTER_HOST
24
+ @master_port = ENV["FAIRY_MASTER_PORT"]
25
+ @master_port ||= CONF.MASTER_PORT
26
+
27
+ @sources = nil
28
+ end
29
+
30
+ def parse_arg
31
+ super
32
+ @sources = ARGV
33
+ end
34
+
35
+ def option_parser
36
+ super do |opt|
37
+ opt.on("-m VAL"){|val| @master_host = val}
38
+ opt.on("-h", "--master_host=VAL"){|val| @master_host = val}
39
+ opt.on("-p", "--master_port=VAL"){|val| @master_port = val}
40
+ end
41
+ end
42
+
43
+ def start
44
+ for src in @sources
45
+ cat(src, @target)
46
+ end
47
+ end
48
+
49
+ def cat(src, target)
50
+ if VFile.vfile?(src)
51
+ ret = cat_from_fairy(src, target)
52
+ else
53
+ ret = caat_on_local(src, target)
54
+ end
55
+ end
56
+
57
+ def cat_from_fairy(src, target)
58
+ fairy = Fairy.new(@master_host, @master_port)
59
+
60
+ fairy.input(src).here.each{|l| print l}
61
+ end
62
+
63
+ def copy_on_local(src, target)
64
+ #system("cat", src)
65
+ fairy = Fairy.new(@master_host, @master_port)
66
+
67
+ fairy.input(src).here.each{|l| print l}
68
+ end
69
+
70
+ end
71
+ end
72
+
73
+ Fairy::CopyAPP.start
74
+ #sleep 10
data/bin/fairy-cp ADDED
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ #
4
+ # Copyright (C) 2007-2010 Rakuten, Inc.
5
+ #
6
+
7
+ require "optparse"
8
+ require "irb/locale"
9
+
10
+ require "fairy"
11
+ require "fairy/share/base-app"
12
+ require "fairy/share/vfile"
13
+
14
+ $0 = "fairy cp #{ARGV.join(' ')}"
15
+
16
+ module Fairy
17
+ class CopyAPP<BaseAPP
18
+
19
+ def initialize
20
+ super
21
+
22
+ @master_host = ENV["FAIRY_MASTER_HOST"]
23
+ @master_host ||= CONF.MASTER_HOST
24
+ @master_port = ENV["FAIRY_MASTER_PORT"]
25
+ @master_port ||= CONF.MASTER_PORT
26
+
27
+ @split_size = CONF.VF_SPLIT_SIZE
28
+ @split_no = nil
29
+
30
+ @sources = nil
31
+ @target = nil
32
+ end
33
+
34
+ def parse_arg
35
+ super
36
+
37
+ @target = ARGV.pop
38
+ if ARGV.size > 1
39
+ puts "#{$0}: Can't specify multi sources(#{ARGV.join(' ')})."
40
+ exit 1
41
+ end
42
+ if File.directory?(@target)
43
+ puts "#{$0}: Can't specify the target(#{@target}) as a directory."
44
+ exit 1
45
+ end
46
+
47
+ @sources = ARGV
48
+ end
49
+
50
+ def option_parser
51
+ super do |opt|
52
+ opt.on("-m VAL"){|val| @master_host = val}
53
+ opt.on("-h", "--master_host=VAL"){|val| @master_host = val}
54
+ opt.on("-p", "--master_port=VAL"){|val| @master_port = val}
55
+ opt.on("--split=VAL", "specify split file size"){|val| @split_size = parse_split(val)}
56
+ opt.on("--split-no=VAL", "specify split file no"){|val| @split_no = val.to_i}
57
+ end
58
+ end
59
+
60
+ def parse_split(val)
61
+ case val
62
+ when /^[0-9]+b?$/
63
+ val.to_i
64
+ when /^[0-9]+[kK]$/
65
+ val.to_i*1024
66
+ when /^[0-9]+[mM]$/
67
+ val.to_i*1024*1024
68
+ when /^[0-9]+[gG]$/
69
+ val.to_i*1024*1024*1024
70
+ else
71
+ puts "#($0): Can't recognized --split #{val}"
72
+ exit 1
73
+ end
74
+ end
75
+
76
+ def start
77
+ for src in @sources
78
+ copy(src, @target)
79
+ end
80
+ end
81
+
82
+ def copy(src, target)
83
+ if !VFile.vfile?(src) && VFile.vfile?(target)
84
+ ret = copy_to_fairy(src, target)
85
+ elsif VFile.vfile?(src) && !VFile.vfile?(target)
86
+ ret = copy_from_fairy(src, target)
87
+ elsif VFile.vfile?(src) && VFile.vfile?(target)
88
+ ret = copy_on_fairy(src, target)
89
+ else
90
+ ret = copy_on_local(src, target)
91
+ end
92
+ end
93
+
94
+ def copy_to_fairy(src, target)
95
+ fairy = Fairy.new(@master_host, @master_port)
96
+ if @split_no
97
+ fairy.input(src, :split_no => @split_no).output(target)
98
+ else
99
+ fairy.input(src, :split_size => @split_size).output(target)
100
+ end
101
+
102
+
103
+ end
104
+
105
+ def copy_from_fairy(src, target)
106
+ fairy = Fairy.new(@master_host, @master_port)
107
+
108
+ fairy.input(src).output(target)
109
+ end
110
+
111
+ def copy_on_fairy(src, target)
112
+ fairy = Fairy.new(@master_host, @master_port)
113
+
114
+ fairy.input(src).output(target)
115
+ end
116
+
117
+ def copy_on_local(src, target)
118
+ #system("cp", src, target)
119
+ fairy = Fairy.new(@master_host, @master_port)
120
+
121
+ fairy.input(src).output(target)
122
+ end
123
+
124
+ end
125
+ end
126
+
127
+ Fairy::CopyAPP.start
128
+ #sleep 10
data/bin/fairy-rm ADDED
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ #
4
+ # Copyright (C) 2007-2010 Rakuten, Inc.
5
+ #
6
+
7
+ require "optparse"
8
+ require "irb/locale"
9
+
10
+ require "fairy"
11
+ require "fairy/share/base-app"
12
+ require "fairy/share/vfile"
13
+
14
+ $0 = "fairy rm #{ARGV.join(' ')}"
15
+
16
+ module Fairy
17
+ class RmAP<BaseAPP
18
+
19
+ def initialize
20
+ super
21
+
22
+ @master_host = ENV["FAIRY_MASTER_HOST"]
23
+ @master_host ||= CONF.MASTER_HOST
24
+ @master_port = ENV["FAIRY_MASTER_PORT"]
25
+ @master_port ||= CONF.MASTER_PORT
26
+
27
+ @target = nil
28
+ end
29
+
30
+ def parse_arg
31
+ super
32
+
33
+ @targets = ARGV
34
+
35
+ for target in @targets
36
+ if File.directory?(target)
37
+ puts "#{$0}: Can't specify the target(#{target}) as a directory."
38
+ exit 1
39
+ end
40
+ end
41
+ end
42
+
43
+ def option_parser
44
+ super do |opt|
45
+ opt.on("-m VAL"){|val| @master_host = val}
46
+ opt.on("-h", "--master_host=VAL"){|val| @master_host = val}
47
+ opt.on("-p", "--master_port=VAL"){|val| @master_port = val}
48
+ opt.on("--split=VAL"){|val| @split_size = val.to_i}
49
+ end
50
+ end
51
+
52
+ def start
53
+ for target in @targets
54
+ rm(target)
55
+ end
56
+ end
57
+
58
+ def rm(target)
59
+ if VFile.vfile?(target)
60
+ ret = rm_on_fairy(target)
61
+ else
62
+ ret = rm_on_local(target)
63
+ end
64
+ end
65
+
66
+ def rm_on_fairy(target)
67
+
68
+ unless File.exists?(target)
69
+ puts "#{$0}: remove error: target vfile is'nt exist: #{target}"
70
+ exit 1
71
+ end
72
+
73
+ fairy = Fairy.new(@master_host, @master_port)
74
+
75
+ rm = fairy.exec(target).map(%{|uri|
76
+ path = URI(uri).path
77
+ begin
78
+ File.unlink(path)
79
+ rescue
80
+ m = $!.message
81
+ "\#{m} on \#{URI(uri).host}"
82
+ end
83
+ }, :BEGIN => %{require "uri"})
84
+
85
+ errors = []
86
+ rm.here.each do |ret|
87
+ case ret
88
+ when Integer
89
+ # 成功
90
+ else
91
+ errors.push ret
92
+ end
93
+ end
94
+
95
+ unless errors.empty?
96
+ puts "#{$0}: remove error:"
97
+ for e in errors
98
+ puts "\t#{e}"
99
+ end
100
+ exit 1
101
+ end
102
+
103
+ File.unlink(target)
104
+ end
105
+
106
+ def rm_on_local(target)
107
+ system("rm", target)
108
+ end
109
+ end
110
+
111
+ end
112
+
113
+ Fairy::RmAP.start
114
+ #sleep 10
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ #
4
+ # Copyright (C) 2007-2010 Rakuten, Inc.
5
+ #
6
+
7
+ require "optparse"
8
+ require "deep-connect"
9
+
10
+ require "fairy/share/base-app"
11
+ require "fairy/share/conf"
12
+ require "fairy/share/locale"
13
+ require "fairy/share/encoding"
14
+ require "fairy/controller"
15
+
16
+ $0 = "fairy controller #{ARGV.join(' ')}"
17
+
18
+ module Fairy
19
+ class ControllerAPP<BaseAPP
20
+ def initialize
21
+ super
22
+
23
+ @master_port = Fairy::CONF.MASTER_PORT
24
+ @id = nil
25
+ end
26
+
27
+ def option_parser
28
+ super do |opt|
29
+ opt.on("--master=VAL"){|val| @master_port = val}
30
+ opt.on("--id=VAL"){|val| @id = val.to_i}
31
+ end
32
+ end
33
+
34
+ def start
35
+ Fairy::Controller.start(@id, @master_port)
36
+ end
37
+ end
38
+ end
39
+
40
+ Fairy::ControllerAPP.start
41
+ sleep
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ #
4
+ # Copyright (C) 2007-2010 Rakuten, Inc.
5
+ #
6
+
7
+ require "optparse"
8
+ require "irb"
9
+
10
+ require "deep-connect"
11
+
12
+ require "fairy"
13
+ require "fairy/share/base-app"
14
+
15
+ module Fairy
16
+ class InspectorAPP<BaseAPP
17
+ def initialize
18
+ super
19
+ @master_host = ENV["FAIRY_MASTER_HOST"]
20
+ @master_host ||= CONF.MASTER_HOST
21
+ @master_port = ENV["FAIRY_MASTER_PORT"]
22
+ @master_port ||= CONF.MASTER_PORT
23
+ end
24
+
25
+ def option_parser
26
+ super do |opt|
27
+ opt.on("-m VAL"){|val| @master_host = val}
28
+ opt.on("-h", "--master_host=VAL"){|val| @master_host = val}
29
+ opt.on("-p", "--master_port=VAL"){|val| @master_port = val}
30
+ end
31
+ end
32
+
33
+ def start
34
+ @deep_connect = DeepConnect.start(0)
35
+ @master_deepspace = @deep_connect.open_deepspace(@master_host, @master_port)
36
+ @master = @master_deepspace.import("Master")
37
+ @master_inspector = @master_deepspace.import("Inspector")
38
+
39
+ $inspector = self
40
+ $master = @master
41
+
42
+ IRB.start
43
+ end
44
+
45
+ attr_reader :master
46
+ attr_reader :master_inspector
47
+
48
+ def controllers
49
+ @master.controllers
50
+ end
51
+
52
+ def node(node_host)
53
+ @master.node(node_host)
54
+ end
55
+
56
+ def processor(node_host, id)
57
+ node(node_host).processors[id]
58
+ end
59
+
60
+ def processor_status(node_host, id)
61
+ processor(node_host, id).process_status_mon(true)
62
+ end
63
+
64
+ def processor_inspector(node_host, id)
65
+ node(node_host).processors[id].deep_space.import("Inspector")
66
+ end
67
+
68
+ def processor_refall(node_host, id)
69
+ i = processor_inspector(node_host, id)
70
+ i.exec("@deepconnect.instance_eval{@organizer}.deep_spaces.values.collect{|ds| ds.instance_eval{@export_roots}.values.select{|e| e.kind_of?(Array)}}")
71
+ end
72
+
73
+ end
74
+ end
75
+
76
+ Fairy::InspectorAPP.start
77
+
78
+
79
+
80
+
81
+