{%- from "kubernetes/map.jinja" import common with context -%}
{%- if pillar.get('fluentd', {}).get('agent', {}).get('enabled', False) %}
{%- from "kubernetes/map.jinja" import pool, master %}
{%- if pool.get('enabled', False) %}
{% set network = pool.get('network', {}) %}
{%- else %}
{%- if master.get('enabled', False) %}
{% set network = master.get('network', {}) %}
{% endif %}
{% endif %}

{%- set positiondb = pillar.fluentd.agent.dir.positiondb %}
agent:
  plugin:
    fluent-plugin-kubernetes_metadata_filter:
      deb: ['td-agent-additional-plugins']
  config:
    label:
      docker:
        filter:
          add_drop_tag:
            tag: 'temp.docker.container.**'
            type: record_transformer
            enable_ruby: true
            record:
              - name: drop_event
                value: ${ record.fetch('attrs', {}).fetch('io.kubernetes.pod.name', '') }
      kubernetes:
        input:
          container:
            type: tail
            tag: temp.kubernetes.container.*
            path: /var/log/containers/*.log
            path_key: log_path
            pos_file: {{ positiondb }}/kubernetes.pos
            parser:
              type: json
              time_format: '%Y-%m-%dT%H:%M:%S.%NZ'
              keep_time_key: false
          {%- if network is defined and network.get('calico', {}).get('enabled', False) %}
          bird:
            type: tail
            tag: kubernetes.calico.bird
            path: /var/log/calico/bird/current, /var/log/calico/bird6/current
            path_key: log_path
            pos_file: {{ positiondb }}/kubernetes.calico.bird.pos
            parser:
              type: regexp
              time_format: '%Y-%m-%d_%H:%M:%S.%N'
              time_key: Timestamp
              keep_time_key: false
              format: '/^(?<Timestamp>[^ ]+) (?<programname>[^ ]+): (?<Payload>.*)$/'
          confd:
            type: tail
            tag: kubernetes.calico.confd
            path: /var/log/calico/confd/current
            path_key: log_path
            pos_file: {{ positiondb }}/kubernetes.calico.confd.pos
            parser:
              type: regexp
              time_format: '%Y-%m-%dT%H:%M:%SZ'
              time_key: Timestamp
              keep_time_key: false
              format: '/^(?<Timestamp>[^ ]+) (?<Hostname>[^ ]+) (?<programname>[^ ]+)\[\d+?\]: (?<orig_severity_label>[^ ]+) (?<Payload>.*)$/'
          felix:
            type: tail
            tag: kubernetes.calico.felix
            path: /var/log/calico/felix/current
            path_key: log_path
            pos_file: {{ positiondb }}/kubernetes.calico.felix.pos
            parser:
              type: regexp
              time_format: '%Y-%m-%d %H:%M:%S.%L'
              time_key: Timestamp
              keep_time_key: false
              format: '/^(?<Timestamp>[^ ]+ [^ ]+) \[(?<orig_severity_label>[^ ]+)\]\[\d+?\] (?<Payload>.*)$/'
          {%- endif %}
        filter:
          add_kubernetes_meta:
            tag: 'temp.kubernetes.container.**'
            type: kubernetes_metadata
            kubernetes_url: https://{{ pool.apiserver.host }}:{{ pool.apiserver.secure_port }}
            {%- if common.get('cloudprovider', {}).get('enabled') and common.get('cloudprovider', {}).get('provider') == 'openstack' %}
            client_cert: /etc/kubernetes/ssl/kubelet-client-fqdn.crt
            client_key: /etc/kubernetes/ssl/kubelet-client-fqdn.key
            {%- else %}
            client_cert: /etc/kubernetes/ssl/kubelet-client.crt
            client_key: /etc/kubernetes/ssl/kubelet-client.key
            {%- endif %}
            ca_file: /etc/kubernetes/ssl/ca-kubernetes.crt
            verify_ssl: True
          enrich_container:
            require:
              - add_kubernetes_meta
            tag: 'temp.kubernetes.container.**'
            type: record_transformer
            enable_ruby: true
            record:
              - name: severity_label
                value: INFO
              - name: Severity
                value: 6
              - name: programname
                value: ${ record['kubernetes']['container_name'] }
          {%- if network is defined and network.get('calico', {}).get('enabled', False) %}
          enrich_bird:
            tag: 'kubernetes.calico.bird'
            type: record_transformer
            enable_ruby: true
            record:
              - name: severity_label
                value: INFO
              - name: Severity
                value: 6
              - name: programname
                value: calico-${ record["programname"] }
          enrich_confd:
            tag: 'kubernetes.calico.confd'
            type: record_transformer
            enable_ruby: true
            remove_keys: orig_severity_label
            record:
              - name: severity_label
                value: ${ {'DEBUG'=>'DEBUG','INFO'=>'INFO','WARNING'=>'WARNING','ERROR'=>'ERROR','FATAL'=>'CRITICAL','PANIC'=>'ALERT'}[record['orig_severity_label']] }
              - name: Severity
                value: ${ {'DEBUG'=>7,'INFO'=>6,'WARNING'=>4,'ERROR'=>3,'FATAL'=>2,'PANIC'=>1}[record['orig_severity_label']].to_i }
              - name: programname
                value: calico-${ record["programname"] }
          enrich_felix:
            tag: 'kubernetes.calico.felix'
            type: record_transformer
            enable_ruby: true
            remove_keys: orig_severity_label
            record:
              - name: severity_label
                value: ${ {'DEBUG'=>'DEBUG','INFO'=>'INFO','WARNING'=>'WARNING','ERROR'=>'ERROR','FATAL'=>'CRITICAL','PANIC'=>'ALERT'}[record['orig_severity_label']] }
              - name: Severity
                value: ${ {'DEBUG'=>7,'INFO'=>6,'WARNING'=>4,'ERROR'=>3,'FATAL'=>2,'PANIC'=>1}[record['orig_severity_label']].to_i }
              - name: programname
                value: calico-felix
          {%- endif %}
        match:
          cast_service_tag:
            tag: 'temp.kubernetes.container.**'
            type: rewrite_tag_filter
            rule:
              - name: log_path
                regexp: '^.*\/(.*)\.log$'
                result: kubernetes.container.$1
          push_to_default:
            tag: 'kubernetes.**'
            type: relabel
            label: default_output
{%- endif %}
