Class: Kafo::Hooking

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializeHooking

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

#hooksObject

Returns the value of attribute hooks.



12
13
14
# File 'lib/kafo/hooking.rb', line 12

def hooks
  @hooks
end

#kafoObject

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

#loadObject



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

Returns:

  • (Boolean)


40
41
42
# File 'lib/kafo/hooking.rb', line 40

def loaded?
  @loaded
end

#loggerObject



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