hive-runner 2.0.14 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7188b2673a183397d180bc4dfb841ed0c990996d
4
- data.tar.gz: c67ad66325a1def914aa3f4ec6ad207a456551a2
3
+ metadata.gz: bd60ba528c05643c7e7671ec3cda937d892b3173
4
+ data.tar.gz: 69fc74e7976bcf4456853f84957b1d96396e941d
5
5
  SHA512:
6
- metadata.gz: a7bd3661e74d00d97dd6eda1c055e7c23888718bae401ac9798357771067c1225cede769966a9a5518d8c7bb475c2e85700810789ed0f9488382669ad1737e97
7
- data.tar.gz: 8606ffe8c43ee9aab9af2ea346dd5817377c5a6660486ae12925ba5efb50fc8cbdff3a4fda711f7675da3aeed2cd2b3b8f585d3b99357ebbe0f89b584fe789ff
6
+ metadata.gz: bea4560f9262e4091e2ac8205f381340da3c05ac18bfd36913a4d6c89b38a4aee55a409b68dce0df70d96c32f49cb651363a4d090c928aac9c053e72180d6e96
7
+ data.tar.gz: 3bfb69a49c02058d6c1ac65e4c3d9a8b12bed9e2a6696623368ff6ccaa9183e201b182aaea9406e4c0612ee0e17a874ceb17c0a29c7cab337c5d9fef085503bc
data/lib/hive/device.rb CHANGED
@@ -25,7 +25,7 @@ module Hive
25
25
  @worker_pid = Process.fork do
26
26
  object = Object
27
27
  @worker_class.split('::').each { |sub| object = object.const_get(sub) }
28
- object.new(@options.merge('parent_pid' => parent_pid, 'device_identity' => self.identity, 'port_allocator' => self.port_allocator))
28
+ object.new(@options.merge('parent_pid' => parent_pid, 'device_identity' => self.identity, 'port_allocator' => self.port_allocator, 'hive_id' => Hive.hive_mind.device_details['id']))
29
29
  end
30
30
  Process.detach @worker_pid
31
31
 
@@ -5,12 +5,17 @@ module Hive
5
5
  # The Shell worker
6
6
  class Shell < Worker
7
7
  def initialize(options = {})
8
- @devicedb_register = false
9
8
  super
10
9
  end
11
10
 
12
11
  def pre_script(job, file_system, script)
13
12
  end
13
+
14
+ # List of autogenerated queues for the worker
15
+ def autogenerated_queues
16
+ @options['queues']
17
+ end
18
+
14
19
  end
15
20
  end
16
21
  end
data/lib/hive/worker.rb CHANGED
@@ -29,6 +29,7 @@ module Hive
29
29
  @options = options
30
30
  @parent_pid = @options['parent_pid']
31
31
  @device_id = @options['id']
32
+ @hive_id = @options['hive_id']
32
33
  @hive_mind ||= mind_meld_klass.new(
33
34
  url: Chamber.env.network.hive_mind? ? Chamber.env.network.hive_mind : nil,
34
35
  pem: Chamber.env.network.cert ? Chamber.env.network.cert : nil,
@@ -44,12 +45,7 @@ module Hive
44
45
  "#{LOG_DIRECTORY}/#{pid}.#{@device_identity}.log",
45
46
  Hive.config.logging.worker_level || 'INFO'
46
47
  )
47
- @devicedb_register = true if @devicedb_register.nil?
48
48
 
49
- # When DeviceDB is dumped in favour of Hive Mind the 'queues' argument
50
- # will not be passed in and instead be generated by the
51
- # autogenerated_queues method
52
- @queues = @options['queues'].class == Array ? @options['queues'] : []
53
49
  self.update_queues
54
50
 
55
51
  @port_allocator = (@options.has_key?('port_allocator') ? @options['port_allocator'] : Hive::PortAllocator.new(ports: []))
@@ -121,7 +117,8 @@ module Hive
121
117
  end
122
118
 
123
119
  def reservation_details
124
- { hive_id: Hive.id, worker_pid: Process.pid }
120
+ @log.debug "Reservations details: hive_id=#{@hive_id}, worker_pid=#{Process.pid}"
121
+ { hive_id: @hive_id, worker_pid: Process.pid }
125
122
  end
126
123
 
127
124
  # Execute a job
@@ -255,30 +252,12 @@ module Hive
255
252
  end
256
253
 
257
254
  def update_queues
258
- if @devicedb_register
259
- details = Hive.devicedb('Device').find(@options['id'])
260
- @log.debug("Device details: #{details.inspect}")
261
-
262
- if details['device_queues']
263
- new_queues = details['device_queues'].collect do |queue_details|
264
- queue_details['name']
265
- end
266
- if @queues.sort != new_queues.sort
267
- @log.info("Updated queue list: #{new_queues.join(', ')}")
268
- @queues = new_queues
269
- end
270
- update_queue_log
271
- else
272
- @log.warn("Queue list missing from DeviceDB response")
273
- end
274
- end
275
-
276
255
  # Get Queues from Hive Mind
277
- #@log.debug("Getting queues from Hive Mind")
278
- #@queues = (autogenerated_queues + @hive_mind.hive_queues(true)).uniq
279
- #@log.debug("hive queues: #{@hive_mind.hive_queues}")
280
- #@log.debug("Full list of queues: #{@queues}")
281
- #update_queue_log
256
+ @log.debug("Getting queues from Hive Mind")
257
+ @queues = (autogenerated_queues + @hive_mind.hive_queues(true)).uniq
258
+ @log.debug("hive queues: #{@hive_mind.hive_queues}")
259
+ @log.debug("Full list of queues: #{@queues}")
260
+ update_queue_log
282
261
  end
283
262
 
284
263
  def update_queue_log
data/lib/hive.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'chamber'
2
2
  require 'hive/log'
3
3
  require 'hive/register'
4
- require 'devicedb_comms'
5
4
  require 'mind_meld/hive'
6
5
  require 'macaddr'
7
6
  require 'socket'
@@ -33,12 +32,6 @@ module Hive
33
32
  fail 'Missing logging section in configuration file'
34
33
  end
35
34
 
36
- DeviceDBComms.configure do |config|
37
- config.url = Chamber.env.network.devicedb
38
- config.pem_file = Chamber.env.network.cert
39
- config.ssl_verify_mode = OpenSSL::SSL::VERIFY_NONE
40
- end
41
-
42
35
  Airbrake.configure do |config|
43
36
  config.host = Chamber.env.errbit.host
44
37
  config.project_id = Chamber.env.errbit.project_id
@@ -63,11 +56,6 @@ module Hive
63
56
  @logger
64
57
  end
65
58
 
66
- def self.devicedb(section)
67
- @devicedb = {} if ! @devicedb.kind_of?(Hash)
68
- @devicedb[section] ||= Object.const_get('DeviceDBComms').const_get(section).new()
69
- end
70
-
71
59
  def self.hive_mind
72
60
  Hive.logger.debug "Sysname: #{Sys::Uname.sysname}"
73
61
  Hive.logger.debug "Release: #{Sys::Uname.release}"
@@ -95,45 +83,9 @@ module Hive
95
83
  @register ||= Hive::Register.new
96
84
  end
97
85
 
98
- # Get the id of the hive from the device database
99
- def self.id
100
- if ! @devicedb_id
101
- Hive.logger.info "Attempting to register the hive as #{Hive.hostname}"
102
- register_response = self.devicedb('Hive').register(Hive.hostname, Hive.mac_address, Hive.ip_address)
103
- if register_response['error'].present?
104
- Hive.logger.warn 'Hive failed to register'
105
- Hive.logger.warn " - #{register_response['error']}"
106
- else
107
- Hive.logger.info "Hive registered with id #{register_response['id']}"
108
- @devicedb_id = register_response['id']
109
- end
110
- end
111
- @devicedb_id || -1
112
- end
113
-
114
86
  # Poll the device database
115
87
  def self.poll
116
- # DeviceDB
117
- id = self.id
118
- if id and id > 0
119
- Hive.logger.debug "Polling hive: #{id}"
120
- rtn = Hive.devicedb('Hive').poll(id)
121
- Hive.logger.debug "Return data: #{rtn}"
122
- if rtn['error'].present?
123
- Hive.logger.warn "Hive polling failed: #{rtn['error']}"
124
- else
125
- Hive.logger.info "Successfully polled hive"
126
- end
127
- else
128
- if id
129
- Hive.logger.debug "Skipping polling of hive"
130
- else
131
- Hive.logger.warn "Unable to poll hive"
132
- end
133
- end
134
-
135
- # Hive Mind
136
- Hive.logger.debug "Polling hive: #{id}"
88
+ Hive.logger.debug "Polling hive"
137
89
  rtn = Hive.hive_mind.poll
138
90
  Hive.logger.debug "Return data: #{rtn}"
139
91
  if rtn['error'].present?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hive-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.14
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Haig