barbeque 2.8.0 → 2.9.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
  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