klunk 0.1.3 → 0.1.4
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 +4 -4
- data/Gemfile +0 -4
- data/lib/klunk/base.rb +6 -0
- data/lib/klunk/queue.rb +11 -3
- data/lib/klunk/tasks/klunk.rake +5 -5
- data/lib/klunk/topic.rb +22 -14
- data/lib/klunk/version.rb +1 -1
- data/lib/klunk.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 414d767c39dc24f736a5d2c544c08a360132c763
|
4
|
+
data.tar.gz: 95d00bc3eeddb6f7bfdea7ccbcf584daf093f984
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ade4d620bc8298dc71e93a68bedeaefe21c567ea1dbe5d74db381bd29c981958d1c9ab94fbf4112de6e1cfff864775a138e835bc02a5a285bc3642b1e5cf4e4a
|
7
|
+
data.tar.gz: e2f81c6142b90218d042a0b0ef945e379e8e09dcc6d8760608835a0436f417914c6d1a4742f97885caea0263daf5a68a2780ca6475cec62520db33cc5cdd48e3
|
data/Gemfile
CHANGED
data/lib/klunk/base.rb
ADDED
data/lib/klunk/queue.rb
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
module Klunk
|
2
|
-
class Queue
|
3
|
-
QUEUES = YAML.load_file('config/queues.yml').map(&:deep_symbolize_keys)
|
2
|
+
class Queue < Base
|
4
3
|
|
5
4
|
class << self
|
5
|
+
|
6
|
+
def queues
|
7
|
+
if File.exists?('config/queues.yml')
|
8
|
+
YAML.load_file('config/queues.yml').map(&:deep_symbolize_keys)
|
9
|
+
else
|
10
|
+
[]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
6
14
|
def build(queue_options)
|
7
15
|
queue_name = queue_options.delete(:name)
|
8
16
|
subscriptions = queue_options.delete(:subscribes)
|
@@ -70,7 +78,7 @@ module Klunk
|
|
70
78
|
end
|
71
79
|
|
72
80
|
def queues_for_shoryuken_config
|
73
|
-
Klunk::Queue::
|
81
|
+
Klunk::Queue::queues.map{|queue| [name_for(queue[:name]), queue[:priority]] }
|
74
82
|
end
|
75
83
|
|
76
84
|
def client
|
data/lib/klunk/tasks/klunk.rake
CHANGED
@@ -12,10 +12,10 @@ namespace :klunk do
|
|
12
12
|
|
13
13
|
desc 'Describe current structure'
|
14
14
|
task describe: :environment do
|
15
|
-
Klunk::Topic
|
15
|
+
Klunk::Topic.topics.each do |topic|
|
16
16
|
ap Klunk::Topic.describe(topic[:name])
|
17
17
|
end
|
18
|
-
Klunk::Queue
|
18
|
+
Klunk::Queue.queues.each do |queue|
|
19
19
|
queue[:subscribes].to_a.each do |topic_options|
|
20
20
|
topic_name = topic_options.delete(:name)
|
21
21
|
ap Klunk::Topic.describe(topic_name, topic_options)
|
@@ -26,7 +26,7 @@ namespace :klunk do
|
|
26
26
|
namespace :sns do
|
27
27
|
desc 'Create SNS topics'
|
28
28
|
task create_topics: :environment do
|
29
|
-
Klunk::Topic
|
29
|
+
Klunk::Topic.topics.each do |topic|
|
30
30
|
Klunk::Topic.create(topic[:name])
|
31
31
|
end
|
32
32
|
end
|
@@ -36,7 +36,7 @@ namespace :klunk do
|
|
36
36
|
desc 'Create SQS queues if needed'
|
37
37
|
task create_queues_if_needed: :environment do
|
38
38
|
existing_queues = Klunk::Queue.client.list_queues(queue_name_prefix: Klunk::Queue.name_for('')).queue_urls.collect{|queue| queue.split('/').last }
|
39
|
-
needed_queues = Klunk::Queue
|
39
|
+
needed_queues = Klunk::Queue.queues.map do |queue|
|
40
40
|
[Klunk::Queue.name_for(queue[:name]), Klunk::Queue.name_for(queue[:name], true)]
|
41
41
|
end.flatten
|
42
42
|
unless (needed_queues - existing_queues).empty?
|
@@ -48,7 +48,7 @@ namespace :klunk do
|
|
48
48
|
|
49
49
|
desc 'Create SQS queues'
|
50
50
|
task create_queues: :environment do
|
51
|
-
Klunk::Queue
|
51
|
+
Klunk::Queue.queues.each do |queue|
|
52
52
|
q = Klunk::Queue.build(queue)
|
53
53
|
puts "\n#{q[:queue_url]}"
|
54
54
|
end
|
data/lib/klunk/topic.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
module Klunk
|
2
|
-
class Topic
|
3
|
-
TOPICS = YAML.load_file('config/topics.yml').map(&:deep_symbolize_keys)
|
2
|
+
class Topic < Base
|
4
3
|
|
5
4
|
class << self
|
5
|
+
|
6
|
+
def topics
|
7
|
+
if File.exists?('config/topics.yml')
|
8
|
+
YAML.load_file('config/topics.yml').map(&:deep_symbolize_keys)
|
9
|
+
else
|
10
|
+
[]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
6
14
|
def name_for(topic_name, options = {})
|
7
15
|
system_name = options[:system] || Klunk.configuration.prefix
|
8
16
|
[system_name, ENV['EB_ENV'], topic_name]
|
9
|
-
|
17
|
+
.compact.reject(&:blank?).join('_')
|
10
18
|
end
|
11
19
|
|
12
20
|
def create(topic_name)
|
@@ -29,11 +37,11 @@ module Klunk
|
|
29
37
|
queue_attributes = Klunk::Queue.get_attributes(queue_url)
|
30
38
|
queue_arn = queue_attributes['QueueArn']
|
31
39
|
subscription = client.subscribe(
|
32
|
-
|
40
|
+
topic_arn: topic_arn, protocol: 'sqs', endpoint: queue_arn
|
33
41
|
)
|
34
42
|
client.set_subscription_attributes(
|
35
|
-
|
36
|
-
|
43
|
+
subscription_arn: subscription.subscription_arn,
|
44
|
+
attribute_name: 'RawMessageDelivery', attribute_value: 'true'
|
37
45
|
)
|
38
46
|
if queue_attributes.key?('Policy')
|
39
47
|
previous_policy = JSON.parse(queue_attributes['Policy'])
|
@@ -46,7 +54,7 @@ module Klunk
|
|
46
54
|
{
|
47
55
|
topic: topic_arn(topic_name, options),
|
48
56
|
subscriptions: client.list_subscriptions_by_topic(
|
49
|
-
|
57
|
+
topic_arn: topic_arn(topic_name, options)
|
50
58
|
).subscriptions.map { |topic| topic[:endpoint] }
|
51
59
|
}
|
52
60
|
end
|
@@ -54,13 +62,13 @@ module Klunk
|
|
54
62
|
def add_policy(queue_url, topic_arn, previous_policy)
|
55
63
|
previous_policy ||= build_policy(queue_url, topic_arn)
|
56
64
|
Queue.client.set_queue_attributes(
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
65
|
+
queue_url: queue_url,
|
66
|
+
attributes: {
|
67
|
+
Policy: previous_policy.tap do |p|
|
68
|
+
(p['Statement'] ||= []) << build_statement(queue_url, topic_arn)
|
69
|
+
p['Statement'].uniq!
|
70
|
+
end.to_json
|
71
|
+
}
|
64
72
|
)
|
65
73
|
end
|
66
74
|
|
data/lib/klunk/version.rb
CHANGED
data/lib/klunk.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: klunk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Antonio Gonzalez Junior
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- lib/generators/klunk/templates/config/queues.yml
|
118
118
|
- lib/generators/klunk/templates/config/topics.yml
|
119
119
|
- lib/klunk.rb
|
120
|
+
- lib/klunk/base.rb
|
120
121
|
- lib/klunk/configuration.rb
|
121
122
|
- lib/klunk/queue.rb
|
122
123
|
- lib/klunk/railtie.rb
|