container_broker 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +98 -0
  3. data/Rakefile +8 -0
  4. data/app/controllers/application_controller.rb +5 -0
  5. data/app/controllers/healthcheck_controller.rb +21 -0
  6. data/app/controllers/nodes_controller.rb +70 -0
  7. data/app/controllers/nodes_healthcheck_controller.rb +28 -0
  8. data/app/controllers/status_controller.rb +48 -0
  9. data/app/controllers/tasks_controller.rb +83 -0
  10. data/app/controllers/tasks_healthcheck_controller.rb +28 -0
  11. data/app/jobs/add_task_tags_job.rb +13 -0
  12. data/app/jobs/adjust_node_slots_job.rb +27 -0
  13. data/app/jobs/application_job.rb +9 -0
  14. data/app/jobs/collect_load_metrics_job.rb +9 -0
  15. data/app/jobs/container_broker_base_job.rb +32 -0
  16. data/app/jobs/migrate_tasks_from_dead_node_job.rb +32 -0
  17. data/app/jobs/monitor_unresponsive_node_job.rb +21 -0
  18. data/app/jobs/monitor_unresponsive_nodes_job.rb +9 -0
  19. data/app/jobs/release_slot_job.rb +47 -0
  20. data/app/jobs/remove_runner_job.rb +11 -0
  21. data/app/jobs/remove_unused_tags_job.rb +25 -0
  22. data/app/jobs/request_id_from_task.rb +7 -0
  23. data/app/jobs/run_task_job.rb +64 -0
  24. data/app/jobs/run_tasks_for_all_execution_types_job.rb +11 -0
  25. data/app/jobs/run_tasks_job.rb +42 -0
  26. data/app/jobs/timeout_failed_tasks_job.rb +31 -0
  27. data/app/jobs/update_all_nodes_status_job.rb +9 -0
  28. data/app/jobs/update_node_status_job.rb +24 -0
  29. data/app/jobs/update_task_status_job.rb +71 -0
  30. data/app/models/mongoid_serializable_model.rb +14 -0
  31. data/app/models/node.rb +101 -0
  32. data/app/models/slot.rb +42 -0
  33. data/app/models/task.rb +148 -0
  34. data/app/models/task_tag.rb +11 -0
  35. data/app/observers/observable.rb +23 -0
  36. data/app/observers/task_observer.rb +11 -0
  37. data/app/serializers/node_healthcheck_serializer.rb +5 -0
  38. data/app/serializers/node_serializer.rb +5 -0
  39. data/app/serializers/status_panel_node_serializer.rb +9 -0
  40. data/app/serializers/status_panel_slot_serializer.rb +5 -0
  41. data/app/serializers/status_panel_task_serializer.rb +16 -0
  42. data/app/serializers/task_healthcheck_serializer.rb +5 -0
  43. data/app/serializers/task_serializer.rb +7 -0
  44. data/app/services/adjust_execution_type_slots.rb +51 -0
  45. data/app/services/check_for_slot_removal.rb +28 -0
  46. data/app/services/collect_load_metrics.rb +40 -0
  47. data/app/services/delete_node.rb +25 -0
  48. data/app/services/friendly_name_nodes.rb +10 -0
  49. data/app/services/friendly_name_slots.rb +15 -0
  50. data/app/services/kill_node_runners.rb +17 -0
  51. data/app/services/kill_task_container.rb +29 -0
  52. data/app/services/kubernetes_client.rb +136 -0
  53. data/app/services/least_used_node.rb +44 -0
  54. data/app/services/lock_manager.rb +74 -0
  55. data/app/services/lock_slot.rb +37 -0
  56. data/app/services/lock_task.rb +45 -0
  57. data/app/services/metrics.rb +43 -0
  58. data/app/services/migrate_runner.rb +26 -0
  59. data/app/services/node_task_acceptance.rb +18 -0
  60. data/app/services/node_usage_percentage_per_execution_type.rb +22 -0
  61. data/app/services/reschedule_tasks_for_missing_runners.rb +70 -0
  62. data/app/services/runners.rb +4 -0
  63. data/app/services/runners/docker/create_connection.rb +18 -0
  64. data/app/services/runners/docker/create_execution_info.rb +87 -0
  65. data/app/services/runners/docker/fetch_execution_info.rb +17 -0
  66. data/app/services/runners/docker/fetch_logs.rb +18 -0
  67. data/app/services/runners/docker/fetch_task_container.rb +15 -0
  68. data/app/services/runners/docker/filer.rb +19 -0
  69. data/app/services/runners/docker/kill_slot_runner.rb +19 -0
  70. data/app/services/runners/docker/node_availability.rb +11 -0
  71. data/app/services/runners/docker/remove_runner.rb +18 -0
  72. data/app/services/runners/docker/run_task.rb +63 -0
  73. data/app/services/runners/docker/update_node_status.rb +62 -0
  74. data/app/services/runners/execution_info.rb +49 -0
  75. data/app/services/runners/invalid_config.rb +5 -0
  76. data/app/services/runners/invalid_runner.rb +5 -0
  77. data/app/services/runners/kubernetes/create_client.rb +29 -0
  78. data/app/services/runners/kubernetes/create_execution_info.rb +103 -0
  79. data/app/services/runners/kubernetes/fetch_execution_info.rb +15 -0
  80. data/app/services/runners/kubernetes/fetch_logs.rb +17 -0
  81. data/app/services/runners/kubernetes/filer.rb +41 -0
  82. data/app/services/runners/kubernetes/kill_slot_runner.rb +11 -0
  83. data/app/services/runners/kubernetes/node_availability.rb +11 -0
  84. data/app/services/runners/kubernetes/remove_runner.rb +19 -0
  85. data/app/services/runners/kubernetes/run_task.rb +54 -0
  86. data/app/services/runners/kubernetes/update_node_status.rb +64 -0
  87. data/app/services/runners/runner_id_not_found_error.rb +5 -0
  88. data/app/services/runners/services_factory.rb +38 -0
  89. data/app/services/runners/update_node_status_helper.rb +43 -0
  90. data/app/services/slots_usage_percentage.rb +18 -0
  91. data/config/application.rb +34 -0
  92. data/config/boot.rb +5 -0
  93. data/config/environment.rb +7 -0
  94. data/config/environments/test.rb +44 -0
  95. data/config/initializers/application_controller_renderer.rb +10 -0
  96. data/config/initializers/backtrace_silencers.rb +9 -0
  97. data/config/initializers/config.rb +51 -0
  98. data/config/initializers/cookies_serializer.rb +7 -0
  99. data/config/initializers/docker_config.rb +3 -0
  100. data/config/initializers/filter_parameter_logging.rb +6 -0
  101. data/config/initializers/idempotent_request.rb +12 -0
  102. data/config/initializers/inflections.rb +18 -0
  103. data/config/initializers/mime_types.rb +6 -0
  104. data/config/initializers/mongoid.rb +3 -0
  105. data/config/initializers/new_framework_defaults_6_0.rb +47 -0
  106. data/config/initializers/raven.rb +10 -0
  107. data/config/initializers/sidekiq.rb +24 -0
  108. data/config/initializers/wrap_parameters.rb +16 -0
  109. data/config/locales/en.yml +33 -0
  110. data/config/mongoid.yml +10 -0
  111. data/config/routes.rb +43 -0
  112. data/config/secrets.yml +35 -0
  113. data/config/settings.yml +34 -0
  114. data/config/settings/test.yml +27 -0
  115. data/config/sidekiq_scheduler.yml +18 -0
  116. data/config/spring.rb +8 -0
  117. data/lib/constants.rb +12 -0
  118. data/lib/container_broker.rb +30 -0
  119. data/lib/container_broker/engine.rb +6 -0
  120. data/lib/container_broker/version.rb +5 -0
  121. data/lib/current_thread_request_id.rb +19 -0
  122. data/lib/idempotent_request/callback.rb +25 -0
  123. data/lib/idempotent_request/policy.rb +15 -0
  124. data/lib/redis_url_parser.rb +25 -0
  125. data/lib/tasks/task.rake +34 -0
  126. metadata +590 -0
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CurrentThreadRequestId
4
+ ATTRIBUTE = "request_id"
5
+
6
+ def self.get
7
+ Thread.current[ATTRIBUTE]
8
+ end
9
+
10
+ def self.set(value)
11
+ throw "no block given" unless block_given?
12
+
13
+ Thread.current[ATTRIBUTE] = value
14
+
15
+ yield
16
+ ensure
17
+ Thread.current[ATTRIBUTE] = nil
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IdempotentRequest
4
+ class Callback
5
+ attr_reader :request
6
+
7
+ def initialize(request)
8
+ @request = request
9
+ end
10
+
11
+ def detected(key:)
12
+ Rails.logger.warn "IdempotentRequest request detected, #{message_params(key: key)}"
13
+ end
14
+
15
+ def message_params(key:)
16
+ {
17
+ key: key,
18
+ method: request.request.request_method,
19
+ path: request.request.path_info
20
+ }
21
+ .map { |k, v| "#{k}: #{v}" }
22
+ .join(", ")
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IdempotentRequest
4
+ class Policy
5
+ attr_reader :request
6
+
7
+ def initialize(request)
8
+ @request = request
9
+ end
10
+
11
+ def should?
12
+ !request.request.get?
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RedisUrlParser
4
+ def self.call(uri)
5
+ return { url: uri } unless uri.start_with?("sentinel")
6
+
7
+ m = uri.match("sentinel://:([^@]*)@([^/]*)/service_name:(.*)")
8
+ password = m[1]
9
+ sentinel_uris = m[2]
10
+ name = m[3]
11
+ url = "redis://:#{password}@#{name}"
12
+ sentinels = sentinel_uris.split(",").map do |sentinel_uri|
13
+ host, port = sentinel_uri.split(":")
14
+ {
15
+ host: host,
16
+ port: port
17
+ }
18
+ end
19
+
20
+ {
21
+ url: url,
22
+ sentinels: sentinels
23
+ }
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :task do
4
+ desc "Generate random tasks for testing"
5
+ task :random_generate, %i[amount max_sleep] => [:environment] do |_task, args|
6
+ amount = args.fetch(:amount, 500).to_i
7
+ max_sleep = args.fetch(:max_sleep, 30).to_i
8
+
9
+ execution_types = Slot
10
+ .where(node_id: { '$in': Node.available.pluck(:id) })
11
+ .pluck(:execution_type)
12
+ .uniq
13
+
14
+ raise "No slots available" if execution_types.empty?
15
+
16
+ puts "Creating #{amount} tasks with max_sleep #{max_sleep}"
17
+ amount.to_i.times do |index|
18
+ print "."
19
+ random_sleep = rand(max_sleep)
20
+ execution_type = execution_types.sample
21
+ Task.create!(
22
+ name: "task-#{index}-sleep-#{random_sleep}-#{execution_type}",
23
+ image: "busybox",
24
+ cmd: "sleep #{random_sleep}",
25
+ execution_type: execution_type,
26
+ tags: {
27
+ type: 'test'
28
+ },
29
+ persist_logs: true
30
+ )
31
+ end
32
+ puts "\n Done!!"
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,590 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: container_broker
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Douglas Lise
8
+ - Mateus Nava
9
+ - João Vieira
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2020-10-07 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: 6.0.3
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 6.0.3.2
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - "~>"
30
+ - !ruby/object:Gem::Version
31
+ version: 6.0.3
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 6.0.3.2
35
+ - !ruby/object:Gem::Dependency
36
+ name: mongoid
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ - !ruby/object:Gem::Dependency
50
+ name: mongoid_enumerable
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: byebug
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ - !ruby/object:Gem::Dependency
78
+ name: fabrication
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec-rails
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 4.0.0
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 4.0.0
105
+ - !ruby/object:Gem::Dependency
106
+ name: database_cleaner
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ - !ruby/object:Gem::Dependency
120
+ name: rspec-collection_matchers
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: rspec-json_expectations
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: rspec-nc
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ - !ruby/object:Gem::Dependency
162
+ name: listen
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: 3.0.5
168
+ - - "<"
169
+ - !ruby/object:Gem::Version
170
+ version: '3.2'
171
+ type: :development
172
+ prerelease: false
173
+ version_requirements: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: 3.0.5
178
+ - - "<"
179
+ - !ruby/object:Gem::Version
180
+ version: '3.2'
181
+ - !ruby/object:Gem::Dependency
182
+ name: spring
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: spring-commands-rspec
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: spring-watcher-listen
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: 2.0.0
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 2.0.0
223
+ - !ruby/object:Gem::Dependency
224
+ name: guard-rspec
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rubocop
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: bundler-audit
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: active_model_serializers
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: config
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: idempotent-request
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :runtime
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: kubeclient
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :runtime
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: mongoid-uuid
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :runtime
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
+ - !ruby/object:Gem::Dependency
336
+ name: redis-namespace
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">="
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ type: :runtime
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - ">="
347
+ - !ruby/object:Gem::Version
348
+ version: '0'
349
+ - !ruby/object:Gem::Dependency
350
+ name: sentry-raven
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - ">="
354
+ - !ruby/object:Gem::Version
355
+ version: '0'
356
+ type: :runtime
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - ">="
361
+ - !ruby/object:Gem::Version
362
+ version: '0'
363
+ - !ruby/object:Gem::Dependency
364
+ name: sidekiq
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - ">="
368
+ - !ruby/object:Gem::Version
369
+ version: '0'
370
+ type: :runtime
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - ">="
375
+ - !ruby/object:Gem::Version
376
+ version: '0'
377
+ - !ruby/object:Gem::Dependency
378
+ name: sidekiq-failures
379
+ requirement: !ruby/object:Gem::Requirement
380
+ requirements:
381
+ - - ">="
382
+ - !ruby/object:Gem::Version
383
+ version: '0'
384
+ type: :runtime
385
+ prerelease: false
386
+ version_requirements: !ruby/object:Gem::Requirement
387
+ requirements:
388
+ - - ">="
389
+ - !ruby/object:Gem::Version
390
+ version: '0'
391
+ - !ruby/object:Gem::Dependency
392
+ name: sidekiq-scheduler
393
+ requirement: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - ">="
396
+ - !ruby/object:Gem::Version
397
+ version: '0'
398
+ type: :runtime
399
+ prerelease: false
400
+ version_requirements: !ruby/object:Gem::Requirement
401
+ requirements:
402
+ - - ">="
403
+ - !ruby/object:Gem::Version
404
+ version: '0'
405
+ - !ruby/object:Gem::Dependency
406
+ name: docker-api
407
+ requirement: !ruby/object:Gem::Requirement
408
+ requirements:
409
+ - - ">="
410
+ - !ruby/object:Gem::Version
411
+ version: '0'
412
+ type: :runtime
413
+ prerelease: false
414
+ version_requirements: !ruby/object:Gem::Requirement
415
+ requirements:
416
+ - - ">="
417
+ - !ruby/object:Gem::Version
418
+ version: '0'
419
+ - !ruby/object:Gem::Dependency
420
+ name: measures
421
+ requirement: !ruby/object:Gem::Requirement
422
+ requirements:
423
+ - - ">="
424
+ - !ruby/object:Gem::Version
425
+ version: '0'
426
+ type: :runtime
427
+ prerelease: false
428
+ version_requirements: !ruby/object:Gem::Requirement
429
+ requirements:
430
+ - - ">="
431
+ - !ruby/object:Gem::Version
432
+ version: '0'
433
+ description: ContainerBroker
434
+ email:
435
+ - douglaslise@gmail.com
436
+ - nava.mateus@gmail.com
437
+ - joaocv3@gmail.com
438
+ executables: []
439
+ extensions: []
440
+ extra_rdoc_files: []
441
+ files:
442
+ - README.md
443
+ - Rakefile
444
+ - app/controllers/application_controller.rb
445
+ - app/controllers/healthcheck_controller.rb
446
+ - app/controllers/nodes_controller.rb
447
+ - app/controllers/nodes_healthcheck_controller.rb
448
+ - app/controllers/status_controller.rb
449
+ - app/controllers/tasks_controller.rb
450
+ - app/controllers/tasks_healthcheck_controller.rb
451
+ - app/jobs/add_task_tags_job.rb
452
+ - app/jobs/adjust_node_slots_job.rb
453
+ - app/jobs/application_job.rb
454
+ - app/jobs/collect_load_metrics_job.rb
455
+ - app/jobs/container_broker_base_job.rb
456
+ - app/jobs/migrate_tasks_from_dead_node_job.rb
457
+ - app/jobs/monitor_unresponsive_node_job.rb
458
+ - app/jobs/monitor_unresponsive_nodes_job.rb
459
+ - app/jobs/release_slot_job.rb
460
+ - app/jobs/remove_runner_job.rb
461
+ - app/jobs/remove_unused_tags_job.rb
462
+ - app/jobs/request_id_from_task.rb
463
+ - app/jobs/run_task_job.rb
464
+ - app/jobs/run_tasks_for_all_execution_types_job.rb
465
+ - app/jobs/run_tasks_job.rb
466
+ - app/jobs/timeout_failed_tasks_job.rb
467
+ - app/jobs/update_all_nodes_status_job.rb
468
+ - app/jobs/update_node_status_job.rb
469
+ - app/jobs/update_task_status_job.rb
470
+ - app/models/mongoid_serializable_model.rb
471
+ - app/models/node.rb
472
+ - app/models/slot.rb
473
+ - app/models/task.rb
474
+ - app/models/task_tag.rb
475
+ - app/observers/observable.rb
476
+ - app/observers/task_observer.rb
477
+ - app/serializers/node_healthcheck_serializer.rb
478
+ - app/serializers/node_serializer.rb
479
+ - app/serializers/status_panel_node_serializer.rb
480
+ - app/serializers/status_panel_slot_serializer.rb
481
+ - app/serializers/status_panel_task_serializer.rb
482
+ - app/serializers/task_healthcheck_serializer.rb
483
+ - app/serializers/task_serializer.rb
484
+ - app/services/adjust_execution_type_slots.rb
485
+ - app/services/check_for_slot_removal.rb
486
+ - app/services/collect_load_metrics.rb
487
+ - app/services/delete_node.rb
488
+ - app/services/friendly_name_nodes.rb
489
+ - app/services/friendly_name_slots.rb
490
+ - app/services/kill_node_runners.rb
491
+ - app/services/kill_task_container.rb
492
+ - app/services/kubernetes_client.rb
493
+ - app/services/least_used_node.rb
494
+ - app/services/lock_manager.rb
495
+ - app/services/lock_slot.rb
496
+ - app/services/lock_task.rb
497
+ - app/services/metrics.rb
498
+ - app/services/migrate_runner.rb
499
+ - app/services/node_task_acceptance.rb
500
+ - app/services/node_usage_percentage_per_execution_type.rb
501
+ - app/services/reschedule_tasks_for_missing_runners.rb
502
+ - app/services/runners.rb
503
+ - app/services/runners/docker/create_connection.rb
504
+ - app/services/runners/docker/create_execution_info.rb
505
+ - app/services/runners/docker/fetch_execution_info.rb
506
+ - app/services/runners/docker/fetch_logs.rb
507
+ - app/services/runners/docker/fetch_task_container.rb
508
+ - app/services/runners/docker/filer.rb
509
+ - app/services/runners/docker/kill_slot_runner.rb
510
+ - app/services/runners/docker/node_availability.rb
511
+ - app/services/runners/docker/remove_runner.rb
512
+ - app/services/runners/docker/run_task.rb
513
+ - app/services/runners/docker/update_node_status.rb
514
+ - app/services/runners/execution_info.rb
515
+ - app/services/runners/invalid_config.rb
516
+ - app/services/runners/invalid_runner.rb
517
+ - app/services/runners/kubernetes/create_client.rb
518
+ - app/services/runners/kubernetes/create_execution_info.rb
519
+ - app/services/runners/kubernetes/fetch_execution_info.rb
520
+ - app/services/runners/kubernetes/fetch_logs.rb
521
+ - app/services/runners/kubernetes/filer.rb
522
+ - app/services/runners/kubernetes/kill_slot_runner.rb
523
+ - app/services/runners/kubernetes/node_availability.rb
524
+ - app/services/runners/kubernetes/remove_runner.rb
525
+ - app/services/runners/kubernetes/run_task.rb
526
+ - app/services/runners/kubernetes/update_node_status.rb
527
+ - app/services/runners/runner_id_not_found_error.rb
528
+ - app/services/runners/services_factory.rb
529
+ - app/services/runners/update_node_status_helper.rb
530
+ - app/services/slots_usage_percentage.rb
531
+ - config/application.rb
532
+ - config/boot.rb
533
+ - config/environment.rb
534
+ - config/environments/test.rb
535
+ - config/initializers/application_controller_renderer.rb
536
+ - config/initializers/backtrace_silencers.rb
537
+ - config/initializers/config.rb
538
+ - config/initializers/cookies_serializer.rb
539
+ - config/initializers/docker_config.rb
540
+ - config/initializers/filter_parameter_logging.rb
541
+ - config/initializers/idempotent_request.rb
542
+ - config/initializers/inflections.rb
543
+ - config/initializers/mime_types.rb
544
+ - config/initializers/mongoid.rb
545
+ - config/initializers/new_framework_defaults_6_0.rb
546
+ - config/initializers/raven.rb
547
+ - config/initializers/sidekiq.rb
548
+ - config/initializers/wrap_parameters.rb
549
+ - config/locales/en.yml
550
+ - config/mongoid.yml
551
+ - config/routes.rb
552
+ - config/secrets.yml
553
+ - config/settings.yml
554
+ - config/settings/test.yml
555
+ - config/sidekiq_scheduler.yml
556
+ - config/spring.rb
557
+ - lib/constants.rb
558
+ - lib/container_broker.rb
559
+ - lib/container_broker/engine.rb
560
+ - lib/container_broker/version.rb
561
+ - lib/current_thread_request_id.rb
562
+ - lib/idempotent_request/callback.rb
563
+ - lib/idempotent_request/policy.rb
564
+ - lib/redis_url_parser.rb
565
+ - lib/tasks/task.rake
566
+ homepage: https://github.com/globocom/container-broker
567
+ licenses:
568
+ - MIT
569
+ metadata:
570
+ allowed_push_host: https://rubygems.org/
571
+ post_install_message:
572
+ rdoc_options: []
573
+ require_paths:
574
+ - lib
575
+ required_ruby_version: !ruby/object:Gem::Requirement
576
+ requirements:
577
+ - - ">="
578
+ - !ruby/object:Gem::Version
579
+ version: '0'
580
+ required_rubygems_version: !ruby/object:Gem::Requirement
581
+ requirements:
582
+ - - ">="
583
+ - !ruby/object:Gem::Version
584
+ version: '0'
585
+ requirements: []
586
+ rubygems_version: 3.1.2
587
+ signing_key:
588
+ specification_version: 4
589
+ summary: ContainerBroker
590
+ test_files: []