legion-transport-java 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +89 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +21 -0
  6. data/CHANGELOG.md +9 -0
  7. data/Gemfile +3 -0
  8. data/README.md +3 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/bitbucket-pipelines.yml +24 -0
  13. data/legion-transport.gemspec +43 -0
  14. data/lib/legion/transport.rb +21 -0
  15. data/lib/legion/transport/common.rb +76 -0
  16. data/lib/legion/transport/connection.rb +62 -0
  17. data/lib/legion/transport/consumer.rb +13 -0
  18. data/lib/legion/transport/exchange.rb +51 -0
  19. data/lib/legion/transport/exchanges/crypt.rb +11 -0
  20. data/lib/legion/transport/exchanges/lex.rb +11 -0
  21. data/lib/legion/transport/exchanges/node.rb +11 -0
  22. data/lib/legion/transport/exchanges/task.rb +11 -0
  23. data/lib/legion/transport/message.rb +106 -0
  24. data/lib/legion/transport/messages/check_subtask.rb +25 -0
  25. data/lib/legion/transport/messages/dynamic.rb +25 -0
  26. data/lib/legion/transport/messages/lex_register.rb +31 -0
  27. data/lib/legion/transport/messages/node_health.rb +21 -0
  28. data/lib/legion/transport/messages/request_cluster_secret.rb +33 -0
  29. data/lib/legion/transport/messages/subtask.rb +38 -0
  30. data/lib/legion/transport/messages/task_log.rb +36 -0
  31. data/lib/legion/transport/messages/task_update.rb +31 -0
  32. data/lib/legion/transport/queue.rb +72 -0
  33. data/lib/legion/transport/queues/node.rb +15 -0
  34. data/lib/legion/transport/queues/node_crypt.rb +21 -0
  35. data/lib/legion/transport/queues/node_status.rb +21 -0
  36. data/lib/legion/transport/queues/task_log.rb +21 -0
  37. data/lib/legion/transport/queues/task_update.rb +21 -0
  38. data/lib/legion/transport/settings.rb +72 -0
  39. data/lib/legion/transport/version.rb +5 -0
  40. data/settings/transport.json +5 -0
  41. data/sonar-project.properties +12 -0
  42. metadata +269 -0
@@ -0,0 +1,15 @@
1
+ module Legion
2
+ module Transport
3
+ module Queues
4
+ class Node < Legion::Transport::Queue
5
+ def queue_name
6
+ "node.#{Legion::Settings['client']['name']}"
7
+ end
8
+
9
+ def queue_options
10
+ { durable: false, auto_delete: true, arguments: { 'x-dead-letter-exchange': 'node.dlx' } }
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module Legion
2
+ module Transport
3
+ module Queues
4
+ class NodeCrypt < Legion::Transport::Queue
5
+ def queue_name
6
+ 'node.status'
7
+ end
8
+
9
+ def queue_options
10
+ hash = {}
11
+ hash[:manual_ack] = true
12
+ hash[:durable] = true
13
+ hash[:exclusive] = false
14
+ hash[:block] = false
15
+ hash[:arguments] = { 'x-dead-letter-exchange': 'node.dlx' }
16
+ hash
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Legion
2
+ module Transport
3
+ module Queues
4
+ class NodeStatus < Legion::Transport::Queue
5
+ def queue_name
6
+ 'node.status'
7
+ end
8
+
9
+ def queue_options
10
+ hash = {}
11
+ hash[:manual_ack] = true
12
+ hash[:durable] = true
13
+ hash[:exclusive] = false
14
+ hash[:block] = false
15
+ hash[:arguments] = { 'x-dead-letter-exchange': 'node.dlx' }
16
+ hash
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Legion
2
+ module Transport
3
+ module Queues
4
+ class TaskLog < Legion::Transport::Queue
5
+ def queue_name
6
+ 'task.log'
7
+ end
8
+
9
+ def queue_options
10
+ hash = {}
11
+ hash[:manual_ack] = true
12
+ hash[:durable] = true
13
+ hash[:exclusive] = false
14
+ hash[:block] = false
15
+ hash[:arguments] = { 'x-max-priority': 255, 'x-dead-letter-exchange': 'task.dlx' }
16
+ hash
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Legion
2
+ module Transport
3
+ module Queues
4
+ class TaskUpdate < Legion::Transport::Queue
5
+ def queue_name
6
+ 'task.update'
7
+ end
8
+
9
+ def queue_options
10
+ hash = {}
11
+ hash[:manual_ack] = true
12
+ hash[:durable] = true
13
+ hash[:exclusive] = false
14
+ hash[:block] = false
15
+ hash[:arguments] = { 'x-dead-letter-exchange': 'task.dlx' }
16
+ hash
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,72 @@
1
+ require 'legion/settings'
2
+
3
+ module Legion
4
+ module Transport
5
+ module Settings
6
+ # Legion::Settings.merge_settings('transport', default) if Legion::Settings.method_defined? :merge_settings
7
+ def self.connection
8
+ {
9
+ read_timeout: 1,
10
+ heartbeat: 1,
11
+ automatically_recover: true,
12
+ continuation_timeout: 4000,
13
+ network_recovery_interval: 1,
14
+ connection_timeout: 1,
15
+ user: 'guest',
16
+ password: 'guest',
17
+ host: '127.0.0.1',
18
+ port: '5672',
19
+ vhost: '/',
20
+ recovery_attempts: 0,
21
+ logger_level: 'info'
22
+ }.merge(grab_vault_creds)
23
+ end
24
+
25
+ def self.grab_vault_creds
26
+ return {} unless Legion::Settings[:crypt][:vault][:connected]
27
+
28
+ lease = Legion::Crypt.read('rabbitmq/creds/legion', type: nil)
29
+ Legion::Logging.debug 'successfully grabbed amqp username from Vault'
30
+ { user: lease[:username], password: lease[:password] }
31
+ rescue StandardError
32
+ {}
33
+ end
34
+
35
+ def self.default
36
+ {
37
+ type: 'rabbitmq',
38
+ connected: false,
39
+ logger_level: 'info',
40
+ messages: {
41
+ encrypt: false,
42
+ ttl: nil,
43
+ priority: 0
44
+ },
45
+ exchanges: {
46
+ type: 'topic',
47
+ arguments: {},
48
+ auto_delete: false,
49
+ durable: true,
50
+ internal: false
51
+ },
52
+ queues: {
53
+ manual_ack: true,
54
+ durable: true,
55
+ exclusive: false,
56
+ block: false,
57
+ auto_delete: false,
58
+ arguments: { 'x-max-priority': 255, 'x-overflow': 'reject-publish' }
59
+ },
60
+ prefetch: 2,
61
+ connection: connection
62
+ }
63
+ end
64
+ end
65
+ end
66
+ end
67
+
68
+ begin
69
+ Legion::Settings.merge_settings('transport', Legion::Transport::Settings.default) if Legion.const_defined?('Settings')
70
+ rescue StandardError => e
71
+ Legion::Logging.fatal(e.message) if Legion::Logging.method_defined?(:fatal)
72
+ end
@@ -0,0 +1,5 @@
1
+ module Legion
2
+ module Transport
3
+ VERSION = '1.1.3'.freeze
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ {
2
+ "transport": {
3
+ "vhost": "/"
4
+ }
5
+ }
@@ -0,0 +1,12 @@
1
+ sonar.projectKey=legion-io_legion-transport
2
+ sonar.organization=legion-io
3
+ sonar.projectName=Legion::Transport
4
+ sonar.sources=.
5
+ sonar.exclusions=vendor/**
6
+ sonar.coverage.exclusions=spec/**
7
+ sonar.ruby.coverage.reportPath=coverage/.resultset.json
8
+ sonar.ruby.file.suffixes=rb,ruby
9
+ sonar.ruby.coverage.framework=RSpec
10
+ sonar.ruby.rubocopConfig=.rubocop.yml
11
+ sonar.ruby.rubocop.reportPath=rubocop-result.json
12
+ sonar.ruby.rubocop.filePath=.
metadata ADDED
@@ -0,0 +1,269 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: legion-transport-java
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Esity
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ name: bundler
20
+ prerelease: false
21
+ type: :development
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ name: codecov
34
+ prerelease: false
35
+ type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ name: legion-logging
48
+ prerelease: false
49
+ type: :development
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ name: legion-settings
62
+ prerelease: false
63
+ type: :development
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ name: march_hare
76
+ prerelease: false
77
+ type: :development
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ name: rake
90
+ prerelease: false
91
+ type: :development
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ name: rspec
104
+ prerelease: false
105
+ type: :development
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ name: rspec_junit_formatter
118
+ prerelease: false
119
+ type: :development
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ name: rubocop
132
+ prerelease: false
133
+ type: :development
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ name: simplecov
146
+ prerelease: false
147
+ type: :development
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ name: bunny
160
+ prerelease: false
161
+ type: :runtime
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ name: concurrent-ruby
174
+ prerelease: false
175
+ type: :runtime
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ name: legion-json
188
+ prerelease: false
189
+ type: :runtime
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ description: The Legion transport gem
196
+ email:
197
+ - matthewdiverson@gmail.com
198
+ executables: []
199
+ extensions: []
200
+ extra_rdoc_files: []
201
+ files:
202
+ - ".circleci/config.yml"
203
+ - ".gitignore"
204
+ - ".rspec"
205
+ - ".rubocop.yml"
206
+ - CHANGELOG.md
207
+ - Gemfile
208
+ - README.md
209
+ - Rakefile
210
+ - bin/console
211
+ - bin/setup
212
+ - bitbucket-pipelines.yml
213
+ - legion-transport.gemspec
214
+ - lib/legion/transport.rb
215
+ - lib/legion/transport/common.rb
216
+ - lib/legion/transport/connection.rb
217
+ - lib/legion/transport/consumer.rb
218
+ - lib/legion/transport/exchange.rb
219
+ - lib/legion/transport/exchanges/crypt.rb
220
+ - lib/legion/transport/exchanges/lex.rb
221
+ - lib/legion/transport/exchanges/node.rb
222
+ - lib/legion/transport/exchanges/task.rb
223
+ - lib/legion/transport/message.rb
224
+ - lib/legion/transport/messages/check_subtask.rb
225
+ - lib/legion/transport/messages/dynamic.rb
226
+ - lib/legion/transport/messages/lex_register.rb
227
+ - lib/legion/transport/messages/node_health.rb
228
+ - lib/legion/transport/messages/request_cluster_secret.rb
229
+ - lib/legion/transport/messages/subtask.rb
230
+ - lib/legion/transport/messages/task_log.rb
231
+ - lib/legion/transport/messages/task_update.rb
232
+ - lib/legion/transport/queue.rb
233
+ - lib/legion/transport/queues/node.rb
234
+ - lib/legion/transport/queues/node_crypt.rb
235
+ - lib/legion/transport/queues/node_status.rb
236
+ - lib/legion/transport/queues/task_log.rb
237
+ - lib/legion/transport/queues/task_update.rb
238
+ - lib/legion/transport/settings.rb
239
+ - lib/legion/transport/version.rb
240
+ - settings/transport.json
241
+ - sonar-project.properties
242
+ homepage: https://bitbucket.org/legion-io/legion-transport
243
+ licenses: []
244
+ metadata:
245
+ bug_tracker_uri: https://legionio.atlassian.net/projects/TRANSPORT/issues
246
+ changelog_uri: https://bitbucket.org/legion-io/legion-transport/src/master/CHANGELOG.md
247
+ homepage_uri: https://bitbucket.org/legion-io/legion-transport
248
+ wiki_uri: https://bitbucket.org/legion-io/legion-transport/wiki/Home
249
+ post_install_message:
250
+ rdoc_options: []
251
+ require_paths:
252
+ - lib
253
+ required_ruby_version: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: 2.5.0
258
+ required_rubygems_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ requirements: []
264
+ rubyforge_project:
265
+ rubygems_version: 2.7.10
266
+ signing_key:
267
+ specification_version: 4
268
+ summary: Used by Legion to connect with RabbitMQ
269
+ test_files: []