class HammerCLIKatello::IdResolver

Public Instance Methods

capsule_content_id(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 61
def capsule_content_id(options)
  smart_proxy_id(options)
end
content_view_version_id(options) click to toggle source

rubocop:disable Style/EmptyElse rubocop:disable Metrics/AbcSize rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/PerceivedComplexity

# File lib/hammer_cli_katello/id_resolver.rb, line 125
def content_view_version_id(options)
  key_id = HammerCLI.option_accessor_name("id")
  key_content_view_id = HammerCLI.option_accessor_name("content_view_id")
  from_environment_id = HammerCLI.option_accessor_name("from_environment_id")

  return options[key_id] if options[key_id]

  options[key_content_view_id] ||= search_and_rescue(:content_view_id, "content_view", options)

  if options[key_content_view_id] && options['option_environment_name'] &&
     options['option_environment_id'].nil?
    lifecycle_environment_resource_name = (HammerCLIForeman.param_to_resource('environment') ||
     HammerCLIForeman.param_to_resource('lifecycle_environment')).singular_name
    options['option_environment_id'] = lifecycle_environment_id(
      scoped_options(lifecycle_environment_resource_name, options, :single))
  end

  results = find_resources(:content_view_versions, options)

  options[from_environment_id] ||= from_lifecycle_environment_id(options)

  return pick_result(results, @api.resource(:content_view_versions))['id'] if results.size == 1

  if results.size > 1 && options[from_environment_id]
    results_in_from_environment = results.select do |version|
      member_of_environment_ids = version['environments'].map { |env| env['id'].to_s }
      member_of_environment_ids.include? options[from_environment_id].to_s
    end
    results_in_from_environment
      .sort { |a, b| a['version'].to_f <=> b['version'].to_f }.last['id']
  else
    nil
  end
end
environment_id(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 65
def environment_id(options)
  lifecycle_environment_id(options)
end
environment_ids(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 73
def environment_ids(options)
  unless options['option_lifecycle_environment_ids'].nil?
    return options['option_lifecycle_environment_ids']
  end

  names = options[HammerCLI.option_accessor_name('lifecycle_environment_names')] ||
          options[HammerCLI.option_accessor_name('environment_names')] ||
          options[HammerCLI.option_accessor_name('names')]
  key_organization_id = HammerCLI.option_accessor_name 'organization_id'
  options[key_organization_id] ||= organization_id(scoped_options('organization', options))

  options['option_lifecycle_environment_names'] = names
  find_resources(:lifecycle_environments, options)
    .select { |repo| names.include? repo['name'] }.map { |repo| repo['id'] }
end
file_unit_id(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 53
def file_unit_id(options)
  if options['option_content_view_version_version']
    options['option_content_view_version_id'] ||=
      content_view_version_id(scoped_options('content_view_version', options))
  end
  get_id(:file_units, options)
end
lifecycle_environment_ids(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 69
def lifecycle_environment_ids(options)
  environment_ids(options)
end
repository_id(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 89
def repository_id(options)
  key_id = HammerCLI.option_accessor_name("id")
  key_product_id = HammerCLI.option_accessor_name("product_id")
  key_product_name = HammerCLI.option_accessor_name("product_name")

  return options[key_id] if options[key_id]

  unless options[key_product_name].nil?
    options[key_product_id] ||= product_id(scoped_options("product", options))
  end

  find_resource(:repositories, options)['id']
end
repository_ids(options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 103
def repository_ids(options)
  return options['option_repository_ids'] unless options['option_repository_ids'].nil?

  key_names = HammerCLI.option_accessor_name 'names'
  key_product_id = HammerCLI.option_accessor_name 'product_id'

  options[key_names] ||= []

  unless options['option_product_name'].nil?
    options[key_product_id] ||= product_id(scoped_options('product', options))
  end

  if options[key_names].any?
    find_resources(:repositories, options)
      .select { |repo| options[key_names].include? repo['name'] }.map { |repo| repo['id'] }
  end
end

Private Instance Methods

from_lifecycle_environment_id(options) click to toggle source

rubocop:enable Style/EmptyElse rubocop:enable Metrics/AbcSize rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/PerceivedComplexity

# File lib/hammer_cli_katello/id_resolver.rb, line 166
def from_lifecycle_environment_id(options)
  environment_id = HammerCLI.option_accessor_name("environment_id")
  environment_name = HammerCLI.option_accessor_name("environment_name")
  from_environment_id = HammerCLI.option_accessor_name("from_environment_id")
  from_environment_name = HammerCLI.option_accessor_name("from_environment_name")
  return nil if options[from_environment_id].nil? && options[from_environment_name].nil?
  search_options = options.dup.tap do |opts|
    opts[environment_name] = opts[from_environment_name]
    opts[environment_id] = opts[from_environment_id]
  end
  lifecycle_environment_id(scoped_options("environment", search_options))
end
search_and_rescue(search_function, resource, options) click to toggle source
# File lib/hammer_cli_katello/id_resolver.rb, line 179
def search_and_rescue(search_function, resource, options)
  self.send(search_function, scoped_options(resource, options))
rescue HammerCLIForeman::MissingSearchOptions # rubocop:disable HandleExceptions
  # Intentionally suppressing the exception,
  # These are not always required.
end