foreman_maintain 0.2.12 → 0.3.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.
- checksums.yaml +5 -5
- data/config/passenger-recycler.yaml +4 -3
- data/definitions/checks/disk/available_space.rb +23 -0
- data/definitions/checks/foreman/puppet_class_duplicates.rb +48 -0
- data/definitions/checks/repositories/validate.rb +21 -11
- data/definitions/features/downstream.rb +11 -0
- data/definitions/scenarios/upgrade_to_satellite_6_5.rb +79 -0
- data/definitions/scenarios/upgrade_to_satellite_6_5_z.rb +79 -0
- data/lib/foreman_maintain/concerns/system_helpers.rb +17 -3
- data/lib/foreman_maintain/utils/disk/io_device.rb +4 -0
- data/lib/foreman_maintain/version.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 582123528806343d919cd45a9503596cd5edb30144742aa579f65a7c65eaa5a4
|
4
|
+
data.tar.gz: 2735882675a774b98aeb7d41c361bdee8707bf2c25235f420b3cb6cd49e2df7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02b5862caf25490bcfa6e8aebcae31ada850eee4492381400255cf9de651ca1e862d5a564b9178c7f239226d2c9ddca0cfb200880d112e2939db97b8ac28ca41
|
7
|
+
data.tar.gz: 7fa363c783df0e07e8cec7dd086001e8e082f156c6e512766579484f16ca69d014b2944a320faae65747f7695a83e81c347def707a122335819546ae254f0b8f
|
@@ -1,8 +1,9 @@
|
|
1
1
|
---
|
2
2
|
#
|
3
3
|
# Trivial Passenger memory monitor. By default it is executed from cron every
|
4
|
-
# five minutes and it kills
|
5
|
-
# configured.
|
4
|
+
# five minutes and it kills processes exceeding the RSS memory threashold
|
5
|
+
# configured with MAX_PRIV_RSS_MEMORY. Up to MAX_TERMINATION processes is
|
6
|
+
# terminated during one execution.
|
6
7
|
#
|
7
8
|
|
8
9
|
# Set to 'false' to completely disable this script.
|
@@ -14,7 +15,7 @@
|
|
14
15
|
# Controls amount of processes killed during one run. This number should be
|
15
16
|
# smaller by one or two than maximum allowed amount of processes by passenger
|
16
17
|
# (defaults to 6) so there is at least one process left.
|
17
|
-
:MAX_TERMINATION:
|
18
|
+
:MAX_TERMINATION: 1
|
18
19
|
|
19
20
|
# Kill processes which do not terminate gracefully using SIGKILL after
|
20
21
|
# GRACEFUL_SHUTDOWN_SLEEP period.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Checks
|
2
|
+
module Disk
|
3
|
+
class AvailableSpace < ForemanMaintain::Check
|
4
|
+
metadata do
|
5
|
+
label :available_space
|
6
|
+
description 'Check to make sure root(/) partition has enough space'
|
7
|
+
tags :pre_upgrade
|
8
|
+
end
|
9
|
+
|
10
|
+
MIN_SPACE_IN_MB = 4096
|
11
|
+
|
12
|
+
def run
|
13
|
+
assert(enough_space?, "System has less than #{MIN_SPACE_IN_MB / 1024}GB space available"\
|
14
|
+
' on root(/) partition')
|
15
|
+
end
|
16
|
+
|
17
|
+
def enough_space?
|
18
|
+
io_obj = ForemanMaintain::Utils::Disk::IODevice.new('/')
|
19
|
+
io_obj.available_space > MIN_SPACE_IN_MB
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Checks
|
2
|
+
module Foreman
|
3
|
+
class PuppetClassDuplicates < ForemanMaintain::Check
|
4
|
+
metadata do
|
5
|
+
label :puppet_class_duplicates
|
6
|
+
for_feature :foreman_database
|
7
|
+
description 'Check for duplicate Puppet class records'
|
8
|
+
tags :pre_upgrade
|
9
|
+
confine do
|
10
|
+
check_max_version('foreman', '1.20')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
duplicate_names = find_duplicate_names
|
16
|
+
assert(duplicate_names.empty?, duplicate_msg(duplicate_names))
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def duplicate_msg(duplicate_names)
|
22
|
+
msg = "There are #{duplicate_names.count} Puppet classes with duplicities:\n"
|
23
|
+
classes_list = duplicate_names.reduce('') do |memo, hash|
|
24
|
+
memo.tap { |acc| acc << "#{hash['name']} - #{hash['name_count']}\n" }
|
25
|
+
end
|
26
|
+
help_msg = 'Please head over to Configure -> Classes'
|
27
|
+
help_msg << " and make sure there is only 1 Puppet class record for each name.\n"
|
28
|
+
[msg, classes_list, help_msg].join('')
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_duplicate_names
|
32
|
+
feature(:foreman_database).query(duplicate_names_query)
|
33
|
+
end
|
34
|
+
|
35
|
+
def duplicate_names_query
|
36
|
+
<<-SQL
|
37
|
+
SELECT name, name_count
|
38
|
+
FROM (
|
39
|
+
SELECT name, count(name) AS name_count
|
40
|
+
FROM puppetclasses
|
41
|
+
GROUP BY name
|
42
|
+
) AS puppetclass_counts
|
43
|
+
WHERE name_count > 1
|
44
|
+
SQL
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -18,19 +18,29 @@ module Checks::Repositories
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def run
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
absent_repos = feature(:downstream).absent_repos(@version)
|
27
|
-
end
|
28
|
-
unless absent_repos.empty?
|
29
|
-
fail!(
|
30
|
-
"Following repositories are not available on your system: #{absent_repos.join(', ')}"
|
31
|
-
)
|
21
|
+
if feature(:downstream).subscribed_using_activationkey?
|
22
|
+
skip 'Your system is subscribed using custom activationkey'
|
23
|
+
else
|
24
|
+
with_spinner("Validating availability of repositories for #{@version}") do |spinner|
|
25
|
+
find_absent_repos(spinner)
|
32
26
|
end
|
33
27
|
end
|
34
28
|
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def find_absent_repos(spinner)
|
33
|
+
absent_repos = feature(:downstream).absent_repos(@version)
|
34
|
+
unless absent_repos.empty?
|
35
|
+
spinner.update('Some repositories missing, calling `subscription-manager refresh`')
|
36
|
+
feature(:downstream).rhsm_refresh
|
37
|
+
absent_repos = feature(:downstream).absent_repos(@version)
|
38
|
+
end
|
39
|
+
unless absent_repos.empty?
|
40
|
+
fail!(
|
41
|
+
"Following repositories are not available on your system: #{absent_repos.join(', ')}"
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
@@ -50,6 +50,10 @@ class Features::Downstream < ForemanMaintain::Feature
|
|
50
50
|
execute!(%(subscription-manager refresh))
|
51
51
|
end
|
52
52
|
|
53
|
+
def subscribed_using_activationkey?
|
54
|
+
ENV['EXTERNAL_SAT_ACTIVATION_KEY'] && ENV['EXTERNAL_SAT_ORG']
|
55
|
+
end
|
56
|
+
|
53
57
|
private
|
54
58
|
|
55
59
|
def rh_repos(sat_version)
|
@@ -76,6 +80,13 @@ class Features::Downstream < ForemanMaintain::Feature
|
|
76
80
|
sat_tools_repo_id = "rhel-#{rh_version_major}-server-satellite-tools-#{sat_version_full}-rpms"
|
77
81
|
sat_maintenance_repo_id = "rhel-#{rh_version_major}-server-satellite-maintenance-6-rpms"
|
78
82
|
|
83
|
+
# Override to use Beta repositories for sat version until GA
|
84
|
+
if sat_version.to_s == '6.5'
|
85
|
+
sat_repo_id = "rhel-server-#{rh_version_major}-satellite-6-beta-rpms"
|
86
|
+
sat_tools_repo_id = "rhel-#{rh_version_major}-server-satellite-tools-6-beta-rpms"
|
87
|
+
sat_maintenance_repo_id = "rhel-#{rh_version_major}-server-satellite-maintenance-6-beta-rpms"
|
88
|
+
end
|
89
|
+
|
79
90
|
[sat_repo_id, sat_tools_repo_id, sat_maintenance_repo_id]
|
80
91
|
end
|
81
92
|
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Scenarios::Satellite_6_5
|
2
|
+
class Abstract < ForemanMaintain::Scenario
|
3
|
+
def self.upgrade_metadata(&block)
|
4
|
+
metadata do
|
5
|
+
tags :upgrade_to_satellite_6_5
|
6
|
+
confine do
|
7
|
+
feature(:downstream) && feature(:downstream).current_minor_version == '6.4'
|
8
|
+
end
|
9
|
+
instance_eval(&block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class PreUpgradeCheck < Abstract
|
15
|
+
upgrade_metadata do
|
16
|
+
description 'Checks before upgrading to Satellite 6.5'
|
17
|
+
tags :pre_upgrade_checks
|
18
|
+
run_strategy :fail_slow
|
19
|
+
end
|
20
|
+
|
21
|
+
def compose
|
22
|
+
add_steps(find_checks(:default))
|
23
|
+
add_steps(find_checks(:pre_upgrade))
|
24
|
+
add_step(Checks::Repositories::Validate.new(:version => '6.5'))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class PreMigrations < Abstract
|
29
|
+
upgrade_metadata do
|
30
|
+
description 'Procedures before migrating to Satellite 6.5'
|
31
|
+
tags :pre_migrations
|
32
|
+
end
|
33
|
+
|
34
|
+
def compose
|
35
|
+
add_steps(find_procedures(:pre_migrations))
|
36
|
+
add_step(Procedures::Service::Stop.new)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Migrations < Abstract
|
41
|
+
upgrade_metadata do
|
42
|
+
description 'Migration scripts to Satellite 6.5'
|
43
|
+
tags :migrations
|
44
|
+
end
|
45
|
+
|
46
|
+
def compose
|
47
|
+
add_step(Procedures::Repositories::Setup.new(:version => '6.5'))
|
48
|
+
add_step(Procedures::Packages::Update.new(:assumeyes => true))
|
49
|
+
add_step(Procedures::Installer::Upgrade.new)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class PostMigrations < Abstract
|
54
|
+
upgrade_metadata do
|
55
|
+
description 'Procedures after migrating to Satellite 6.5'
|
56
|
+
tags :post_migrations
|
57
|
+
end
|
58
|
+
|
59
|
+
def compose
|
60
|
+
add_step(Procedures::Service::Start.new)
|
61
|
+
add_steps(find_procedures(:post_migrations))
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class PostUpgradeChecks < Abstract
|
66
|
+
upgrade_metadata do
|
67
|
+
description 'Checks after upgrading to Satellite 6.5'
|
68
|
+
tags :post_upgrade_checks
|
69
|
+
run_strategy :fail_slow
|
70
|
+
end
|
71
|
+
|
72
|
+
def compose
|
73
|
+
add_steps(find_checks(:default))
|
74
|
+
add_steps(find_checks(:post_upgrade))
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
ForemanMaintain::UpgradeRunner.register_version('6.5', :upgrade_to_satellite_6_5)
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Scenarios::Satellite_6_5_z
|
2
|
+
class Abstract < ForemanMaintain::Scenario
|
3
|
+
def self.upgrade_metadata(&block)
|
4
|
+
metadata do
|
5
|
+
tags :upgrade_to_satellite_6_5_z
|
6
|
+
confine do
|
7
|
+
feature(:downstream) && feature(:downstream).current_minor_version == '6.5'
|
8
|
+
end
|
9
|
+
instance_eval(&block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class PreUpgradeCheck < Abstract
|
15
|
+
upgrade_metadata do
|
16
|
+
description 'Checks before upgrading to Satellite 6.5.z'
|
17
|
+
tags :pre_upgrade_checks
|
18
|
+
run_strategy :fail_slow
|
19
|
+
end
|
20
|
+
|
21
|
+
def compose
|
22
|
+
add_steps(find_checks(:default))
|
23
|
+
add_steps(find_checks(:pre_upgrade))
|
24
|
+
add_step(Checks::Repositories::Validate.new(:version => '6.5'))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class PreMigrations < Abstract
|
29
|
+
upgrade_metadata do
|
30
|
+
description 'Procedures before migrating to Satellite 6.5.z'
|
31
|
+
tags :pre_migrations
|
32
|
+
end
|
33
|
+
|
34
|
+
def compose
|
35
|
+
add_steps(find_procedures(:pre_migrations))
|
36
|
+
add_step(Procedures::Service::Stop.new)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Migrations < Abstract
|
41
|
+
upgrade_metadata do
|
42
|
+
description 'Migration scripts to Satellite 6.5.z'
|
43
|
+
tags :migrations
|
44
|
+
end
|
45
|
+
|
46
|
+
def compose
|
47
|
+
add_step(Procedures::Repositories::Setup.new(:version => '6.5'))
|
48
|
+
add_step(Procedures::Packages::Update.new(:assumeyes => true))
|
49
|
+
add_step(Procedures::Installer::Upgrade.new)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class PostMigrations < Abstract
|
54
|
+
upgrade_metadata do
|
55
|
+
description 'Procedures after migrating to Satellite 6.5.z'
|
56
|
+
tags :post_migrations
|
57
|
+
end
|
58
|
+
|
59
|
+
def compose
|
60
|
+
add_step(Procedures::Service::Start.new)
|
61
|
+
add_steps(find_procedures(:post_migrations))
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class PostUpgradeChecks < Abstract
|
66
|
+
upgrade_metadata do
|
67
|
+
description 'Checks after upgrading to Satellite 6.5.z'
|
68
|
+
tags :post_upgrade_checks
|
69
|
+
run_strategy :fail_slow
|
70
|
+
end
|
71
|
+
|
72
|
+
def compose
|
73
|
+
add_steps(find_checks(:default))
|
74
|
+
add_steps(find_checks(:post_upgrade))
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
ForemanMaintain::UpgradeRunner.register_version('6.5.z', :upgrade_to_satellite_6_5_z)
|
@@ -33,9 +33,14 @@ module ForemanMaintain
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def check_min_version(name, minimal_version)
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
check_version(name) do |current_version|
|
37
|
+
current_version >= version(minimal_version)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def check_max_version(name, maximal_version)
|
42
|
+
check_version(name) do |current_version|
|
43
|
+
version(maximal_version) >= current_version
|
39
44
|
end
|
40
45
|
end
|
41
46
|
|
@@ -179,6 +184,15 @@ module ForemanMaintain
|
|
179
184
|
end
|
180
185
|
result
|
181
186
|
end
|
187
|
+
|
188
|
+
private
|
189
|
+
|
190
|
+
def check_version(name)
|
191
|
+
current_version = package_version(name)
|
192
|
+
if current_version
|
193
|
+
yield current_version
|
194
|
+
end
|
195
|
+
end
|
182
196
|
end
|
183
197
|
end
|
184
198
|
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: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Nečas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -123,8 +123,10 @@ files:
|
|
123
123
|
- definitions/checks/candlepin/db_up.rb
|
124
124
|
- definitions/checks/candlepin/validate_db.rb
|
125
125
|
- definitions/checks/check_epel_repository.rb
|
126
|
+
- definitions/checks/disk/available_space.rb
|
126
127
|
- definitions/checks/disk/performance.rb
|
127
128
|
- definitions/checks/foreman/db_up.rb
|
129
|
+
- definitions/checks/foreman/puppet_class_duplicates.rb
|
128
130
|
- definitions/checks/foreman_openscap/invalid_report_associations.rb
|
129
131
|
- definitions/checks/foreman_proxy/verify_dhcp_config_syntax.rb
|
130
132
|
- definitions/checks/foreman_tasks/invalid/check_old.rb
|
@@ -237,6 +239,8 @@ files:
|
|
237
239
|
- definitions/scenarios/upgrade_to_satellite_6_3_z.rb
|
238
240
|
- definitions/scenarios/upgrade_to_satellite_6_4.rb
|
239
241
|
- definitions/scenarios/upgrade_to_satellite_6_4_z.rb
|
242
|
+
- definitions/scenarios/upgrade_to_satellite_6_5.rb
|
243
|
+
- definitions/scenarios/upgrade_to_satellite_6_5_z.rb
|
240
244
|
- lib/foreman_maintain.rb
|
241
245
|
- lib/foreman_maintain/check.rb
|
242
246
|
- lib/foreman_maintain/cli.rb
|
@@ -322,7 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
322
326
|
version: '0'
|
323
327
|
requirements: []
|
324
328
|
rubyforge_project:
|
325
|
-
rubygems_version: 2.
|
329
|
+
rubygems_version: 2.7.3
|
326
330
|
signing_key:
|
327
331
|
specification_version: 4
|
328
332
|
summary: Foreman maintenance tool belt
|