class Kafo::HookContext

Attributes

kafo[R]

@return [Kafo::KafoConfigure]

logger[R]

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

execute(kafo, logger, &hook) click to toggle source
# File lib/kafo/hook_context.rb, line 18
def self.execute(kafo, logger, &hook)
  new(kafo, logger).instance_eval(&hook)
end
new(kafo, logger) click to toggle source
# File lib/kafo/hook_context.rb, line 22
def initialize(kafo, logger)
  @kafo = kafo
  @logger = logger
end

Public Instance Methods

add_module(module_name, mapping = nil) click to toggle source

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
app_option(*args, &block) click to toggle source

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
app_option?(option) click to toggle source

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
app_value(option) click to toggle source

@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
exit(code) click to toggle source

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
exit_code() click to toggle source

Return the current exit code

# File lib/kafo/hook_context.rb, line 196
def exit_code
  self.kafo.exit_code
end
get_custom_config(key) click to toggle source

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
get_custom_fact(key) click to toggle source

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
has_custom_fact?(key) click to toggle source

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
module_enabled?(module_name) click to toggle source

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
module_present?(module_name) click to toggle source

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
param(module_name, parameter_name) click to toggle source

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
scenario_data() click to toggle source

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
scenario_id() click to toggle source

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
scenario_path() click to toggle source

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
store_custom_config(key, value) click to toggle source

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_custom_fact(key, value) click to toggle source

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