barbeque 2.8.0 → 2.9.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
  SHA256:
3
- metadata.gz: febc8fb62981217cb94e9614ebe9c303045555802bb010890ff796ae94024996
4
- data.tar.gz: 10953be24a7344776dfee42281a7de2004b6abbfefb10b8b994f26fc4a6b8ec6
3
+ metadata.gz: 7d5e37ff72ac6ed67071323a08ab28f43f33ae77c122aa6b209f2595b2ce6ddf
4
+ data.tar.gz: c490c08d35500bd1d5c4525a304cb523e459791324d7b6db423c2a681e68e1c6
5
5
  SHA512:
6
- metadata.gz: 30d5b1f6ca098e0c932cf27266b30e2f24c50a08de8475c53fa8cc3d480b06e58ccb30a6aa26df7bc3e5672196f2f91f6f2ead8815ce27f1fca23402ea04d259
7
- data.tar.gz: bdd41760b5cc5e1f04e24bd2ca3626d7b71839a381c308ccc3477579e35a12e175177e4772ab3f992187bb2e7ec73e270a4a09f1daeedf1c5080801b86c41857
6
+ metadata.gz: 1881c7c91adf7dbc78317684d91aa24b6bd1c26118449564cf050f16e0fae6a807a46e553b3f9b363a4aaff8bc2292f8b9d52d8aa9382bf5103efd6eb2925074
7
+ data.tar.gz: 8ad58ebb5f384041e5ec1ec63766f24560fc5910b0f124b3b7b46bdc9cd0a540e799f774adf1814e60dee2dc8305fb06d84703ae52dfc5b8f0890b660ebe7eb7
@@ -60,7 +60,7 @@ class Barbeque::JobDefinitionsController < Barbeque::ApplicationController
60
60
  def destroy
61
61
  @job_definition = Barbeque::JobDefinition.find(params[:id])
62
62
  @job_definition.sns_subscriptions.each do |sns_subscription|
63
- Barbeque::SNSSubscriptionService.new.unsubscribe(sns_subscription)
63
+ Barbeque::SnsSubscriptionService.new.unsubscribe(sns_subscription)
64
64
  end
65
65
  @job_definition.destroy
66
66
  redirect_to job_definitions_url, notice: 'Job definition was successfully destroyed.'
@@ -1,24 +1,24 @@
1
1
  class Barbeque::SnsSubscriptionsController < Barbeque::ApplicationController
2
2
  def index
3
- @sns_subscriptions = Barbeque::SNSSubscription.all
3
+ @sns_subscriptions = Barbeque::SnsSubscription.all
4
4
  end
5
5
 
6
6
  def show
7
- @sns_subscription = Barbeque::SNSSubscription.find(params[:id])
7
+ @sns_subscription = Barbeque::SnsSubscription.find(params[:id])
8
8
  end
9
9
 
10
10
  def new
11
11
  @sns_topic_arns = fetch_sns_topic_arns
12
- @sns_subscription = Barbeque::SNSSubscription.new
12
+ @sns_subscription = Barbeque::SnsSubscription.new
13
13
  end
14
14
 
15
15
  def edit
16
- @sns_subscription = Barbeque::SNSSubscription.find(params[:id])
16
+ @sns_subscription = Barbeque::SnsSubscription.find(params[:id])
17
17
  end
18
18
 
19
19
  def create
20
- @sns_subscription = Barbeque::SNSSubscription.new(params.require(:sns_subscription).permit(:topic_arn, :job_queue_id, :job_definition_id))
21
- if Barbeque::SNSSubscriptionService.new.subscribe(@sns_subscription)
20
+ @sns_subscription = Barbeque::SnsSubscription.new(params.require(:sns_subscription).permit(:topic_arn, :job_queue_id, :job_definition_id))
21
+ if Barbeque::SnsSubscriptionService.new.subscribe(@sns_subscription)
22
22
  redirect_to @sns_subscription, notice: 'SNS subscription was successfully created.'
23
23
  else
24
24
  @sns_topic_arns = fetch_sns_topic_arns
@@ -27,7 +27,7 @@ class Barbeque::SnsSubscriptionsController < Barbeque::ApplicationController
27
27
  end
28
28
 
29
29
  def update
30
- @sns_subscription = Barbeque::SNSSubscription.find(params[:id])
30
+ @sns_subscription = Barbeque::SnsSubscription.find(params[:id])
31
31
  if @sns_subscription.update(params.require(:sns_subscription).permit(:job_definition_id))
32
32
  redirect_to @sns_subscription, notice: 'SNS subscription was successfully updated.'
33
33
  else
@@ -36,14 +36,14 @@ class Barbeque::SnsSubscriptionsController < Barbeque::ApplicationController
36
36
  end
37
37
 
38
38
  def destroy
39
- sns_subscription = Barbeque::SNSSubscription.find(params[:id])
40
- Barbeque::SNSSubscriptionService.new.unsubscribe(sns_subscription)
39
+ sns_subscription = Barbeque::SnsSubscription.find(params[:id])
40
+ Barbeque::SnsSubscriptionService.new.unsubscribe(sns_subscription)
41
41
  redirect_to sns_subscriptions_path, notice: 'SNS subscription was successfully destroyed.'
42
42
  end
43
-
43
+
44
44
  private
45
45
 
46
46
  def fetch_sns_topic_arns
47
- Barbeque::SNSSubscriptionService.sns_client.list_topics.flat_map(&:topics).map(&:topic_arn)
47
+ Barbeque::SnsSubscriptionService.sns_client.list_topics.flat_map(&:topics).map(&:topic_arn)
48
48
  end
49
49
  end
@@ -1,7 +1,7 @@
1
1
  class Barbeque::JobDefinition < Barbeque::ApplicationRecord
2
2
  belongs_to :app
3
3
  has_many :job_executions
4
- has_many :sns_subscriptions, class_name: 'SNSSubscription'
4
+ has_many :sns_subscriptions
5
5
  has_one :slack_notification, dependent: :destroy
6
6
  has_one :retry_config, dependent: :destroy
7
7
 
@@ -5,7 +5,7 @@ class Barbeque::JobQueue < Barbeque::ApplicationRecord
5
5
  SQS_NAME_MAX_LENGTH = 80
6
6
 
7
7
  has_many :job_executions
8
- has_many :sns_subscriptions, class_name: 'SNSSubscription', dependent: :destroy
8
+ has_many :sns_subscriptions, dependent: :destroy
9
9
 
10
10
  # SQS queue allows [a-zA-Z0-9_-]+ as queue name. Its maximum length is 80.
11
11
  validates :name, presence: true, uniqueness: true, format: /\A[a-zA-Z0-9_-]+\z/,
@@ -1,5 +1,5 @@
1
1
  module Barbeque
2
- class SNSSubscription < ApplicationRecord
2
+ class SnsSubscription < ApplicationRecord
3
3
  belongs_to :job_queue
4
4
  belongs_to :job_definition
5
5
  has_one :app, through: :job_definition
@@ -1,7 +1,7 @@
1
1
  require 'aws-sdk-sns'
2
2
  require 'aws-sdk-sqs'
3
3
 
4
- class Barbeque::SNSSubscriptionService
4
+ class Barbeque::SnsSubscriptionService
5
5
  def self.sqs_client
6
6
  @sqs_client ||= Aws::SQS::Client.new
7
7
  end
@@ -10,7 +10,7 @@ class Barbeque::SNSSubscriptionService
10
10
  @sns_client ||= Aws::SNS::Client.new
11
11
  end
12
12
 
13
- # @param [Barbeque::SNSSubscription] sns_subscription
13
+ # @param [Barbeque::SnsSubscription] sns_subscription
14
14
  # @return [Boolean] `true` if succeeded to subscribe
15
15
  def subscribe(sns_subscription)
16
16
  if sns_subscription.valid?
@@ -20,10 +20,10 @@ class Barbeque::SNSSubscriptionService
20
20
  update_sqs_policy!(sns_subscription)
21
21
  true
22
22
  rescue Aws::SNS::Errors::AuthorizationError
23
- sns_subscription.errors[:topic_arn] << 'is not authorized'
23
+ sns_subscription.errors.add(:topic_arn, 'is not authorized')
24
24
  false
25
25
  rescue Aws::SNS::Errors::NotFound
26
- sns_subscription.errors[:topic_arn] << 'is not found'
26
+ sns_subscription.errors.add(:topic_arn, 'is not found')
27
27
  false
28
28
  end
29
29
  else
@@ -31,7 +31,7 @@ class Barbeque::SNSSubscriptionService
31
31
  end
32
32
  end
33
33
 
34
- # @param [Barbeque::SNSSubscription] sns_subscription
34
+ # @param [Barbeque::SnsSubscription] sns_subscription
35
35
  def unsubscribe(sns_subscription)
36
36
  sns_subscription.destroy
37
37
  update_sqs_policy!(sns_subscription)
@@ -42,14 +42,14 @@ class Barbeque::SNSSubscriptionService
42
42
  private
43
43
 
44
44
  def sqs_client
45
- Barbeque::SNSSubscriptionService.sqs_client
45
+ Barbeque::SnsSubscriptionService.sqs_client
46
46
  end
47
47
 
48
48
  def sns_client
49
- Barbeque::SNSSubscriptionService.sns_client
49
+ Barbeque::SnsSubscriptionService.sns_client
50
50
  end
51
51
 
52
- # @param [Barbeque::SNSSubscription] sns_subscription
52
+ # @param [Barbeque::SnsSubscription] sns_subscription
53
53
  def update_sqs_policy!(sns_subscription)
54
54
  attrs = sqs_client.get_queue_attributes(
55
55
  queue_url: sns_subscription.job_queue.queue_url,
@@ -90,7 +90,7 @@ class Barbeque::SNSSubscriptionService
90
90
  }.to_json
91
91
  end
92
92
 
93
- # @param [Barbeque::SNSSubscription] sns_subscription
93
+ # @param [Barbeque::SnsSubscription] sns_subscription
94
94
  def subscribe_topic!(sns_subscription)
95
95
  sqs_attrs = sqs_client.get_queue_attributes(
96
96
  queue_url: sns_subscription.job_queue.queue_url,
@@ -105,7 +105,7 @@ class Barbeque::SNSSubscriptionService
105
105
  )
106
106
  end
107
107
 
108
- # @param [Barbeque::SNSSubscription] sns_subscription
108
+ # @param [Barbeque::SnsSubscription] sns_subscription
109
109
  def unsubscribe_topic!(sns_subscription)
110
110
  sqs_attrs = sqs_client.get_queue_attributes(
111
111
  queue_url: sns_subscription.job_queue.queue_url,
@@ -0,0 +1,34 @@
1
+ # In MySQL 8.0, the default collation for utf8mb4 is changed to utf8mb4_0900_ai_ci.
2
+ # The column collations are utf8mb4_0900_ai_ci after we ran migrations prior to this
3
+ # on MySQL 8.0 because we did not specify collation in create_table (thus the default is used).
4
+ # This happens on testing/development but we want to keep utf8mb4_general_ci.
5
+ #
6
+ # Note that running this should not affect the actual schema and data
7
+ # unless you've ran prior migrations on MySQL 8.0.
8
+ class FixCollations < ActiveRecord::Migration[6.1]
9
+ def change
10
+ reversible do |direction|
11
+ direction.up do
12
+ # alter column collations and default collation of every tables defined to utf8mb4_general_ci
13
+ execute 'ALTER TABLE barbeque_apps CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
14
+ execute 'ALTER TABLE barbeque_docker_containers CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
15
+ execute 'ALTER TABLE barbeque_ecs_hako_tasks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
16
+ execute 'ALTER TABLE barbeque_job_executions CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
17
+ execute 'ALTER TABLE barbeque_job_queues CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
18
+ execute 'ALTER TABLE barbeque_job_retries CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
19
+ execute 'ALTER TABLE barbeque_retry_configs CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
20
+ execute 'ALTER TABLE barbeque_slack_notifications CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
21
+ execute 'ALTER TABLE barbeque_sns_subscriptions CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
22
+
23
+ # barbeque_job_definitions contains a column with explicitly specified collation
24
+ execute 'ALTER TABLE barbeque_job_definitions DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'
25
+ change_column :barbeque_job_definitions, :command, :string, collation: 'utf8mb4_general_ci'
26
+ change_column :barbeque_job_definitions, :description, :text, collation: 'utf8mb4_general_ci'
27
+ end
28
+
29
+ direction.down do
30
+ raise ActiveRecord::IrreversibleMigration
31
+ end
32
+ end
33
+ end
34
+ end
@@ -51,5 +51,32 @@ module Barbeque
51
51
  ::Raven.capture_exception(e)
52
52
  end
53
53
  end
54
+
55
+ class Sentry
56
+ def initialize
57
+ ::Sentry.get_current_hub.push_scope
58
+ end
59
+
60
+ def clear_context
61
+ ::Sentry.get_current_hub.pop_scope
62
+ ::Sentry.get_current_hub.push_scope
63
+ end
64
+
65
+ # @param [String] message_id
66
+ # @param [String, nil] message_type
67
+ def set_message_context(message_id, message_type)
68
+ ::Sentry.configure_scope do |scope|
69
+ scope.set_tags(
70
+ message_id: message_id,
71
+ message_type: message_type
72
+ )
73
+ end
74
+ end
75
+
76
+ # @param [Exception] e
77
+ def handle_exception(e)
78
+ ::Sentry.capture_exception(e)
79
+ end
80
+ end
54
81
  end
55
82
  end
@@ -9,7 +9,7 @@ module Barbeque
9
9
  class DockerCommandError < StandardError
10
10
  end
11
11
 
12
- def initialize(_options)
12
+ def initialize(**)
13
13
  end
14
14
 
15
15
  # @param [Barbeque::JobExecution] job_execution
@@ -18,7 +18,7 @@ module Barbeque
18
18
  # @param [String] yaml_dir (deprecated: renamed to definition_dir)
19
19
  def initialize(hako_dir:, hako_env: {}, yaml_dir: nil, definition_dir: nil, oneshot_notification_prefix:)
20
20
  @hako_dir = hako_dir
21
- @hako_env = hako_env
21
+ @hako_env = hako_env.stringify_keys
22
22
  @definition_dir =
23
23
  if definition_dir
24
24
  definition_dir
@@ -23,7 +23,7 @@ module Barbeque
23
23
  module Executor
24
24
  def self.create
25
25
  klass = const_get(Barbeque.config.executor, false)
26
- klass.new(Barbeque.config.executor_options)
26
+ klass.new(**Barbeque.config.executor_options)
27
27
  end
28
28
  end
29
29
  end
@@ -8,7 +8,7 @@ module Barbeque
8
8
  attr_reader :application # [String] To specify `job_definitions.app.name`
9
9
  attr_reader :job # [String] To specify `job_definitions.job`
10
10
 
11
- # @param [Barneque::SNSSubscription] subscription
11
+ # @param [Barneque::SnsSubscription] subscription
12
12
  # @return [Barbeque::Message::Notification]
13
13
  def set_params_from_subscription(subscription)
14
14
  @application = subscription.app.name
@@ -9,7 +9,7 @@ module Barbeque
9
9
  @message = message
10
10
  @message_queue = message_queue
11
11
 
12
- subscription = SNSSubscription.find_by!(topic_arn: @message.topic_arn, job_queue_id: @message_queue.job_queue.id)
12
+ subscription = SnsSubscription.find_by!(topic_arn: @message.topic_arn, job_queue_id: @message_queue.job_queue.id)
13
13
  @message.set_params_from_subscription(subscription)
14
14
  end
15
15
  end
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '2.8.0'
2
+ VERSION = '2.9.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barbeque
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-23 00:00:00.000000000 Z
11
+ date: 2025-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adminlte2-rails
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 5.2.0
159
+ version: 6.1.4
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 5.2.0
166
+ version: 6.1.4
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rinku
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -426,6 +426,7 @@ files:
426
426
  - db/migrate/20190311034445_add_notify_failure_only_if_retry_limit_reached_to_barbeque_slack_notifications.rb
427
427
  - db/migrate/20190315052951_change_barbeque_retry_configs_base_delay_default_value.rb
428
428
  - db/migrate/20191029105530_change_job_name_to_case_sensitive.rb
429
+ - db/migrate/20240415080757_fix_collations.rb
429
430
  - lib/barbeque.rb
430
431
  - lib/barbeque/config.rb
431
432
  - lib/barbeque/docker_image.rb
@@ -476,7 +477,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
476
477
  - !ruby/object:Gem::Version
477
478
  version: '0'
478
479
  requirements: []
479
- rubygems_version: 3.1.6
480
+ rubygems_version: 3.2.33
480
481
  signing_key:
481
482
  specification_version: 4
482
483
  summary: Job queue system to run job with Docker