Project

General

Profile

« Previous | Next » 

Revision e361f5c2

Added by Ivan Necas almost 7 years ago

Update the satellite upgrade to new code

View differences:

lib/foreman_maintain/cli/upgrade_command.rb
module ForemanMaintain
module Cli
class UpgradeCommand < Base
def tags_to_versions
{ :satellite_6_0_z => '6.0.z',
:satellite_6_1 => '6.1',
:satellite_6_1_z => '6.1.z',
:satellite_6_2 => '6.2',
:satellite_6_2_z => '6.2.z',
:satellite_6_3 => '6.3' }
end
# We search for scenarios available for the system and determine
# user-friendly version numbers for it.
# This method returns a hash of mapping the versions to scenarios to run
# The tag is determining which kind of scenario we're searching for
# (such as pre_upgrade_check)
def available_target_versions(tag)
conditions = { :tags => [tag] }
find_scenarios(conditions).inject({}) do |hash, scenario|
# find tag that represent the version upgrade
version_tag = scenario.tags.find { |t| tags_to_versions.key?(t) }
if version_tag
hash.update(tags_to_versions[version_tag] => scenario)
else
hash
end
def validate_target_version!
unless UpgradeRunner.available_targets.include?(target_version)
puts "The specified version #{target_version} is unavailable"
puts 'Possible target versions are:'
print_versions(UpgradeRunner.available_targets)
exit 1
end
end
def find_scenario(tag)
available_target_versions(tag)[target_version]
def upgrade_runner
validate_target_version!
ForemanMaintain::UpgradeRunner.new(target_version, reporter,
:assumeyes => assumeyes?,
:whitelist => whitelist || [])
end
def print_versions(target_versions)
target_versions.keys.sort.each { |version| puts version }
target_versions.sort.each { |version| puts version }
end
subcommand 'list-versions', 'List versions this system is upgradable to' do
def execute
print_versions(available_target_versions(:pre_upgrade_checks))
print_versions(UpgradeRunner.available_targets)
end
end
......
interactive_option
def execute
versions_to_scenarios = available_target_versions(:pre_upgrade_checks)
scenario = versions_to_scenarios[target_version]
if scenario
run_scenario(scenario)
else
puts "The specified version #{target_version} is unavailable"
puts 'Possible target versions are:'
print_versions(versions_to_scenarios)
end
upgrade_runner.run_phase(:pre_upgrade_checks)
exit upgrade_runner.exit_code
end
end
......
interactive_option
def execute
scenarios = [find_scenario(:pre_upgrade_checks),
find_scenario(:pre_migrations),
find_scenario(:migrations),
find_scenario(:post_migrations),
find_scenario(:post_upgrade_checks)].compact
if scenarios.empty?
puts "The specified version #{target_version} is unavailable"
puts 'Possible target versions are:'
print_versions(available_target_versions(:pre_upgrade_checks))
else
run_scenario(scenarios)
end
upgrade_runner.run
exit upgrade_runner.exit_code
end
end
end

Also available in: Unified diff