module ForemanMaintain::Concerns::Downstream

Public Instance Methods

absent_repos(version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 35
def absent_repos(version)
  all_repo_lines = execute(%(LANG=en_US.utf-8 subscription-manager repos --list 2>&1 | ) +
                            %(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
at_least_version?(version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 12
def at_least_version?(version)
  Gem::Version.new(current_version) >= Gem::Version.new(version)
end
current_minor_version() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 16
def current_minor_version
  current_version.to_s[/^\d+\.\d+/]
end
current_version() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 4
def current_version
  raise NotImplementedError
end
less_than_version?(version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 8
def less_than_version?(version)
  Gem::Version.new(current_version) < Gem::Version.new(version)
end
package_name() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 53
def package_name
  raise NotImplementedError
end
rhsm_refresh() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 44
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 21
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
    execute!(%(subscription-manager repos --disable '*'))
    enable_options = rh_repos(version).map { |r| "--enable=#{r}" }.join(' ')
    execute!(%(subscription-manager repos #{enable_options}))
  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 49
def subscribed_using_activation_key?
  ENV['EXTERNAL_SAT_ACTIVATION_KEY'] && ENV['EXTERNAL_SAT_ORG']
end

Private Instance Methods

ansible_repo(server_version, rh_version_major) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 74
def ansible_repo(server_version, rh_version_major)
  if server_version >= version('6.6')
    "rhel-#{rh_version_major}-server-ansible-2.8-rpms"
  elsif server_version >= version('6.4')
    "rhel-#{rh_version_major}-server-ansible-2.6-rpms"
  end
end
common_repos(rh_version_major, full_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 99
def common_repos(rh_version_major, full_version)
  repos_arrary = if ENV['FOREMAN_MAINTAIN_USE_BETA'] == '1'
                   ["rhel-#{rh_version_major}-server-satellite-maintenance-6-beta-rpms",
                    "rhel-#{rh_version_major}-server-satellite-tools-6-beta-rpms"]
                 else
                   ["rhel-#{rh_version_major}-server-satellite-maintenance-6-rpms",
                    "rhel-#{rh_version_major}-server-satellite-tools-#{full_version}-rpms"]
                 end

  return repos_arrary.first(1) if feature(:capsule)

  repos_arrary
end
main_rh_repos(rh_version_major) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 113
def main_rh_repos(rh_version_major)
  ["rhel-#{rh_version_major}-server-rpms",
   "rhel-server-rhscl-#{rh_version_major}-rpms"]
end
product_specific_repos(rh_version_major, full_version) click to toggle source

TODO: refactoring

# File lib/foreman_maintain/concerns/downstream.rb, line 83
def product_specific_repos(rh_version_major, full_version)
  repos = []
  repos << if ENV['FOREMAN_MAINTAIN_USE_BETA'] == '1'
             "rhel-server-#{rh_version_major}-#{package_name}-6-beta-rpms"
           else
             "rhel-#{rh_version_major}-server-#{package_name}-#{full_version}-rpms"
           end
  if current_minor_version == '6.3' && full_version.to_s != '6.4' && (
    feature(:puppet_server) && feature(:puppet_server).puppet_version.major == 4)
    # TODO: confirm repo for capsule. It might be same repo
    repos << "rhel-#{rh_version_major}-server-satellite-tools-6.3-puppet4-rpms"
  end

  repos.concat(common_repos(rh_version_major, full_version))
end
rh_repos(server_version) click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 59
def rh_repos(server_version)
  server_version = version(server_version)
  rh_version_major = ForemanMaintain::Utils::Facter.os_major_release
  rh_repos = main_rh_repos(rh_version_major)

  server_version_full = "#{server_version.major}.#{server_version.minor}"
  rh_repos.concat(product_specific_repos(rh_version_major, server_version_full))

  if server_version > version('6.3')
    rh_repos << ansible_repo(server_version, rh_version_major)
  end

  rh_repos
end
version_from_source() click to toggle source
# File lib/foreman_maintain/concerns/downstream.rb, line 118
def version_from_source
  raise NotImplementedError
end