Class: HammerCLIForeman::IdResolver

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

Constant Summary collapse

ALL_PER_PAGE =
1000

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api, searchables) ⇒ IdResolver

Returns a new instance of IdResolver.



96
97
98
99
100
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 96

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

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



94
95
96
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 94

def api
  @api
end

Instance Method Details

#environment_id(options) ⇒ Object



154
155
156
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 154

def environment_id(options)
  puppet_environment_id(options)
end

#environment_ids(options) ⇒ Object



162
163
164
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 162

def environment_ids(options)
  puppet_environment_ids(options)
end

#puppet_environment_id(options) ⇒ Object



158
159
160
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 158

def puppet_environment_id(options)
  get_id(:environments, options)
end

#puppet_environment_ids(options) ⇒ Object



166
167
168
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 166

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

#puppetclass_ids(options) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 132

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 MissingSearchOptions.new(_("Missing options to search %s") % resource.name, resource)
  elsif options_empty?(resource, options)
    []
  else
    require('hammer_cli_foreman/puppet_class')
    results = HammerCLIForeman::PuppetClass::ListCommand.unhash_classes(
      resolved_call(resource_name, :index, options, :multi)
    )
    raise 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

#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



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 103

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 += searchables(resource).map { |s| s.name }
    option_names << "id" unless option_names.include?("id")
  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



170
171
172
173
# File 'lib/hammer_cli_foreman/id_resolver.rb', line 170

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