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 114 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 121 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 68 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 96 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 171 def self.dependency_resolver HammerCLIForeman::DependencyResolver.new end
resolver()
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 166 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 110 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 72 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 106 def self.resource_name_mapping HammerCLIForeman::RESOURCE_NAME_MAPPING end
searchables()
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 175 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 190 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 80 def dependency_resolver self.class.dependency_resolver end
exception_handler_class()
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 88 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 129 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 134 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 152 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 196 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 76 def resolver self.class.resolver end
searchables()
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 84 def searchables self.class.searchables end
send_request()
click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/commands.rb, line 180 def send_request data = super @meta = retrieve_meta(data) transform_format(data) end
transform_format(data)
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 186 def transform_format(data) HammerCLIForeman.record_to_common_format(data) end
Protected Instance Methods
retrieve_meta(data)
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 210 def retrieve_meta(data) return unless data.class <= Hash { total: data['total'].to_i, subtotal: data['subtotal'].to_i, page: data['page'].to_i, per_page: data['per_page'].to_i, search: data['search'], sort_by: data['sort_by'], sort_order: data['sort_order'] } end
Private Instance Methods
resource_search_requested(resource, options, plural=false)
click to toggle source
# File lib/hammer_cli_foreman/commands.rb, line 226 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