forked from theforeman/foreman_maintain
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsatellite_upgrade.rb
More file actions
152 lines (140 loc) · 5.07 KB
/
satellite_upgrade.rb
File metadata and controls
152 lines (140 loc) · 5.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
module Scenarios::Satellite
class Abstract < ForemanMaintain::Scenario
def self.upgrade_metadata(&block)
metadata do
tags :upgrade_scenario
confine do
feature(:instance).downstream&.satellite_upgrade_allowed?
end
instance_eval(&block)
end
end
def target_version
feature(:instance).downstream&.satellite_maintain_target_version
end
end
class PreUpgradeCheck < Abstract
upgrade_metadata do
description 'Checks before upgrading'
tags :pre_upgrade_checks
run_strategy :fail_slow
end
# rubocop:disable Metrics/MethodLength
def compose
add_steps(
Checks::Foreman::FactsNames, # if Foreman database present
Checks::ForemanProxy::CheckTftpStorage, # if Satellite with foreman-proxy+tftp
Checks::ForemanProxy::VerifyDhcpConfigSyntax, # if foreman-proxy+dhcp-isc
Checks::ForemanTasks::NotPaused, # if foreman-tasks present
Checks::Puppet::VerifyNoEmptyCacertRequests, # if puppetserver
Checks::ServerPing,
Checks::ServicesUp,
Checks::SystemRegistration,
Checks::CheckHotfixInstalled,
Checks::CheckTmout,
Checks::CheckSubscriptionManagerRelease,
Checks::CheckUpstreamRepository,
Checks::Container::PodmanLogin, # if downstream, connected, containers used
Checks::Disk::AvailableSpace,
Checks::Disk::AvailableSpaceCandlepin, # if candlepin
Checks::Disk::PostgresqlMountpoint,
Checks::Foreman::ValidateExternalDbVersion, # if external database
Checks::Foreman::CheckExternalDbEvrPermissions, # if external database
Checks::Foreman::CheckCorruptedRoles,
Checks::Foreman::CheckDuplicatePermissions,
Checks::Foreman::TuningRequirements, # if katello present
Checks::ForemanOpenscap::InvalidReportAssociations, # if foreman-openscap
Checks::ForemanTasks::Invalid::CheckOld, # if foreman-tasks
Checks::ForemanTasks::Invalid::CheckPendingState, # if foreman-tasks
Checks::ForemanTasks::Invalid::CheckPlanningState, # if foreman-tasks
Checks::ForemanTasks::NotRunning, # if foreman-tasks
Checks::Pulpcore::NoRunningTasks, # if pulpcore
Checks::NonRhPackages,
Checks::PackageManager::Dnf::ValidateDnfConfig,
Checks::Repositories::CheckNonRhRepository,
Checks::CheckIpv6Disable,
Checks::CheckSha1CertificateAuthority,
Checks::Repositories::Validate.new(:version => target_version),
)
end
# rubocop:enable Metrics/MethodLength
end
class PreMigrations < Abstract
upgrade_metadata do
description 'Procedures before migrating'
tags :pre_migrations
end
def compose
add_steps(
Procedures::MaintenanceMode::EnableMaintenanceMode,
Procedures::Crond::Stop,
Procedures::Timer::Stop,
Procedures::SyncPlans::Disable,
)
end
end
class Migrations < Abstract
upgrade_metadata do
description 'Migration scripts'
tags :migrations
run_strategy :fail_fast
end
def set_context_mapping
context.map(:assumeyes, Procedures::Installer::Run => :assumeyes)
end
def compose
add_step(Procedures::Repositories::Setup.new(:version => target_version))
add_steps(
Procedures::Packages::Update.new(
:assumeyes => true,
:download_only => true
),
Procedures::Iop::Update.new(:version => target_version),
Procedures::Service::Stop,
Procedures::Packages::Update.new(:assumeyes => true, :clean_cache => false),
)
add_step_with_context(Procedures::Installer::Run)
add_step(Procedures::Installer::UpgradeRakeTask)
end
end
class PostMigrations < Abstract
upgrade_metadata do
description 'Procedures after migrating'
tags :post_migrations
end
def compose
add_steps(
Procedures::RefreshFeatures,
Procedures::Service::Start,
Procedures::Pulpcore::RpmDatarepair,
Procedures::Crond::Start,
Procedures::Timer::Start,
Procedures::SyncPlans::Enable,
Procedures::MaintenanceMode::DisableMaintenanceMode,
Procedures::Iop::ImagePrune,
)
end
end
class PostUpgradeChecks < Abstract
upgrade_metadata do
description 'Checks after upgrading'
tags :post_upgrade_checks
run_strategy :fail_slow
end
def compose
add_steps(
Checks::Foreman::FactsNames, # if Foreman database present
Checks::ForemanProxy::CheckTftpStorage, # if Satellite with foreman-proxy+tftp
Checks::ForemanProxy::VerifyDhcpConfigSyntax, # if foreman-proxy+dhcp-isc
Checks::ForemanTasks::NotPaused, # if foreman-tasks present
Checks::Puppet::VerifyNoEmptyCacertRequests, # if puppetserver
Checks::ServerPing,
Checks::ServicesUp,
Checks::SystemRegistration,
Procedures::Packages::CheckForReboot,
Procedures::Pulpcore::ContainerHandleImageMetadata,
Procedures::Repositories::IndexKatelloRepositoriesContainerMetatdata,
)
end
end
end