Project

General

Profile

Download (1.64 KB) Statistics
| Branch: | Tag: | Revision:
module ForemanMaintain
module Cli
class SelfUpgradeCommand < Base
option ['--target-version'], 'TARGET_VERSION',\
'Major version of the Satellite or Capsule'\
', e.g 6.11', :required => true
option ['--repository-label'], 'REPOSITORY_LABEL',\
'Repository label from which packages should be updated.'\
'This can be used when standard CDN repositories are unavailable.'

def execute
allow_major_version_upgrade_only
run_scenario(upgrade_scenario, upgrade_rescue_scenario)
end

def upgrade_scenario
Scenarios::SelfUpgrade.new(target_version: target_version,
repository_label: repository_label)
end

def upgrade_rescue_scenario
Scenarios::SelfUpgradeRescue.new(target_version: target_version,
repository_label: repository_label)
end

def current_downstream_version
ForemanMaintain.detector.feature(:instance).downstream.current_version
end

def allow_major_version_upgrade_only
begin
next_version = Gem::Version.new(target_version)
rescue ArgumentError => err
raise Error::UsageError, "Invalid version! #{err}"
end
if current_downstream_version >= next_version
message = "The target-version #{target_version} should be "\
"greater than existing version #{current_downstream_version},"\
"\nand self-upgrade should be used for major version upgrades only!"
raise Error::UsageError, message
end
end
end
end
end
(10-10/13)