lex-node 0.1.3 → 0.2.0

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +69 -0
  3. data/.github/workflows/rubocop.yml +28 -0
  4. data/.rubocop.yml +1 -0
  5. data/Dockerfile +9 -0
  6. data/Gemfile +8 -2
  7. data/{LICENSE.txt → LICENSE} +0 -0
  8. data/docker_deploy.rb +13 -0
  9. data/lex-node.gemspec +6 -13
  10. data/lib/legion/extensions/node/actors/beat.rb +1 -1
  11. data/lib/legion/extensions/node/actors/vault.rb +27 -0
  12. data/lib/legion/extensions/node/actors/vault_token_request.rb +27 -0
  13. data/lib/legion/extensions/node/data_test/migrations/001_nodes_table.rb +26 -0
  14. data/lib/legion/extensions/node/data_test/migrations/002_node_history_table.rb +26 -0
  15. data/lib/legion/extensions/node/data_test/migrations/003_legion_version_colume.rb +8 -0
  16. data/lib/legion/extensions/node/data_test/migrations/004_node_extensions.rb +23 -0
  17. data/lib/legion/extensions/node/runners/beat.rb +2 -2
  18. data/lib/legion/extensions/node/runners/crypt.rb +1 -1
  19. data/lib/legion/extensions/node/runners/node.rb +6 -1
  20. data/lib/legion/extensions/node/runners/vault.rb +40 -0
  21. data/lib/legion/extensions/node/transport/exchanges/node.rb +3 -0
  22. data/lib/legion/extensions/node/transport/messages/beat.rb +2 -2
  23. data/lib/legion/extensions/node/transport/messages/push_vault_token.rb +32 -0
  24. data/lib/legion/extensions/node/transport/messages/request_vault_token.rb +28 -0
  25. data/lib/legion/extensions/node/transport/queues/vault.rb +7 -0
  26. data/lib/legion/extensions/node/version.rb +1 -1
  27. metadata +27 -103
  28. data/.circleci/config.yml +0 -82
  29. data/Gemfile.lock +0 -128
  30. data/Rakefile +0 -6
  31. data/bin/console +0 -14
  32. data/bin/setup +0 -8
  33. data/bitbucket-pipelines.yml +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb5d86c4803b06a34c29d846eba9261050c63f20943e29d1c0a523b9a4b243d0
4
- data.tar.gz: 828cd9e8d8552ae2af5843cfe7d71a6d0cd9e22ed789e22765074a0d1fd0263f
3
+ metadata.gz: b7a24355435f4062840c1a3a93f98da788c51103665bde303fa3c2ad1649889a
4
+ data.tar.gz: 152bb8170bf5c0176f45e268db29dd257d43839c9c7ea44f06f1da3d9a875bf6
5
5
  SHA512:
6
- metadata.gz: 27086e2c3f5fa7839e2bd50602dca02cb757c745b909a915ed18d57cb4b6d2169d6e96dcd203e3e0f729103fad924d6273eda1aa9b33871dd6c80e7d9538dcf9
7
- data.tar.gz: 6c107540d0cddb8a3c897c1e526866a5ed31be0da73c5676ffa9da9aa5fd47c7a6471336d0171f3d39304f474256a1ed2fce9109a6ad68d2b9ac47d8b299c24a
6
+ metadata.gz: 14ee4014b1699b58d51e866b30080247815d776c063cbee5764a1a1ee392d2d3a0cd2e34e41d573c9d804d74b5e67342f8641107eba2e6df840703a57f24e15e
7
+ data.tar.gz: 215ed3d105bbfa0af16ed2b3bc897019d54dd544f5368643e2256aa7649619c3d2e2da0ac0be2ba3f2813ea801a59400022d966dc7d8fa6645c51d01496eadd2
@@ -0,0 +1,69 @@
1
+ name: RSpec
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ rspec:
6
+ strategy:
7
+ fail-fast: false
8
+ matrix:
9
+ os: [ubuntu-latest]
10
+ ruby: [2.7]
11
+ runs-on: ${{ matrix.os }}
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.ruby }}
17
+ bundler-cache: true
18
+ - name: RSpec run
19
+ run: |
20
+ bash -c "
21
+ bundle exec rspec
22
+ [[ $? -ne 2 ]]
23
+ "
24
+ rspec-mri:
25
+ needs: rspec
26
+ strategy:
27
+ fail-fast: false
28
+ matrix:
29
+ os: [ ubuntu-latest ]
30
+ ruby: [2.5, 2.6, '3.0', head]
31
+ runs-on: ${{ matrix.os }}
32
+ steps:
33
+ - uses: actions/checkout@v2
34
+ - uses: ruby/setup-ruby@v1
35
+ with:
36
+ ruby-version: ${{ matrix.ruby }}
37
+ bundler-cache: true
38
+ - run: bundle exec rspec
39
+ rspec-jruby:
40
+ needs: rspec
41
+ strategy:
42
+ fail-fast: false
43
+ matrix:
44
+ os: [ ubuntu-latest ]
45
+ ruby: [ jruby, jruby-head]
46
+ runs-on: ${{ matrix.os }}
47
+ steps:
48
+ - uses: actions/checkout@v2
49
+ - uses: ruby/setup-ruby@v1
50
+ with:
51
+ ruby-version: ${{ matrix.ruby }}
52
+ bundler-cache: true
53
+ - run: JRUBY_OPTS="--debug" bundle exec rspec
54
+ rspec-truffleruby:
55
+ needs: rspec
56
+ strategy:
57
+ fail-fast: false
58
+ matrix:
59
+ os: [ ubuntu-latest ]
60
+ ruby: [truffleruby]
61
+ runs-on: ${{ matrix.os }}
62
+ steps:
63
+ - uses: actions/checkout@v2
64
+ - uses: ruby/setup-ruby@v1
65
+ with:
66
+ ruby-version: ${{ matrix.ruby }}
67
+ bundler-cache: true
68
+ - run: bundle exec rspec
69
+
@@ -0,0 +1,28 @@
1
+ name: Rubocop
2
+ on: [push, pull_request]
3
+ jobs:
4
+ rubocop:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ os: [ubuntu-latest]
9
+ ruby: [2.7]
10
+ runs-on: ${{ matrix.os }}
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: ${{ matrix.ruby }}
16
+ bundler-cache: true
17
+ - name: Install Rubocop
18
+ run: gem install rubocop code-scanning-rubocop
19
+ - name: Rubocop run --no-doc
20
+ run: |
21
+ bash -c "
22
+ rubocop --require code_scanning --format CodeScanning::SarifFormatter -o rubocop.sarif
23
+ [[ $? -ne 2 ]]
24
+ "
25
+ - name: Upload Sarif output
26
+ uses: github/codeql-action/upload-sarif@v1
27
+ with:
28
+ sarif_file: rubocop.sarif
data/.rubocop.yml CHANGED
@@ -11,6 +11,7 @@ Style/Documentation:
11
11
  AllCops:
12
12
  TargetRubyVersion: 2.5
13
13
  NewCops: enable
14
+ SuggestExtensions: false
14
15
  Style/FrozenStringLiteralComment:
15
16
  Enabled: false
16
17
  Naming/FileName:
data/Dockerfile ADDED
@@ -0,0 +1,9 @@
1
+ FROM legionio/legion:latest
2
+ LABEL maintainer="Matthew Iverson <matthewdiverson@gmail.com>"
3
+
4
+ RUN mkdir /etc/legionio
5
+ RUN apk update && apk add build-base tzdata gcc git
6
+
7
+ COPY . ./
8
+ RUN gem install lex-elastic_app_search --no-document --no-prerelease
9
+ CMD ruby --jit $(which legionio)
data/Gemfile CHANGED
@@ -1,4 +1,10 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in legion-extensions-node.gemspec
4
2
  gemspec
3
+
4
+ group :test do
5
+ gem 'rake'
6
+ gem 'rspec'
7
+ gem 'rspec_junit_formatter'
8
+ gem 'rubocop'
9
+ gem 'simplecov'
10
+ end
File without changes
data/docker_deploy.rb ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ name = 'node'
4
+ require "./lib/legion/extensions/#{name}/version"
5
+ version = Legion::Extensions::Node::VERSION
6
+
7
+ puts "Building docker image for Legion v#{version}"
8
+ system("docker build --tag legionio/lex-#{name}:v#{version} .")
9
+ puts 'Pushing to hub.docker.com'
10
+ system("docker push legionio/lex-#{name}:v#{version}")
11
+ system("docker tag legionio/lex-#{name}:v#{version} legionio/lex-#{name}:latest")
12
+ system("docker push legionio/lex-#{name}:latest")
13
+ puts 'completed'
data/lex-node.gemspec CHANGED
@@ -7,26 +7,19 @@ Gem::Specification.new do |spec|
7
7
  spec.email = ['matthewdiverson@gmail.com']
8
8
 
9
9
  spec.summary = 'Does Legion Node things'
10
- spec.description = 'This lex is responsible for sending heartbeats, and allowing for dynamic confgs'
11
- spec.homepage = 'https://bitbucket.org/legion-io/lex-node/CHANGELOG.md'
10
+ spec.description = 'This lex is responsible for sending heartbeats, allowing for dynamic config, cluster secret, etc'
11
+ spec.homepage = 'https://github.com/LegionIO/lex-node'
12
12
  spec.license = 'MIT'
13
13
  spec.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
14
14
 
15
15
  spec.metadata['homepage_uri'] = spec.homepage
16
- spec.metadata['source_code_uri'] = 'https://bitbucket.org/legion-io/lex-node'
17
- spec.metadata['documentation_uri'] = 'https://legionio.atlassian.net/wiki/spaces/LEX/pages/612139025'
18
- spec.metadata['changelog_uri'] = 'https://legionio.atlassian.net/wiki/spaces/LEX/pages/612139042/'
19
- spec.metadata['bug_tracker_uri'] = 'https://bitbucket.org/legion-io/lex-node/issues'
16
+ spec.metadata['source_code_uri'] = 'https://github.com/LegionIO/lex-node'
17
+ spec.metadata['documentation_uri'] = 'https://github.com/LegionIO/lex-node'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/LegionIO/lex-node'
19
+ spec.metadata['bug_tracker_uri'] = 'https://github.com/LegionIO/lex-node/issues'
20
20
 
21
21
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
22
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
23
  end
24
24
  spec.require_paths = ['lib']
25
-
26
- spec.add_development_dependency 'legionio'
27
- spec.add_development_dependency 'rake'
28
- spec.add_development_dependency 'rspec'
29
- spec.add_development_dependency 'rspec_junit_formatter'
30
- spec.add_development_dependency 'rubocop'
31
- spec.add_development_dependency 'simplecov', '< 0.18.0'
32
25
  end
@@ -21,7 +21,7 @@ module Legion::Extensions::Node::Actor
21
21
  end
22
22
 
23
23
  def time
24
- 10
24
+ settings['beat_interval']
25
25
  end
26
26
  end
27
27
  end
@@ -0,0 +1,27 @@
1
+ module Legion::Extensions::Node::Actor
2
+ class Vault < Legion::Extensions::Actors::Subscription
3
+ # def delay_start
4
+ # 2
5
+ # end
6
+
7
+ def runner_class
8
+ Legion::Extensions::Node::Runners::Vault
9
+ end
10
+
11
+ def disabled?
12
+ false
13
+ end
14
+
15
+ def use_runner?
16
+ true
17
+ end
18
+
19
+ def check_subtask?
20
+ false
21
+ end
22
+
23
+ def generate_task?
24
+ false
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module Legion::Extensions::Node::Actor
2
+ class VaultTokenRequest < Legion::Extensions::Actors::Once
3
+ def runner_function
4
+ 'request_token'
5
+ end
6
+
7
+ def runner_class
8
+ Legion::Extensions::Node::Runners::Vault
9
+ end
10
+
11
+ def use_runner?
12
+ false
13
+ end
14
+
15
+ def check_subtask?
16
+ false
17
+ end
18
+
19
+ def generate_task?
20
+ false
21
+ end
22
+
23
+ def delay
24
+ 0
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ Sequel.migration do
2
+ up do
3
+ run "CREATE TABLE `nodes` (
4
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
5
+ `name` varchar(128) NOT NULL DEFAULT '',
6
+ `datacenter_id` int(11) unsigned DEFAULT NULL,
7
+ `environment_id` int(11) unsigned DEFAULT NULL,
8
+ `status` varchar(255) NOT NULL DEFAULT 'unknown',
9
+ `active` tinyint(1) unsigned NOT NULL DEFAULT '1',
10
+ `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
11
+ `updated` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
12
+ PRIMARY KEY (`id`),
13
+ UNIQUE KEY `name` (`name`),
14
+ KEY `active` (`active`),
15
+ KEY `status` (`status`),
16
+ KEY `node_datacenter_id` (`datacenter_id`),
17
+ KEY `node_environment_id` (`environment_id`),
18
+ CONSTRAINT `node_datacenter_id` FOREIGN KEY (`datacenter_id`) REFERENCES `datacenters` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
19
+ CONSTRAINT `node_environment_id` FOREIGN KEY (`environment_id`) REFERENCES `environments` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
20
+ ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;"
21
+ end
22
+
23
+ down do
24
+ drop_table :nodes
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ Sequel.migration do
2
+ up do
3
+ run "
4
+ create table node_history
5
+ (
6
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
7
+ node_id int(11) unsigned not null,
8
+ previous_staus varchar(255) null,
9
+ status varchar(255) default active not null,
10
+ `modified_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
11
+ `record_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+ modified_by varchar(255) default 'node' not null,
13
+ PRIMARY KEY (`id`),
14
+ KEY `node_id` (`node_id`),
15
+ KEY `status` (`status`),
16
+ KEY `status` (`previous_status`),
17
+ CONSTRAINT `node_id` FOREIGN KEY (`nodes`) REFERENCES `nodes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
18
+ );
19
+ "
20
+ end
21
+
22
+ down do
23
+ drop_table :node_history
24
+ end
25
+ end
26
+
@@ -0,0 +1,8 @@
1
+ Sequel.migration do
2
+ change do
3
+ alter_table(:nodes) do
4
+ add_column :version, String, null: true
5
+ add_index :nodes_version, :version
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ Sequel.migration do
2
+ up do
3
+ run "
4
+ create table node_extensions
5
+ (
6
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
7
+ node_id int(11) unsigned not null,
8
+ extension_id int(11) unsigned not null,
9
+ `record_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+ PRIMARY KEY (`id`),
11
+ KEY `node_id` (`node_id`),
12
+ KEY `version` (`version`),
13
+ CONSTRAINT `node_id` FOREIGN KEY (`nodes`) REFERENCES `nodes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
14
+ CONSTRAINT `extension_id` FOREIGN KEY (`extensions`) REFERENCES `extensions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
15
+ );
16
+ "
17
+ end
18
+
19
+ down do
20
+ drop_table :node_extensions
21
+ end
22
+ end
23
+
@@ -2,10 +2,10 @@ module Legion::Extensions::Node::Runners
2
2
  module Beat
3
3
  include Legion::Extensions::Helpers::Transport
4
4
 
5
- def beat(status: 'healthy', **opts)
5
+ def beat(status: 'active', **opts)
6
6
  log.debug 'sending hearbeat'
7
7
  messages::Beat.new(status: status).publish
8
- { success: true, status: status, **opts }
8
+ { success: true, status: status, version: Legion::VERSION || nil, **opts }
9
9
  end
10
10
 
11
11
  include Legion::Extensions::Helpers::Lex
@@ -24,7 +24,7 @@ module Legion::Extensions::Node::Runners
24
24
  def request_public_keys(**_opts)
25
25
  log.debug 'request_public_keys'
26
26
  message_hash = { function: 'push_public_key' }
27
- Legion::Extensions::Node::Transport::Messages::RequestPublicKeys.new(message_hash).publish
27
+ Legion::Extensions::Node::Transport::Messages::RequestPublicKeys.new(**message_hash).publish
28
28
  {}
29
29
  end
30
30
 
@@ -21,7 +21,7 @@ module Legion::Extensions::Node::Runners
21
21
  message_hash = { function: 'update_public_key',
22
22
  public_key: Legion::Crypt.public_key.to_s,
23
23
  **Legion::Settings[:client] }
24
- Legion::Extensions::Node::Transport::Messages::PublicKey.new(message_hash).publish
24
+ Legion::Extensions::Node::Transport::Messages::PublicKey.new(**message_hash).publish
25
25
  {}
26
26
  end
27
27
 
@@ -51,6 +51,11 @@ module Legion::Extensions::Node::Runners
51
51
  {}
52
52
  end
53
53
 
54
+ def receive_vault_token(message:, routing_key:, public_key:, **)
55
+ Legion::Extensions::Node::Runners::Vault.receive_vault_token(message: message, routing_key: routing_key,
56
+ public_key: public_key)
57
+ end
58
+
54
59
  include Legion::Extensions::Helpers::Lex
55
60
  end
56
61
  end
@@ -0,0 +1,40 @@
1
+ module Legion::Extensions::Node::Runners
2
+ module Vault
3
+ def request_token(**)
4
+ return {} if Legion::Settings[:crypt][:vault][:connected]
5
+ return {} unless Legion::Settings[:crypt][:vault][:enabled]
6
+
7
+ request_vault_token
8
+ end
9
+
10
+ def request_vault_token(**)
11
+ Legion::Extensions::Node::Transport::Messages::RequestVaultToken.new.publish
12
+ {}
13
+ end
14
+
15
+ def receive_vault_token(message:, **opts) # rubocop:disable Metrics/AbcSize
16
+ return if Legion::Settings[:crypt][:vault][:connected]
17
+
18
+ Legion::Settings[:crypt][:vault][:token] = Legion::Crypt.decrypt_from_keypair(message: message)
19
+ %i[protocol address port].each do |setting|
20
+ next unless opts.key? setting
21
+ next unless Legion::Settings[:crypt][:vault][setting].nil?
22
+
23
+ Legion::Settings[:crypt][:vault][setting] = opts[setting]
24
+ end
25
+ Legion::Crypt.connect_vault
26
+ {}
27
+ end
28
+
29
+ def push_vault_token(public_key:, node_name:, **)
30
+ return {} unless Legion::Settings[:crypt][:vault][:token]
31
+
32
+ encrypted = Legion::Crypt.encrypt_from_keypair(message: Legion::Settings[:crypt][:vault][:token],
33
+ pub_key: public_key)
34
+ Legion::Extensions::Node::Transport::Messages::PushVaultToken.new(token: encrypted, queue_name: node_name).publish
35
+ {}
36
+ end
37
+
38
+ include Legion::Extensions::Helpers::Lex
39
+ end
40
+ end
@@ -4,6 +4,9 @@ module Legion::Extensions::Node
4
4
  module Transport
5
5
  module Exchanges
6
6
  class Node < Legion::Transport::Exchanges::Node
7
+ def exchange_name
8
+ 'node'
9
+ end
7
10
  end
8
11
  end
9
12
  end
@@ -1,7 +1,7 @@
1
1
  module Legion::Extensions::Node::Transport::Messages
2
2
  class Beat < Legion::Transport::Message
3
3
  def routing_key
4
- 'health'
4
+ 'status'
5
5
  end
6
6
 
7
7
  def type
@@ -17,7 +17,7 @@ module Legion::Extensions::Node::Transport::Messages
17
17
  end
18
18
 
19
19
  def message
20
- hash = { hostname: Legion::Settings[:client][:hostname], pid: Process.pid, timestamp: Time.now }
20
+ hash = { name: Legion::Settings[:client][:hostname], pid: Process.pid, timestamp: Time.now }
21
21
  hash[:status] = @options[:status].nil? ? 'healthy' : @options[:status]
22
22
  hash
23
23
  end
@@ -0,0 +1,32 @@
1
+ module Legion::Extensions::Node::Transport::Messages
2
+ class PushVaultToken < Legion::Transport::Message
3
+ def routing_key
4
+ "node.#{@options[:queue_name]}"
5
+ end
6
+
7
+ def exchange
8
+ Legion::Transport::Exchanges::Node
9
+ end
10
+
11
+ def message
12
+ {
13
+ function: 'receive_vault_token',
14
+ runner_class: 'Legion::Extensions::Node::Runners::Vault',
15
+ message: @options[:token],
16
+ public_key: Base64.encode64(Legion::Crypt.public_key)
17
+ }
18
+ end
19
+
20
+ def type
21
+ 'task'
22
+ end
23
+
24
+ def encrypt?
25
+ false
26
+ end
27
+
28
+ def validate
29
+ @valid = true
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,28 @@
1
+ module Legion::Extensions::Node::Transport::Messages
2
+ class RequestVaultToken < Legion::Transport::Message
3
+ def routing_key
4
+ 'vault'
5
+ end
6
+
7
+ def message
8
+ {
9
+ function: 'push_vault_token',
10
+ node_name: Legion::Settings[:client][:name],
11
+ runner_class: 'Legion::Extensions::Node::Runners::Vault',
12
+ public_key: Legion::Crypt.public_key
13
+ }
14
+ end
15
+
16
+ def type
17
+ 'task'
18
+ end
19
+
20
+ def encrypt?
21
+ false
22
+ end
23
+
24
+ def validate
25
+ @valid = true
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ module Legion::Extensions::Node::Transport::Queues
2
+ class Vault < Legion::Transport::Queue
3
+ def queue_options
4
+ { auto_delete: false }
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,7 @@
1
1
  module Legion
2
2
  module Extensions
3
3
  module Node
4
- VERSION = '0.1.3'.freeze
4
+ VERSION = '0.2.0'.freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,148 +1,72 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-node
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-24 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: legionio
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec_junit_formatter
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: simplecov
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "<"
88
- - !ruby/object:Gem::Version
89
- version: 0.18.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "<"
95
- - !ruby/object:Gem::Version
96
- version: 0.18.0
97
- description: This lex is responsible for sending heartbeats, and allowing for dynamic
98
- confgs
11
+ date: 2021-06-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This lex is responsible for sending heartbeats, allowing for dynamic
14
+ config, cluster secret, etc
99
15
  email:
100
16
  - matthewdiverson@gmail.com
101
17
  executables: []
102
18
  extensions: []
103
19
  extra_rdoc_files: []
104
20
  files:
105
- - ".circleci/config.yml"
21
+ - ".github/workflows/rspec.yml"
22
+ - ".github/workflows/rubocop.yml"
106
23
  - ".gitignore"
107
24
  - ".rspec"
108
25
  - ".rubocop.yml"
26
+ - Dockerfile
109
27
  - Gemfile
110
- - Gemfile.lock
111
- - LICENSE.txt
28
+ - LICENSE
112
29
  - README.md
113
- - Rakefile
114
- - bin/console
115
- - bin/setup
116
- - bitbucket-pipelines.yml
30
+ - docker_deploy.rb
117
31
  - lex-node.gemspec
118
32
  - lib/legion/extensions/node.rb
119
33
  - lib/legion/extensions/node/actors/beat.rb
120
34
  - lib/legion/extensions/node/actors/crypt.rb
121
35
  - lib/legion/extensions/node/actors/push_key.rb
36
+ - lib/legion/extensions/node/actors/vault.rb
37
+ - lib/legion/extensions/node/actors/vault_token_request.rb
38
+ - lib/legion/extensions/node/data_test/migrations/001_nodes_table.rb
39
+ - lib/legion/extensions/node/data_test/migrations/002_node_history_table.rb
40
+ - lib/legion/extensions/node/data_test/migrations/003_legion_version_colume.rb
41
+ - lib/legion/extensions/node/data_test/migrations/004_node_extensions.rb
122
42
  - lib/legion/extensions/node/runners/beat.rb
123
43
  - lib/legion/extensions/node/runners/crypt.rb
124
44
  - lib/legion/extensions/node/runners/node.rb
45
+ - lib/legion/extensions/node/runners/vault.rb
125
46
  - lib/legion/extensions/node/transport.rb
126
47
  - lib/legion/extensions/node/transport/exchanges/node.rb
127
48
  - lib/legion/extensions/node/transport/messages/beat.rb
128
49
  - lib/legion/extensions/node/transport/messages/public_key.rb
129
50
  - lib/legion/extensions/node/transport/messages/push_cluster_secret.rb
51
+ - lib/legion/extensions/node/transport/messages/push_vault_token.rb
130
52
  - lib/legion/extensions/node/transport/messages/request_cluster_secret.rb
131
53
  - lib/legion/extensions/node/transport/messages/request_public_keys.rb
54
+ - lib/legion/extensions/node/transport/messages/request_vault_token.rb
132
55
  - lib/legion/extensions/node/transport/queues/crypt.rb
133
56
  - lib/legion/extensions/node/transport/queues/health.rb
134
57
  - lib/legion/extensions/node/transport/queues/node.rb
58
+ - lib/legion/extensions/node/transport/queues/vault.rb
135
59
  - lib/legion/extensions/node/version.rb
136
60
  - sonar-project.properties
137
- homepage: https://bitbucket.org/legion-io/lex-node/CHANGELOG.md
61
+ homepage: https://github.com/LegionIO/lex-node
138
62
  licenses:
139
63
  - MIT
140
64
  metadata:
141
- homepage_uri: https://bitbucket.org/legion-io/lex-node/CHANGELOG.md
142
- source_code_uri: https://bitbucket.org/legion-io/lex-node
143
- documentation_uri: https://legionio.atlassian.net/wiki/spaces/LEX/pages/612139025
144
- changelog_uri: https://legionio.atlassian.net/wiki/spaces/LEX/pages/612139042/
145
- bug_tracker_uri: https://bitbucket.org/legion-io/lex-node/issues
65
+ homepage_uri: https://github.com/LegionIO/lex-node
66
+ source_code_uri: https://github.com/LegionIO/lex-node
67
+ documentation_uri: https://github.com/LegionIO/lex-node
68
+ changelog_uri: https://github.com/LegionIO/lex-node
69
+ bug_tracker_uri: https://github.com/LegionIO/lex-node/issues
146
70
  post_install_message:
147
71
  rdoc_options: []
148
72
  require_paths:
@@ -158,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
82
  - !ruby/object:Gem::Version
159
83
  version: '0'
160
84
  requirements: []
161
- rubygems_version: 3.1.2
85
+ rubygems_version: 3.1.6
162
86
  signing_key:
163
87
  specification_version: 4
164
88
  summary: Does Legion Node things
data/.circleci/config.yml DELETED
@@ -1,82 +0,0 @@
1
- version: 2.1
2
- orbs:
3
- ruby: circleci/ruby@0.2.1
4
- sonarcloud: sonarsource/sonarcloud@1.0.1
5
-
6
- jobs:
7
- "rubocop":
8
- docker:
9
- - image: circleci/ruby:2.7-node
10
- steps:
11
- - checkout
12
- - ruby/load-cache
13
- - ruby/install-deps
14
- - run:
15
- name: Run Rubocop
16
- command: bundle exec rubocop
17
- - ruby/save-cache
18
- "ruby-two-five":
19
- docker:
20
- - image: circleci/ruby:2.5
21
- steps:
22
- - checkout
23
- - ruby/load-cache
24
- - run:
25
- name: update bundler
26
- command: gem update bundler
27
- - ruby/install-deps
28
- - ruby/run-tests
29
- - ruby/save-cache
30
- "ruby-two-six":
31
- docker:
32
- - image: circleci/ruby:2.6
33
- steps:
34
- - checkout
35
- - ruby/load-cache
36
- - run:
37
- name: update bundler
38
- command: gem update bundler
39
- - ruby/install-deps
40
- - ruby/run-tests
41
- - ruby/save-cache
42
- "ruby-two-seven":
43
- docker:
44
- - image: circleci/ruby:2.7
45
- steps:
46
- - checkout
47
- - ruby/load-cache
48
- - ruby/install-deps
49
- - ruby/run-tests
50
- - ruby/save-cache
51
- "sonarcloud":
52
- docker:
53
- - image: circleci/ruby:2.7
54
- steps:
55
- - checkout
56
- - ruby/load-cache
57
- - ruby/install-deps
58
- - ruby/run-tests
59
- - run:
60
- name: Run Rubocop
61
- command: bundle exec rubocop --format=json --out=rubocop-result.json
62
- - sonarcloud/scan
63
- - ruby/save-cache
64
-
65
- workflows:
66
- version: 2
67
- rubocop-rspec:
68
- jobs:
69
- - rubocop
70
- - ruby-two-five:
71
- requires:
72
- - rubocop
73
- - ruby-two-six:
74
- requires:
75
- - ruby-two-five
76
- - ruby-two-seven:
77
- requires:
78
- - ruby-two-five
79
- - sonarcloud:
80
- requires:
81
- - ruby-two-seven
82
- - ruby-two-six
data/Gemfile.lock DELETED
@@ -1,128 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- lex-node (0.1.3)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- amq-protocol (2.3.2)
10
- ast (2.4.1)
11
- aws-eventstream (1.1.0)
12
- aws-sigv4 (1.2.2)
13
- aws-eventstream (~> 1, >= 1.0.2)
14
- bunny (2.17.0)
15
- amq-protocol (~> 2.3, >= 2.3.1)
16
- concurrent-ruby (1.1.7)
17
- concurrent-ruby-ext (1.1.7)
18
- concurrent-ruby (= 1.1.7)
19
- connection_pool (2.2.3)
20
- daemons (1.3.1)
21
- dalli (2.7.11)
22
- diff-lcs (1.4.4)
23
- docile (1.3.2)
24
- hashdiff (1.0.1)
25
- json (2.3.1)
26
- json_pure (2.3.1)
27
- legion-cache (1.0.0)
28
- connection_pool
29
- dalli
30
- redis
31
- legion-crypt (0.2.1)
32
- vault
33
- legion-data (1.1.4)
34
- legion-logging
35
- legion-settings
36
- mysql2
37
- sequel
38
- legion-exceptions (1.1.2)
39
- legion-json (1.1.2)
40
- json_pure
41
- multi_json
42
- legion-logging (1.1.3)
43
- rainbow (~> 3)
44
- legion-settings (1.1.2)
45
- legion-json
46
- legion-logging
47
- legion-transport (1.1.5)
48
- bunny
49
- concurrent-ruby
50
- legion-json
51
- legionio (0.3.4)
52
- bunny
53
- concurrent-ruby
54
- concurrent-ruby-ext
55
- daemons
56
- hashdiff
57
- legion-cache
58
- legion-crypt
59
- legion-data
60
- legion-exceptions
61
- legion-json
62
- legion-logging
63
- legion-settings
64
- legion-transport
65
- lex-node
66
- oj
67
- multi_json (1.15.0)
68
- mysql2 (0.5.3)
69
- oj (3.10.15)
70
- parallel (1.19.2)
71
- parser (2.7.2.0)
72
- ast (~> 2.4.1)
73
- rainbow (3.0.0)
74
- rake (13.0.1)
75
- redis (4.2.2)
76
- regexp_parser (1.8.2)
77
- rexml (3.2.4)
78
- rspec (3.9.0)
79
- rspec-core (~> 3.9.0)
80
- rspec-expectations (~> 3.9.0)
81
- rspec-mocks (~> 3.9.0)
82
- rspec-core (3.9.3)
83
- rspec-support (~> 3.9.3)
84
- rspec-expectations (3.9.3)
85
- diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.9.0)
87
- rspec-mocks (3.9.1)
88
- diff-lcs (>= 1.2.0, < 2.0)
89
- rspec-support (~> 3.9.0)
90
- rspec-support (3.9.4)
91
- rspec_junit_formatter (0.4.1)
92
- rspec-core (>= 2, < 4, != 2.12.0)
93
- rubocop (1.0.0)
94
- parallel (~> 1.10)
95
- parser (>= 2.7.1.5)
96
- rainbow (>= 2.2.2, < 4.0)
97
- regexp_parser (>= 1.8)
98
- rexml
99
- rubocop-ast (>= 0.6.0)
100
- ruby-progressbar (~> 1.7)
101
- unicode-display_width (>= 1.4.0, < 2.0)
102
- rubocop-ast (1.0.1)
103
- parser (>= 2.7.1.5)
104
- ruby-progressbar (1.10.1)
105
- sequel (5.37.0)
106
- simplecov (0.17.1)
107
- docile (~> 1.1)
108
- json (>= 1.8, < 3)
109
- simplecov-html (~> 0.10.0)
110
- simplecov-html (0.10.2)
111
- unicode-display_width (1.7.0)
112
- vault (0.15.0)
113
- aws-sigv4
114
-
115
- PLATFORMS
116
- ruby
117
-
118
- DEPENDENCIES
119
- legionio
120
- lex-node!
121
- rake
122
- rspec
123
- rspec_junit_formatter
124
- rubocop
125
- simplecov (< 0.18.0)
126
-
127
- BUNDLED WITH
128
- 2.1.4
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task default: :spec
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'legion/extensions/node'
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require 'irb'
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,17 +0,0 @@
1
- image: ruby:2.7.0
2
-
3
- pipelines:
4
- tags:
5
- "v*":
6
- - step:
7
- name: Push to RubyGems
8
- deployment: RubyGems
9
- script:
10
- - gem install bundler gem-release rake rspec
11
- - bundle install
12
- - rake build
13
- - mkdir .gem
14
- - (umask 077 ; echo $gem_creds | base64 --decode > .gem/credentials)
15
- - gem release
16
- artifacts:
17
- - pkg/**