Class: HammerCLIForeman::Command

Inherits:
HammerCLI::Apipie::Command
  • Object
show all
Defined in:
lib/hammer_cli_foreman/commands.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build_options(builder_params = {}) {|builder_params| ... } ⇒ Object

Yields:

  • (builder_params)


110
111
112
113
114
115
116
# File 'lib/hammer_cli_foreman/commands.rb', line 110

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



68
69
70
# File 'lib/hammer_cli_foreman/commands.rb', line 68

def self.connection_name(resource_class)
  CONNECTION_NAME
end

.create_option_builderObject



96
97
98
99
100
101
102
103
104
# 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_resolverObject



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

def self.dependency_resolver
  HammerCLIForeman::DependencyResolver.new
end

.resolverObject



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

def self.resolver
  api = HammerCLI.context[:api_connection].get("foreman")
  HammerCLIForeman::IdResolver.new(api, HammerCLIForeman::Searchables.new)
end

.resource_configObject



72
73
74
# File 'lib/hammer_cli_foreman/commands.rb', line 72

def self.resource_config
  super.merge(HammerCLIForeman.resource_config)
end

.resource_name_mappingObject



106
107
108
# File 'lib/hammer_cli_foreman/commands.rb', line 106

def self.resource_name_mapping
  HammerCLIForeman::RESOURCE_NAME_MAPPING
end

.searchablesObject



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

def self.searchables
  @searchables ||= HammerCLIForeman::Searchables.new
  @searchables
end

Instance Method Details

#customized_optionsObject



175
176
177
178
179
# File 'lib/hammer_cli_foreman/commands.rb', line 175

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_resolverObject



80
81
82
# File 'lib/hammer_cli_foreman/commands.rb', line 80

def dependency_resolver
  self.class.dependency_resolver
end

#exception_handler_classObject



88
89
90
91
92
93
94
# 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) ⇒ Object



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

def get_identifier(all_opts=all_options)
  @identifier ||= get_resource_id(resource, :all_options => all_opts)
  @identifier
end

#get_resource_id(resource, options = {}) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/hammer_cli_foreman/commands.rb', line 123

def get_resource_id(resource, options={})
  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.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 = {}) ⇒ Object



140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/hammer_cli_foreman/commands.rb', line 140

def get_resource_ids(resource, options={})
  all_opts = options[:all_options] || all_options
  opts = resolver.scoped_options(resource.singular_name, all_opts, :multi)
  begin
    resolver.send("#{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

#option_sourcesObject



191
192
193
194
195
196
197
# File 'lib/hammer_cli_foreman/commands.rb', line 191

def option_sources
  sources = super
  sources << HammerCLIForeman::OptionSources::IdParams.new(self)
  sources << HammerCLIForeman::OptionSources::IdsParams.new(self)
  sources << HammerCLIForeman::OptionSources::SelfParam.new(self)
  sources
end

#request_paramsObject



181
182
183
184
185
186
187
188
189
# File 'lib/hammer_cli_foreman/commands.rb', line 181

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

#resolverObject



76
77
78
# File 'lib/hammer_cli_foreman/commands.rb', line 76

def resolver
  self.class.resolver
end

#searchablesObject



84
85
86
# File 'lib/hammer_cli_foreman/commands.rb', line 84

def searchables
  self.class.searchables
end

#send_requestObject



167
168
169
# File 'lib/hammer_cli_foreman/commands.rb', line 167

def send_request
  transform_format(super)
end

#transform_format(data) ⇒ Object



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

def transform_format(data)
  HammerCLIForeman.record_to_common_format(data)
end