module ForemanHooks::OrchestrationHook

Public Instance Methods

queue_hooks(event) click to toggle source
# File lib/foreman_hooks/orchestration_hook.rb, line 22
def queue_hooks(event)
  logger.debug "Observed #{event} hook on #{self}"
  unless is_a? Orchestration
    logger.warn "#{self.class.to_s} doesn't support orchestration, can't run orchestration hooks: use Rails events instead"
  end

  return unless hooks = ForemanHooks.find_hooks(self.class, event)
  logger.debug "Queueing #{hooks.size} hooks for #{self.class.to_s}##{event}"

  counter = 0
  hooks.each do |filename|
    basename = File.basename(filename)
    priority = basename =~ /^(\d+)/ ? $1 : 10000 + (counter += 1)
    logger.debug "Queuing hook #{basename} for #{self.class.to_s}##{event} at priority #{priority}"
    queue.create(:name   => "Hook: #{basename}", :priority => priority.to_i,
                 :action => [HookRunner.new(filename, self, event.to_s),
                             event.to_s == 'destroy' ? :hook_execute_del : :hook_execute_set])
  end
end
queue_hooks_destroy() click to toggle source
# File lib/foreman_hooks/orchestration_hook.rb, line 17
def queue_hooks_destroy
  return unless errors.empty?
  queue_hooks('destroy')
end
queue_hooks_validate() click to toggle source
# File lib/foreman_hooks/orchestration_hook.rb, line 12
def queue_hooks_validate
  return unless errors.empty?
  queue_hooks(new_record? ? 'create' : 'update')
end