hive-runner 2.0.14 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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