module HammerCLIForemanPuppet::PuppetIdResolver

Public Instance Methods

create_puppetclasses_search_options(options, mode = nil) click to toggle source
# File lib/hammer_cli_foreman_puppet/id_resolver.rb, line 44
def create_puppetclasses_search_options(options, mode = nil)
  searchables(@api.resource(:puppetclasses)).each do |s|
    value = options[HammerCLI.option_accessor_name(s.name.to_s)]
    values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)]
    if value && (mode.nil? || mode == :single)
      return { search: "#{s.name} = \"#{value}\"" }
    elsif values && (mode.nil? || mode == :multi)
      query = values.map { |v| "#{s.name} = \"#{v}\"" }.join(' or ')
      return { search: query }
    end
  end
  {}
end
create_smart_class_parameters_search_options(options, _mode = nil) click to toggle source
# File lib/hammer_cli_foreman_puppet/id_resolver.rb, line 58
def create_smart_class_parameters_search_options(options, _mode = nil)
  search_options = {}
  value = options[HammerCLI.option_accessor_name('name')]
  search_options[:search] = "key = \"#{value}\""
  search_options[:puppetclass_id] = puppetclass_id(scoped_options('puppetclass', options))
  search_options
end
puppet_environment_id(options) click to toggle source
# File lib/hammer_cli_foreman_puppet/id_resolver.rb, line 36
def puppet_environment_id(options)
  get_id(:environments, options)
end
puppet_environment_ids(options) click to toggle source
# File lib/hammer_cli_foreman_puppet/id_resolver.rb, line 40
def puppet_environment_ids(options)
  get_ids(:environments, options)
end
puppetclass_id(options) click to toggle source

puppet class search results are in non-standard format and needs to be un-hashed first

# File lib/hammer_cli_foreman_puppet/id_resolver.rb, line 5
def puppetclass_id(options)
  return options[HammerCLI.option_accessor_name('id')] if options[HammerCLI.option_accessor_name('id')]

  resource = @api.resource(:puppetclasses)
  results = find_resource_raw(:puppetclasses, options)
  require('hammer_cli_foreman_puppet/class')
  results = HammerCLIForemanPuppet::PuppetClass::ListCommand.unhash_classes(results)
  pick_result(results, resource)['id']
end
puppetclass_ids(options) click to toggle source
# File lib/hammer_cli_foreman_puppet/id_resolver.rb, line 15
def puppetclass_ids(options)
  resource_name = :puppetclasses
  resource = @api.resource(resource_name)
  results = if (ids = options[HammerCLI.option_accessor_name("ids")])
    ids
  elsif (ids = nil_from_searchables(resource_name, options, :plural => true))
    ids
  elsif options_not_set?(resource, options)
    raise HammerCLIForeman::MissingSearchOptions.new(_("Missing options to search %s") % resource.name, resource)
  elsif options_empty?(resource, options)
    []
  else
    require('hammer_cli_foreman_puppet/class')
    results = HammerCLIForemanPuppet::PuppetClass::ListCommand.unhash_classes(
      resolved_call(resource_name, :index, options, :multi)
    )
    raise HammerCLIForeman::ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource, :multi)
      results.map { |r| r['id'] }
  end
end