foreman_remote_execution 3.3.0 → 3.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/.github/workflows/ci.yml +100 -0
- data/.rubocop_todo.yml +3 -0
- data/app/models/concerns/foreman_remote_execution/orchestration/ssh.rb +7 -5
- data/foreman_remote_execution.gemspec +3 -4
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/action_names.rb +0 -1
- data/test/models/orchestration/ssh_test.rb +32 -0
- metadata +4 -5
- data/.hound.yml +0 -14
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b85a9cedafe92aa9f2183d1dd5569baa99bd15005b43c26e2ae22ac064b810ee
|
4
|
+
data.tar.gz: ffa0a77c6d12ff977e897933ce9d74072cf5e57495cfbef55a933d1d5f802fd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2b5947c13f9831c4312f9ab0af739fb8357cc6f31dbf621021267d906dabd013087a1880a319ea65b59957b91550324fa350ff05789924bbf9aebf61c982693
|
7
|
+
data.tar.gz: 28e4246d181f3f772e929c8fbc0626cbe4dcceff5de718d8d8da0e87b9fc8363a0b16841868f5a0f0e3b2cc9b785c8c072bfda90f059edd24a993927f06bf0c8
|
@@ -0,0 +1,100 @@
|
|
1
|
+
name: CI
|
2
|
+
on: [pull_request]
|
3
|
+
env:
|
4
|
+
RAILS_ENV: test
|
5
|
+
DATABASE_URL: postgresql://postgres:@localhost/test
|
6
|
+
DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL: true
|
7
|
+
jobs:
|
8
|
+
rubocop:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
- name: Setup Ruby
|
13
|
+
uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 2.6
|
16
|
+
- name: Setup
|
17
|
+
run: |
|
18
|
+
gem install bundler
|
19
|
+
bundle install --jobs=3 --retry=3
|
20
|
+
- name: Run rubocop
|
21
|
+
run: bundle exec rubocop
|
22
|
+
test_ruby:
|
23
|
+
runs-on: ubuntu-latest
|
24
|
+
needs: rubocop
|
25
|
+
services:
|
26
|
+
postgres:
|
27
|
+
image: postgres:12.1
|
28
|
+
ports: ['5432:5432']
|
29
|
+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
30
|
+
strategy:
|
31
|
+
fail-fast: false
|
32
|
+
matrix:
|
33
|
+
foreman-core-branch: [2.1-stable, develop]
|
34
|
+
ruby-version: [2.5, 2.6]
|
35
|
+
node-version: [12]
|
36
|
+
steps:
|
37
|
+
- run: sudo apt-get install build-essential libcurl4-openssl-dev zlib1g-dev libpq-dev
|
38
|
+
- uses: actions/checkout@v2
|
39
|
+
with:
|
40
|
+
repository: theforeman/foreman
|
41
|
+
ref: ${{ matrix.foreman-core-branch }}
|
42
|
+
- uses: actions/checkout@v2
|
43
|
+
with:
|
44
|
+
path: foreman_remote_execution
|
45
|
+
- name: Setup Ruby
|
46
|
+
uses: ruby/setup-ruby@v1
|
47
|
+
with:
|
48
|
+
ruby-version: ${{ matrix.ruby-version }}
|
49
|
+
- name: Setup Node
|
50
|
+
uses: actions/setup-node@v1
|
51
|
+
with:
|
52
|
+
node-version: ${{ matrix.node-version }}
|
53
|
+
- uses: actions/cache@v1
|
54
|
+
with:
|
55
|
+
path: vendor/bundle
|
56
|
+
key: ${{ runner.os }}-fgems-${{ matrix.ruby-version }}-${{ hashFiles('Gemfile.lock') }}
|
57
|
+
restore-keys: |
|
58
|
+
${{ runner.os }}-fgems-${{ matrix.ruby-version }}-
|
59
|
+
- name: Setup Bundler
|
60
|
+
run: |
|
61
|
+
echo "gem 'foreman_remote_execution', path: './foreman_remote_execution'" > bundler.d/foreman_remote_execution.local.rb
|
62
|
+
gem install bundler
|
63
|
+
bundle config set without journald development console libvirt
|
64
|
+
bundle config set path vendor/bundle
|
65
|
+
- name: Prepare test env
|
66
|
+
run: |
|
67
|
+
bundle install --jobs=3 --retry=3
|
68
|
+
bundle exec rake db:create
|
69
|
+
bundle exec rake db:migrate
|
70
|
+
- name: Run plugin tests
|
71
|
+
run: |
|
72
|
+
bundle exec rake test:foreman_remote_execution
|
73
|
+
bundle exec rake test TEST="test/unit/foreman/access_permissions_test.rb"
|
74
|
+
test_js:
|
75
|
+
runs-on: ubuntu-latest
|
76
|
+
needs: rubocop
|
77
|
+
strategy:
|
78
|
+
fail-fast: false
|
79
|
+
matrix:
|
80
|
+
ruby-version: [2.6]
|
81
|
+
node-version: [10, 12]
|
82
|
+
steps:
|
83
|
+
- uses: actions/checkout@v2
|
84
|
+
- name: Setup Ruby
|
85
|
+
uses: ruby/setup-ruby@v1
|
86
|
+
with:
|
87
|
+
ruby-version: ${{ matrix.ruby-version }}
|
88
|
+
- name: Setup Node
|
89
|
+
uses: actions/setup-node@v1
|
90
|
+
with:
|
91
|
+
node-version: ${{ matrix.node-version }}
|
92
|
+
- name: Nmp install
|
93
|
+
run: |
|
94
|
+
npm install
|
95
|
+
- name: Run plugin linter
|
96
|
+
run: |
|
97
|
+
npm run lint
|
98
|
+
- name: Run plugin tests
|
99
|
+
run: |
|
100
|
+
npm run test
|
data/.rubocop_todo.yml
CHANGED
@@ -6,6 +6,9 @@
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
+
Minitest/GlobalExpectations:
|
10
|
+
Enabled: false
|
11
|
+
|
9
12
|
# Offense count: 2
|
10
13
|
# Cop supports --auto-correct.
|
11
14
|
# Configuration parameters: TreatCommentsAsGroupSeparators, Include.
|
@@ -8,8 +8,10 @@ module ForemanRemoteExecution
|
|
8
8
|
register_rebuild(:queue_ssh_destroy, N_("SSH_#{self.to_s.split('::').first}"))
|
9
9
|
end
|
10
10
|
|
11
|
-
def drop_from_known_hosts(
|
12
|
-
|
11
|
+
def drop_from_known_hosts(proxy_id)
|
12
|
+
_, _, target = host_kind_target
|
13
|
+
return true if target.nil?
|
14
|
+
|
13
15
|
proxy = ::SmartProxy.find(proxy_id)
|
14
16
|
begin
|
15
17
|
proxy.drop_host_from_known_hosts(target)
|
@@ -26,11 +28,11 @@ module ForemanRemoteExecution
|
|
26
28
|
def ssh_destroy
|
27
29
|
logger.debug "Scheduling SSH known_hosts cleanup"
|
28
30
|
|
29
|
-
host, _kind,
|
31
|
+
host, _kind, _target = host_kind_target
|
30
32
|
proxies = host.remote_execution_proxies('SSH').values
|
31
33
|
proxies.flatten.uniq.each do |proxy|
|
32
34
|
queue.create(id: queue_id(proxy.id), name: _("Remove SSH known hosts for %s") % self,
|
33
|
-
priority: 200, action: [self, :drop_from_known_hosts,
|
35
|
+
priority: 200, action: [self, :drop_from_known_hosts, proxy.id])
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
@@ -40,7 +42,7 @@ module ForemanRemoteExecution
|
|
40
42
|
|
41
43
|
def should_drop_from_known_hosts?
|
42
44
|
host, = host_kind_target
|
43
|
-
host
|
45
|
+
host && !host.new_record? && host.build && host.changes.key?('build')
|
44
46
|
end
|
45
47
|
|
46
48
|
private
|
@@ -15,10 +15,9 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.description = 'A plugin bringing remote execution to the Foreman, completing the config ' +
|
16
16
|
'management functionality with remote management functionality.'
|
17
17
|
|
18
|
-
s.files =
|
19
|
-
file
|
20
|
-
|
21
|
-
file == 'foreman_remote_execution_core.gemspec'
|
18
|
+
s.files = `git ls-files`.split("\n").reject do |file|
|
19
|
+
file.start_with?('scripts', 'lib/foreman_remote_execution_core') ||
|
20
|
+
file == 'foreman_remote_execution_core.gemspec'
|
22
21
|
end
|
23
22
|
|
24
23
|
s.test_files = `git ls-files test`.split("\n")
|
data/locale/action_names.rb
CHANGED
@@ -15,10 +15,42 @@ class SSHOrchestrationTest < ActiveSupport::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'attempts to drop IP address and hostname from smart proxies on rebuild' do
|
18
|
+
host.stubs(:skip_orchestration?).returns false
|
19
|
+
SmartProxy.any_instance.expects(:drop_host_from_known_hosts).with(interface.ip)
|
20
|
+
SmartProxy.any_instance.expects(:drop_host_from_known_hosts).with(host.name)
|
21
|
+
|
18
22
|
host.build = true
|
19
23
|
host.save!
|
24
|
+
|
20
25
|
ids = ["ssh_remove_known_hosts_interface_#{interface.ip}_#{proxy.id}",
|
21
26
|
"ssh_remove_known_hosts_host_#{host.name}_#{proxy.id}"]
|
22
27
|
_(host.queue.task_ids).must_equal ids
|
28
|
+
_(host.queue.items.map(&:status)).must_equal %w(completed completed)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not fail on 404 from the smart proxy' do
|
32
|
+
host.stubs(:skip_orchestration?).returns false
|
33
|
+
SmartProxy.any_instance.expects(:drop_host_from_known_hosts).raises(RestClient::ResourceNotFound).twice
|
34
|
+
host.build = true
|
35
|
+
host.save!
|
36
|
+
ids = ["ssh_remove_known_hosts_interface_#{interface.ip}_#{proxy.id}",
|
37
|
+
"ssh_remove_known_hosts_host_#{host.name}_#{proxy.id}"]
|
38
|
+
_(host.queue.task_ids).must_equal ids
|
39
|
+
_(host.queue.items.map(&:status)).must_equal %w(completed completed)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'does not trigger the removal when creating a new host' do
|
43
|
+
SmartProxy.any_instance.expects(:drop_host_from_known_hosts).never
|
44
|
+
host = Host::Managed.new(:name => 'test', :ip => '127.0.0.1')
|
45
|
+
host.stubs(:skip_orchestration?).returns false
|
46
|
+
_(host.queue.task_ids).must_equal []
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'does not call to the proxy when target is nil' do
|
50
|
+
host.stubs(:skip_orchestration?).returns false
|
51
|
+
SmartProxy.any_instance.expects(:drop_host_from_known_hosts).with(host.name)
|
52
|
+
host.interfaces.first.stubs(:ip)
|
53
|
+
host.destroy
|
54
|
+
_(host.queue.items.map(&:status)).must_equal %w(completed completed)
|
23
55
|
end
|
24
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_remote_execution
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Foreman Remote Execution team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deface
|
@@ -127,11 +127,10 @@ files:
|
|
127
127
|
- ".babelrc.js"
|
128
128
|
- ".eslintignore"
|
129
129
|
- ".eslintrc"
|
130
|
+
- ".github/workflows/ci.yml"
|
130
131
|
- ".gitignore"
|
131
|
-
- ".hound.yml"
|
132
132
|
- ".rubocop.yml"
|
133
133
|
- ".rubocop_todo.yml"
|
134
|
-
- ".travis.yml"
|
135
134
|
- ".tx/config"
|
136
135
|
- Gemfile
|
137
136
|
- LICENSE
|
@@ -427,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
427
426
|
- !ruby/object:Gem::Version
|
428
427
|
version: '0'
|
429
428
|
requirements: []
|
430
|
-
rubygems_version: 3.0.
|
429
|
+
rubygems_version: 3.0.3
|
431
430
|
signing_key:
|
432
431
|
specification_version: 4
|
433
432
|
summary: A plugin bringing remote execution to the Foreman, completing the config
|
data/.hound.yml
DELETED