class ForemanMaintain::RepositoryManager::El

Public Instance Methods

config_manager_options(repo_ids, options) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 38
def config_manager_options(repo_ids, options)
  repo_ids_string = if repo_ids.is_a?(Array)
                      repo_ids.join(',')
                    else
                      repo_ids
                    end
  format_shell_args("--#{options}" => repo_ids_string)
end
disable_repos(repo_ids) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 6
def disable_repos(repo_ids)
  execute!("dnf config-manager #{config_manager_options(repo_ids, 'set-disabled')}")
end
enable_repos(repo_ids) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 20
def enable_repos(repo_ids)
  execute!("dnf config-manager #{config_manager_options(repo_ids, 'enable')}")
end
enabled_repos() click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 62
def enabled_repos
  cmd = "#{pkg_manager} repolist enabled -d 6 -e 0 2> /dev/null"
  repos = execute(cmd)
  return {} if repos.empty?

  hash_of_repoids_urls(repos, /Repo-id|Repo-baseurl/)
end
hash_of_repoids_urls(repos, regex) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 70
def hash_of_repoids_urls(repos, regex)
  ids_urls = Hash[*repos.split("\n").grep(regex).map do |entry|
                    entry.split(':', 2).last.strip
                  end]

  # repolist output includes extra info in the output
  #
  # rhel-7-server-rpms/7Server/x86_64
  # rhel-server-rhscl-7-rpms/7Server/x86_64
  # This trims anything after first '/' to get correct repo label
  trimmed_hash = {}
  ids_urls.each do |id, url|
    trimmed_id = id.split('/').first
    trimmed_hash[trimmed_id] = url
  end
  trimmed_hash
end
pkg_manager() click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 58
def pkg_manager
  package_manager.class.name.split('::').last.downcase
end
rhsm_available?() click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 47
def rhsm_available?
  @rhsm_available ||= find_package('subscription-manager')
end
rhsm_disable_repos(repo_ids) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 10
def rhsm_disable_repos(repo_ids)
  if rhsm_available?
    execute!(%(subscription-manager repos #{rhsm_options(repo_ids, 'disable')}))
  else
    logger.info("subscription-manager is not available.\
                 Using #{pkg_manager} config manager instead.")
    disable_repos(repo_ids)
  end
end
rhsm_enable_repos(repo_ids) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 24
def rhsm_enable_repos(repo_ids)
  if rhsm_available?
    execute!(%(subscription-manager repos #{rhsm_options(repo_ids, 'enable')}))
  else
    logger.info("subscription-manager is not available.\
                 Using #{pkg_manager} config manager instead.")
    enable_repos(repo_ids)
  end
end
rhsm_list_repos(list_option = '--list') click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 51
def rhsm_list_repos(list_option = '--list')
  repos = execute(%(LANG=en_US.utf-8 subscription-manager repos #{list_option} 2>&1))
  return {} if repos.empty?

  hash_of_repoids_urls(repos, /Repo ID|Repo URL/)
end
rhsm_options(repo_ids, options) click to toggle source
# File lib/foreman_maintain/repository_manager/el.rb, line 34
def rhsm_options(repo_ids, options)
  repo_ids.map { |r| "--#{options}=#{r}" }.join(' ')
end