class HammerCLIForeman::Command

Public Class Methods

alias_name_for_resource(resource, singular: true) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 121
def self.alias_name_for_resource(resource, singular: true)
  return nil if resource.nil?
  return resource_alias_name_mapping[resource.name.to_sym] unless singular

  resource_alias_name_mapping[resource.singular_name.to_sym]
end
build_options(builder_params={}) { |builder_params| ... } click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/commands.rb, line 128
def self.build_options(builder_params={})
  builder_params[:resource_mapping] ||= resource_name_mapping
  builder_params = HammerCLIForeman::BuildParams.new(builder_params)
  yield(builder_params) if block_given?

  super(builder_params.to_hash, &nil)
end
connection_name(resource_class) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 75
def self.connection_name(resource_class)
  CONNECTION_NAME
end
create_option_builder() click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/commands.rb, line 103
def self.create_option_builder
  configurator = BuilderConfigurator.new(searchables, dependency_resolver)

  builder = ForemanOptionBuilder.new(searchables)
  builder.builders = []
  builder.builders += configurator.builders_for(resource, resource.action(action)) if resource_defined?
  builder.builders += super.builders
  builder
end
dependency_resolver() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 178
def self.dependency_resolver
  HammerCLIForeman::DependencyResolver.new
end
resolver() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 173
def self.resolver
  api = HammerCLI.context[:api_connection].get("foreman")
  HammerCLIForeman::IdResolver.new(api, HammerCLIForeman::Searchables.new)
end
resource_alias_name_mapping() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 117
def self.resource_alias_name_mapping
  HammerCLIForeman::RESOURCE_ALIAS_NAME_MAPPING
end
resource_config() click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/commands.rb, line 79
def self.resource_config
  super.merge(HammerCLIForeman.resource_config)
end
resource_name_mapping() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 113
def self.resource_name_mapping
  HammerCLIForeman::RESOURCE_NAME_MAPPING
end
searchables() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 182
def self.searchables
  @searchables ||= HammerCLIForeman::Searchables.new
  @searchables
end

Public Instance Methods

customized_options() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 195
def customized_options
  # this method is deprecated and will be removed in future versions.
  # Check option_sources for custom tuning of options
  options
end
dependency_resolver() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 87
def dependency_resolver
  self.class.dependency_resolver
end
exception_handler_class() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 95
def exception_handler_class
  #search for exception handler class in parent modules/classes
  HammerCLI.constant_path(self.class.name.to_s).reverse.each do |mod|
    return mod.exception_handler_class if mod.respond_to? :exception_handler_class
  end
  HammerCLIForeman::ExceptionHandler
end
get_identifier(all_opts=all_options) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 136
def get_identifier(all_opts=all_options)
  @identifier ||= get_resource_id(resource, :all_options => all_opts)
  @identifier
end
get_resource_id(resource, options={}) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 141
def get_resource_id(resource, options={})
  resource_alias = self.class.alias_name_for_resource(resource)
  all_opts = options[:all_options] || all_options
  if options[:scoped]
    opts = resolver.scoped_options(resource.singular_name, all_opts, :single)
  else
    opts = all_opts
  end
  begin
    resolver.send("#{resource_alias || resource.singular_name}_id", opts)
  rescue HammerCLIForeman::MissingSearchOptions => e
    if (options[:required] == true || resource_search_requested(resource, opts))
      logger.info "Error occured while searching for #{resource.singular_name}"
      raise e
    end
  end
end
get_resource_ids(resource, options={}) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 159
def get_resource_ids(resource, options={})
  resource_alias = self.class.alias_name_for_resource(resource)
  all_opts = options[:all_options] || all_options
  opts = resolver.scoped_options(resource.singular_name, all_opts, :multi)
  begin
    resolver.send("#{resource_alias || resource.singular_name}_ids", opts)
  rescue HammerCLIForeman::MissingSearchOptions => e
    if (options[:required] == true || resource_search_requested(resource, opts, true))
      logger.info "Error occured while searching for #{resource.name}"
      raise e
    end
  end
end
request_params() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 201
def request_params
  params = customized_options
  params_pruned = method_options(params)
  # Options defined manualy in commands are removed in method_options.
  # Manual ids are common so its handling is covered here
  id_option_name = HammerCLI.option_accessor_name('id')
  params_pruned['id'] = params[id_option_name] if params[id_option_name]
  params_pruned
end
resolver() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 83
def resolver
  self.class.resolver
end
searchables() click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 91
def searchables
  self.class.searchables
end
send_request() click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/commands.rb, line 187
def send_request
  transform_format(super)
end
transform_format(data) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 191
def transform_format(data)
  HammerCLIForeman.record_to_common_format(data)
end

Private Instance Methods

resource_search_requested(resource, options, plural=false) click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 215
def resource_search_requested(resource, options, plural=false)
  # check if any searchable for given resource is set
  filed_options = Hash[options.select { |opt, value| !value.nil? }].keys
  searchable_options = searchables.for(resource).map do |o|
    HammerCLI.option_accessor_name(plural ? o.plural_name : o.name)
  end
  !(filed_options & searchable_options).empty?
end