foreman_maintain 1.8.2 → 1.9.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/definitions/checks/check_sha1_certificate_authority.rb +29 -0
- data/definitions/checks/foreman/check_external_db_evr_permissions.rb +61 -0
- data/definitions/features/pulpcore.rb +8 -1
- data/definitions/scenarios/foreman_upgrade.rb +2 -0
- data/definitions/scenarios/satellite_upgrade.rb +2 -0
- data/lib/foreman_maintain/version.rb +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73708bb032234b95b2f4e43e6a754f4edd5a10b5fab5b0fe48e025e97c07b045
|
4
|
+
data.tar.gz: 804e89098c9776b9eaabbe8ddbf25b42fadafca9180bfaaafcc1e2ad19a68cbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7436f734603158c084a33422808590fc4de98432ecf44d64106c58d625c7356e015d9fba968dd89c72aff8974364bbcd2493e7f74d99e079be59489df4a00714
|
7
|
+
data.tar.gz: d24586355b6f3bd785d8222ee93443712c4de0ce14a0dff53705b029e9a1bf0ab83db582cbce0ccf0da9e603edd5f030c259220d814a466faa20e78e40ef09fd
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Checks::CheckSha1CertificateAuthority < ForemanMaintain::Check
|
2
|
+
metadata do
|
3
|
+
label :check_sha1_certificate_authority
|
4
|
+
description 'Check if server certificate authority is sha1 signed'
|
5
|
+
|
6
|
+
confine do
|
7
|
+
feature(:katello) || feature(:foreman_proxy)
|
8
|
+
end
|
9
|
+
|
10
|
+
do_not_whitelist
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
installer_answers = feature(:installer).answers
|
15
|
+
server_ca = installer_answers['certs']['server_ca_cert']
|
16
|
+
|
17
|
+
return unless server_ca
|
18
|
+
|
19
|
+
certificate = OpenSSL::X509::Certificate.new(File.read(server_ca))
|
20
|
+
|
21
|
+
msg = <<~MSG
|
22
|
+
Server CA certificate signed with sha1 which will break on upgrade.
|
23
|
+
Update the server CA certificate with one signed with sha256 or
|
24
|
+
stronger then proceed with the upgrade.
|
25
|
+
MSG
|
26
|
+
|
27
|
+
assert(certificate.signature_algorithm != 'sha1WithRSAEncryption', msg)
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Checks
|
2
|
+
module Foreman
|
3
|
+
class CheckExternalDbEvrPermissions < ForemanMaintain::Check
|
4
|
+
metadata do
|
5
|
+
label :external_db_evr_permissions
|
6
|
+
for_feature :foreman_database
|
7
|
+
description 'Check that external databases have proper EVR extension permissions'
|
8
|
+
tags :pre_upgrade
|
9
|
+
confine do
|
10
|
+
feature(:foreman_database) && !feature(:foreman_database).local? && feature(:katello)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
return true unless evr_exists?
|
16
|
+
|
17
|
+
error_msg = 'The evr extension is not owned by the foreman database owner. ' \
|
18
|
+
'Please run the following command on the external foreman database to fix it: ' \
|
19
|
+
'UPDATE pg_extension SET extowner = (SELECT oid FROM pg_authid WHERE ' \
|
20
|
+
"rolname='#{foreman_db_user}') WHERE extname='evr';"
|
21
|
+
fail!(error_msg) unless foreman_owns_evr?
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def foreman_db_user
|
27
|
+
feature(:foreman_database).configuration['username'] || 'foreman'
|
28
|
+
end
|
29
|
+
|
30
|
+
def evr_exists?
|
31
|
+
evr_exists = feature(:foreman_database).query(query_for_evr_existence)
|
32
|
+
return false if evr_exists.empty?
|
33
|
+
return evr_exists.first['evr_exists'] == '1'
|
34
|
+
end
|
35
|
+
|
36
|
+
def foreman_owns_evr?
|
37
|
+
evr_owned_by_postgres = feature(:foreman_database).query(query_if_postgres_owns_evr)
|
38
|
+
unless evr_owned_by_postgres.empty?
|
39
|
+
return evr_owned_by_postgres.first['evr_owned_by_postgres'] == '0'
|
40
|
+
end
|
41
|
+
failure_msg = 'Could not determine if the evr extension is owned by the ' \
|
42
|
+
'foreman database owner. Check that the foreman database is accessible ' \
|
43
|
+
"and that the database connection configuration is up to date."
|
44
|
+
fail!(failure_msg)
|
45
|
+
end
|
46
|
+
|
47
|
+
def query_for_evr_existence
|
48
|
+
<<-SQL
|
49
|
+
SELECT 1 AS evr_exists FROM pg_extension WHERE extname = 'evr'
|
50
|
+
SQL
|
51
|
+
end
|
52
|
+
|
53
|
+
def query_if_postgres_owns_evr
|
54
|
+
<<-SQL
|
55
|
+
SELECT CASE WHEN r.rolname = '#{foreman_db_user}' THEN 0 ELSE 1 END AS evr_owned_by_postgres
|
56
|
+
FROM pg_extension e JOIN pg_roles r ON e.extowner = r.oid WHERE e.extname = 'evr'
|
57
|
+
SQL
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -25,7 +25,14 @@ class Features::Pulpcore < ForemanMaintain::Feature
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def running_tasks
|
28
|
-
cli('task list --state-in running --state-in canceling')
|
28
|
+
tasks = cli('task list --state-in running --state-in canceling')
|
29
|
+
# cli() uses parse_json() which swallows JSON::ParserError and returns nil
|
30
|
+
# but running_tasks should return an Array
|
31
|
+
if tasks.nil?
|
32
|
+
[]
|
33
|
+
else
|
34
|
+
tasks
|
35
|
+
end
|
29
36
|
rescue ForemanMaintain::Error::ExecutionError
|
30
37
|
[]
|
31
38
|
end
|
@@ -40,6 +40,7 @@ module Scenarios::Foreman
|
|
40
40
|
Checks::Disk::AvailableSpaceCandlepin, # if candlepin
|
41
41
|
Checks::Disk::AvailableSpacePostgresql13,
|
42
42
|
Checks::Foreman::ValidateExternalDbVersion, # if external database
|
43
|
+
Checks::Foreman::CheckExternalDbEvrPermissions, # if external database
|
43
44
|
Checks::Foreman::CheckCorruptedRoles,
|
44
45
|
Checks::Foreman::CheckDuplicatePermissions,
|
45
46
|
Checks::Foreman::TuningRequirements, # if katello present
|
@@ -53,6 +54,7 @@ module Scenarios::Foreman
|
|
53
54
|
Checks::PackageManager::Dnf::ValidateDnfConfig,
|
54
55
|
Checks::Repositories::CheckNonRhRepository,
|
55
56
|
Checks::CheckOrganizationContentAccessMode,
|
57
|
+
Checks::CheckSha1CertificateAuthority,
|
56
58
|
Checks::Repositories::Validate
|
57
59
|
)
|
58
60
|
end
|
@@ -39,6 +39,7 @@ module Scenarios::Satellite
|
|
39
39
|
Checks::Disk::AvailableSpace,
|
40
40
|
Checks::Disk::AvailableSpaceCandlepin, # if candlepin
|
41
41
|
Checks::Foreman::ValidateExternalDbVersion, # if external database
|
42
|
+
Checks::Foreman::CheckExternalDbEvrPermissions, # if external database
|
42
43
|
Checks::Foreman::CheckCorruptedRoles,
|
43
44
|
Checks::Foreman::CheckDuplicatePermissions,
|
44
45
|
Checks::Foreman::TuningRequirements, # if katello present
|
@@ -54,6 +55,7 @@ module Scenarios::Satellite
|
|
54
55
|
Checks::CheckIpv6Disable,
|
55
56
|
Checks::Disk::AvailableSpacePostgresql13,
|
56
57
|
Checks::CheckOrganizationContentAccessMode,
|
58
|
+
Checks::CheckSha1CertificateAuthority,
|
57
59
|
Checks::Repositories::Validate.new(:version => target_version),
|
58
60
|
)
|
59
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_maintain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Nečas
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -161,6 +161,7 @@ files:
|
|
161
161
|
- definitions/checks/candlepin/db_up.rb
|
162
162
|
- definitions/checks/check_hotfix_installed.rb
|
163
163
|
- definitions/checks/check_ipv6_disable.rb
|
164
|
+
- definitions/checks/check_sha1_certificate_authority.rb
|
164
165
|
- definitions/checks/check_tmout.rb
|
165
166
|
- definitions/checks/disk/available_space.rb
|
166
167
|
- definitions/checks/disk/available_space_candlepin.rb
|
@@ -169,6 +170,7 @@ files:
|
|
169
170
|
- definitions/checks/env_proxy.rb
|
170
171
|
- definitions/checks/foreman/check_corrupted_roles.rb
|
171
172
|
- definitions/checks/foreman/check_duplicate_permission.rb
|
173
|
+
- definitions/checks/foreman/check_external_db_evr_permissions.rb
|
172
174
|
- definitions/checks/foreman/check_puppet_capsules.rb
|
173
175
|
- definitions/checks/foreman/check_tuning_requirements.rb
|
174
176
|
- definitions/checks/foreman/db_up.rb
|
@@ -409,7 +411,7 @@ homepage: https://github.com/theforeman/foreman_maintain
|
|
409
411
|
licenses:
|
410
412
|
- GPL-3.0
|
411
413
|
metadata: {}
|
412
|
-
post_install_message:
|
414
|
+
post_install_message:
|
413
415
|
rdoc_options: []
|
414
416
|
require_paths:
|
415
417
|
- lib
|
@@ -428,7 +430,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
428
430
|
version: '0'
|
429
431
|
requirements: []
|
430
432
|
rubygems_version: 3.3.27
|
431
|
-
signing_key:
|
433
|
+
signing_key:
|
432
434
|
specification_version: 4
|
433
435
|
summary: Foreman maintenance tool belt
|
434
436
|
test_files: []
|