class Kafo::Hooking

Constants

TYPES

boot - before kafo is ready to work, useful for adding new app arguments, logger won’t work yet init - just after hooking is initialized and kafo is configured, parameters have no values yet pre_values - just before value from CLI is set to parameters (they already have default values) pre_validations - just after system checks and before validations are executed (and before interactive wizard is started), at this point all parameter values are already set but not yet stored in answer file pre - just before puppet is executed to converge system post - just after puppet is executed to converge system

Attributes

hooks[RW]
kafo[RW]

Public Class Methods

new() click to toggle source
# File lib/kafo/hooking.rb, line 15
def initialize
  self.hooks = Hash.new { |h, k| h[k] = {} }
  @loaded = false
end

Public Instance Methods

execute(group) click to toggle source
# File lib/kafo/hooking.rb, line 45
def execute(group)
  logger.info "Executing hooks in group #{group}"
  self.hooks[group].each_pair do |name, hook|
    result = HookContext.execute(self.kafo, &hook)
    logger.debug "Hook #{name} returned #{result.inspect}"
  end
  logger.info "All hooks in group #{group} finished"
end
load() click to toggle source
# File lib/kafo/hooking.rb, line 24
def load
  base_dirs = [File.join([KafoConfigure.root_dir, 'hooks']), KafoConfigure.config.app[:hook_dirs]]
  base_dirs.each do |base_dir|
    TYPES.each do |hook_type|
      dir = File.join(base_dir, hook_type.to_s)
      Dir.glob(dir + "/*.rb").sort.each do |file|
        logger.debug "Loading hook #{file}"
        hook = File.read(file)
        hook_block = proc { instance_eval(hook, file, 1) }
        register(hook_type, file, &hook_block)
      end
    end
    @loaded = true
  end
  self
end
loaded?() click to toggle source
# File lib/kafo/hooking.rb, line 41
def loaded?
  @loaded
end
logger() click to toggle source
# File lib/kafo/hooking.rb, line 20
def logger
  KafoConfigure.logger
end
register_boot(name, &block) click to toggle source
# File lib/kafo/hooking.rb, line 54
def register_boot(name, &block)
  register(:boot, name, &block)
end
register_init(name, &block) click to toggle source
# File lib/kafo/hooking.rb, line 58
def register_init(name, &block)
  register(:init, name, &block)
end
register_post(name, &block) click to toggle source
# File lib/kafo/hooking.rb, line 74
def register_post(name, &block)
  register(:post, name, &block)
end
register_pre(name, &block) click to toggle source
# File lib/kafo/hooking.rb, line 70
def register_pre(name, &block)
  register(:pre, name, &block)
end
register_pre_validations(name, &block) click to toggle source
# File lib/kafo/hooking.rb, line 66
def register_pre_validations(name, &block)
  register(:pre_validations, name, &block)
end
register_pre_values(name, &block) click to toggle source
# File lib/kafo/hooking.rb, line 62
def register_pre_values(name, &block)
  register(:pre_values, name, &block)
end