Project

General

Profile

Download (1.4 KB) Statistics
| Branch: | Tag: | Revision:
module ForemanMaintain
module Cli
module Procedure
class AbstractByTagCommand < AbstractProcedureCommand
def self.tag_params_to_options(tag)
params = params_for_tag(tag)
params.each_value do |param|
mapping = param[:procedures]
instance = param[:instance]
param_to_option(instance, :description => instance.description + " #{mapping}")
end
end

def self.params_for_tag(tag)
params = {}
ForemanMaintain.available_procedures(:tags => tag).each do |procedure|
procedure.params.each_value do |param|
unless params.key?(param.name)
params[param.name] = { :instance => param, :procedures => [] }
end
params[param.name][:procedures] += [procedure.label.to_s]
end
end
params
end

def execute
run_scenario(scenario(invocation_path))
exit runner.exit_code
end

private

def scenario(invocation_path)
tag = underscorize(invocation_path.split.last).to_sym
scenario = ForemanMaintain::Scenario.new

ForemanMaintain.available_procedures(:tags => tag).sort_by(&:label).each do |procedure|
scenario.add_step(procedure.new(get_params_for(procedure)))
end

scenario
end
end
end
end
end
(1-1/4)