pre_migrations - just after kafo reads its configuration - useful for config file updates. Only in this stage it is posible to request config reload (`Kafo.request_config_reload`) to get in our changes 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_commit - after validations or interactive wizard have completed, all parameter values are set but not yet stored in the answer file pre - just before puppet is executed to converge system post - just after puppet is executed to converge system
# File lib/kafo/hooking.rb, line 17 def initialize self.hooks = Hash.new { |h, k| h[k] = {} } @loaded = false end
# File lib/kafo/hooking.rb, line 47 def execute(group) logger.info "Executing hooks in group #{group}" self.hooks[group].keys.sort_by(&:to_s).each do |name| hook = self.hooks[group][name] result = HookContext.execute(self.kafo, &hook) logger.debug "Hook #{name} returned #{result.inspect}" end logger.info "All hooks in group #{group} finished" end
# File lib/kafo/hooking.rb, line 26 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
# File lib/kafo/hooking.rb, line 43 def loaded? @loaded end
# File lib/kafo/hooking.rb, line 22 def logger KafoConfigure.logger end
# File lib/kafo/hooking.rb, line 61 def register_boot(name, &block) register(:boot, name, &block) end
# File lib/kafo/hooking.rb, line 65 def register_init(name, &block) register(:init, name, &block) end
# File lib/kafo/hooking.rb, line 85 def register_post(name, &block) register(:post, name, &block) end
# File lib/kafo/hooking.rb, line 81 def register_pre(name, &block) register(:pre, name, &block) end
# File lib/kafo/hooking.rb, line 77 def register_pre_commit(name, &block) register(:pre_commit, name, &block) end
# File lib/kafo/hooking.rb, line 57 def register_pre_migrations(name, &block) register(:pre_migrations, name, &block) end
# File lib/kafo/hooking.rb, line 73 def register_pre_validations(name, &block) register(:pre_validations, name, &block) end
# File lib/kafo/hooking.rb, line 69 def register_pre_values(name, &block) register(:pre_values, name, &block) end
# File lib/kafo/hooking.rb, line 91 def register(group, name, &block) self.hooks[group][name] = block end