Class: DRbQS::ProcessDefinition::Register
- Inherits:
-
Object
- Object
- DRbQS::ProcessDefinition::Register
- Defined in:
- lib/drbqs/execute/register.rb
Instance Attribute Summary collapse
-
#__default__ ⇒ Array
readonly
A hash of key and value.
-
#__node__ ⇒ Array
readonly
Keys of the hash are :type, :template, :ssh, :setting, and :args.
-
#__server__ ⇒ Array
readonly
Keys of the hash are :type, :template, :ssh, :setting, and :args.
-
#__usage__ ⇒ Array
readonly
A hash of key and value.
Instance Method Summary collapse
- #__load__(path) ⇒ Object
- #clear_node(*args) ⇒ Object
- #clear_server(*args) ⇒ Object
-
#default(val = {}) ⇒ Object
We can set default server, default port, and default directory to output log.
- #default_clear(*keys) ⇒ Object
-
#initialize ⇒ Register
constructor
A new instance of Register.
-
#node(name, opts = {}, &block) ⇒ Object
To set properties of nodes we can use the similar options to the command 'drbqs-node'.
-
#server(name, *args, &block) ⇒ Object
To set properties of server we can use the similar options to the command 'drbqs-server'.
-
#usage(opts = {}) ⇒ Object
We can set some messages shown by drbqs-execute -h.
Constructor Details
#initialize ⇒ Register
Returns a new instance of Register.
11 12 13 14 15 16 |
# File 'lib/drbqs/execute/register.rb', line 11 def initialize @__server__ = [] @__node__ = [] @__default__ = {} @__usage__ = {} end |
Instance Attribute Details
#__default__ ⇒ Array (readonly)
Returns a hash of key and value.
9 10 11 |
# File 'lib/drbqs/execute/register.rb', line 9 def __default__ @__default__ end |
#__node__ ⇒ Array (readonly)
Keys of the hash are :type, :template, :ssh, :setting, and :args.
6 7 8 |
# File 'lib/drbqs/execute/register.rb', line 6 def __node__ @__node__ end |
#__server__ ⇒ Array (readonly)
Keys of the hash are :type, :template, :ssh, :setting, and :args.
6 7 8 |
# File 'lib/drbqs/execute/register.rb', line 6 def __server__ @__server__ end |
#__usage__ ⇒ Array (readonly)
Returns a hash of key and value.
9 10 11 |
# File 'lib/drbqs/execute/register.rb', line 9 def __usage__ @__usage__ end |
Instance Method Details
#__load__(path) ⇒ Object
296 297 298 |
# File 'lib/drbqs/execute/register.rb', line 296 def __load__(path) instance_eval(File.read(path), path) end |
#clear_node(*args) ⇒ Object
250 251 252 253 254 255 256 |
# File 'lib/drbqs/execute/register.rb', line 250 def clear_node(*args) args.each do |arg| @__node__.delete_if do |name, data| name == arg.intern end end end |
#clear_server(*args) ⇒ Object
239 240 241 242 243 244 245 |
# File 'lib/drbqs/execute/register.rb', line 239 def clear_server(*args) args.each do |arg| @__server__.delete_if do |name, data| name == arg.intern end end end |
#default(val = {}) ⇒ Object
We can set default server, default port, and default directory to output log.
265 266 267 268 269 270 271 272 273 274 275 276 |
# File 'lib/drbqs/execute/register.rb', line 265 def default(val = {}) val.delete_if { |key, v| !v } if val[:server] val[:server] = val[:server].intern end if val[:port] val[:port] = val[:port].to_i end raise "Invalid default value for :node." if val.has_key?(:node) && !(Array === val[:node]) raise "Invalid default value for :log." if val.has_key?(:log) && !(String === val[:log]) @__default__.merge!(val) end |
#default_clear(*keys) ⇒ Object
280 281 282 283 284 |
# File 'lib/drbqs/execute/register.rb', line 280 def default_clear(*keys) keys.each do |key| @__default__.delete(key) end end |
#node(name, opts = {}, &block) ⇒ Object
To set properties of nodes we can use the similar options to the command 'drbqs-node'. When we execute a server over ssh, we can use the similar options to the command 'drbqs-ssh' Exceptionally, we can set a ssh server by 'connect' method. If we omit the 'connect' method then the program tries to connect the name specified as first argument.
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
# File 'lib/drbqs/execute/register.rb', line 205 def node(name, opts = {}, &block) name = name.intern load_def = opts[:load] if ind = @__node__.index { |n, data| name == n } old_data = @__node__.delete_at(ind) if (opts[:group] && old_data[1][:type] != :group) || (!opts[:group] && old_data[1][:type] == :group) raise ArgumentError, "Change type of definition on reconfiguring." elsif (!opts[:group] && load_def) raise ArgumentError, "Can not set both reconfiguring and loading." end load_def = old_data[1][:setting] else old_data = nil end if opts[:group] unless Array === opts[:group] raise ":group must be an array of node names." end data = { :type => :group, :template => true, :ssh => nil, :setting => nil, :args => opts[:group].map(&:intern) } @__node__ << [name, data] elsif block_given? __register_node__(opts[:template], name, load_def, &block) else raise ArgumentError, "Block to define settings is not given." end end |
#server(name, *args, &block) ⇒ Object
To set properties of server we can use the similar options to the command 'drbqs-server'. When we execute a server over ssh, we can use the similar options to the command 'drbqs-ssh' Exceptionally, we can set files to load by 'load' method and set a ssh server by 'connect' method. If we omit the 'connect' method then the program tries to connect the name specified as first argument.
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/drbqs/execute/register.rb', line 123 def server(name, *args, &block) name = name.intern if ind = @__server__.index { |n, data| name == n } old_data = @__server__.delete_at(ind) else old_data = nil end unless block_given? raise ArgumentError, "Block to define settings is not given." end case args.size when 2 hostname = args[0] opts = args[1] unless Hash === opts raise ArgumentError, "Options must be hash." end when 1 if Hash === args[0] hostname = nil opts = args[0] else hostname = args[0] opts = {} end else unless old_data raise ArgumentError, "Invalid argument size." end end if old_data if opts[:load] raise ArgumentError, "Can not set both reconfiguring and loading." end load_def = old_data[1][:setting] hostname = old_data[1][:args][0] if !hostname else load_def = opts[:load] end if !opts[:template] && !hostname raise ArgumentError, "Definition of server '#{name}' needs hostname." end __register_server__(opts[:template], name, load_def, hostname, &block) end |
#usage(opts = {}) ⇒ Object
We can set some messages shown by drbqs-execute -h.
292 293 294 |
# File 'lib/drbqs/execute/register.rb', line 292 def usage(opts = {}) @__usage__.merge!(opts) end |