Class: HammerCLIForeman::IdResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/hammer_cli_foreman/id_resolver.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api, searchables) ⇒ IdResolver

Returns a new instance of IdResolver.



81
82
83
84
85
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 81

def initialize(api, searchables)
  @api = api
  @searchables = searchables
  define_id_finders
end

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



79
80
81
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 79

def api
  @api
end

Instance Method Details

#puppetclass_ids(options) ⇒ Object



118
119
120
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 118

def puppetclass_ids(options)
  options[HammerCLI.option_accessor_name("ids")] || find_puppetclasses(options).collect { |c| c['id'] }
end

#scoped_options(scope, options, mode = nil) ⇒ Object

Parameters:

  • mode (Symbol) (defaults to: nil)

    mode in which ids are searched :single, :multi, nil for old beahvior



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 88

def scoped_options(scope, options, mode = nil)
  scoped_options = options.dup

  resource = HammerCLIForeman.param_to_resource(scope)
  return scoped_options unless resource

  option_names = []
  if (mode.nil? || mode == :single)
    option_names << "id"
    option_names += searchables(resource).map { |s| s.name }
  end
  if (mode.nil? || mode == :multi)
    option_names << "ids"
    option_names += searchables(resource).map { |s| s.plural_name }
  end

  option_names.each do |name|
    option = HammerCLI.option_accessor_name(name)
    scoped_option = HammerCLI.option_accessor_name("#{scope}_#{name}")
    # remove the scope
    # e.g. option_architecture_id -> option_id
    if scoped_options[scoped_option]
      scoped_options[option] = scoped_options.delete(scoped_option)
    else
      scoped_options.delete(option)
    end
  end
  scoped_options
end

#searchables(resource) ⇒ Object



122
123
124
125
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 122

def searchables(resource)
  resource = @api.resource(resource) if resource.is_a? Symbol
  @searchables.for(resource)
end