legionio 0.3.0 → 0.3.1
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/.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
|