cerner/cerner_splunk

View on GitHub
libraries/alerts.rb

Summary

Maintainability
A
45 mins
Test Coverage
# frozen_string_literal: true

# Cookbook Name:: cerner_splunk
# File Name:: alerts.rb

require_relative 'databag'

module CernerSplunk
  # Module contains functions to configure alerts in a Splunk system
  module Alerts
    def self.configure_alerts(node, hash)
      hash = hash.clone
      default_coords = CernerSplunk::DataBag.to_a node['splunk']['config']['alerts']
      bag = CernerSplunk::DataBag.load hash.delete('bag'), default: default_coords, secret: node['splunk']['data_bag_secret']

      alert_stanzas =
        if bag
          bag.to_hash.merge(hash) do |_key, default_hash, override_hash|
            default_hash.merge(override_hash)
          end
        else
          hash
        end

      fail 'Unexpected property \'bag\'' if alert_stanzas.delete('bag')

      email_settings = alert_stanzas['email'] || {}

      if email_settings['auth_password']
        password = CernerSplunk::DataBag.load email_settings['auth_password'], default: default_coords, secret: node['splunk']['data_bag_secret']
        fail 'Password must be a String' unless password.is_a?(String)

        email_settings['auth_password'] = password
      end
      alert_stanzas
    end
  end
end