Class: SimpleMapReduce::Server::JobWorker
- Inherits:
-
Sinatra::Base
- Object
- Sinatra::Base
- SimpleMapReduce::Server::JobWorker
- Defined in:
- lib/simple_map_reduce/server/job_worker.rb
Class Attribute Summary collapse
-
.worker ⇒ Object
readonly
Returns the value of attribute worker.
-
.worker_id ⇒ Object
readonly
Returns the value of attribute worker_id.
Class Method Summary collapse
- .check_s3_access ⇒ Object
- .http_client ⇒ Object
- .job_manager ⇒ Object
- .logger ⇒ Object
- .quit! ⇒ Object
- .register_myself_to_job_tracker ⇒ Object
- .s3_client ⇒ Object
- .setup_worker ⇒ Object
Class Attribute Details
.worker ⇒ Object (readonly)
Returns the value of attribute worker.
66 67 68 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 66 def worker @worker end |
.worker_id ⇒ Object (readonly)
Returns the value of attribute worker_id.
65 66 67 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 65 def worker_id @worker_id end |
Class Method Details
.check_s3_access ⇒ Object
78 79 80 81 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 78 def check_s3_access s3_client.list_buckets logger.info('[OK] s3 connection test') end |
.http_client ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 102 def http_client @http_client ||= ::Faraday.new( url: SimpleMapReduce.job_tracker_url, headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json' } ) do |faraday| faraday.response :raise_error faraday.adapter Faraday.default_adapter end end |
.job_manager ⇒ Object
98 99 100 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 98 def job_manager @job_manager ||= ::Rasteira::EmbedWorker::Manager.run end |
.logger ⇒ Object
119 120 121 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 119 def logger SimpleMapReduce.logger end |
.quit! ⇒ Object
125 126 127 128 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 125 def quit! job_manager&.shutdown_workers! super end |
.register_myself_to_job_tracker ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 83 def register_myself_to_job_tracker response = http_client.post do |request| request.url('/workers') request.body = { url: SimpleMapReduce.job_worker_url }.to_json end body = JSON.parse(response.body, symbolize_names: true) @worker_id = body[:id] @worker = SimpleMapReduce::Server::Worker.new( id: @worker_id, url: SimpleMapReduce.job_worker_url ) logger.info("[OK] registering this worker to the job_tracker #{SimpleMapReduce.job_worker_url}") end |
.s3_client ⇒ Object
115 116 117 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 115 def s3_client SimpleMapReduce::S3Client.instance.client end |
.setup_worker ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/simple_map_reduce/server/job_worker.rb', line 68 def setup_worker check_s3_access register_myself_to_job_tracker job_manager logger.info('All setup process is done successfully. This worker is operation ready.') logger.info("This job worker url: #{SimpleMapReduce.job_worker_url}, id: #{worker_id}") logger.info("This job worker status url: #{SimpleMapReduce.job_worker_url}/workers/#{worker_id}") logger.info("The job tracker url: #{SimpleMapReduce.job_tracker_url}") end |