module ForemanMaintain::Concerns::Downstream

Constants

REDHAT_REPO_FILE
SATELLITE_MAINTAIN_CONFIG

Public Instance Methods

absent_repos(version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 37
def absent_repos(version)
  repos_required = rh_repos(version)
  repos_found = repos_required & repository_manager.rhsm_list_repos.keys
  repos_required - repos_found
end
connected?() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 69
def connected?
  File.exist?(REDHAT_REPO_FILE) && File.new(REDHAT_REPO_FILE).read.include?('https://cdn.redhat.com')
end
current_version() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 7
def current_version
  raise NotImplementedError
end
fm_pkg_and_cmd_name() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 56
def fm_pkg_and_cmd_name
  %w[satellite-maintain satellite-maintain]
end
package_name() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 52
def package_name
  raise NotImplementedError
end
repository_manager() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 11
def repository_manager
  ForemanMaintain.repository_manager
end
rhsm_refresh() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 43
def rhsm_refresh
  execute!(%(subscription-manager refresh))
end
satellite_maintain_target_version() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 60
def satellite_maintain_target_version
  satellite_maintain_config['current_satellite_version']
end
satellite_upgrade_allowed?() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 64
def satellite_upgrade_allowed?
  current_minor_version == satellite_maintain_config['previous_satellite_version'] ||
    ForemanMaintain.upgrade_in_progress == satellite_maintain_target_version
end
setup_repositories(version) click to toggle source

TODO: Modify activation_key changes as per server

# File lib/foreman_maintain/concerns/downstream.rb, line 16
def setup_repositories(version)
  activation_key = ENV['EXTERNAL_SAT_ACTIVATION_KEY']
  org = ENV['EXTERNAL_SAT_ORG']
  if activation_key
    org_options = org ? %(--org #{shellescape(org)}) : ''
    execute!(%(subscription-manager register #{org_options}\
                --activationkey #{shellescape(activation_key)} --force))
  else
    had_utils_enabled = repository_manager.enabled_repos.keys.any? do |r|
      r.start_with?("satellite-utils-")
    end

    repository_manager.rhsm_disable_repos(['*'])

    repos = rh_repos(version)
    repos << utils_repo(version) if had_utils_enabled

    repository_manager.rhsm_enable_repos(repos)
  end
end
subscribed_using_activation_key?() click to toggle source

TODO: Verify this is valid for capsule?

# File lib/foreman_maintain/concerns/downstream.rb, line 48
def subscribed_using_activation_key?
  ENV['EXTERNAL_SAT_ACTIVATION_KEY'] && ENV['EXTERNAL_SAT_ORG']
end

Private Instance Methods

common_repos(full_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 102
def common_repos(full_version)
  ["satellite-maintenance-#{full_version}-for-rhel-#{el_major_version}-x86_64-rpms"]
end
main_rh_repos() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 106
def main_rh_repos
  [
    "rhel-#{el_major_version}-for-x86_64-baseos-rpms",
    "rhel-#{el_major_version}-for-x86_64-appstream-rpms",
  ]
end
product_specific_repos(full_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 97
def product_specific_repos(full_version)
  repos = ["#{package_name}-#{full_version}-for-rhel-#{el_major_version}-x86_64-rpms"]
  repos.concat(common_repos(full_version))
end
rh_repos(server_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 89
def rh_repos(server_version)
  server_version = version(server_version)
  rh_repos = main_rh_repos
  server_version_full = "#{server_version.major}.#{server_version.minor}"
  rh_repos.concat(product_specific_repos(server_version_full))
  rh_repos
end
satellite_maintain_config() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 81
def satellite_maintain_config
  if File.exist?(SATELLITE_MAINTAIN_CONFIG)
    YAML.load_file(SATELLITE_MAINTAIN_CONFIG)
  else
    raise "Could not load satellite-maintain configuration file #{SATELLITE_MAINTAIN_CONFIG}."
  end
end
utils_repo(server_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 75
def utils_repo(server_version)
  server_version = version(server_version)
  full_version   = "#{server_version.major}.#{server_version.minor}"
  "satellite-utils-#{full_version}-for-rhel-#{el_major_version}-x86_64-rpms"
end