Class: DTR::Configuration
- Includes:
- Service::Rinda, Singleton
- Defined in:
- lib/dtr/shared/configuration.rb
Overview
DTR Configuration includes:
For both master & agent process:
* broadcast_list: broadcast ip list for looking for dtr services(agent and DTR master rinda server).
* group: grouping agents for specific usage, master process should specify same group for catching agents to work
For master process:
* rinda_server_port: DTR would automatically detect unused port for master rinda server. The default port is 3344.
* master_heartbeat_interval: master process heartbeat for keeping agents working. The default is 10 sec.
For agent process:
* agent_listen_port: agent listen master process command port, the default port is 7788.
* follower_listen_heartbeat_timeout: agents would be going to sleep if listening master heartbeat timeout. The default is 15 sec.
All configurations except rinda_server_port would be stored into pstore file .dtr_env_pstore in the DTR process launching directory.
Instance Attribute Summary collapse
-
#agent_env_setup_cmd ⇒ Object
Returns the value of attribute agent_env_setup_cmd.
-
#agent_listen_port ⇒ Object
Returns the value of attribute agent_listen_port.
-
#agent_runners ⇒ Object
Returns the value of attribute agent_runners.
-
#broadcast_list ⇒ Object
Returns the value of attribute broadcast_list.
-
#follower_listen_heartbeat_timeout ⇒ Object
Returns the value of attribute follower_listen_heartbeat_timeout.
-
#group ⇒ Object
Returns the value of attribute group.
-
#master_heartbeat_interval ⇒ Object
Returns the value of attribute master_heartbeat_interval.
-
#rinda_server_port ⇒ Object
Returns the value of attribute rinda_server_port.
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #load ⇒ Object
- #lookup_ring_any ⇒ Object
- #refresh ⇒ Object
- #save ⇒ Object
- #with_rinda_server(&block) ⇒ Object
- #working_env ⇒ Object
- #working_env=(env) ⇒ Object
Methods included from Service::Rinda
#lookup, #lookup_ring, #start_service, #stop_service
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
47 48 49 50 |
# File 'lib/dtr/shared/configuration.rb', line 47 def initialize @store = EnvStore.new load end |
Instance Attribute Details
#agent_env_setup_cmd ⇒ Object
Returns the value of attribute agent_env_setup_cmd.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def agent_env_setup_cmd @agent_env_setup_cmd end |
#agent_listen_port ⇒ Object
Returns the value of attribute agent_listen_port.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def agent_listen_port @agent_listen_port end |
#agent_runners ⇒ Object
Returns the value of attribute agent_runners.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def agent_runners @agent_runners end |
#broadcast_list ⇒ Object
Returns the value of attribute broadcast_list.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def broadcast_list @broadcast_list end |
#follower_listen_heartbeat_timeout ⇒ Object
Returns the value of attribute follower_listen_heartbeat_timeout.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def follower_listen_heartbeat_timeout @follower_listen_heartbeat_timeout end |
#group ⇒ Object
Returns the value of attribute group.
45 46 47 |
# File 'lib/dtr/shared/configuration.rb', line 45 def group @group end |
#master_heartbeat_interval ⇒ Object
Returns the value of attribute master_heartbeat_interval.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def master_heartbeat_interval @master_heartbeat_interval end |
#rinda_server_port ⇒ Object
Returns the value of attribute rinda_server_port.
44 45 46 |
# File 'lib/dtr/shared/configuration.rb', line 44 def rinda_server_port @rinda_server_port end |
Instance Method Details
#load ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/dtr/shared/configuration.rb', line 58 def load # always have 'localhost' in broadcast_list, for our master process would start rinda server locally, # and dtr should work well on local machine when the machine leaves dtr grid network environment. @broadcast_list = ['localhost'].concat(@store[:broadcast_list] || []).uniq @rinda_server_port = @store[:rinda_server_port] || 3344 @agent_listen_port = @store[:agent_listen_port] || 7788 @master_heartbeat_interval = @store[:master_heartbeat_interval] || 10 @follower_listen_heartbeat_timeout = @store[:follower_listen_heartbeat_timeout] || 15 @group = @store[:group] @agent_env_setup_cmd = @store[:agent_env_setup_cmd] @agent_runners = @store[:agent_runners] end |
#lookup_ring_any ⇒ Object
112 113 114 |
# File 'lib/dtr/shared/configuration.rb', line 112 def lookup_ring_any @ring ||= __lookup_ring_any__ end |
#refresh ⇒ Object
52 53 54 55 56 |
# File 'lib/dtr/shared/configuration.rb', line 52 def refresh @store.destroy if @store @store = EnvStore.new load end |
#save ⇒ Object
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/dtr/shared/configuration.rb', line 71 def save @store[:broadcast_list] = @broadcast_list @store[:rinda_server_port] = @rinda_server_port @store[:agent_listen_port] = @agent_listen_port @store[:master_heartbeat_interval] = @master_heartbeat_interval @store[:follower_listen_heartbeat_timeout] = @follower_listen_heartbeat_timeout @store[:group] = @group @store[:agent_env_setup_cmd] = @agent_env_setup_cmd @store[:agent_runners] = @agent_runners end |
#with_rinda_server(&block) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/dtr/shared/configuration.rb', line 94 def with_rinda_server(&block) DTR.do_println("Booting DTR service") start_service DTR.info {'-- Booting DTR Rinda server'} loop do begin Rinda::RingServer.new Rinda::TupleSpace.new, @rinda_server_port break rescue Errno::EADDRINUSE @rinda_server_port += 1 end end DTR.info {"-- DTR Rinda server started on port #{@rinda_server_port}"} block.call ensure stop_service rescue nil end |
#working_env ⇒ Object
82 83 84 |
# File 'lib/dtr/shared/configuration.rb', line 82 def working_env @store[:working_env] end |
#working_env=(env) ⇒ Object
86 87 88 |
# File 'lib/dtr/shared/configuration.rb', line 86 def working_env=(env) @store[:working_env] = env end |