Module: HammerCLIForemanPuppet::PuppetIdResolver

Defined in:
lib/hammer_cli_foreman_puppet/id_resolver.rb

Instance Method Summary collapse

Instance Method Details

#create_smart_class_parameters_search_options(options, _mode = nil) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/hammer_cli_foreman_puppet/id_resolver.rb', line 44

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) ⇒ Object



36
37
38
# 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) ⇒ Object



40
41
42
# File 'lib/hammer_cli_foreman_puppet/id_resolver.rb', line 40

def puppet_environment_ids(options)
  get_ids(:environments, options)
end

#puppetclass_id(options) ⇒ Object

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



5
6
7
8
9
10
11
12
13
# 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) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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