module ForemanMaintain::Concerns::Downstream

Public Instance Methods

absent_repos(version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 26
def absent_repos(version)
  repos_required = rh_repos(version)
  repos_found = repos_required & repository_manager.rhsm_list_repos.keys
  repos_required - repos_found
end
current_version() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 4
def current_version
  raise NotImplementedError
end
fm_pkg_and_cmd_name() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 45
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 41
def package_name
  raise NotImplementedError
end
repository_manager() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 8
def repository_manager
  ForemanMaintain.repository_manager
end
rhsm_refresh() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 32
def rhsm_refresh
  execute!(%(subscription-manager refresh))
end
setup_repositories(version) click to toggle source

TODO: Modify activation_key changes as per server

# File lib/foreman_maintain/concerns/downstream.rb, line 13
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
    repository_manager.rhsm_disable_repos(['*'])
    repository_manager.rhsm_enable_repos(rh_repos(version))
  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 37
def subscribed_using_activation_key?
  ENV['EXTERNAL_SAT_ACTIVATION_KEY'] && ENV['EXTERNAL_SAT_ORG']
end

Private Instance Methods

ansible_repo(server_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 64
def ansible_repo(server_version)
  if server_version >= version('6.8')
    ansible_version = '2.9'
  elsif server_version >= version('6.6')
    ansible_version = '2.8'
  elsif server_version >= version('6.4')
    ansible_version = '2.6'
  end

  if el7?
    "rhel-#{el_major_version}-server-ansible-#{ansible_version}-rpms"
  end
end
common_repos(full_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 105
def common_repos(full_version)
  sat_maint_version = if version(full_version) >= version('6.11') && !use_beta_repos?
                        full_version
                      else
                        full_version[0]
                      end

  # rubocop:disable Metrics/LineLength
  repos = if el7? && use_beta_repos?
            ["rhel-#{el_major_version}-server-satellite-maintenance-#{sat_maint_version}-beta-rpms"]
          elsif el7?
            ["rhel-#{el_major_version}-server-satellite-maintenance-#{sat_maint_version}-rpms"]
          elsif use_beta_repos?
            ["satellite-maintenance-#{sat_maint_version}-beta-for-rhel-#{el_major_version}-x86_64-rpms"]
          else
            ["satellite-maintenance-#{sat_maint_version}-for-rhel-#{el_major_version}-x86_64-rpms"]
          end
  # rubocop:enable Metrics/LineLength

  repos
end
main_rh_repos() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 127
def main_rh_repos
  if el7?
    ["rhel-#{el_major_version}-server-rpms",
     "rhel-server-rhscl-#{el_major_version}-rpms"]
  else
    ["rhel-#{el_major_version}-for-x86_64-baseos-rpms",
     "rhel-#{el_major_version}-for-x86_64-appstream-rpms"]
  end
end
product_specific_repos(full_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 82
def product_specific_repos(full_version)
  maj_version = full_version[0]
  repos = if el7? && use_beta_repos?
            ["rhel-server-#{el_major_version}-#{package_name}-#{maj_version}-beta-rpms"]
          elsif el7?
            ["rhel-#{el_major_version}-server-#{package_name}-#{full_version}-rpms"]
          elsif use_beta_repos?
            ["#{package_name}-#{maj_version}-beta-for-rhel-#{el_major_version}-x86_64-rpms"]
          else
            ["#{package_name}-#{full_version}-for-rhel-#{el_major_version}-x86_64-rpms"]
          end

  repos << puppet4_repo(full_version) unless puppet4_repo(full_version).nil?
  repos.concat(common_repos(full_version))
end
puppet4_repo(full_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 98
def puppet4_repo(full_version)
  if current_minor_version == '6.3' && full_version.to_s != '6.4' && (
    feature(:puppet_server) && feature(:puppet_server).puppet_version.major == 4)
    "rhel-#{el_major_version}-server-#{package_name}-tools-6.3-puppet4-rpms"
  end
end
rh_repos(server_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 51
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))
  if server_version > version('6.3')
    ansible_repo = ansible_repo(server_version)
    rh_repos << ansible_repo if ansible_repo
  end

  rh_repos
end
use_beta_repos?() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 78
def use_beta_repos?
  ENV['FOREMAN_MAINTAIN_USE_BETA'] == '1'
end
version_from_source() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 137
def version_from_source
  raise NotImplementedError
end