Sha256: 820cae55bde2798aa65498facc5c1aa14d979bada9cea854b0e8ec9cd4797258

Contents?: true

Size: 1.64 KB

Versions: 2

Compression:

Stored size: 1.64 KB

Contents

# frozen_string_literal: true

module Backup
  module Notifier
    class Zabbix < Base
      attr_accessor :zabbix_host

      attr_accessor :zabbix_port

      attr_accessor :service_name

      attr_accessor :service_host

      attr_accessor :item_key

      def initialize(model, &block)
        super
        instance_eval(&block) if block_given?

        @zabbix_host  ||= Config.hostname
        @zabbix_port  ||= 10_051
        @service_name ||= "Backup #{model.trigger}"
        @service_host ||= Config.hostname
        @item_key     ||= "backup_status"
      end

      private

      ##
      # Notify the user of the backup operation results.
      #
      # `status` indicates one of the following:
      #
      # `:success`
      # : The backup completed successfully.
      # : Notification will be sent if `on_success` is `true`.
      #
      # `:warning`
      # : The backup completed successfully, but warnings were logged.
      # : Notification will be sent if `on_warning` or `on_success` is `true`.
      #
      # `:failure`
      # : The backup operation failed.
      # : Notification will be sent if `on_warning` or `on_success` is `true`.
      #
      def notify!(status)
        send_message(message.call(model, status: status_data_for(status)))
      end

      def send_message(message)
        msg = [service_host, service_name, model.exit_status, message].join("\t")
        cmd = utility(:zabbix_sender).to_s +
          " -z '#{zabbix_host}'" \
          " -p '#{zabbix_port}'" \
          " -s #{service_host}"  \
          " -k #{item_key}"      \
          " -o '#{msg}'"
        run("echo '#{msg}' | #{cmd}")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
backupii-0.1.0.pre.alpha.2 lib/backup/notifier/zabbix.rb
backupii-0.1.0.pre.alpha.1 lib/backup/notifier/zabbix.rb