legionio 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/Gemfile +11 -0
- data/bin/legion +44 -4
- data/lib/legion/extensions.rb +60 -0
- data/lib/legion/extensions/actors/subscription.rb +17 -9
- data/lib/legion/extensions/core.rb +32 -0
- data/lib/legion/extensions/data.rb +48 -0
- data/lib/legion/extensions/data/migrator.rb +28 -0
- data/lib/legion/extensions/data/model.rb +8 -0
- data/lib/legion/extensions/helpers/cache.rb +23 -0
- data/lib/legion/extensions/helpers/data.rb +23 -0
- data/lib/legion/extensions/helpers/lex.rb +4 -4
- data/lib/legion/extensions/helpers/task.rb +21 -1
- data/lib/legion/extensions/helpers/transport.rb +1 -0
- data/lib/legion/extensions/transport.rb +7 -5
- data/lib/legion/process.rb +1 -3
- data/lib/legion/service.rb +2 -1
- data/lib/legion/version.rb +1 -1
- data/settings/client.json +3 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 054fe7a9c7707f232d0e93719567254ff8b1ca190f0248abc3b8ba1bcba45a84
|
4
|
+
data.tar.gz: 658bd9bb7e565268e15fc768f7b7691eef6c77738ccd4fba1d87b6bf44e9fbb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98a94510b0408b5f857adaaaa41efe74de4dcc0c509c21d5630001d9aa4a5af16cb2d7ecf5ff0174d310e6f9e159c81948c2e87c44067100d95e106db8b7e390
|
7
|
+
data.tar.gz: 1c21c38abdbfc70e384a09604f88a712e5a1d240409443f7f50a8df75ed4f528f856c1a23b038d89d0f7e7c167d3b645df0ef07378d77ce6b311bbb34d27bd9c
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,3 +1,14 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gemspec
|
4
|
+
|
5
|
+
gem 'lex-conditioner'
|
6
|
+
gem 'lex-esphome'
|
7
|
+
gem 'lex-health'
|
8
|
+
gem 'lex-http'
|
9
|
+
gem 'lex-influxdb'
|
10
|
+
gem 'lex-lex'
|
11
|
+
gem 'lex-log'
|
12
|
+
gem 'lex-scheduler', path: '../../lex/lex-scheduler'
|
13
|
+
gem 'lex-tasker'
|
14
|
+
gem 'lex-transformer'
|
data/bin/legion
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'optparse'
|
5
|
+
require 'etc'
|
5
6
|
|
6
7
|
options = { action: :run }
|
7
8
|
|
@@ -44,7 +45,46 @@ op.on('-v', '--version') { options[:action] = :version }
|
|
44
45
|
op.separator ''
|
45
46
|
op.parse!(ARGV)
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
@children = []
|
49
|
+
children = 5
|
50
|
+
if children == 1
|
51
|
+
require File.expand_path('lib/legion.rb') unless options[:action] == :help
|
52
|
+
require File.expand_path('lib/legion/process.rb') unless options[:action] == :help
|
53
|
+
Legion.start
|
54
|
+
Legion::Process.new(options).run!
|
55
|
+
else
|
56
|
+
children.times do
|
57
|
+
@children.push(
|
58
|
+
Process.fork do
|
59
|
+
require File.expand_path('lib/legion.rb') unless options[:action] == :help
|
60
|
+
require File.expand_path('lib/legion/process.rb') unless options[:action] == :help
|
61
|
+
|
62
|
+
Legion.start
|
63
|
+
sleep(1)
|
64
|
+
Legion::Process.new(options).run!
|
65
|
+
end
|
66
|
+
)
|
67
|
+
sleep(5)
|
68
|
+
end
|
69
|
+
|
70
|
+
@quit = false
|
71
|
+
trap('SIGINT') do
|
72
|
+
@quit = true
|
73
|
+
@children.each do |child|
|
74
|
+
Process.kill('SIGINT', child)
|
75
|
+
end
|
76
|
+
sleep(5)
|
77
|
+
end
|
78
|
+
|
79
|
+
trap('SIGTERM') do
|
80
|
+
@children.each do |child|
|
81
|
+
Process.kill('SIGTERM', child)
|
82
|
+
end
|
83
|
+
|
84
|
+
sleep(5)
|
85
|
+
end
|
86
|
+
|
87
|
+
sleep(1) until @quit
|
88
|
+
end
|
89
|
+
|
90
|
+
sleep(2)
|
data/lib/legion/extensions.rb
CHANGED
@@ -148,6 +148,62 @@ module Legion
|
|
148
148
|
|
149
149
|
def find_extensions
|
150
150
|
@extensions ||= {}
|
151
|
+
# puts Gem.install('lex-esphome')
|
152
|
+
# puts Gem::Installer.new('lex-esphome')
|
153
|
+
# test = Gem::Installer.new('lex-esphome')
|
154
|
+
# puts test.install
|
155
|
+
# puts Gem::Dependency.new('lex-esphome')
|
156
|
+
# $LOAD_PATH << "#{ENV['GEM_HOME']}/gems/lex-esphome-0.1.0/lib"
|
157
|
+
# require 'legion/extensions/esphome'
|
158
|
+
# $LOAD_PATH << "#{ENV['GEM_HOME']}/gems/lex-esphome-0.1.0/lib"
|
159
|
+
# ENV['MY_RUBY_HOME'] #/Users/miverso2/.rvm/rubies/ruby-2.7.0
|
160
|
+
# ENV['GEM_HOME'] # /Users/miverso2/.rvm/gems/ruby-2.7.0
|
161
|
+
# require 'rubygems/dependency_installer.rb'
|
162
|
+
# puts Gem::DependencyInstaller.new.install('lex-esphome')
|
163
|
+
# puts Gem::Installer.new('lex-esphome').install
|
164
|
+
# puts Gem::Installer.new('lex-esphome').ensure_loadable_spec
|
165
|
+
# puts Gem.search('lex-esphome')
|
166
|
+
# Gem.clear_paths
|
167
|
+
# require 'legion/extensions/esphome'
|
168
|
+
|
169
|
+
# puts Gem.use_gemdeps
|
170
|
+
# pp Gem.gemdeps
|
171
|
+
# puts 'gems things'
|
172
|
+
# puts Gem.loaded_specs.key? 'lex-esphome'
|
173
|
+
# pp Gem.loaded_specs.keys
|
174
|
+
#
|
175
|
+
# require 'rubygems'
|
176
|
+
# require 'rubygems/command.rb'
|
177
|
+
# require 'rubygems/dependency_installer.rb'
|
178
|
+
#
|
179
|
+
# Gem::Command.build_args = ARGV
|
180
|
+
# inst = Gem::DependencyInstaller.new
|
181
|
+
# puts inst.installed_gems
|
182
|
+
# puts inst.install 'lex-esphome', install_as_default: true
|
183
|
+
# puts inst.installed_gems
|
184
|
+
# puts '....'
|
185
|
+
# test = Gem::DependencyList.new
|
186
|
+
# test.add(inst)
|
187
|
+
# pp test.find_name('lex-esphome')
|
188
|
+
# pp test.find_name('lex-logger')
|
189
|
+
# pp test.specs
|
190
|
+
# pp Gem::DependencyList.from_specs
|
191
|
+
# pp Gem::DependencyList.from_specs.key? 'lex-logg'
|
192
|
+
# pp inst
|
193
|
+
#
|
194
|
+
# pp Gem.new.all_specs
|
195
|
+
# load 'legion/extensions/esphome.rb'
|
196
|
+
# puts Gem.register_default_spec()
|
197
|
+
# :use_gemdeps,
|
198
|
+
# :detect_gemdeps,
|
199
|
+
# :source_date_epoch,
|
200
|
+
# :gemdeps,
|
201
|
+
# :register_default_spec,
|
202
|
+
# :find_unresolved_default_spec,
|
203
|
+
# :clear_default_specs,
|
204
|
+
# :loaded_specs,
|
205
|
+
# :default_path,
|
206
|
+
|
151
207
|
Gem::Specification.all_names.each do |gem|
|
152
208
|
next unless gem[0..3] == 'lex-'
|
153
209
|
|
@@ -158,6 +214,10 @@ module Legion
|
|
158
214
|
version: lex[2],
|
159
215
|
extension_class: "Legion::Extensions::#{lex[1].capitalize}" }
|
160
216
|
end
|
217
|
+
|
218
|
+
# Legion::Settings[:extensions].each do |extension|
|
219
|
+
# puts extension unless @extensions.key? extension
|
220
|
+
# end
|
161
221
|
end
|
162
222
|
end
|
163
223
|
end
|
@@ -65,22 +65,26 @@ module Legion
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def process_message(message, metadata, delivery_info)
|
68
|
-
payload = if metadata
|
69
|
-
Legion::Crypt.decrypt(message, metadata
|
70
|
-
elsif metadata
|
71
|
-
Legion::Crypt.decrypt_from_keypair(metadata
|
68
|
+
payload = if metadata.content_encoding && metadata.content_encoding == 'encrypted/cs'
|
69
|
+
Legion::Crypt.decrypt(message, metadata.headers['iv'])
|
70
|
+
elsif metadata.content_encoding && metadata.content_encoding == 'encrypted/pk'
|
71
|
+
Legion::Crypt.decrypt_from_keypair(metadata.headers[:public_key], message)
|
72
72
|
else
|
73
73
|
message
|
74
74
|
end
|
75
75
|
|
76
|
-
message = if metadata
|
76
|
+
message = if metadata.content_type == 'application/json'
|
77
77
|
Legion::JSON.load(payload)
|
78
78
|
else
|
79
79
|
{ value: payload }
|
80
80
|
end
|
81
81
|
if include_metadata_in_message?
|
82
|
-
message = message.merge(metadata
|
83
|
-
message[:routing_key] =
|
82
|
+
message = message.merge(metadata.headers.transform_keys(&:to_sym)) unless metadata.headers.nil?
|
83
|
+
message[:routing_key] = if Legion::Transport::TYPE == 'march_hare'
|
84
|
+
metadata.routing_key
|
85
|
+
else
|
86
|
+
delivery_info[:routing_key]
|
87
|
+
end
|
84
88
|
end
|
85
89
|
|
86
90
|
message[:timestamp] = (message[:timestamp_in_ms] / 1000).round if message.key?(:timestamp_in_ms) && !message.key?(:timestamp)
|
@@ -98,11 +102,15 @@ module Legion
|
|
98
102
|
end
|
99
103
|
|
100
104
|
def subscribe
|
101
|
-
require 'legion/extensions/tasker/runners/updater'
|
102
105
|
sleep(delay_start)
|
103
106
|
consumer_tag = "#{Legion::Settings[:client][:name]}_#{lex_name}_#{runner_name}_#{Thread.current.object_id}"
|
104
107
|
on_cancellation = block { cancel }
|
105
|
-
|
108
|
+
|
109
|
+
@consumer = @queue.subscribe(manual_ack: manual_ack, block: false, consumer_tag: consumer_tag, on_cancellation: on_cancellation) do |*rmq_message|
|
110
|
+
payload = rmq_message.pop
|
111
|
+
metadata = rmq_message.last
|
112
|
+
delivery_info = rmq_message.first
|
113
|
+
|
106
114
|
message = process_message(payload, metadata, delivery_info)
|
107
115
|
if use_runner?
|
108
116
|
Legion::Runner.run(**message,
|
@@ -7,6 +7,8 @@ require_relative 'helpers/task'
|
|
7
7
|
require_relative 'helpers/logger'
|
8
8
|
require_relative 'helpers/lex'
|
9
9
|
require_relative 'helpers/transport'
|
10
|
+
require_relative 'helpers/data'
|
11
|
+
require_relative 'helpers/cache'
|
10
12
|
|
11
13
|
require_relative 'actors/base'
|
12
14
|
require_relative 'actors/every'
|
@@ -37,11 +39,33 @@ module Legion
|
|
37
39
|
@messages = {}
|
38
40
|
build_settings
|
39
41
|
build_transport
|
42
|
+
build_data
|
40
43
|
build_helpers
|
41
44
|
build_runners
|
42
45
|
build_actors
|
43
46
|
end
|
44
47
|
|
48
|
+
def data_required?
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
52
|
+
def transport_required?
|
53
|
+
true
|
54
|
+
end
|
55
|
+
|
56
|
+
def cache_required?
|
57
|
+
false
|
58
|
+
end
|
59
|
+
|
60
|
+
def crypt_required?
|
61
|
+
false
|
62
|
+
end
|
63
|
+
|
64
|
+
def build_data
|
65
|
+
auto_generate_data
|
66
|
+
extension_class::Data.build
|
67
|
+
end
|
68
|
+
|
45
69
|
def build_transport
|
46
70
|
if File.exist? "#{extension_path}/transport/autobuild.rb"
|
47
71
|
require "#{extension_path}/transport/autobuild"
|
@@ -89,6 +113,14 @@ module Legion
|
|
89
113
|
|
90
114
|
Kernel.const_get(lex_class.to_s).const_set('Transport', Module.new { extend Legion::Extensions::Transport })
|
91
115
|
end
|
116
|
+
|
117
|
+
def auto_generate_data
|
118
|
+
require 'legion/extensions/data'
|
119
|
+
log.debug 'running meta magic to generate a data base class'
|
120
|
+
return if Kernel.const_defined? "#{lex_class}::Data"
|
121
|
+
|
122
|
+
Kernel.const_get(lex_class.to_s).const_set('Data', Module.new { extend Legion::Extensions::Data })
|
123
|
+
end
|
92
124
|
end
|
93
125
|
end
|
94
126
|
end
|
@@ -1,9 +1,57 @@
|
|
1
|
+
require 'legion/extensions/data/migrator'
|
2
|
+
require 'legion/extensions/data/model'
|
3
|
+
|
1
4
|
module Legion
|
2
5
|
module Extensions
|
3
6
|
module Data
|
7
|
+
include Legion::Extensions::Helpers::Data
|
8
|
+
include Legion::Extensions::Helpers::Logger
|
9
|
+
|
4
10
|
def build
|
5
11
|
@models = []
|
6
12
|
@migrations = []
|
13
|
+
if Dir[File.expand_path("#{data_path}/migrations/*.rb")].count.positive?
|
14
|
+
log.debug('Has migrations, checking status')
|
15
|
+
run
|
16
|
+
end
|
17
|
+
|
18
|
+
models = Dir[File.expand_path("#{data_path}/models/*.rb")]
|
19
|
+
if models.count.positive?
|
20
|
+
log.debug('Including LEX models')
|
21
|
+
models.each do |file|
|
22
|
+
require file
|
23
|
+
end
|
24
|
+
|
25
|
+
models_class.constants.select do |model|
|
26
|
+
models_class.const_get(model).extend Legion::Extensions::Data::Model
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
def extension_model
|
34
|
+
Legion::Data::Model::Extension[namespace: lex_class.to_s]
|
35
|
+
end
|
36
|
+
|
37
|
+
def schema_version
|
38
|
+
extension_model.values[:schema_version]
|
39
|
+
end
|
40
|
+
|
41
|
+
def migrations_path
|
42
|
+
"#{data_path}/migrations/"
|
43
|
+
end
|
44
|
+
|
45
|
+
def migrate_class
|
46
|
+
@migrate_class ||= Legion::Extensions::Data::Migrator.new(migrations_path, lex_class.to_s)
|
47
|
+
end
|
48
|
+
|
49
|
+
def run
|
50
|
+
return true if migrate_class.is_current?
|
51
|
+
|
52
|
+
log.debug('Running LEX schema migrator')
|
53
|
+
results = migrate_class.run
|
54
|
+
extension_model.update(schema_version: results)
|
7
55
|
end
|
8
56
|
end
|
9
57
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'sequel/extensions/migration'
|
2
|
+
|
3
|
+
module Legion
|
4
|
+
module Extensions
|
5
|
+
module Data
|
6
|
+
class Migrator < Sequel::IntegerMigrator
|
7
|
+
def initialize(path, extension, **)
|
8
|
+
@path = path
|
9
|
+
@extension = extension
|
10
|
+
super(Legion::Data::Connection.sequel, path)
|
11
|
+
end
|
12
|
+
|
13
|
+
def default_schema_column
|
14
|
+
:schema_version
|
15
|
+
end
|
16
|
+
|
17
|
+
def default_schema_table
|
18
|
+
:extensions
|
19
|
+
end
|
20
|
+
|
21
|
+
def schema_dataset
|
22
|
+
Legion::Data::Connection.sequel.from(default_schema_table).where(namespace: @extension)
|
23
|
+
end
|
24
|
+
alias ds schema_dataset
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'legion/extensions/helpers/base'
|
2
|
+
|
3
|
+
module Legion
|
4
|
+
module Extensions
|
5
|
+
module Helpers
|
6
|
+
module Cache
|
7
|
+
include Legion::Extensions::Helpers::Base
|
8
|
+
|
9
|
+
def cache_namespace
|
10
|
+
@cache_namespace ||= lex_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def cache_set(key, value, ttl: 60, **)
|
14
|
+
Legion::Cache.set(cache_namespace + key, value, ttl: ttl)
|
15
|
+
end
|
16
|
+
|
17
|
+
def cache_get(key)
|
18
|
+
Legion::Cache.get(cache_namespace + key)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'legion/extensions/helpers/base'
|
2
|
+
|
3
|
+
module Legion
|
4
|
+
module Extensions
|
5
|
+
module Helpers
|
6
|
+
module Data
|
7
|
+
include Legion::Extensions::Helpers::Base
|
8
|
+
|
9
|
+
def data_path
|
10
|
+
@data_path ||= "#{full_path}/data"
|
11
|
+
end
|
12
|
+
|
13
|
+
def data_class
|
14
|
+
@data_class ||= lex_class::Data
|
15
|
+
end
|
16
|
+
|
17
|
+
def models_class
|
18
|
+
@models_class ||= data_class::Model
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -6,13 +6,13 @@ module Legion
|
|
6
6
|
include Legion::Extensions::Helpers::Logger
|
7
7
|
|
8
8
|
def self.included(base)
|
9
|
-
base.send :extend, Legion::Extensions::Helpers::Core if base.
|
10
|
-
base.send :extend, Legion::Extensions::Helpers::Logger if base.
|
11
|
-
base.extend base if base.
|
9
|
+
base.send :extend, Legion::Extensions::Helpers::Core if base.instance_of?(Class)
|
10
|
+
base.send :extend, Legion::Extensions::Helpers::Logger if base.instance_of?(Class)
|
11
|
+
base.extend base if base.instance_of?(Module)
|
12
12
|
end
|
13
13
|
|
14
14
|
def default_settings
|
15
|
-
{ logger: { level: 'info' } }
|
15
|
+
{ logger: { level: 'info' }, workers: 1 }
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -6,13 +6,33 @@ module Legion
|
|
6
6
|
module Extensions
|
7
7
|
module Helpers
|
8
8
|
module Task
|
9
|
-
def generate_task_log(task_id:, runner_class: to_s,
|
9
|
+
def generate_task_log(task_id:, function:, runner_class: to_s, **payload)
|
10
|
+
begin
|
11
|
+
if Legion::Settings[:data][:connected]
|
12
|
+
runner_id = Legion::Data::Model::Runner[namespace: runner_class].values[:id]
|
13
|
+
function_id = Legion::Data::Model::Function.where(runner_id: runner_id, name: function).first.values[:id]
|
14
|
+
return true if Legion::Data::Model::TaskLog.insert(task_id: task_id, function_id: function_id, entry: Legion::JSON.dump(payload))
|
15
|
+
end
|
16
|
+
rescue StandardError => e
|
17
|
+
log.warn e.backtrace
|
18
|
+
log.warn("generate_task_log failed, reverting to rmq message, e: #{e.message}")
|
19
|
+
end
|
10
20
|
Legion::Transport::Messages::TaskLog.new(task_id: task_id, runner_class: runner_class, function: function, entry: payload).publish
|
11
21
|
end
|
12
22
|
|
13
23
|
def task_update(task_id, status, **opts)
|
14
24
|
return if task_id.nil? || status.nil?
|
15
25
|
|
26
|
+
begin
|
27
|
+
if Legion::Settings[:data][:connected]
|
28
|
+
task = Legion::Data::Model::Task[task_id]
|
29
|
+
task.update(status: status)
|
30
|
+
return true
|
31
|
+
end
|
32
|
+
rescue StandardError => e
|
33
|
+
log.warn("task_update failed, reverting to rmq message, e: #{e.message}")
|
34
|
+
end
|
35
|
+
|
16
36
|
update_hash = { task_id: task_id, status: status }
|
17
37
|
%i[results payload function_args payload results].each do |column|
|
18
38
|
update_hash[column] = opts[column] if opts.key? column
|
@@ -2,6 +2,7 @@ module Legion
|
|
2
2
|
module Extensions
|
3
3
|
module Transport
|
4
4
|
include Legion::Extensions::Helpers::Transport
|
5
|
+
include Legion::Extensions::Helpers::Logger
|
5
6
|
|
6
7
|
attr_accessor :exchanges, :queues, :consumers, :messages
|
7
8
|
|
@@ -88,12 +89,13 @@ module Legion
|
|
88
89
|
def build_e_to_q(array)
|
89
90
|
array.each do |binding|
|
90
91
|
binding[:routing_key] = nil unless binding.key? :routing_key
|
91
|
-
binding[:to] = nil unless binding.key?
|
92
|
+
binding[:to] = nil unless binding.key?(:to)
|
93
|
+
binding[:from] = default_exchange if !binding.key?(:from) || binding[:from].nil?
|
92
94
|
bind_e_to_q(**binding)
|
93
95
|
end
|
94
96
|
end
|
95
97
|
|
96
|
-
def bind_e_to_q(to:, from: default_exchange, routing_key: nil)
|
98
|
+
def bind_e_to_q(to:, from: default_exchange, routing_key: nil, **)
|
97
99
|
if from.is_a? String
|
98
100
|
from = "#{transport_class}::Exchanges::#{from.split('_').collect(&:capitalize).join}" unless from.include?('::')
|
99
101
|
auto_create_exchange(from) unless Object.const_defined? from
|
@@ -129,9 +131,9 @@ module Legion
|
|
129
131
|
to = to.is_a?(String) ? Kernel.const_get(to).new : to.new
|
130
132
|
to.bind(from, routing_key: routing_key)
|
131
133
|
rescue StandardError => e
|
132
|
-
|
133
|
-
|
134
|
-
|
134
|
+
log.fatal e.message
|
135
|
+
log.fatal e.backtrace
|
136
|
+
log.fatal({ from: from, to: to, routing_key: routing_key })
|
135
137
|
end
|
136
138
|
|
137
139
|
def e_to_q
|
data/lib/legion/process.rb
CHANGED
@@ -49,9 +49,7 @@ module Legion
|
|
49
49
|
|
50
50
|
until quit
|
51
51
|
sleep(1)
|
52
|
-
if @options.key? :time_limit
|
53
|
-
@quit = true if Time.now - start_time > @options[:time_limit]
|
54
|
-
end
|
52
|
+
@quit = true if @options.key?(:time_limit) && Time.now - start_time > @options[:time_limit]
|
55
53
|
end
|
56
54
|
Legion::Logging.info('Legion is shutting down!')
|
57
55
|
Legion.shutdown
|
data/lib/legion/service.rb
CHANGED
@@ -62,8 +62,9 @@ module Legion
|
|
62
62
|
Legion::Logging.info('Legion::Service.shutdown was called')
|
63
63
|
@shutdown = true
|
64
64
|
Legion::Settings[:client][:shutting_down] = true
|
65
|
-
sleep(
|
65
|
+
sleep(0.5)
|
66
66
|
Legion::Extensions.shutdown
|
67
|
+
sleep(1)
|
67
68
|
Legion::Data.shutdown
|
68
69
|
Legion::Cache.shutdown
|
69
70
|
Legion::Transport::Connection.shutdown
|
data/lib/legion/version.rb
CHANGED
data/settings/client.json
CHANGED
@@ -8,10 +8,12 @@
|
|
8
8
|
},
|
9
9
|
"data": {
|
10
10
|
"connection": {
|
11
|
-
"max_connections":
|
11
|
+
"max_connections": 100,
|
12
|
+
"preconnect": false
|
12
13
|
}
|
13
14
|
},
|
14
15
|
"crypt": {
|
16
|
+
"cluster_secret": "fkljwelkfjwelkfjwelkjfwe",
|
15
17
|
"vault": {
|
16
18
|
"read_cluster_secret": false,
|
17
19
|
"connected": false,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: legionio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esity
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby-ext
|
@@ -365,8 +365,12 @@ files:
|
|
365
365
|
- lib/legion/extensions/builders/runners.rb
|
366
366
|
- lib/legion/extensions/core.rb
|
367
367
|
- lib/legion/extensions/data.rb
|
368
|
+
- lib/legion/extensions/data/migrator.rb
|
369
|
+
- lib/legion/extensions/data/model.rb
|
368
370
|
- lib/legion/extensions/helpers/base.rb
|
371
|
+
- lib/legion/extensions/helpers/cache.rb
|
369
372
|
- lib/legion/extensions/helpers/core.rb
|
373
|
+
- lib/legion/extensions/helpers/data.rb
|
370
374
|
- lib/legion/extensions/helpers/lex.rb
|
371
375
|
- lib/legion/extensions/helpers/logger.rb
|
372
376
|
- lib/legion/extensions/helpers/task.rb
|