nomade 0.1.5 → 0.1.6

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
- SHA1:
3
- metadata.gz: '01428dbe6cc66511139a3e23eb6b7cbe73e13a2f'
4
- data.tar.gz: 0dc34d653cfc6eea29047dd74d190cae23926905
2
+ SHA256:
3
+ metadata.gz: 768219b7b7d377ec2de09fe3230cb34637841bd53aec49ef68a7ad01a97b57bf
4
+ data.tar.gz: 13cc5e6ffd82d49247e65092ac8270beae7e942374f87cc37de39240f126e0c7
5
5
  SHA512:
6
- metadata.gz: 1a893f7d20cf72b23b8f6026e650e698dd7e0c44890fc07564c152a100d3a5d812b569a514706820583f22fdb93f1e5cda1544e4cf2d31b3386755d554f9a3c5
7
- data.tar.gz: 44c819b4f3bbffb8312f3daba2c55f7cd63840063cabf94e7fe71a4e92b23e17476574975c87ddd73e6a2cd8c59e629d0e8e11c1460a069c2063a57e970dc557
6
+ metadata.gz: 326a7ea66c3182410714d671305f97cb9fcb2a8fc3b63545c5a814508cdfd559316d2d76b11e9e80247fb86821f6f5924b9454762e7d40000487e3daf154e23f
7
+ data.tar.gz: 5f72400e42707128c066a188d90ced7791fbe104af2ef00062e89d62f253d27dd5287500a8e9ee41daf6c44febfd220644c5d1fe445f74eb013c5a4f5fb1f4c1
@@ -12,6 +12,9 @@ module Nomade
12
12
 
13
13
  @timeout = opts.fetch(:timeout, 60 * 3)
14
14
 
15
+ @linger = opts.fetch(:linger, 8..28)
16
+ raise GeneralError.new("Linger needs to be a range, supplied with: #{@linger.class}") unless @linger.class == Range
17
+
15
18
  @hooks = {
16
19
  Nomade::Hooks::DEPLOY_RUNNING => [],
17
20
  Nomade::Hooks::DEPLOY_FINISHED => [],
@@ -21,20 +24,18 @@ module Nomade
21
24
  Nomade::Hooks::DISPATCH_FINISHED => [],
22
25
  Nomade::Hooks::DISPATCH_FAILED => [],
23
26
  }
24
- add_hook(Nomade::Hooks::DEPLOY_FAILED, lambda {|hook_type, nomad_job, messages|
27
+ add_hook(Nomade::Hooks::DEPLOY_FAILED, lambda {|_hook_type, _nomad_job, messages|
25
28
  @logger.error "Failing deploy:"
26
29
  messages.each do |message|
27
30
  @logger.error "- #{message}"
28
31
  end
29
32
  })
30
- add_hook(Nomade::Hooks::DISPATCH_FAILED, lambda {|hook_type, nomad_job, messages|
33
+ add_hook(Nomade::Hooks::DISPATCH_FAILED, lambda {|_hook_type, _nomad_job, messages|
31
34
  @logger.error "Failing dispatch:"
32
35
  messages.each do |message|
33
36
  @logger.error "- #{message}"
34
37
  end
35
38
  })
36
-
37
- self
38
39
  end
39
40
 
40
41
  def init_job(template_file, image_full_name, template_variables = {})
@@ -155,6 +156,8 @@ module Nomade
155
156
  end
156
157
 
157
158
  def stop!(purge = false)
159
+ check_for_job_init
160
+
158
161
  @http.stop_job(@nomad_job, purge)
159
162
  end
160
163
 
@@ -183,7 +186,7 @@ module Nomade
183
186
  @logger.info "Checking cluster for connectivity and capacity.."
184
187
  plan_data = @http.plan_job(@nomad_job)
185
188
 
186
- sum_of_changes = plan_data["Annotations"]["DesiredTGUpdates"].map { |group_name, task_group_updates|
189
+ sum_of_changes = plan_data["Annotations"]["DesiredTGUpdates"].map { |_group_name, task_group_updates|
187
190
  task_group_updates["Stop"] +
188
191
  task_group_updates["Place"] +
189
192
  task_group_updates["Migrate"] +
@@ -356,7 +359,7 @@ module Nomade
356
359
  end
357
360
 
358
361
  @logger.info "Checking cluster for connectivity and capacity.."
359
- plan_data = @http.plan_job(@nomad_job)
362
+ _plan_data = @http.plan_job(@nomad_job)
360
363
 
361
364
  dispatch_job = @http.dispatch_job(@nomad_job, payload_data: payload_data, payload_metadata: payload_metadata)
362
365
  @evaluation_id = dispatch_job["EvalID"]
@@ -398,7 +401,6 @@ module Nomade
398
401
 
399
402
  announced_completed = []
400
403
  promoted = false
401
- failed = false
402
404
  succesful_deployment = nil
403
405
  while(succesful_deployment == nil) do
404
406
  json = @http.deployment_request(@deployment_id)
@@ -408,9 +410,9 @@ module Nomade
408
410
 
409
411
  desired_canaries = task_data["DesiredCanaries"]
410
412
  desired_total = task_data["DesiredTotal"]
411
- placed_allocations = task_data["PlacedAllocs"]
413
+ _placed_allocations = task_data["PlacedAllocs"]
412
414
  healthy_allocations = task_data["HealthyAllocs"]
413
- unhealthy_allocations = task_data["UnhealthyAllocs"]
415
+ _unhealthy_allocations = task_data["UnhealthyAllocs"]
414
416
 
415
417
  if manual_work_required
416
418
  @logger.info "#{json["ID"]} #{task_name}: #{healthy_allocations}/#{desired_canaries}/#{desired_total} (Healthy/WantedCanaries/Total)"
@@ -435,7 +437,7 @@ module Nomade
435
437
 
436
438
  if succesful_deployment == nil && json["TaskGroups"].values.all?{|tg| tg["HealthyAllocs"] >= tg["DesiredCanaries"]}
437
439
  if !promoted
438
- random_linger = rand(8..28)
440
+ random_linger = rand(@linger)
439
441
  @logger.info "Lingering around for #{random_linger} seconds before deployment.."
440
442
  sleep(random_linger)
441
443
 
@@ -504,7 +506,7 @@ module Nomade
504
506
 
505
507
  tasks = get_tasks(allocations)
506
508
  upcoming_tasks = get_upcoming_tasks(tasks)
507
- succesful_tasks = get_succesful_tasks(tasks)
509
+ _succesful_tasks = get_succesful_tasks(tasks)
508
510
  failed_tasks = get_failed_tasks(tasks)
509
511
 
510
512
  if upcoming_tasks.size == 0
data/lib/nomade/http.rb CHANGED
@@ -90,7 +90,7 @@ module Nomade
90
90
  "DeploymentID" => deployment_id,
91
91
  "All" => true,
92
92
  }.to_json
93
- res_body = _request(:post, "/v1/deployment/promote/#{deployment_id}", body: req_body)
93
+ _request(:post, "/v1/deployment/promote/#{deployment_id}", body: req_body)
94
94
 
95
95
  return true
96
96
  rescue StandardError => e
@@ -99,7 +99,7 @@ module Nomade
99
99
  end
100
100
 
101
101
  def fail_deployment(deployment_id)
102
- res_body = _request(:post, "/v1/deployment/fail/#{deployment_id}")
102
+ _request(:post, "/v1/deployment/fail/#{deployment_id}")
103
103
  return true
104
104
  rescue StandardError => e
105
105
  Nomade.logger.fatal "HTTP Request failed (#{e.message})"
@@ -125,7 +125,7 @@ module Nomade
125
125
  end
126
126
 
127
127
  true
128
- rescue Nomade::FailedTaskGroupPlan => e
128
+ rescue Nomade::FailedTaskGroupPlan
129
129
  raise
130
130
  rescue StandardError => e
131
131
  Nomade.logger.fatal "HTTP Request failed (#{e.message})"
@@ -162,7 +162,7 @@ module Nomade
162
162
  req_body = JSON.generate({
163
163
  "Payload": payload_data,
164
164
  "Meta": payload_metadata,
165
- }.delete_if { |k, v| v.nil? })
165
+ }.delete_if { |_k, v| v.nil? })
166
166
 
167
167
  res_body = _request(:post, "/v1/job/#{nomad_job.job_name}/dispatch", body: req_body)
168
168
  JSON.parse(res_body)
@@ -197,6 +197,7 @@ module Nomade
197
197
  else
198
198
  raise "#{request_type} not supported"
199
199
  end
200
+
200
201
  req.add_field "Content-Type", "application/json"
201
202
  req.body = body if body
202
203
 
@@ -209,7 +210,7 @@ module Nomade
209
210
  sleep 1
210
211
  retry
211
212
  else
212
- raise HttpConnectionError.new("#{e.class.to_s} - #{e.message}")
213
+ raise HttpConnectionError.new("#{e.class} - #{e.message}")
213
214
  end
214
215
  end
215
216
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nomade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Grubbe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2020-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yell
@@ -114,8 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
- rubyforge_project:
118
- rubygems_version: 2.6.14.4
117
+ rubygems_version: 3.1.2
119
118
  signing_key:
120
119
  specification_version: 4
121
120
  summary: Gem that deploys nomad jobs