class HammerCLIKatello::ContentViewPurgeCommand

Public Instance Methods

execute() click to toggle source
# File lib/hammer_cli_katello/content_view_purge.rb, line 53
def execute
  options['option_versions_to_keep'] = option_versions_to_keep
  if option_versions_to_keep.negative?
    output.print_error _("Invalid value for --versions-to-keep: value must be 0 or greater.")
    return HammerCLI::EX_USAGE
  end

  # Check if there is something to do
  if option_count
    warn _("The --count option is deprecated and will be removed in the next release.")
    options['option_versions_to_keep'] = option_count
  end
  if options['option_versions_to_keep'] >= old_unused_versions.size
    output.print_error _("No versions to delete.")
    HammerCLI::EX_NOT_FOUND
  else
    versions_to_purge = old_unused_versions.slice(0, old_unused_versions.size -
      options['option_versions_to_keep'])

    versions_to_purge.each do |v|
      purge_version(v)
    end
    HammerCLI::EX_OK
  end
end
option_sources() click to toggle source
Calls superclass method
# File lib/hammer_cli_katello/content_view_purge.rb, line 43
def option_sources
  sources = super
  sources.find_by_name('IdResolution').insert_relative(
    :after,
    'IdParams',
    ContentViewIdParamSource.new(self)
  )
  sources
end

Private Instance Methods

old_unused_versions() click to toggle source
# File lib/hammer_cli_katello/content_view_purge.rb, line 92
        def old_unused_versions
  return @old_unused_versions if @old_unused_versions

  all_versions = []
  per_page = 100
  page = 1

  loop do
    versions = index(:content_view_versions, :content_view_id => options['option_id'],
                                             :per_page => per_page, :page => page)
    all_versions << versions
    break if versions.count < per_page
    page += 1
  end
  all_versions.flatten!
  all_versions.sort_by! { |v| [v['major'], v['minor']] }
  @old_unused_versions = all_versions.select do |v|
    v["environments"].empty? &&
      v["composite_content_views"].empty? &&
      v["composite_content_view_versions"].empty?
  end
end
purge_version(v) click to toggle source
# File lib/hammer_cli_katello/content_view_purge.rb, line 79
        def purge_version(v)
  if option_async?
    task = destroy(:content_view_versions, 'id' => v["id"])
    print_message _("Version '%{version}' of content view '%{view}' scheduled "\
                    "for deletion in task '%{task_id}'.") %
                  {version: v["version"], view: v["content_view"]["name"], task_id: task['id']}
  else
    task_progress(call(:destroy, :content_view_versions, 'id' => v["id"]))
    print_message _("Version '%{version}' of content view '%{view}' deleted.") %
                  {version: v["version"], view: v["content_view"]["name"]}
  end
end