foreman_maintain 1.1.7 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/definitions/checks/foreman/check_tuning_requirements.rb +79 -0
- data/definitions/checks/non_rh_packages.rb +1 -6
- data/definitions/checks/repositories/check_upstream_repository.rb +3 -1
- data/definitions/features/capsule.rb +1 -0
- data/definitions/features/foreman_install.rb +12 -0
- data/definitions/features/foreman_server.rb +5 -0
- data/definitions/features/installer.rb +12 -3
- data/definitions/features/instance.rb +9 -0
- data/definitions/features/katello.rb +2 -0
- data/definitions/features/katello_install.rb +12 -0
- data/definitions/features/satellite.rb +1 -0
- data/definitions/procedures/content/switchover.rb +1 -1
- data/definitions/procedures/packages/enable_modules.rb +16 -0
- data/definitions/procedures/packages/uninstall.rb +30 -0
- data/definitions/procedures/pulpcore/trim_rpm_changelogs.rb +23 -0
- data/definitions/procedures/repositories/setup.rb +2 -1
- data/definitions/scenarios/self_upgrade.rb +50 -4
- data/definitions/scenarios/upgrade_to_foreman_nightly.rb +89 -0
- data/definitions/scenarios/upgrade_to_katello_nightly.rb +87 -0
- data/definitions/scenarios/upgrade_to_satellite_6_11.rb +1 -0
- data/definitions/scenarios/upgrade_to_satellite_6_12.rb +1 -0
- data/definitions/scenarios/upgrade_to_satellite_6_12_z.rb +1 -0
- data/extras/foreman_protector/foreman-protector.whitelist +5 -0
- data/lib/foreman_maintain/cli/upgrade_command.rb +7 -3
- data/lib/foreman_maintain/concerns/downstream.rb +0 -12
- data/lib/foreman_maintain/concerns/foreman_and_katello_version_map.rb +17 -0
- data/lib/foreman_maintain/concerns/os_facts.rb +25 -0
- data/lib/foreman_maintain/concerns/upstream.rb +103 -0
- data/lib/foreman_maintain/concerns/versions.rb +17 -0
- data/lib/foreman_maintain/package_manager/apt.rb +7 -0
- data/lib/foreman_maintain/scenario.rb +1 -0
- data/lib/foreman_maintain/version.rb +1 -1
- data/lib/foreman_maintain.rb +3 -0
- metadata +13 -6
- data/definitions/features/foreman_1_11_x.rb +0 -9
- data/definitions/features/foreman_1_7_x.rb +0 -9
- data/definitions/features/upstream.rb +0 -14
- data/definitions/features/upstream_repositories.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bf9227086619d4fb28185c0fdb796c7045b9f35ea52df8fc3d9aa1a45fbb85d
|
4
|
+
data.tar.gz: 77281b4efd0cb3b2d1e6fed2badce28d183dcb7b16d65246987f57407eb92642
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b2e771c53927fa0f637da5a5066eb1afecbfe7876b9a241a68dfc8300ac82f8835fa308a42742d7b2a126716bac825e37179ddd91695a529de0b64e5272e245
|
7
|
+
data.tar.gz: 283f7004e4268f19cadc052dcd044273be28f96e786fd012bca57692276a3765eaded4848a596a66efdfe36d490870f6cfbbee07ccfa4c0dcdcf6362a9fda740
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Checks
|
2
|
+
module Foreman
|
3
|
+
class TuningRequirements < ForemanMaintain::Check
|
4
|
+
metadata do
|
5
|
+
label :check_tuning_requirements
|
6
|
+
tags :pre_upgrade
|
7
|
+
description 'Check if system requirements match current tuning profile'
|
8
|
+
confine do
|
9
|
+
feature(:katello)
|
10
|
+
end
|
11
|
+
do_not_whitelist
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
failure_message = check_tuning_profile
|
16
|
+
fail! failure_message if failure_message
|
17
|
+
end
|
18
|
+
|
19
|
+
def check_tuning_profile
|
20
|
+
installer_config = feature(:installer).configuration
|
21
|
+
tuning_profile = installer_config[:facts]['tuning']
|
22
|
+
|
23
|
+
cpu_message = check_cpu_cores(tuning_profile)
|
24
|
+
memory_message = check_memory(tuning_profile)
|
25
|
+
|
26
|
+
return unless cpu_message || memory_message
|
27
|
+
|
28
|
+
message = failure_message(tuning_profile)
|
29
|
+
if cpu_message
|
30
|
+
message += "#{cpu_message}\n"
|
31
|
+
end
|
32
|
+
if memory_message
|
33
|
+
message += "#{memory_message}\n"
|
34
|
+
end
|
35
|
+
|
36
|
+
message
|
37
|
+
end
|
38
|
+
|
39
|
+
def check_memory(tuning_profile)
|
40
|
+
# Check if it's actually 90% of the required. If a crash kernel is enabled
|
41
|
+
# then the reported total memory is lower than in reality.
|
42
|
+
kb_to_gb = (1024 * 1024)
|
43
|
+
memory_percentile = 0.9
|
44
|
+
tuning_memory = tuning_sizes[tuning_profile][:memory]
|
45
|
+
system_memory = memory.to_i
|
46
|
+
|
47
|
+
unless system_memory.to_i >= (tuning_memory * kb_to_gb * memory_percentile)
|
48
|
+
"The system memory is #{system_memory / kb_to_gb} GB but the currently configured tuning profile requires #{tuning_memory} GB." # rubocop:disable Metrics/LineLength
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def check_cpu_cores(tuning_profile)
|
53
|
+
tuning_cpu_cores = tuning_sizes[tuning_profile][:cpu_cores]
|
54
|
+
system_cpu_cores = cpu_cores
|
55
|
+
|
56
|
+
unless system_cpu_cores.to_i >= tuning_cpu_cores
|
57
|
+
"The number of CPU cores for the system is #{system_cpu_cores} but the currently configured tuning profile requires #{tuning_cpu_cores}." # rubocop:disable Metrics/LineLength
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def tuning_sizes
|
62
|
+
{
|
63
|
+
'development' => { cpu_cores: 1, memory: 6 },
|
64
|
+
'default' => { cpu_cores: 4, memory: 20 },
|
65
|
+
'medium' => { cpu_cores: 8, memory: 32 },
|
66
|
+
'large' => { cpu_cores: 16, memory: 64 },
|
67
|
+
'extra-large' => { cpu_cores: 32, memory: 128 },
|
68
|
+
'extra-extra-large' => { cpu_cores: 48, memory: 256 }
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def failure_message(tuning_profile)
|
73
|
+
<<-MESSAGE.strip_heredoc
|
74
|
+
\nERROR: The installer is configured to use the #{tuning_profile} tuning profile and does not meet the requirements.
|
75
|
+
MESSAGE
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -11,8 +11,7 @@ class Checks::NonRhPackages < ForemanMaintain::Check
|
|
11
11
|
def run
|
12
12
|
rpm_query_format = '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} : %{VENDOR}\n'
|
13
13
|
all_packages = package_manager.list_installed_packages(rpm_query_format)
|
14
|
-
non_rh_packages = all_packages -
|
15
|
-
all_packages.grep(Regexp.union(rh_regexp_list + ansible_runner_regexp_list))
|
14
|
+
non_rh_packages = all_packages - all_packages.grep(Regexp.union(rh_regexp_list))
|
16
15
|
assert(non_rh_packages.empty?, error_msg(non_rh_packages), :warn => true)
|
17
16
|
end
|
18
17
|
|
@@ -27,8 +26,4 @@ class Checks::NonRhPackages < ForemanMaintain::Check
|
|
27
26
|
/-qpid-router-server/, /java-client/, /pulp-client/, /katello-default-ca/, /katello-server-ca/,
|
28
27
|
/katello-ca-consumer/, /gpg-pubkey/, /-tomcat/]
|
29
28
|
end
|
30
|
-
|
31
|
-
def ansible_runner_regexp_list
|
32
|
-
[/ansible-runner/, /[python\d]+-ansible-runner/]
|
33
|
-
end
|
34
29
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
class Checks::CheckUpstreamRepository < ForemanMaintain::Check
|
2
|
+
include ForemanMaintain::Concerns::Upstream
|
3
|
+
|
2
4
|
metadata do
|
3
5
|
label :check_upstream_repository
|
4
6
|
description 'Check if any upstream repositories are enabled on system'
|
@@ -14,7 +16,7 @@ class Checks::CheckUpstreamRepository < ForemanMaintain::Check
|
|
14
16
|
|
15
17
|
def run
|
16
18
|
with_spinner('Checking for presence of upstream repositories') do
|
17
|
-
enabled_repo_ids =
|
19
|
+
enabled_repo_ids = repoids_and_urls.keys
|
18
20
|
assert(enabled_repo_ids.empty?,
|
19
21
|
"System has upstream #{enabled_repo_ids.join(',')} repositories enabled",
|
20
22
|
:next_steps => Procedures::Repositories::Disable.new(:repos => enabled_repo_ids))
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Features::ForemanInstall < ForemanMaintain::Feature
|
2
|
+
include ForemanMaintain::Concerns::Upstream
|
3
|
+
include ForemanMaintain::Concerns::Versions
|
4
|
+
|
5
|
+
metadata do
|
6
|
+
label :foreman_install
|
7
|
+
|
8
|
+
confine do
|
9
|
+
!feature(:instance).downstream && !feature(:katello) && feature(:foreman_server)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module ForemanMaintain
|
2
2
|
module Features
|
3
3
|
class ForemanServer < ForemanMaintain::Feature
|
4
|
+
include ForemanMaintain::Concerns::Versions
|
4
5
|
metadata do
|
5
6
|
label :foreman_server
|
6
7
|
confine do
|
@@ -47,6 +48,10 @@ module ForemanMaintain
|
|
47
48
|
def services_running?
|
48
49
|
services.all?(&:running?)
|
49
50
|
end
|
51
|
+
|
52
|
+
def current_version
|
53
|
+
@current_version ||= package_version('foreman')
|
54
|
+
end
|
50
55
|
end
|
51
56
|
end
|
52
57
|
end
|
@@ -92,11 +92,18 @@ class Features::Installer < ForemanMaintain::Feature
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def run(arguments = '', exec_options = {})
|
95
|
-
out = execute!("
|
95
|
+
out = execute!("#{installer_command} #{arguments}".strip, exec_options)
|
96
96
|
@configuration = nil
|
97
97
|
out
|
98
98
|
end
|
99
99
|
|
100
|
+
def run_with_status(arguments = '', exec_options = {})
|
101
|
+
cmd_with_arguments = "#{installer_command} #{arguments}".strip
|
102
|
+
cmd_status, out = execute_with_status(cmd_with_arguments, exec_options)
|
103
|
+
@configuration = nil
|
104
|
+
[cmd_status, out]
|
105
|
+
end
|
106
|
+
|
100
107
|
def upgrade(exec_options = {})
|
101
108
|
run(installer_arguments, exec_options)
|
102
109
|
end
|
@@ -105,13 +112,15 @@ class Features::Installer < ForemanMaintain::Feature
|
|
105
112
|
installer_args = ''
|
106
113
|
|
107
114
|
if feature(:foreman_proxy) &&
|
108
|
-
feature(:foreman_proxy).with_content?
|
115
|
+
feature(:foreman_proxy).with_content? &&
|
116
|
+
check_max_version('foreman-installer', '3.4')
|
109
117
|
installer_args += ' --disable-system-checks'
|
110
118
|
end
|
111
119
|
|
112
|
-
unless check_min_version('foreman
|
120
|
+
unless check_min_version('foreman-installer', '2.1')
|
113
121
|
installer_args += ' --upgrade' if can_upgrade?
|
114
122
|
end
|
123
|
+
|
115
124
|
installer_args
|
116
125
|
end
|
117
126
|
|
@@ -60,8 +60,13 @@ class Features::Instance < ForemanMaintain::Feature
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
def foreman_server_ssl_ca
|
64
|
+
@foreman_server_ssl_ca ||= feature(:installer).answers['foreman']['server_ssl_ca']
|
65
|
+
end
|
66
|
+
|
63
67
|
def server_connection
|
64
68
|
net = Net::HTTP.new(ForemanMaintain.config.foreman_url, ForemanMaintain.config.foreman_port)
|
69
|
+
net.ca_file = foreman_server_ssl_ca
|
65
70
|
net.use_ssl = true
|
66
71
|
net
|
67
72
|
end
|
@@ -74,6 +79,10 @@ class Features::Instance < ForemanMaintain::Feature
|
|
74
79
|
feature(:nftables) || feature(:iptables)
|
75
80
|
end
|
76
81
|
|
82
|
+
def upstream_install
|
83
|
+
feature(:foreman_install) || feature(:katello_install)
|
84
|
+
end
|
85
|
+
|
77
86
|
private
|
78
87
|
|
79
88
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Features::KatelloInstall < ForemanMaintain::Feature
|
2
|
+
include ForemanMaintain::Concerns::Upstream
|
3
|
+
include ForemanMaintain::Concerns::Versions
|
4
|
+
|
5
|
+
metadata do
|
6
|
+
label :katello_install
|
7
|
+
|
8
|
+
confine do
|
9
|
+
!feature(:instance).downstream && feature(:katello)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -19,7 +19,7 @@ module Procedures::Content
|
|
19
19
|
puts execute!('foreman-rake katello:pulp3_post_migration_check')
|
20
20
|
puts 'Switching specified content over to pulp 3'
|
21
21
|
puts execute!('foreman-rake katello:pulp3_content_switchover')
|
22
|
-
run_installer if feature(:
|
22
|
+
run_installer if feature(:katello_install)
|
23
23
|
end
|
24
24
|
|
25
25
|
def run_installer
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Procedures::Packages
|
2
|
+
class EnableModules < ForemanMaintain::Procedure
|
3
|
+
metadata do
|
4
|
+
description 'Enable the given stream modules'
|
5
|
+
confine do
|
6
|
+
package_manager.class.name == 'ForemanMaintain::PackageManager::Dnf'
|
7
|
+
end
|
8
|
+
param :module_names, 'Module names', :array => true, :required => true
|
9
|
+
advanced_run false
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
execute!("dnf module enable #{@module_names.join(' ')} -y")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Procedures::Packages
|
2
|
+
class Uninstall < ForemanMaintain::Procedure
|
3
|
+
metadata do
|
4
|
+
description 'Uninstall packages'
|
5
|
+
param :packages, 'List of packages to uninstall', :array => true
|
6
|
+
param :assumeyes, 'Do not ask for confirmation'
|
7
|
+
param :warn_on_errors, 'Do not interrupt scenario on failure',
|
8
|
+
:flag => true, :default => false
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
assumeyes_val = @assumeyes.nil? ? assumeyes? : @assumeyes
|
13
|
+
packages_action(:remove, @packages, :assumeyes => assumeyes_val)
|
14
|
+
rescue ForemanMaintain::Error::ExecutionError => e
|
15
|
+
if @warn_on_errors
|
16
|
+
set_status(:warning, e.message)
|
17
|
+
else
|
18
|
+
raise
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def necessary?
|
23
|
+
@force || @packages.any? { |package| package_version(package).nil? }
|
24
|
+
end
|
25
|
+
|
26
|
+
def runtime_message
|
27
|
+
"Uninstalling package(s) #{@packages.join(', ')}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Procedures::Pulpcore
|
2
|
+
class TrimRpmChangelogs < ForemanMaintain::Procedure
|
3
|
+
include ForemanMaintain::Concerns::SystemService
|
4
|
+
|
5
|
+
metadata do
|
6
|
+
description 'Trim RPM changelogs in the pulpcore db'
|
7
|
+
for_feature :pulpcore
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
with_spinner('Trimming RPM changelogs in the pulpcore db') do |spinner|
|
12
|
+
necessary_services = feature(:pulpcore_database).services
|
13
|
+
|
14
|
+
feature(:service).handle_services(spinner, 'start', :only => necessary_services)
|
15
|
+
|
16
|
+
spinner.update('Trimming RPM changelogs')
|
17
|
+
execute!('sudo PULP_SETTINGS=/etc/pulp/settings.py '\
|
18
|
+
'DJANGO_SETTINGS_MODULE=pulpcore.app.settings '\
|
19
|
+
'pulpcore-manager rpm-trim-changelogs')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -13,7 +13,8 @@ module Procedures::Repositories
|
|
13
13
|
|
14
14
|
def run
|
15
15
|
with_spinner("Configuring repositories for #{@version}") do
|
16
|
-
(feature(:instance).downstream ||
|
16
|
+
(feature(:instance).downstream || \
|
17
|
+
feature(:instance).upstream_install).setup_repositories(@version)
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
module ForemanMaintain::Scenarios
|
2
2
|
class SelfUpgradeBase < ForemanMaintain::Scenario
|
3
3
|
include ForemanMaintain::Concerns::Downstream
|
4
|
+
include ForemanMaintain::Concerns::Versions
|
5
|
+
|
4
6
|
def target_version
|
5
|
-
@target_version ||= current_version.bump
|
7
|
+
@target_version ||= Gem::Version.new(current_version).bump.to_s
|
6
8
|
end
|
7
9
|
|
8
10
|
def current_version
|
9
|
-
feature(:instance).downstream.
|
11
|
+
feature(:instance).downstream.current_version.to_s[/^\d+\.\d+\.\d+/]
|
10
12
|
end
|
11
13
|
|
12
14
|
def maintenance_repo_label
|
@@ -48,6 +50,14 @@ module ForemanMaintain::Scenarios
|
|
48
50
|
[maintenance_repo_id(target_version)]
|
49
51
|
end
|
50
52
|
end
|
53
|
+
|
54
|
+
def upstream_target_version
|
55
|
+
if feature(:katello_install)
|
56
|
+
return foreman_version_by_katello(target_version)
|
57
|
+
else
|
58
|
+
target_version
|
59
|
+
end
|
60
|
+
end
|
51
61
|
end
|
52
62
|
|
53
63
|
class SelfUpgrade < SelfUpgradeBase
|
@@ -58,9 +68,8 @@ module ForemanMaintain::Scenarios
|
|
58
68
|
manual_detection
|
59
69
|
end
|
60
70
|
|
61
|
-
def
|
71
|
+
def downstream_self_upgrade(pkgs_to_update)
|
62
72
|
if check_min_version('foreman', '2.5') || check_min_version('foreman-proxy', '2.5')
|
63
|
-
pkgs_to_update = %w[satellite-maintain rubygem-foreman_maintain]
|
64
73
|
yum_options = req_repos_to_update_pkgs.map do |id|
|
65
74
|
"--enablerepo=#{id}"
|
66
75
|
end
|
@@ -68,5 +77,42 @@ module ForemanMaintain::Scenarios
|
|
68
77
|
yum_options: yum_options))
|
69
78
|
end
|
70
79
|
end
|
80
|
+
|
81
|
+
def upstream_self_upgrade(pkgs_to_update)
|
82
|
+
# This method is responsible for
|
83
|
+
# 1. Setup the repositories of next major version
|
84
|
+
# 2. Update the foreman-maintain packages from next major version repository
|
85
|
+
# 3. Rollback the repository to current major version
|
86
|
+
|
87
|
+
add_step(Procedures::Repositories::Setup.new(:version => upstream_target_version))
|
88
|
+
add_step(Procedures::Packages::Update.new(packages: pkgs_to_update, assumeyes: true))
|
89
|
+
ensure
|
90
|
+
rollback_repositories
|
91
|
+
end
|
92
|
+
|
93
|
+
def rollback_repositories
|
94
|
+
installed_release_pkg = package_manager.find_installed_package('foreman-release',
|
95
|
+
'%{VERSION}')
|
96
|
+
|
97
|
+
unless current_version.nil? && installed_release_pkg.nil?
|
98
|
+
current_major_version = current_version[0..2]
|
99
|
+
installed_foreman_release_major_version = installed_release_pkg[0..2]
|
100
|
+
if installed_foreman_release_major_version != current_major_version
|
101
|
+
add_step(Procedures::Packages::Uninstall.new(packages: %w[foreman-release katello-repos],
|
102
|
+
assumeyes: true))
|
103
|
+
add_step(Procedures::Repositories::Setup.new(:version => current_major_version))
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def compose
|
109
|
+
pkgs_to_update = %w[rubygem-foreman_maintain]
|
110
|
+
if feature(:instance).downstream
|
111
|
+
pkgs_to_update << 'satellite-maintain'
|
112
|
+
downstream_self_upgrade(pkgs_to_update)
|
113
|
+
elsif feature(:instance).upstream_install
|
114
|
+
upstream_self_upgrade(pkgs_to_update)
|
115
|
+
end
|
116
|
+
end
|
71
117
|
end
|
72
118
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Scenarios::Foreman_Nightly
|
2
|
+
class Abstract < ForemanMaintain::Scenario
|
3
|
+
def self.upgrade_metadata(&block)
|
4
|
+
metadata do
|
5
|
+
tags :upgrade_scenario
|
6
|
+
confine do
|
7
|
+
feature(:foreman_install) || ForemanMaintain.upgrade_in_progress == 'nightly'
|
8
|
+
end
|
9
|
+
instance_eval(&block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def target_version
|
14
|
+
'nightly'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class PreUpgradeCheck < Abstract
|
19
|
+
upgrade_metadata do
|
20
|
+
description 'Checks before upgrading to Foreman nightly'
|
21
|
+
tags :pre_upgrade_checks
|
22
|
+
run_strategy :fail_slow
|
23
|
+
end
|
24
|
+
|
25
|
+
def compose
|
26
|
+
add_steps(find_checks(:default))
|
27
|
+
add_steps(find_checks(:pre_upgrade))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class PreMigrations < Abstract
|
32
|
+
upgrade_metadata do
|
33
|
+
description 'Procedures before upgrading to Foreman nightly'
|
34
|
+
tags :pre_migrations
|
35
|
+
end
|
36
|
+
|
37
|
+
def compose
|
38
|
+
add_steps(find_procedures(:pre_migrations))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class Migrations < Abstract
|
43
|
+
upgrade_metadata do
|
44
|
+
description 'Upgrade steps for Foreman nightly'
|
45
|
+
tags :migrations
|
46
|
+
run_strategy :fail_fast
|
47
|
+
end
|
48
|
+
|
49
|
+
def set_context_mapping
|
50
|
+
context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
|
51
|
+
end
|
52
|
+
|
53
|
+
def compose
|
54
|
+
add_step(Procedures::Repositories::Setup.new(:version => 'nightly'))
|
55
|
+
if el?
|
56
|
+
modules_to_enable = ["foreman:#{el_short_name}"]
|
57
|
+
add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
|
58
|
+
end
|
59
|
+
add_step(Procedures::Packages::Update.new(:assumeyes => true))
|
60
|
+
add_step_with_context(Procedures::Installer::Upgrade)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class PostMigrations < Abstract
|
65
|
+
upgrade_metadata do
|
66
|
+
description 'Post upgrade procedures for Foreman nightly'
|
67
|
+
tags :post_migrations
|
68
|
+
end
|
69
|
+
|
70
|
+
def compose
|
71
|
+
add_step(Procedures::RefreshFeatures)
|
72
|
+
add_step(Procedures::Service::Start.new)
|
73
|
+
add_steps(find_procedures(:post_migrations))
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class PostUpgradeChecks < Abstract
|
78
|
+
upgrade_metadata do
|
79
|
+
description 'Checks after upgrading to Foreman nightly'
|
80
|
+
tags :post_upgrade_checks
|
81
|
+
run_strategy :fail_slow
|
82
|
+
end
|
83
|
+
|
84
|
+
def compose
|
85
|
+
add_steps(find_checks(:default))
|
86
|
+
add_steps(find_checks(:post_upgrade))
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Scenarios::Katello_Nightly
|
2
|
+
class Abstract < ForemanMaintain::Scenario
|
3
|
+
def self.upgrade_metadata(&block)
|
4
|
+
metadata do
|
5
|
+
tags :upgrade_scenario
|
6
|
+
confine do
|
7
|
+
feature(:katello_install) || ForemanMaintain.upgrade_in_progress == 'nightly'
|
8
|
+
end
|
9
|
+
instance_eval(&block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def target_version
|
14
|
+
'nightly'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class PreUpgradeCheck < Abstract
|
19
|
+
upgrade_metadata do
|
20
|
+
description 'Checks before upgrading to Katello nightly'
|
21
|
+
tags :pre_upgrade_checks
|
22
|
+
run_strategy :fail_slow
|
23
|
+
end
|
24
|
+
|
25
|
+
def compose
|
26
|
+
add_steps(find_checks(:default))
|
27
|
+
add_steps(find_checks(:pre_upgrade))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class PreMigrations < Abstract
|
32
|
+
upgrade_metadata do
|
33
|
+
description 'Procedures before upgrading to Katello nightly'
|
34
|
+
tags :pre_migrations
|
35
|
+
end
|
36
|
+
|
37
|
+
def compose
|
38
|
+
add_steps(find_procedures(:pre_migrations))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class Migrations < Abstract
|
43
|
+
upgrade_metadata do
|
44
|
+
description 'Upgrade steps for Katello nightly'
|
45
|
+
tags :migrations
|
46
|
+
run_strategy :fail_fast
|
47
|
+
end
|
48
|
+
|
49
|
+
def set_context_mapping
|
50
|
+
context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
|
51
|
+
end
|
52
|
+
|
53
|
+
def compose
|
54
|
+
add_step(Procedures::Repositories::Setup.new(:version => 'nightly'))
|
55
|
+
modules_to_enable = ["katello:#{el_short_name}", "pulpcore:#{el_short_name}"]
|
56
|
+
add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
|
57
|
+
add_step(Procedures::Packages::Update.new(:assumeyes => true))
|
58
|
+
add_step_with_context(Procedures::Installer::Upgrade)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class PostMigrations < Abstract
|
63
|
+
upgrade_metadata do
|
64
|
+
description 'Post upgrade procedures for Katello nightly'
|
65
|
+
tags :post_migrations
|
66
|
+
end
|
67
|
+
|
68
|
+
def compose
|
69
|
+
add_step(Procedures::RefreshFeatures)
|
70
|
+
add_step(Procedures::Service::Start.new)
|
71
|
+
add_steps(find_procedures(:post_migrations))
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
class PostUpgradeChecks < Abstract
|
76
|
+
upgrade_metadata do
|
77
|
+
description 'Checks after upgrading to Katello nightly'
|
78
|
+
tags :post_upgrade_checks
|
79
|
+
run_strategy :fail_slow
|
80
|
+
end
|
81
|
+
|
82
|
+
def compose
|
83
|
+
add_steps(find_checks(:default))
|
84
|
+
add_steps(find_checks(:post_upgrade))
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -20,7 +20,12 @@ yum-utils
|
|
20
20
|
# el7 psql client dependencies
|
21
21
|
rh-postgresql12-postgresql
|
22
22
|
rh-postgresql12-postgresql-libs
|
23
|
+
rh-postgresql12-postgresql-syspaths
|
23
24
|
rh-postgresql12-runtime
|
25
|
+
scl-utils
|
26
|
+
# el8 psql client dependencies
|
27
|
+
postgresql
|
28
|
+
libpq
|
24
29
|
# el8 yum-utils dependencies
|
25
30
|
dnf-plugins-core
|
26
31
|
python3-dnf-plugins-core
|
@@ -52,12 +52,16 @@ module ForemanMaintain
|
|
52
52
|
target_versions.sort.each { |version| puts version }
|
53
53
|
end
|
54
54
|
|
55
|
+
def allow_self_upgrade?
|
56
|
+
!disable_self_upgrade?
|
57
|
+
end
|
58
|
+
|
55
59
|
subcommand 'list-versions', 'List versions this system is upgradable to' do
|
56
60
|
disable_self_upgrade_option
|
57
61
|
|
58
62
|
def execute
|
59
63
|
ForemanMaintain.validate_downstream_packages
|
60
|
-
ForemanMaintain.perform_self_upgrade
|
64
|
+
ForemanMaintain.perform_self_upgrade if allow_self_upgrade?
|
61
65
|
print_versions(UpgradeRunner.available_targets)
|
62
66
|
end
|
63
67
|
end
|
@@ -69,7 +73,7 @@ module ForemanMaintain
|
|
69
73
|
|
70
74
|
def execute
|
71
75
|
ForemanMaintain.validate_downstream_packages
|
72
|
-
ForemanMaintain.perform_self_upgrade
|
76
|
+
ForemanMaintain.perform_self_upgrade if allow_self_upgrade?
|
73
77
|
upgrade_runner.run_phase(:pre_upgrade_checks)
|
74
78
|
exit upgrade_runner.exit_code
|
75
79
|
end
|
@@ -89,7 +93,7 @@ module ForemanMaintain
|
|
89
93
|
|
90
94
|
def execute
|
91
95
|
ForemanMaintain.validate_downstream_packages
|
92
|
-
ForemanMaintain.perform_self_upgrade
|
96
|
+
ForemanMaintain.perform_self_upgrade if allow_self_upgrade?
|
93
97
|
if phase
|
94
98
|
upgrade_runner.run_phase(phase.to_sym)
|
95
99
|
else
|
@@ -5,18 +5,6 @@ module ForemanMaintain
|
|
5
5
|
raise NotImplementedError
|
6
6
|
end
|
7
7
|
|
8
|
-
def less_than_version?(version)
|
9
|
-
Gem::Version.new(current_version) < Gem::Version.new(version)
|
10
|
-
end
|
11
|
-
|
12
|
-
def at_least_version?(version)
|
13
|
-
Gem::Version.new(current_version) >= Gem::Version.new(version)
|
14
|
-
end
|
15
|
-
|
16
|
-
def current_minor_version
|
17
|
-
current_version.to_s[/^\d+\.\d+/]
|
18
|
-
end
|
19
|
-
|
20
8
|
def repository_manager
|
21
9
|
ForemanMaintain.repository_manager
|
22
10
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ForemanMaintain
|
2
|
+
module Concerns
|
3
|
+
module ForemanAndKatelloVersionMap
|
4
|
+
FOREMAN_AND_KATELLO_VERSION_MAP = {
|
5
|
+
'nightly' => 'nightly'
|
6
|
+
}.freeze
|
7
|
+
|
8
|
+
def foreman_version_by_katello(version)
|
9
|
+
FOREMAN_AND_KATELLO_VERSION_MAP.key(version)
|
10
|
+
end
|
11
|
+
|
12
|
+
def katello_version_by_foreman(version)
|
13
|
+
FOREMAN_AND_KATELLO_VERSION_MAP.fetch(version)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -89,6 +89,31 @@ module ForemanMaintain
|
|
89
89
|
def os_version
|
90
90
|
facts.fetch('VERSION')
|
91
91
|
end
|
92
|
+
|
93
|
+
def os_version_codename
|
94
|
+
facts.fetch('VERSION_CODENAME')
|
95
|
+
end
|
96
|
+
|
97
|
+
def rhel?
|
98
|
+
os_id == 'rhel'
|
99
|
+
end
|
100
|
+
|
101
|
+
def centos?
|
102
|
+
os_id == 'centos'
|
103
|
+
end
|
104
|
+
|
105
|
+
def el_short_name
|
106
|
+
"el#{el_major_version}"
|
107
|
+
end
|
108
|
+
|
109
|
+
def memory
|
110
|
+
meminfo = File.read('/proc/meminfo')
|
111
|
+
meminfo.match(/^MemTotal:\s+(?<memory>\d+) kB/)['memory']
|
112
|
+
end
|
113
|
+
|
114
|
+
def cpu_cores
|
115
|
+
execute('nproc')
|
116
|
+
end
|
92
117
|
end
|
93
118
|
end
|
94
119
|
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
module ForemanMaintain
|
2
|
+
module Concerns
|
3
|
+
module Upstream
|
4
|
+
include Concerns::ForemanAndKatelloVersionMap
|
5
|
+
|
6
|
+
def server_url
|
7
|
+
if el?
|
8
|
+
'https://yum.theforeman.org/'
|
9
|
+
elsif debian_or_ubuntu?
|
10
|
+
'https://deb.theforeman.org/'
|
11
|
+
else
|
12
|
+
raise 'Unknown operating system detected!'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def foreman_release_pkg_url(version)
|
17
|
+
if el?
|
18
|
+
"#{server_url}releases/#{version}/#{el_short_name}/x86_64/foreman-release.rpm"
|
19
|
+
elsif debian_or_ubuntu?
|
20
|
+
"#{server_url}pool/#{os_version_codename}/#{version}"\
|
21
|
+
'/f/foreman-release/foreman-release.deb'
|
22
|
+
else
|
23
|
+
raise 'Unknown operating system detected!'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def katello_pkgs_url(katello_version)
|
28
|
+
"#{server_url}katello/#{katello_version}/katello/#{el_short_name}/x86_64/"
|
29
|
+
end
|
30
|
+
|
31
|
+
def katello_release_pkg(version)
|
32
|
+
"#{katello_pkgs_url(katello_version_by_foreman(version))}katello-repos-latest.rpm"
|
33
|
+
end
|
34
|
+
|
35
|
+
def update_release_pkg_el(pkg_url)
|
36
|
+
package_manager.install(pkg_url, assumeyes: true)
|
37
|
+
end
|
38
|
+
|
39
|
+
def update_release_pkg_deb(pkg_url)
|
40
|
+
Dir.mktmpdir do |dir|
|
41
|
+
release_file_path = "#{dir}/foreman-release.deb"
|
42
|
+
exit_status, = execute_with_status("wget -q -O #{release_file_path} #{pkg_url}")
|
43
|
+
if exit_status == 0
|
44
|
+
package_manager.install(release_file_path, assumeyes: true)
|
45
|
+
else
|
46
|
+
warn! "Couldn't install Foreman release package: #{pkg_url}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def use_activation_key(activation_key, org)
|
52
|
+
org_options = org ? %(--org #{shellescape(org)}) : ''
|
53
|
+
execute!(%(subscription-manager register #{org_options}\
|
54
|
+
--activationkey #{shellescape(activation_key)} --force))
|
55
|
+
end
|
56
|
+
|
57
|
+
def update_foreman_release_pkg(version)
|
58
|
+
pkg_url = foreman_release_pkg_url(version)
|
59
|
+
if el?
|
60
|
+
update_release_pkg_el(pkg_url)
|
61
|
+
elsif debian_or_ubuntu?
|
62
|
+
update_release_pkg_deb(pkg_url)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def update_katello_release_pkg(version)
|
67
|
+
if feature(:katello)
|
68
|
+
pkg_url = katello_release_pkg(version)
|
69
|
+
update_release_pkg_el(pkg_url)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def setup_repositories(version)
|
74
|
+
# Documentation needs update with respect to new env vars
|
75
|
+
activation_key = ENV['ACTIVATION_KEY']
|
76
|
+
org = ENV['FOREMAN_ORG']
|
77
|
+
if activation_key
|
78
|
+
use_activation_key(activation_key, org)
|
79
|
+
else
|
80
|
+
update_foreman_release_pkg(version)
|
81
|
+
update_katello_release_pkg(version)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def repoids_and_urls
|
86
|
+
repoids_and_urls = {}
|
87
|
+
repository_manager.enabled_repos.each do |repo, url|
|
88
|
+
repo_urls.each do |regex|
|
89
|
+
repoids_and_urls[repo] = url if url =~ regex
|
90
|
+
end
|
91
|
+
end
|
92
|
+
repoids_and_urls
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
def repo_urls
|
98
|
+
[%r{yum.theforeman.org\/*},
|
99
|
+
%r{yum.puppetlabs.com\/*}]
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ForemanMaintain
|
2
|
+
module Concerns
|
3
|
+
module Versions
|
4
|
+
def less_than_version?(version)
|
5
|
+
Gem::Version.new(current_version) < Gem::Version.new(version)
|
6
|
+
end
|
7
|
+
|
8
|
+
def at_least_version?(version)
|
9
|
+
Gem::Version.new(current_version) >= Gem::Version.new(version)
|
10
|
+
end
|
11
|
+
|
12
|
+
def current_minor_version
|
13
|
+
current_version.to_s[/^\d+\.\d+/]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
1
3
|
module ForemanMaintain::PackageManager
|
2
4
|
class Apt < Base
|
3
5
|
def installed?(packages)
|
@@ -41,6 +43,11 @@ module ForemanMaintain::PackageManager
|
|
41
43
|
apt_action('upgrade --dry-run', packages, :with_status => with_status)
|
42
44
|
end
|
43
45
|
|
46
|
+
def update_available?(package)
|
47
|
+
output, status = Open3.capture2("apt-get install #{package} --dry-run")
|
48
|
+
status.success? && output.include?("Inst #{package}")
|
49
|
+
end
|
50
|
+
|
44
51
|
def list_installed_packages(queryfm = '${binary:Package}-${VERSION}\n')
|
45
52
|
# The queryfm should only include valid tag(s) as per `dpkg-query` man page.
|
46
53
|
# If any special formatting is required with querytag then it should be provided with tag i.e,
|
data/lib/foreman_maintain.rb
CHANGED
@@ -21,7 +21,10 @@ module ForemanMaintain
|
|
21
21
|
require 'foreman_maintain/concerns/hammer'
|
22
22
|
require 'foreman_maintain/concerns/base_database'
|
23
23
|
require 'foreman_maintain/concerns/directory_marker'
|
24
|
+
require 'foreman_maintain/concerns/versions'
|
24
25
|
require 'foreman_maintain/concerns/downstream'
|
26
|
+
require 'foreman_maintain/concerns/foreman_and_katello_version_map'
|
27
|
+
require 'foreman_maintain/concerns/upstream'
|
25
28
|
require 'foreman_maintain/concerns/primary_checks'
|
26
29
|
require 'foreman_maintain/concerns/pulp_common'
|
27
30
|
require 'foreman_maintain/concerns/firewall/iptables_maintenance_mode'
|
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.2.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: 2022-
|
11
|
+
date: 2022-11-01 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/foreman/check_duplicate_roles.rb
|
162
162
|
- definitions/checks/foreman/check_https_proxies.rb
|
163
163
|
- definitions/checks/foreman/check_puppet_capsules.rb
|
164
|
+
- definitions/checks/foreman/check_tuning_requirements.rb
|
164
165
|
- definitions/checks/foreman/db_up.rb
|
165
166
|
- definitions/checks/foreman/facts_names.rb
|
166
167
|
- definitions/checks/foreman/puppet_class_duplicates.rb
|
@@ -201,10 +202,9 @@ files:
|
|
201
202
|
- definitions/features/capsule.rb
|
202
203
|
- definitions/features/cron.rb
|
203
204
|
- definitions/features/dynflow_sidekiq.rb
|
204
|
-
- definitions/features/foreman_1_11_x.rb
|
205
|
-
- definitions/features/foreman_1_7_x.rb
|
206
205
|
- definitions/features/foreman_cockpit.rb
|
207
206
|
- definitions/features/foreman_database.rb
|
207
|
+
- definitions/features/foreman_install.rb
|
208
208
|
- definitions/features/foreman_openscap.rb
|
209
209
|
- definitions/features/foreman_proxy.rb
|
210
210
|
- definitions/features/foreman_server.rb
|
@@ -215,6 +215,7 @@ files:
|
|
215
215
|
- definitions/features/instance.rb
|
216
216
|
- definitions/features/iptables.rb
|
217
217
|
- definitions/features/katello.rb
|
218
|
+
- definitions/features/katello_install.rb
|
218
219
|
- definitions/features/mongo.rb
|
219
220
|
- definitions/features/nftables.rb
|
220
221
|
- definitions/features/pulp2.rb
|
@@ -226,8 +227,6 @@ files:
|
|
226
227
|
- definitions/features/service.rb
|
227
228
|
- definitions/features/sync_plans.rb
|
228
229
|
- definitions/features/tar.rb
|
229
|
-
- definitions/features/upstream.rb
|
230
|
-
- definitions/features/upstream_repositories.rb
|
231
230
|
- definitions/procedures/backup/accessibility_confirmation.rb
|
232
231
|
- definitions/procedures/backup/clean.rb
|
233
232
|
- definitions/procedures/backup/compress_data.rb
|
@@ -285,10 +284,12 @@ files:
|
|
285
284
|
- definitions/procedures/maintenance_mode/enable_maintenance_mode.rb
|
286
285
|
- definitions/procedures/maintenance_mode/is_enabled.rb
|
287
286
|
- definitions/procedures/packages/check_update.rb
|
287
|
+
- definitions/procedures/packages/enable_modules.rb
|
288
288
|
- definitions/procedures/packages/install.rb
|
289
289
|
- definitions/procedures/packages/installer_confirmation.rb
|
290
290
|
- definitions/procedures/packages/lock_versions.rb
|
291
291
|
- definitions/procedures/packages/locking_status.rb
|
292
|
+
- definitions/procedures/packages/uninstall.rb
|
292
293
|
- definitions/procedures/packages/unlock_versions.rb
|
293
294
|
- definitions/procedures/packages/update.rb
|
294
295
|
- definitions/procedures/packages/update_all_confirmation.rb
|
@@ -298,6 +299,7 @@ files:
|
|
298
299
|
- definitions/procedures/pulp/print_remove_instructions.rb
|
299
300
|
- definitions/procedures/pulp/remove.rb
|
300
301
|
- definitions/procedures/pulpcore/migrate.rb
|
302
|
+
- definitions/procedures/pulpcore/trim_rpm_changelogs.rb
|
301
303
|
- definitions/procedures/puppet/delete_empty_ca_cert_request_files.rb
|
302
304
|
- definitions/procedures/puppet/remove_puppet.rb
|
303
305
|
- definitions/procedures/puppet/remove_puppet_data.rb
|
@@ -352,6 +354,8 @@ files:
|
|
352
354
|
- definitions/scenarios/upgrade_to_capsule_6_8_z.rb
|
353
355
|
- definitions/scenarios/upgrade_to_capsule_6_9.rb
|
354
356
|
- definitions/scenarios/upgrade_to_capsule_6_9_z.rb
|
357
|
+
- definitions/scenarios/upgrade_to_foreman_nightly.rb
|
358
|
+
- definitions/scenarios/upgrade_to_katello_nightly.rb
|
355
359
|
- definitions/scenarios/upgrade_to_satellite_6_10.rb
|
356
360
|
- definitions/scenarios/upgrade_to_satellite_6_10_z.rb
|
357
361
|
- definitions/scenarios/upgrade_to_satellite_6_11.rb
|
@@ -408,6 +412,7 @@ files:
|
|
408
412
|
- lib/foreman_maintain/concerns/firewall/iptables_maintenance_mode.rb
|
409
413
|
- lib/foreman_maintain/concerns/firewall/maintenance_mode.rb
|
410
414
|
- lib/foreman_maintain/concerns/firewall/nftables_maintenance_mode.rb
|
415
|
+
- lib/foreman_maintain/concerns/foreman_and_katello_version_map.rb
|
411
416
|
- lib/foreman_maintain/concerns/hammer.rb
|
412
417
|
- lib/foreman_maintain/concerns/logger.rb
|
413
418
|
- lib/foreman_maintain/concerns/metadata.rb
|
@@ -418,6 +423,8 @@ files:
|
|
418
423
|
- lib/foreman_maintain/concerns/scenario_metadata.rb
|
419
424
|
- lib/foreman_maintain/concerns/system_helpers.rb
|
420
425
|
- lib/foreman_maintain/concerns/system_service.rb
|
426
|
+
- lib/foreman_maintain/concerns/upstream.rb
|
427
|
+
- lib/foreman_maintain/concerns/versions.rb
|
421
428
|
- lib/foreman_maintain/config.rb
|
422
429
|
- lib/foreman_maintain/context.rb
|
423
430
|
- lib/foreman_maintain/core_ext.rb
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class Features::Upstream < ForemanMaintain::Feature
|
2
|
-
metadata do
|
3
|
-
label :upstream
|
4
|
-
|
5
|
-
confine do
|
6
|
-
# TODO: remove this upstream feature
|
7
|
-
!feature(:instance).downstream
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def setup_repositories(_version)
|
12
|
-
raise NotImplementedError
|
13
|
-
end
|
14
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class Features::UpstreamRepositories < ForemanMaintain::Feature
|
2
|
-
metadata do
|
3
|
-
label :upstream_repositories
|
4
|
-
description 'Feature for operations on upstream repositories'
|
5
|
-
end
|
6
|
-
|
7
|
-
def repoids_and_urls
|
8
|
-
repoids_and_urls = {}
|
9
|
-
repository_manager.enabled_repos.each do |repo, url|
|
10
|
-
repo_urls.each do |regex|
|
11
|
-
repoids_and_urls[repo] = url if url =~ regex
|
12
|
-
end
|
13
|
-
end
|
14
|
-
repoids_and_urls
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def repo_urls
|
20
|
-
[%r{yum.theforeman.org\/*},
|
21
|
-
%r{yum.puppetlabs.com\/*}]
|
22
|
-
end
|
23
|
-
end
|