drbqs 0.0.14 → 0.0.15

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 (101) hide show
  1. data/VERSION +1 -1
  2. data/bin/drbqs-execute +6 -0
  3. data/bin/drbqs-manage +2 -2
  4. data/bin/drbqs-node +2 -2
  5. data/bin/drbqs-server +2 -2
  6. data/bin/drbqs-ssh +2 -2
  7. data/drbqs.gemspec +53 -16
  8. data/example/error_server/error.rb +6 -0
  9. data/example/error_server/server_def.rb +7 -0
  10. data/example/{error → error_task}/error.rb +0 -0
  11. data/example/{error → error_task}/server_def.rb +0 -0
  12. data/example/sum2/execute_def.rb +27 -0
  13. data/lib/drbqs/command_line/argument.rb +29 -0
  14. data/lib/drbqs/command_line/command_base.rb +81 -0
  15. data/lib/drbqs/command_line/command_execute.rb +33 -0
  16. data/lib/drbqs/command_line/command_line.rb +19 -0
  17. data/lib/drbqs/command_line/command_manage.rb +34 -0
  18. data/lib/drbqs/command_line/command_node.rb +26 -0
  19. data/lib/drbqs/command_line/command_server.rb +41 -0
  20. data/lib/drbqs/command_line/command_ssh.rb +51 -0
  21. data/lib/drbqs/command_line/option_setting.rb +42 -0
  22. data/lib/drbqs/execute/process_define.rb +213 -0
  23. data/lib/drbqs/execute/register.rb +147 -0
  24. data/lib/drbqs/{utility → execute}/server_define.rb +7 -14
  25. data/lib/drbqs/manage/execute_node.rb +4 -2
  26. data/lib/drbqs/manage/manage.rb +23 -16
  27. data/lib/drbqs/manage/send_signal.rb +31 -4
  28. data/lib/drbqs/manage/ssh_execute.rb +50 -6
  29. data/lib/drbqs/manage/ssh_shell.rb +95 -50
  30. data/lib/drbqs/node/connection.rb +1 -1
  31. data/lib/drbqs/node/node.rb +67 -17
  32. data/lib/drbqs/node/state.rb +109 -0
  33. data/lib/drbqs/node/task_client.rb +7 -7
  34. data/lib/drbqs/server/history.rb +16 -0
  35. data/lib/drbqs/server/message.rb +80 -15
  36. data/lib/drbqs/server/node_list.rb +16 -3
  37. data/lib/drbqs/server/prof.rb +48 -0
  38. data/lib/drbqs/server/queue.rb +20 -2
  39. data/lib/drbqs/server/server.rb +112 -70
  40. data/lib/drbqs/server/server_hook.rb +26 -6
  41. data/lib/drbqs/server/test/node.rb +34 -0
  42. data/lib/drbqs/server/test/server.rb +74 -0
  43. data/lib/drbqs/setting/base.rb +120 -0
  44. data/lib/drbqs/setting/data_container.rb +39 -0
  45. data/lib/drbqs/setting/execute.rb +71 -0
  46. data/lib/drbqs/setting/manage.rb +163 -0
  47. data/lib/drbqs/setting/node.rb +84 -0
  48. data/lib/drbqs/setting/server.rb +230 -0
  49. data/lib/drbqs/setting/setting.rb +14 -0
  50. data/lib/drbqs/setting/source.rb +220 -0
  51. data/lib/drbqs/setting/ssh.rb +165 -0
  52. data/lib/drbqs/task/task_generator.rb +4 -2
  53. data/lib/drbqs/utility/misc.rb +15 -1
  54. data/lib/drbqs/utility/temporary.rb +4 -2
  55. data/lib/drbqs.rb +3 -2
  56. data/spec/command_line/command_base_spec.rb +47 -0
  57. data/spec/{utility/command_line → command_line}/commands_spec.rb +3 -3
  58. data/spec/command_line/option_setting_spec.rb +29 -0
  59. data/spec/execute/def/execute1.rb +24 -0
  60. data/spec/execute/def/no_def.rb +2 -0
  61. data/spec/execute/process_define_spec.rb +167 -0
  62. data/spec/execute/register_spec.rb +77 -0
  63. data/spec/{utility → execute}/server_define_spec.rb +0 -0
  64. data/spec/integration_test/01_basic_usage_spec.rb +1 -1
  65. data/spec/integration_test/02_use_generator_spec.rb +1 -1
  66. data/spec/integration_test/03_use_temporary_file_spec.rb +1 -1
  67. data/spec/integration_test/04_use_unix_domain_spec.rb +1 -1
  68. data/spec/integration_test/05_server_exit_signal_spec.rb +1 -1
  69. data/spec/integration_test/06_node_exit_after_task_spec.rb +1 -1
  70. data/spec/integration_test/07_command_server_with_node_spec.rb +19 -16
  71. data/spec/integration_test/08_shutdown_unused_nodes_spec.rb +38 -0
  72. data/spec/integration_test/09_server_process_data_spec.rb +74 -0
  73. data/spec/integration_test/10_test_server_spec.rb +18 -0
  74. data/spec/integration_test/definition/task_obj_definition.rb +14 -0
  75. data/spec/manage/send_signal_spec.rb +8 -0
  76. data/spec/manage/ssh_shell_spec.rb +1 -1
  77. data/spec/node/state_spec.rb +148 -0
  78. data/spec/node/task_client_spec.rb +15 -0
  79. data/spec/server/history_spec.rb +51 -20
  80. data/spec/server/message_spec.rb +7 -2
  81. data/spec/server/node_list_spec.rb +1 -1
  82. data/spec/server/queue_spec.rb +93 -4
  83. data/spec/server/server_hook_spec.rb +62 -0
  84. data/spec/setting/base_spec.rb +35 -0
  85. data/spec/setting/data_container_spec.rb +92 -0
  86. data/spec/setting/execute_spec.rb +51 -0
  87. data/spec/setting/manage_spec.rb +63 -0
  88. data/spec/setting/node_spec.rb +43 -0
  89. data/spec/setting/server_spec.rb +46 -0
  90. data/spec/setting/source_spec.rb +245 -0
  91. data/spec/spec_helper.rb +17 -10
  92. data/spec/utility/argument_spec.rb +7 -7
  93. metadata +179 -146
  94. data/lib/drbqs/utility/argument.rb +0 -27
  95. data/lib/drbqs/utility/command_line/command_base.rb +0 -27
  96. data/lib/drbqs/utility/command_line/command_manage.rb +0 -121
  97. data/lib/drbqs/utility/command_line/command_node.rb +0 -103
  98. data/lib/drbqs/utility/command_line/command_server.rb +0 -165
  99. data/lib/drbqs/utility/command_line/command_ssh.rb +0 -126
  100. data/lib/drbqs/utility/command_line.rb +0 -15
  101. data/spec/utility/command_line/command_base_spec.rb +0 -33
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.14
1
+ 0.0.15
data/bin/drbqs-execute ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
+ require 'drbqs/command_line/command_line'
5
+
6
+ DRbQS::Command::Execute.exec(ARGV)
data/bin/drbqs-manage CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
- require 'drbqs/utility/command_line'
4
+ require 'drbqs/command_line/command_line'
5
5
 
6
- DRbQS::CommandManage.exec(ARGV)
6
+ DRbQS::Command::Manage.exec(ARGV)
data/bin/drbqs-node CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
- require 'drbqs/utility/command_line'
4
+ require 'drbqs/command_line/command_line'
5
5
 
6
- DRbQS::CommandNode.exec(ARGV)
6
+ DRbQS::Command::Node.exec(ARGV)
data/bin/drbqs-server CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
- require 'drbqs/utility/command_line'
4
+ require 'drbqs/command_line/command_line'
5
5
 
6
- DRbQS::CommandServer.exec(ARGV)
6
+ DRbQS::Command::Server.exec(ARGV)
data/bin/drbqs-ssh CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
- require 'drbqs/utility/command_line'
4
+ require 'drbqs/command_line/command_line'
5
5
 
6
- DRbQS::CommandSSH.exec(ARGV)
6
+ DRbQS::Command::SSH.exec(ARGV)
data/drbqs.gemspec CHANGED
@@ -5,14 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{drbqs}
8
- s.version = "0.0.14"
8
+ s.version = "0.0.15"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Takayuki YAMAGUCHI"]
12
- s.date = %q{2011-07-19}
12
+ s.date = %q{2011-07-29}
13
13
  s.description = %q{Task queuing system over network that is implemented by dRuby.}
14
14
  s.email = %q{d@ytak.info}
15
- s.executables = ["drbqs-manage", "drbqs-node", "drbqs-server", "drbqs-ssh"]
15
+ s.executables = ["drbqs-execute", "drbqs-manage", "drbqs-node", "drbqs-server", "drbqs-ssh"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
18
  "README.md"
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  "README.md",
26
26
  "Rakefile",
27
27
  "VERSION",
28
+ "bin/drbqs-execute",
28
29
  "bin/drbqs-manage",
29
30
  "bin/drbqs-node",
30
31
  "bin/drbqs-server",
@@ -32,19 +33,34 @@ Gem::Specification.new do |s|
32
33
  "drbqs.gemspec",
33
34
  "example/README.md",
34
35
  "example/command/server_def.rb",
35
- "example/error/error.rb",
36
- "example/error/server_def.rb",
36
+ "example/error_server/error.rb",
37
+ "example/error_server/server_def.rb",
38
+ "example/error_task/error.rb",
39
+ "example/error_task/server_def.rb",
37
40
  "example/server/server.rb",
38
41
  "example/sum/server_def.rb",
39
42
  "example/sum/sum.rb",
43
+ "example/sum2/execute_def.rb",
40
44
  "example/sum2/server_def.rb",
41
45
  "example/sum2/sum.rb",
42
46
  "example/transfer/file.rb",
43
47
  "example/transfer/server_def.rb",
44
48
  "lib/drbqs.rb",
49
+ "lib/drbqs/command_line/argument.rb",
50
+ "lib/drbqs/command_line/command_base.rb",
51
+ "lib/drbqs/command_line/command_execute.rb",
52
+ "lib/drbqs/command_line/command_line.rb",
53
+ "lib/drbqs/command_line/command_manage.rb",
54
+ "lib/drbqs/command_line/command_node.rb",
55
+ "lib/drbqs/command_line/command_server.rb",
56
+ "lib/drbqs/command_line/command_ssh.rb",
57
+ "lib/drbqs/command_line/option_setting.rb",
45
58
  "lib/drbqs/config/config.rb",
46
59
  "lib/drbqs/config/process_list.rb",
47
60
  "lib/drbqs/config/ssh_host.rb",
61
+ "lib/drbqs/execute/process_define.rb",
62
+ "lib/drbqs/execute/register.rb",
63
+ "lib/drbqs/execute/server_define.rb",
48
64
  "lib/drbqs/manage/execute_node.rb",
49
65
  "lib/drbqs/manage/manage.rb",
50
66
  "lib/drbqs/manage/send_signal.rb",
@@ -52,34 +68,47 @@ Gem::Specification.new do |s|
52
68
  "lib/drbqs/manage/ssh_shell.rb",
53
69
  "lib/drbqs/node/connection.rb",
54
70
  "lib/drbqs/node/node.rb",
71
+ "lib/drbqs/node/state.rb",
55
72
  "lib/drbqs/node/task_client.rb",
56
73
  "lib/drbqs/server/acl_file.rb",
57
74
  "lib/drbqs/server/check_alive.rb",
58
75
  "lib/drbqs/server/history.rb",
59
76
  "lib/drbqs/server/message.rb",
60
77
  "lib/drbqs/server/node_list.rb",
78
+ "lib/drbqs/server/prof.rb",
61
79
  "lib/drbqs/server/queue.rb",
62
80
  "lib/drbqs/server/server.rb",
63
81
  "lib/drbqs/server/server_hook.rb",
82
+ "lib/drbqs/server/test/node.rb",
83
+ "lib/drbqs/server/test/server.rb",
64
84
  "lib/drbqs/server/transfer_setting.rb",
85
+ "lib/drbqs/setting/base.rb",
86
+ "lib/drbqs/setting/data_container.rb",
87
+ "lib/drbqs/setting/execute.rb",
88
+ "lib/drbqs/setting/manage.rb",
89
+ "lib/drbqs/setting/node.rb",
90
+ "lib/drbqs/setting/server.rb",
91
+ "lib/drbqs/setting/setting.rb",
92
+ "lib/drbqs/setting/source.rb",
93
+ "lib/drbqs/setting/ssh.rb",
65
94
  "lib/drbqs/task/command_task.rb",
66
95
  "lib/drbqs/task/task.rb",
67
96
  "lib/drbqs/task/task_generator.rb",
68
- "lib/drbqs/utility/argument.rb",
69
- "lib/drbqs/utility/command_line.rb",
70
- "lib/drbqs/utility/command_line/command_base.rb",
71
- "lib/drbqs/utility/command_line/command_manage.rb",
72
- "lib/drbqs/utility/command_line/command_node.rb",
73
- "lib/drbqs/utility/command_line/command_server.rb",
74
- "lib/drbqs/utility/command_line/command_ssh.rb",
75
97
  "lib/drbqs/utility/misc.rb",
76
- "lib/drbqs/utility/server_define.rb",
77
98
  "lib/drbqs/utility/temporary.rb",
78
99
  "lib/drbqs/utility/transfer/file_transfer.rb",
79
100
  "lib/drbqs/utility/transfer/transfer_client.rb",
101
+ "spec/command_line/command_base_spec.rb",
102
+ "spec/command_line/commands_spec.rb",
103
+ "spec/command_line/option_setting_spec.rb",
80
104
  "spec/config/config_spec.rb",
81
105
  "spec/config/process_list_spec.rb",
82
106
  "spec/config/ssh_host_spec.rb",
107
+ "spec/execute/def/execute1.rb",
108
+ "spec/execute/def/no_def.rb",
109
+ "spec/execute/process_define_spec.rb",
110
+ "spec/execute/register_spec.rb",
111
+ "spec/execute/server_define_spec.rb",
83
112
  "spec/integration_test/01_basic_usage_spec.rb",
84
113
  "spec/integration_test/02_use_generator_spec.rb",
85
114
  "spec/integration_test/03_use_temporary_file_spec.rb",
@@ -87,6 +116,9 @@ Gem::Specification.new do |s|
87
116
  "spec/integration_test/05_server_exit_signal_spec.rb",
88
117
  "spec/integration_test/06_node_exit_after_task_spec.rb",
89
118
  "spec/integration_test/07_command_server_with_node_spec.rb",
119
+ "spec/integration_test/08_shutdown_unused_nodes_spec.rb",
120
+ "spec/integration_test/09_server_process_data_spec.rb",
121
+ "spec/integration_test/10_test_server_spec.rb",
90
122
  "spec/integration_test/definition/server01.rb",
91
123
  "spec/integration_test/definition/server02.rb",
92
124
  "spec/integration_test/definition/task_obj_definition.rb",
@@ -94,6 +126,7 @@ Gem::Specification.new do |s|
94
126
  "spec/manage/send_signal_spec.rb",
95
127
  "spec/manage/ssh_shell_spec.rb",
96
128
  "spec/node/connection_spec.rb",
129
+ "spec/node/state_spec.rb",
97
130
  "spec/node/task_client_spec.rb",
98
131
  "spec/server/acl_file_spec.rb",
99
132
  "spec/server/check_alive_spec.rb",
@@ -105,15 +138,19 @@ Gem::Specification.new do |s|
105
138
  "spec/server/server_hook_spec.rb",
106
139
  "spec/server/server_spec.rb",
107
140
  "spec/server/transfer_setting_spec.rb",
141
+ "spec/setting/base_spec.rb",
142
+ "spec/setting/data_container_spec.rb",
143
+ "spec/setting/execute_spec.rb",
144
+ "spec/setting/manage_spec.rb",
145
+ "spec/setting/node_spec.rb",
146
+ "spec/setting/server_spec.rb",
147
+ "spec/setting/source_spec.rb",
108
148
  "spec/spec_helper.rb",
109
149
  "spec/task/file_transfer_spec.rb",
110
150
  "spec/task/task_generator_spec.rb",
111
151
  "spec/task/task_spec.rb",
112
152
  "spec/utility/argument_spec.rb",
113
- "spec/utility/command_line/command_base_spec.rb",
114
- "spec/utility/command_line/commands_spec.rb",
115
153
  "spec/utility/misc_spec.rb",
116
- "spec/utility/server_define_spec.rb",
117
154
  "spec/utility/temporary_spec.rb"
118
155
  ]
119
156
  s.homepage = %q{http://github.com/ytaka/drbqs}
@@ -0,0 +1,6 @@
1
+ class TaskTrue
2
+ def exec
3
+ sleep(1)
4
+ true
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ require_relative 'error.rb'
2
+
3
+ DRbQS.define_server(:check_alive => 300) do |server, argv, opts|
4
+ server.queue.add(DRbQS::Task.new(TaskTrue.new, :exec))
5
+ sleep(1)
6
+ raise "Error in definition of server."
7
+ end
File without changes
File without changes
@@ -0,0 +1,27 @@
1
+ default :server => :server_local, :port => 13789, :log => '/tmp/drbqs_execute'
2
+
3
+ usage :message => "Calculate sum of numbers", :server => File.join(File.dirname(__FILE__), 'server_def.rb')
4
+
5
+ register_server :server_local, "localhost" do |server|
6
+ server.load File.expand_path(File.join(File.dirname(__FILE__), 'server_def.rb'))
7
+ end
8
+
9
+ register_server :server_ssh, "localhost" do |server, ssh|
10
+ ssh.connect 'localhost'
11
+ ssh.directory File.expand_path(File.dirname(__FILE__))
12
+ ssh.output "/tmp/drbqs_ssh/server"
13
+ server.load 'server_def.rb'
14
+ end
15
+
16
+ register_node :node_local do |node|
17
+ node.load File.expand_path(File.join(File.dirname(__FILE__), 'sum.rb'))
18
+ node.process 2
19
+ end
20
+
21
+ register_node :node_ssh do |node, ssh|
22
+ ssh.connect 'localhost'
23
+ ssh.directory File.expand_path(File.dirname(__FILE__))
24
+ ssh.output "/tmp/drbqs_ssh/node"
25
+ node.load 'sum.rb'
26
+ node.process 2
27
+ end
@@ -0,0 +1,29 @@
1
+ module DRbQS
2
+ class Command
3
+ module Argument
4
+ def split_arguments(argv, split = '--')
5
+ if n = argv.index(split)
6
+ [argv[0..(n - 1)], argv[(n + 1)..-1]]
7
+ else
8
+ [argv, []]
9
+ end
10
+ end
11
+ module_function :split_arguments
12
+
13
+ def check_argument_size(argv, *args)
14
+ n = argv.size
15
+ args.each_slice(2).each do |ary|
16
+ if ary.size == 2
17
+ unless n.__send__(*ary)
18
+ raise ArgumentError, "Invalid arguments number. Please refer to documents."
19
+ end
20
+ else
21
+ raise ArgumentError, "Invalid argument to check array size."
22
+ end
23
+ end
24
+ true
25
+ end
26
+ module_function :check_argument_size
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,81 @@
1
+ module DRbQS
2
+ class Command
3
+ class Base
4
+ include DRbQS::Misc
5
+ include DRbQS::Command::Argument
6
+
7
+ @@command_name = File.basename($PROGRAM_NAME)
8
+
9
+ def self.exec(argv)
10
+ obj = self.new
11
+ obj.parse_option(argv)
12
+ obj.exec
13
+ end
14
+
15
+ def initialize(klass = DRbQS::Setting::Base, help_message = nil)
16
+ @help_message = help_message
17
+ @opt_setting = DRbQS::Command::OptionSetting.new(@help_message, klass.new)
18
+ end
19
+
20
+ def setting
21
+ @opt_setting.setting
22
+ end
23
+
24
+ def exit_normally
25
+ Kernel.exit(0)
26
+ end
27
+ private :exit_normally
28
+
29
+ def exit_unusually
30
+ Kernel.exit(1)
31
+ end
32
+ private :exit_unusually
33
+
34
+ def exit_invalid_option
35
+ Kernel.exit(2)
36
+ end
37
+ private :exit_invalid_option
38
+
39
+ def option_parser_base(argv, options = {}, &block)
40
+ @opt_setting.define(options, &block)
41
+ begin
42
+ @opt_setting.parse!(argv)
43
+ rescue DRbQS::Setting::InvalidLogLevel => err
44
+ $stderr.print err.to_s << "\n\n" << @help_message.to_s
45
+ exit_invalid_option
46
+ rescue OptionParser::InvalidOption
47
+ $stderr.print "error: Invalid Option\n\n" << @help_message.to_s
48
+ exit_invalid_option
49
+ rescue OptionParser::InvalidArgument
50
+ $stderr.print "error: Invalid Argument\n\n" << @help_message.to_s
51
+ exit_invalid_option
52
+ end
53
+ argv
54
+ end
55
+ private :option_parser_base
56
+
57
+ def parse_arguments!
58
+ setting.parse!
59
+ end
60
+ private :parse_arguments!
61
+
62
+ def exec
63
+ begin
64
+ parse_arguments!
65
+ setting.exec($stdout)
66
+ exit_normally
67
+ rescue DRb::DRbConnError => err
68
+ $stderr.puts "error: Can not connect. #{err.to_s}"
69
+ exit_unusually
70
+ rescue DRbQS::Setting::InvalidArgument => err
71
+ mes = "error: Invalid command argument. #{err.to_s}\n\n" << @help_message.to_s
72
+ $stderr.print mes
73
+ exit_invalid_option
74
+ rescue => err
75
+ output_error(err, $stderr)
76
+ exit_unusually
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,33 @@
1
+ module DRbQS
2
+ class Command
3
+ class Execute < DRbQS::Command::Base
4
+ HELP_MESSAGE =<<HELP
5
+ Usage: #{@@command_name} <definition> [options ...]
6
+ #{@@command_name} <definition> [options ...] [-- server options ...]
7
+ Execute DRbQS server and some nodes from definition file.
8
+
9
+ HELP
10
+
11
+ def initialize
12
+ super(DRbQS::Setting::Execute, HELP_MESSAGE)
13
+ end
14
+
15
+ def parse_option(argv)
16
+ args, server_args = split_arguments(argv)
17
+ args = option_parser_base(args) do
18
+ set(:port, '--port NUM', Integer, 'Set the port number.')
19
+ set(:server, '--server STR', String, 'Set the key of server.')
20
+ set(:node, '--node STR', String, 'Set the comma sparated key of nodes.')
21
+ set(:no_server, '--no-server', 'Not execute server.')
22
+ set(:no_node, '--no-node', 'Not execute node.')
23
+ set(:information, '-i', '--information', 'Show information.')
24
+ set(:help, '-h', '--help', 'Show this command help and usage of definition file.') do |opt|
25
+ $stdout.print opt
26
+ end
27
+ end
28
+ setting.set_argument(*args)
29
+ setting.server_argument = server_args
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ require 'drbqs'
2
+ require 'drbqs/manage/manage'
3
+ require 'drbqs/manage/execute_node'
4
+ require 'drbqs/command_line/argument'
5
+ require 'drbqs/command_line/option_setting'
6
+ require 'drbqs/command_line/command_base'
7
+ require 'optparse'
8
+
9
+ Version = DRbQS::VERSION
10
+
11
+ module DRbQS
12
+ class Command
13
+ autoload :Manage, 'drbqs/command_line/command_manage'
14
+ autoload :Server, 'drbqs/command_line/command_server'
15
+ autoload :Node, 'drbqs/command_line/command_node'
16
+ autoload :SSH, 'drbqs/command_line/command_ssh'
17
+ autoload :Execute, 'drbqs/command_line/command_execute'
18
+ end
19
+ end
@@ -0,0 +1,34 @@
1
+ module DRbQS
2
+ class Command
3
+ class Manage < DRbQS::Command::Base
4
+ HELP_MESSAGE =<<HELP
5
+ Usage: #{@@command_name} <command> [arguments ...]
6
+ Manage DRbQS server by sending messages.
7
+ <command> is 'signal', 'status', 'process', or 'initialize'.
8
+
9
+ #{@@command_name} signal <uri> server-exit
10
+ #{@@command_name} signal <uri> node-exit-after-task <node_number>
11
+ #{@@command_name} signal <uri> node-wake <node_number>
12
+ #{@@command_name} signal <uri> node-sleep <node_number>
13
+ #{@@command_name} status <uri>
14
+ #{@@command_name} history <uri>
15
+ #{@@command_name} process list
16
+ #{@@command_name} process clear
17
+ #{@@command_name} send string <uri> <string>
18
+ #{@@command_name} send file <uri> <path>
19
+ #{@@command_name} initialize
20
+
21
+ HELP
22
+
23
+ def initialize
24
+ super(DRbQS::Setting::Manage, HELP_MESSAGE)
25
+ end
26
+
27
+ def parse_option(argv)
28
+ argv = option_parser_base(argv, :debug => true) do
29
+ end
30
+ setting.set_argument(*argv)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ module DRbQS
2
+ class Command
3
+ class Node < DRbQS::Command::Base
4
+ HELP_MESSAGE =<<HELP
5
+ Usage: #{@@command_name} <uri> [options ...]
6
+ Start DRbQS nodes connecting to <uri>.
7
+
8
+ HELP
9
+
10
+ def initialize
11
+ super(DRbQS::Setting::Node, HELP_MESSAGE)
12
+ end
13
+
14
+ def parse_option(argv)
15
+ argv = option_parser_base(argv, :log_level => true, :daemon => true, :debug => true) do
16
+ set(:load, '-l', '--load FILE', String, 'Add a file to load.')
17
+ set(:process, '-P', '--process NUM', Integer, 'Set the number of node processes to execute.')
18
+ set(:loadavg, '--loadavg STR', String, 'Set the threshold load average to sleep.')
19
+ set(:log_prefix, '--log-prefix STR', String, "Set the prefix of log files. The default is '#{setting.default[:log_prefix][0]}'.")
20
+ set(:log_stdout, '--log-stdout', 'Use stdout for outputting logs. This option cancels --log-prefix.')
21
+ end
22
+ setting.set_argument(*argv)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ module DRbQS
2
+ class Command
3
+ class Server < DRbQS::Command::Base
4
+ @@command_name = File.basename($PROGRAM_NAME)
5
+
6
+ HELP_MESSAGE =<<HELP
7
+ Usage: #{@@command_name} <definition.rb> [other files ...] [options ...]
8
+ #{@@command_name} <definition.rb> [other files ...] [options ...] -- [server options ...]
9
+ Start DRbQS server of definition files.
10
+
11
+ HELP
12
+
13
+ def initialize
14
+ super(DRbQS::Setting::Server, HELP_MESSAGE)
15
+ end
16
+
17
+ def parse_option(argv)
18
+ command_argv, server_argv = split_arguments(argv)
19
+
20
+ command_argv = option_parser_base(command_argv, :log_level => true, :daemon => true, :debug => true) do
21
+ set(:port, '-p PORT', '--port', Integer, 'Set the port number of server.')
22
+ set(:unix, '-u PATH', '--unix', String, 'Set the path of unix domain socket.')
23
+ set(:acl, '--acl FILE', String, 'Set a file to define ACL.')
24
+ set(:log_file, '--log-file STR', String, "Set the path of log file. If this options is not set, use STDOUT.")
25
+ set(:sftp_user, '--sftp-user USER', String, 'Set the user of sftp destination.')
26
+ set(:sftp_host, '--sftp-host HOST', String, 'Set the host of sftp destination.')
27
+ set(:profile, '--profile', 'Use profile for test exec.')
28
+ set(:profile_printer, '--profile-printer PRINTER', String,
29
+ 'Set the printer type for profile. The value is :flat, :graph, :graphhtml, or :calltree.')
30
+ set(:test, '--test STR', String, 'Execute test.')
31
+ set(:execute_node, '--execute-node NUM', Integer, 'Execute nodes.')
32
+ set(:help, '-h', '--help', 'Show this command help and server specific help.') do |opt|
33
+ $stdout.print opt
34
+ end
35
+ end
36
+ setting.set_argument(*command_argv)
37
+ setting.set_server_argument(*server_argv)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,51 @@
1
+ module DRbQS
2
+ class Command
3
+ class SSH < DRbQS::Command::Base
4
+ HELP_MESSAGE =<<HELP
5
+ Usage: #{@@command_name} <command> [arguments ...]
6
+ Execute command over SSH.
7
+ <command> is 'list', 'show', 'environment', 'execute', 'server', or 'node'.
8
+
9
+ #{@@command_name} list
10
+ #{@@command_name} show <configuration>
11
+ #{@@command_name} environment <destination>
12
+ #{@@command_name} execute <destination> [options ...] -- [arguments ...]
13
+ #{@@command_name} server <destination> [options ...] -- [arguments ...]
14
+ #{@@command_name} node <destination> [options ...] -- [arguments ...]
15
+
16
+ HELP
17
+
18
+ def initialize
19
+ super(DRbQS::Setting::SSH, HELP_MESSAGE)
20
+ end
21
+
22
+ def parse_option(argv)
23
+ args, mode_args = split_arguments(argv)
24
+ args = option_parser_base(args, :debug => true) do |opt|
25
+ set(:directory, '-d DIR', '--directory DIR', String, 'Set the base directory over ssh.')
26
+ set(:shell, '--shell STR', String, 'Set the shell over ssh')
27
+ set(:rvm, '--rvm STR', String, 'Ruby version to use on RVM over ssh.')
28
+ set(:rvm_init, '--rvm-init PATH', String, 'Path of script to initialize RVM over ssh.')
29
+ set(:output, '-o DIR', '--output DIR', String, 'Directory path that a server and nodes output.')
30
+ set(:nice, '--nice NUM', Integer, 'Set the value of nice for a server and nodes. The default is 10.')
31
+ end
32
+ setting.set_argument(*args)
33
+ case setting.get_argument[0]
34
+ when 'server'
35
+ parser = DRbQS::Command::Server.new
36
+ parser.parse_option(mode_args)
37
+ setting.mode_setting = parser.setting
38
+ when 'node'
39
+ parser = DRbQS::Command::Node.new
40
+ parser.parse_option(mode_args)
41
+ setting.mode_setting = parser.setting
42
+ when 'execute'
43
+ setting.configure_mode_setting(:execute) do |mode_setting|
44
+ mode_setting.argument.concat(mode_args)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+
@@ -0,0 +1,42 @@
1
+ module DRbQS
2
+ class Command
3
+ class OptionSetting
4
+ attr_reader :setting
5
+
6
+ def initialize(help_message, setting)
7
+ @opt_parser = OptionParser.new(help_message)
8
+ @setting = setting
9
+ end
10
+
11
+ def set(*args, &block)
12
+ unless @setting
13
+ raise "Not in method 'define'."
14
+ end
15
+ @opt_parser.on(*args[1..-1]) do |v|
16
+ @setting.set(args[0], v)
17
+ if block_given?
18
+ yield(@opt_parser)
19
+ end
20
+ end
21
+ end
22
+
23
+ def define(options = {}, &block)
24
+ instance_eval(&block) if block_given?
25
+ if options[:log_level]
26
+ set(:log_level, '--log-level LEVEL', String,
27
+ "Set the log level. The value accepts 'fatal', 'error', 'warn', 'info', and 'debug'. The default is 'error'.")
28
+ end
29
+ if options[:daemon]
30
+ set(:daemon, '--daemon OUT', String, 'Execute as daemon and set output file for stdout and stderr.')
31
+ end
32
+ if options[:debug]
33
+ set(:debug, '--debug', 'Set $DEBUG true.')
34
+ end
35
+ end
36
+
37
+ def parse!(argv)
38
+ @opt_parser.parse!(argv)
39
+ end
40
+ end
41
+ end
42
+ end