Revision 1214e201
Added by Ivan Necas about 6 years ago
definitions/checks/repositories/validate.rb | ||
---|---|---|
module Checks::Repositories
|
||
class Validate < ForemanMaintain::Check
|
||
metadata do
|
||
description 'Validate availability of repositories'
|
||
|
||
confine do
|
||
feature(:downstream)
|
||
end
|
||
|
||
param :version,
|
||
'Version for which repositories needs to be validated',
|
||
:required => true
|
||
|
||
manual_detection
|
||
end
|
||
|
||
def run
|
||
with_spinner("Validating availability of repositories for #{@version}") do |spinner|
|
||
absent_repos = feature(:downstream).absent_repos(@version)
|
||
unless absent_repos.empty?
|
||
spinner.update('Some repositories missing, calling `subscription-manager refresh`')
|
||
feature(:downstream).rhsm_refresh
|
||
absent_repos = feature(:downstream).absent_repos(@version)
|
||
end
|
||
unless absent_repos.empty?
|
||
fail!(
|
||
"Following repositories are not available on your system: #{absent_repos.join(', ')}"
|
||
)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
definitions/features/downstream.rb | ||
---|---|---|
execute!(%(subscription-manager register #{org_options}\
|
||
--activationkey #{shellescape(activation_key)} --force))
|
||
else
|
||
execute!(%(subscription-manager refresh))
|
||
execute!(%(subscription-manager repos --disable '*'))
|
||
enable_options = rh_repos(version).map { |r| "--enable=#{r}" }.join(' ')
|
||
execute!(%(subscription-manager repos #{enable_options}))
|
||
end
|
||
end
|
||
|
||
def absent_repos(version)
|
||
all_repo_lines = execute(%(LANG=en_US.utf-8 subscription-manager repos --list | ) +
|
||
%(grep '^Repo ID:')).split("\n")
|
||
all_repos = all_repo_lines.map { |line| line.split(/\s+/).last }
|
||
repos_required = rh_repos(version)
|
||
repos_found = repos_required & all_repos
|
||
repos_required - repos_found
|
||
end
|
||
|
||
def rhsm_refresh
|
||
execute!(%(subscription-manager refresh))
|
||
end
|
||
|
||
private
|
||
|
||
def rh_repos(sat_version)
|
definitions/scenarios/upgrade_to_satellite_6_2.rb | ||
---|---|---|
def compose
|
||
add_steps(find_checks(:default))
|
||
add_steps(find_checks(:pre_upgrade))
|
||
add_step(Checks::Repositories::Validate.new(:version => '6.2'))
|
||
end
|
||
end
|
||
|
definitions/scenarios/upgrade_to_satellite_6_2_z.rb | ||
---|---|---|
def compose
|
||
add_steps(find_checks(:default))
|
||
add_steps(find_checks(:pre_upgrade))
|
||
add_step(Checks::Repositories::Validate.new(:version => '6.2'))
|
||
end
|
||
end
|
||
|
definitions/scenarios/upgrade_to_satellite_6_3.rb | ||
---|---|---|
def compose
|
||
add_steps(find_checks(:default))
|
||
add_steps(find_checks(:pre_upgrade))
|
||
add_step(Checks::Repositories::Validate.new(:version => '6.3'))
|
||
end
|
||
end
|
||
|
definitions/scenarios/upgrade_to_satellite_6_3_z.rb | ||
---|---|---|
def compose
|
||
add_steps(find_checks(:default))
|
||
add_steps(find_checks(:pre_upgrade))
|
||
add_step(Checks::Repositories::Validate.new(:version => '6.3'))
|
||
end
|
||
end
|
||
|
lib/foreman_maintain/detector.rb | ||
---|---|---|
|
||
def find_present_classes(object_base_class)
|
||
object_base_class.all_sub_classes.reduce([]) do |array, object_class|
|
||
array << object_class if object_class.present?
|
||
array << object_class if object_class.autodetect? && object_class.present?
|
||
array
|
||
end
|
||
end
|
Also available in: Unified diff
Fixes #22762 - Check availability of repositories before upgrade