Sha256: c4b24e5616b1e5b2e7466522fd395b7d5556649bab512fe20962ddf1203bcbb5

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require 'fluent/output'

module Fluent
  class Fluent::AppendKubernetesAnnotationsToTag < Fluent::Output
    Fluent::Plugin.register_output('append_kubernetes_annotations_to_tag', self)

    config_param :annotations, :string

    def configure(conf)
      super

      @annotations = conf['annotations'].split(',')
    end

    def emit(tag, es, chain)
      es.each do |time, record|
        events(tag, time, record).each do |(tag, time, record)|
          router.emit(tag, time, record)
        end
      end

      chain.next

    rescue
      log.error "Failed to re-format docker record #{record}"
      # this seems to be a way to safely swallow records we don't know how to format
      ""
    end

    private

    def events(tag, time, record)
      [
        event(tag, time, record)
      ]
    end

    def event(tag, time, record)
      new_tag = if record.has_key? 'kubernetes' && record['kubernetes'].has_key? 'annotations'
        kubernetes_annotations_tag_appender.append(tag, record['kubernetes']['annotations'])
      else
        tag
      end

      [
        new_tag,
        time,
        record
      ]
    end

    def kubernetes_annotations_tag_appender
      @kubernetes_annotations_tag_appender ||= KubernetesAnnotationsTagAppender.new(@annotations)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-append-kubernetes-annotations-to-tag-0.0.1 lib/fluent/plugin/out_append_kubernetes_annotations_to_tag.rb