Class: Kafo::Hooking
- Inherits:
-
Object
- Object
- Kafo::Hooking
- Defined in:
- lib/kafo/hooking.rb
Constant Summary collapse
- 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 - just before puppet is executed to converge system post - just after puppet is executed to converge system
[:boot, :init, :pre, :post, :pre_values]
Instance Attribute Summary collapse
-
#hooks ⇒ Object
Returns the value of attribute hooks.
-
#kafo ⇒ Object
Returns the value of attribute kafo.
Instance Method Summary collapse
- #execute(group) ⇒ Object
-
#initialize ⇒ Hooking
constructor
A new instance of Hooking.
- #load ⇒ Object
- #loaded? ⇒ Boolean
- #logger ⇒ Object
- #register_boot(name, &block) ⇒ Object
- #register_init(name, &block) ⇒ Object
- #register_post(name, &block) ⇒ Object
- #register_pre(name, &block) ⇒ Object
- #register_pre_values(name, &block) ⇒ Object
Constructor Details
#initialize ⇒ Hooking
Returns a new instance of Hooking.
14 15 16 17 |
# File 'lib/kafo/hooking.rb', line 14 def initialize self.hooks = Hash.new { |h, k| h[k] = {} } @loaded = false end |
Instance Attribute Details
#hooks ⇒ Object
Returns the value of attribute hooks.
12 13 14 |
# File 'lib/kafo/hooking.rb', line 12 def hooks @hooks end |
#kafo ⇒ Object
Returns the value of attribute kafo.
12 13 14 |
# File 'lib/kafo/hooking.rb', line 12 def kafo @kafo end |
Instance Method Details
#execute(group) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/kafo/hooking.rb', line 44 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 ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/kafo/hooking.rb', line 23 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? ⇒ Boolean
40 41 42 |
# File 'lib/kafo/hooking.rb', line 40 def loaded? @loaded end |
#logger ⇒ Object
19 20 21 |
# File 'lib/kafo/hooking.rb', line 19 def logger KafoConfigure.logger end |
#register_boot(name, &block) ⇒ Object
53 54 55 |
# File 'lib/kafo/hooking.rb', line 53 def register_boot(name, &block) register(:boot, name, &block) end |
#register_init(name, &block) ⇒ Object
57 58 59 |
# File 'lib/kafo/hooking.rb', line 57 def register_init(name, &block) register(:init, name, &block) end |
#register_post(name, &block) ⇒ Object
69 70 71 |
# File 'lib/kafo/hooking.rb', line 69 def register_post(name, &block) register(:post, name, &block) end |
#register_pre(name, &block) ⇒ Object
65 66 67 |
# File 'lib/kafo/hooking.rb', line 65 def register_pre(name, &block) register(:pre, name, &block) end |
#register_pre_values(name, &block) ⇒ Object
61 62 63 |
# File 'lib/kafo/hooking.rb', line 61 def register_pre_values(name, &block) register(:pre_values, name, &block) end |