Class: SimpleMapReduce::Server::JobWorker

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/simple_map_reduce/server/job_worker.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.worker_idObject

Returns the value of attribute worker_id.



36
37
38
# File 'lib/simple_map_reduce/server/job_worker.rb', line 36

def worker_id
  @worker_id
end

Class Method Details

.check_s3_accessObject



47
48
49
50
# File 'lib/simple_map_reduce/server/job_worker.rb', line 47

def check_s3_access
  s3_client.list_buckets
  logger.info('[OK] s3 connection test')
end

.http_clientObject



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/simple_map_reduce/server/job_worker.rb', line 67

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_managerObject



63
64
65
# File 'lib/simple_map_reduce/server/job_worker.rb', line 63

def job_manager
  @job_manager ||= ::Rasteira::EmbedWorker::Manager.run
end

.loggerObject



84
85
86
# File 'lib/simple_map_reduce/server/job_worker.rb', line 84

def logger
  SimpleMapReduce.logger
end

.quit!Object



89
90
91
92
# File 'lib/simple_map_reduce/server/job_worker.rb', line 89

def quit!
  job_manager.shutdown_workers!
  super
end

.register_myself_to_job_trackerObject



52
53
54
55
56
57
58
59
60
61
# File 'lib/simple_map_reduce/server/job_worker.rb', line 52

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)
  self.worker_id = body[:id]
  logger.info("[OK] registering this worker to the job_tracker #{SimpleMapReduce.job_worker_url}")
end

.s3_clientObject



80
81
82
# File 'lib/simple_map_reduce/server/job_worker.rb', line 80

def s3_client
  SimpleMapReduce::S3Client.instance.client
end

.setup_workerObject



38
39
40
41
42
43
44
45
# File 'lib/simple_map_reduce/server/job_worker.rb', line 38

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("The job tracker url: #{SimpleMapReduce.job_tracker_url}")
end