class Kafo::HookContext
Attributes
@return [Kafo::KafoConfigure]
some of hooks won't print any message because logger is not yet configured configuration of logger depends on application configration (log level etc.)
@return [Kafo::Logger]
@example
logger.warn "this combindation of parameters is untested"
Public Class Methods
# File lib/kafo/hook_context.rb, line 18 def self.execute(kafo, logger, &hook) new(kafo, logger).instance_eval(&hook) end
# File lib/kafo/hook_context.rb, line 22 def initialize(kafo, logger) @kafo = kafo @logger = logger end
Public Instance Methods
You can add custom modules not explicitly enabled in answer file. This is especially useful if you want to add your plugin to existing installer. This module will become part of answer file so it also preserves parameter values between runs. It also list its options in help output. You can also specify mapping for this module as a second parameter.
@param [String] module_name @param [Hash, nil] mapping
@example
add_module('my_module')
@example
add_module('foreman::plugin::staypuft', {:dir_name => 'foreman', :manifest_name => 'plugin/staypuft'})
# File lib/kafo/hook_context.rb, line 90 def add_module(module_name, mapping = nil) self.kafo.config.add_mapping(module_name, mapping) if mapping self.kafo.add_module(module_name) end
if you want to add new app_option
be sure to do as soon as possible (usually boot hook) otherwise it may be too late (e.g. when displaying help)
@return [Clamp::Option]
@example
app_option '--log-level', 'LEVEL', 'Log level for log file output', :default => config.app[:log_level]:
@example
app_option ['-n', '--noop'], :flag, 'Run puppet in noop mode?', :default => false
# File lib/kafo/hook_context.rb, line 37 def app_option(*args, &block) self.kafo.class.app_option(*args, &block) end
Returns whether the given app option exists. This is useful when there's a conditional option that is determined during boot; this helper can be used in later hooks to determine whether the option exists.
@param [Symbol, String] option
# File lib/kafo/hook_context.rb, line 45 def app_option?(option) self.kafo.config.app.key?(option.to_sym) end
@param [Symbol, String] option
@example
app_value(:log_level)
note the dash to underscore convention
# File lib/kafo/hook_context.rb, line 55 def app_value(option) self.kafo.config.app[option.to_sym] end
You can trigger installer exit by this method. You must specify exit code as a first argument. You can also specify a symbol alias which is built-in (see exit_handler.rb for more details).
@param [Integer, Symbol] code
@example
exit(0)
@example
exit(:manifest_error)
# File lib/kafo/hook_context.rb, line 128 def exit(code) self.kafo.class.exit(code) end
Return the current exit code
# File lib/kafo/hook_context.rb, line 196 def exit_code self.kafo.exit_code end
You can load a custom config value that has been saved using store_custom_config
@param [Symbol] key
# File lib/kafo/hook_context.rb, line 135 def get_custom_config(key) self.kafo.config.get_custom(key) end
Load a custom fact from the custom fact storage as saved by store_custom_fact
@param [Symbol] key
# File lib/kafo/hook_context.rb, line 151 def get_custom_fact(key) self.kafo.config.get_custom_fact(key) end
Check whether a custom fact exists, regardless of whether or not it has a value.
@param [Symbol] key
# File lib/kafo/hook_context.rb, line 170 def has_custom_fact?(key) self.kafo.config.has_custom_fact?(key) end
Check if a module is enabled in the current configuration.
@param [String] module_name
@example
module_enabled?('example')
# File lib/kafo/hook_context.rb, line 101 def module_enabled?(module_name) mod = self.kafo.module(module_name) !mod.nil? && mod.enabled? end
Check if a module is present in the current configuration.
@param [String] module_name
@example
module_present?('example')
# File lib/kafo/hook_context.rb, line 112 def module_present?(module_name) mod = self.kafo.module(module_name) !mod.nil? end
Return the parameter of a module. Note that the module may not actually be enabled.
@param [String] module_name @param [String] parameter_name
@return [Kafo::Param, nil]
@example
param('foreman', 'interface').value = 'eth0'
@example
param('foreman', 'interface').value = app_option('bind_on_interface')
# File lib/kafo/hook_context.rb, line 72 def param(module_name, parameter_name) self.kafo.param(module_name, parameter_name) end
Return the Puppet report, if any. Only available after Puppet actual ran.
@return [Optional]
# File lib/kafo/hook_context.rb, line 204 def puppet_report self.kafo.puppet_report end
Return the actual data in the current scenario
@return [Hash]
# File lib/kafo/hook_context.rb, line 191 def scenario_data self.kafo.config.app end
Return the id of the current scenario
@return [String]
# File lib/kafo/hook_context.rb, line 177 def scenario_id self.kafo.config.scenario_id end
Return the path to the current scenario
@return [String]
# File lib/kafo/hook_context.rb, line 184 def scenario_path self.kafo.config.config_file end
You can save any value into kafo configuration file, this is useful if you need to share a value between more hooks and persist the values for next run
@param [Symbol] key @param [Object] value
# File lib/kafo/hook_context.rb, line 144 def store_custom_config(key, value) self.kafo.config.set_custom(key, value) end
Store
any custom fact. This will show up as kafo.scenario.custom.your_fact. It is possible to use structures such as arrays and hashes besides the obvious ones such as strings, integers, booleans.
These facts can also be used in Hiera hierachy definitions.
@param [Symbol] key @param [Object] value
# File lib/kafo/hook_context.rb, line 163 def store_custom_fact(key, value) self.kafo.config.set_custom_fact(key, value) end