rabbitmq-definition 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: 9558cc90dbc35ad6da73cf4ee370d9c4e482806b
4
- data.tar.gz: 8e4385f1ce830292e5862e2caeac4100029581f6
3
+ metadata.gz: 2346e336b95759186f990ce466977d975559d2d0
4
+ data.tar.gz: da0e4f48f31ba586e9b8b7a234d8fb11c4228c77
5
5
  SHA512:
6
- metadata.gz: 5adaf811cb71f0be656b08e666f7ff69e0e2f7af59c4d3b84609326c0bfc00df835b8cdf50b8fd4871439b53b6fa06a7585d63de03477da925cdcc7d0294b839
7
- data.tar.gz: 5a0476d06491279a45f5c2f1abc86457b11bc142b4c93c011f341bb97bca3accdf03b48316b13f291a1e1648f7575ec5be718840ec04bcb11dfd4454a5d740df
6
+ metadata.gz: 464144aa22549140f8af197b00b3683c26244414581996cb6bccc18fa96e903ec6157e2524b2dab83b9b5441b84f43705b9355058c746d7671a9ffbb68d2fee7
7
+ data.tar.gz: 282a2f61ebf894b167162a86cacade76317db3a4184c78b81f0e709f8c0c3c2beea879c4831664d0aff5686e2cf05b8f67409522030c84b162a4f49d903f7b97
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rabbitmq-definition (0.1.0)
4
+ rabbitmq-definition (0.1.2)
5
5
  colorize (~> 0.7)
6
6
  highline (~> 1.7)
7
7
  json (~> 1.8)
8
- rabbitmq_http_api_client (>= 1.6)
8
+ rabbitmq_http_api_client (~> 1.6)
9
9
  rails (~> 4.0)
10
- rake (~> 10.4)
10
+ rake (~> 10.0)
11
11
 
12
12
  GEM
13
13
  remote: http://rubygems.org/
@@ -6,7 +6,7 @@ module RabbitMQ::Definition
6
6
  end
7
7
 
8
8
  def execute
9
- FileDefinition.new(filtered_list_definition).tap do |definition|
9
+ FileDefinition.new(filter_and_order_list_definition).tap do |definition|
10
10
  Logger.info definition.to_json if verbose
11
11
  Logger.progress "Saving definition..."
12
12
  definition.save
@@ -16,23 +16,30 @@ module RabbitMQ::Definition
16
16
 
17
17
  private
18
18
 
19
- def filtered_list_definition
19
+ def filter_and_order_list_definition
20
20
  client.list_definitions.reduce({}) do |result, (key, value)|
21
- if key.to_s == "vhosts"
22
- value = @vhosts.map {|name| {'name' => name} }
23
- elsif value.is_a?(Array)
24
- value = filter_vhost_items(value)
21
+ value = case key
22
+ when "vhosts"
23
+ @vhosts.sort.map {|name| {'name' => name} }
24
+ when "queues", "exchanges"
25
+ filter_vhosts(value).sort do |a, b|
26
+ [a["vhost"], a["name"]] <=> [b["vhost"], b["name"]]
27
+ end
28
+ when "bindings"
29
+ filter_vhosts(value).sort do |a, b|
30
+ [a["vhost"], a["source"], a["destination"], a["routing_key"]] <=> [b["vhost"], b["source"], b["destination"], b["routing_key"]]
31
+ end
32
+ else
33
+ value
25
34
  end
26
35
  result[key] = value
27
36
  result
28
37
  end
29
38
  end
30
39
 
31
- def filter_vhost_items(items)
40
+ def filter_vhosts(items)
32
41
  items.reduce([]) do |array, item|
33
- if !item.has_key?("vhost") || @vhosts.include?(item["vhost"])
34
- array.push(item)
35
- end
42
+ array.push(item) if @vhosts.include?(item["vhost"])
36
43
  array
37
44
  end
38
45
  end
@@ -1,5 +1,5 @@
1
1
  module RabbitMQ
2
2
  module Definition
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -5,7 +5,16 @@ describe RabbitMQ::Definition::Dump do
5
5
  'vhosts' => [{'name' => '/'}, 'name' => '/other-vhost'],
6
6
  'queues' => [
7
7
  {
8
- "name" => "my-queue",
8
+ "name" => "my-b-queue",
9
+ "vhost" => "/",
10
+ "durable" => true,
11
+ "auto_delete" => false,
12
+ "arguments" => {
13
+ "x-dead-letter-exchange" => "dead"
14
+ }
15
+ },
16
+ {
17
+ "name" => "my-a-queue",
9
18
  "vhost" => "/",
10
19
  "durable" => true,
11
20
  "auto_delete" => false,
@@ -20,7 +29,17 @@ describe RabbitMQ::Definition::Dump do
20
29
  ],
21
30
  'exchanges' => [
22
31
  {
23
- "name" => "my-exchange",
32
+ "name" => "my-b-exchange",
33
+ "vhost" => "/",
34
+ "type" => "topic",
35
+ "durable" => true,
36
+ "auto_delete" => false,
37
+ "internal" => false,
38
+ "arguments" => {
39
+ }
40
+ },
41
+ {
42
+ "name" => "my-a-exchange",
24
43
  "vhost" => "/",
25
44
  "type" => "topic",
26
45
  "durable" => true,
@@ -42,9 +61,9 @@ describe RabbitMQ::Definition::Dump do
42
61
  ],
43
62
  'bindings' => [
44
63
  {
45
- "source" => "my-exchange",
64
+ "source" => "my-a-exchange",
46
65
  "vhost" => "/",
47
- "destination" => "my-queue",
66
+ "destination" => "my-a-queue",
48
67
  "destination_type" => "queue",
49
68
  "routing_key" => "my-routing-key.#",
50
69
  "arguments" => {
@@ -70,7 +89,16 @@ describe RabbitMQ::Definition::Dump do
70
89
  ],
71
90
  'queues' => [
72
91
  {
73
- "name" => "my-queue",
92
+ "name" => "my-a-queue",
93
+ "vhost" => "/",
94
+ "durable" => true,
95
+ "auto_delete" => false,
96
+ "arguments" => {
97
+ "x-dead-letter-exchange" => "dead"
98
+ }
99
+ },
100
+ {
101
+ "name" => "my-b-queue",
74
102
  "vhost" => "/",
75
103
  "durable" => true,
76
104
  "auto_delete" => false,
@@ -81,7 +109,17 @@ describe RabbitMQ::Definition::Dump do
81
109
  ],
82
110
  'exchanges' => [
83
111
  {
84
- "name" => "my-exchange",
112
+ "name" => "my-a-exchange",
113
+ "vhost" => "/",
114
+ "type" => "topic",
115
+ "durable" => true,
116
+ "auto_delete" => false,
117
+ "internal" => false,
118
+ "arguments" => {
119
+ }
120
+ },
121
+ {
122
+ "name" => "my-b-exchange",
85
123
  "vhost" => "/",
86
124
  "type" => "topic",
87
125
  "durable" => true,
@@ -93,9 +131,9 @@ describe RabbitMQ::Definition::Dump do
93
131
  ],
94
132
  'bindings' => [
95
133
  {
96
- "source" => "my-exchange",
134
+ "source" => "my-a-exchange",
97
135
  "vhost" => "/",
98
- "destination" => "my-queue",
136
+ "destination" => "my-a-queue",
99
137
  "destination_type" => "queue",
100
138
  "routing_key" => "my-routing-key.#",
101
139
  "arguments" => {
@@ -136,7 +174,7 @@ describe RabbitMQ::Definition::Dump do
136
174
  described_class.run(client, false, ['/'])
137
175
  end
138
176
 
139
- it "generates the file definition with the filtered list definitions taking vhosts from files" do
177
+ it "generates the file definition with the filtered list definitions taking vhosts from files and sorting arrays by name / source" do
140
178
  original_definition = double(:vhosts => [{'name' => '/'}])
141
179
  expect(RabbitMQ::Definition::FileDefinition).to receive(:read).and_return(original_definition)
142
180
  definition = double("Definition")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbitmq-definition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pol Miro