# Generated by go2rpm
# Too many missing plugins for test to run
# At least:
# - output: kafka
# - input:  kafka kafka_consumer_legacy elasticsearch
%bcond_with check

# https://github.com/influxdata/telegraf
%global goipath    github.com/influxdata/telegraf
Version:                1.13.4
%global tag             1.13.4

%gometa

Name:           telegraf
Release:        1%{?dist}
Summary:        Plugin-driven server agent for collecting & reporting metrics

License:        MIT
URL:            %{gourl}
Source0:        %{gosource}

Patch0:         telegraf-1.13.3-Fix_appinsights_path.patch

%if 0%{?fedora}
BuildRequires:  systemd-rpm-macros
%else
BuildRequires:  systemd
%endif

#%%generate_buildrequires
#%%go_generate_buildrequires

BuildRequires:  golang(cloud.google.com/go/monitoring/apiv3)
BuildRequires:  golang(cloud.google.com/go/pubsub)
BuildRequires:  golang(collectd.org/api)
BuildRequires:  golang(collectd.org/network)
BuildRequires:  golang(github.com/aerospike/aerospike-client-go)
BuildRequires:  golang(github.com/alecthomas/units)
BuildRequires:  golang(github.com/amir/raidman)
BuildRequires:  golang(github.com/apache/thrift/lib/go/thrift)
BuildRequires:  golang(github.com/aws/aws-sdk-go/aws)
BuildRequires:  golang(github.com/aws/aws-sdk-go/aws/client)
BuildRequires:  golang(github.com/aws/aws-sdk-go/aws/credentials)
BuildRequires:  golang(github.com/aws/aws-sdk-go/aws/credentials/stscreds)
BuildRequires:  golang(github.com/aws/aws-sdk-go/aws/session)
BuildRequires:  golang(github.com/aws/aws-sdk-go/service/cloudwatch)
BuildRequires:  golang(github.com/aws/aws-sdk-go/service/dynamodb)
BuildRequires:  golang(github.com/aws/aws-sdk-go/service/kinesis)
BuildRequires:  golang(github.com/Azure/azure-storage-queue-go/azqueue)
BuildRequires:  golang(github.com/Azure/go-autorest/autorest)
BuildRequires:  golang(github.com/Azure/go-autorest/autorest/azure/auth)
BuildRequires:  golang(github.com/bsm/sarama-cluster)
BuildRequires:  golang(github.com/cisco-ie/nx-telemetry-proto/mdt_dialout)
BuildRequires:  golang(github.com/cisco-ie/nx-telemetry-proto/telemetry_bis)
#BuildRequires:  golang(github.com/couchbase/go-couchbase)
BuildRequires:  golang(github.com/denisenkom/go-mssqldb)
BuildRequires:  golang(github.com/dgrijalva/jwt-go)
BuildRequires:  golang(github.com/docker/docker/api/types)
BuildRequires:  golang(github.com/docker/docker/api/types/container)
BuildRequires:  golang(github.com/docker/docker/api/types/filters)
BuildRequires:  golang(github.com/docker/docker/api/types/registry)
BuildRequires:  golang(github.com/docker/docker/api/types/swarm)
BuildRequires:  golang(github.com/docker/docker/client)
BuildRequires:  golang(github.com/docker/libnetwork/ipvs)
# https://bugzilla.redhat.com/show_bug.cgi?id=1797117
BuildRequires:  golang(github.com/eclipse/paho.mqtt.golang)
BuildRequires:  golang(github.com/ericchiang/k8s)
BuildRequires:  golang(github.com/ericchiang/k8s/apis/apps/v1beta1)
BuildRequires:  golang(github.com/ericchiang/k8s/apis/apps/v1beta2)
BuildRequires:  golang(github.com/ericchiang/k8s/apis/core/v1)
BuildRequires:  golang(github.com/ghodss/yaml)
BuildRequires:  golang(github.com/glinton/ping)
BuildRequires:  golang(github.com/go-logfmt/logfmt)
BuildRequires:  golang(github.com/go-redis/redis)
BuildRequires:  golang(github.com/go-sql-driver/mysql)
BuildRequires:  golang(github.com/gobwas/glob)
BuildRequires:  golang(github.com/golang/protobuf/proto)
BuildRequires:  golang(github.com/golang/protobuf/ptypes/duration)
BuildRequires:  golang(github.com/golang/protobuf/ptypes/timestamp)
BuildRequires:  golang(github.com/google/go-cmp/cmp)
BuildRequires:  golang(github.com/google/go-cmp/cmp/cmpopts)
BuildRequires:  golang(github.com/google/go-github/github)
BuildRequires:  golang(github.com/gorilla/mux)
#BuildRequires:  golang(github.com/harlow/kinesis-consumer)
#BuildRequires:  golang(github.com/harlow/kinesis-consumer/checkpoint/ddb)
BuildRequires:  golang(github.com/hashicorp/consul/api)
#BuildRequires:  golang(github.com/influxdata/go-syslog)
#BuildRequires:  golang(github.com/influxdata/go-syslog/nontransparent)
#BuildRequires:  golang(github.com/influxdata/go-syslog/octetcounting)
#BuildRequires:  golang(github.com/influxdata/go-syslog/rfc5424)
#BuildRequires:  golang(github.com/influxdata/tail)
BuildRequires:  golang(github.com/influxdata/toml)
BuildRequires:  golang(github.com/influxdata/toml/ast)
BuildRequires:  golang(github.com/influxdata/wlog)
BuildRequires:  golang(github.com/jackc/pgx)
BuildRequires:  golang(github.com/jackc/pgx/pgtype)
BuildRequires:  golang(github.com/jackc/pgx/stdlib)
BuildRequires:  golang(github.com/kardianos/service)
BuildRequires:  golang(github.com/karrick/godirwalk)
BuildRequires:  golang(github.com/kballard/go-shellquote)
#BuildRequires:  golang(github.com/kubernetes/apimachinery/pkg/api/resource)
BuildRequires:  golang(github.com/matttproud/golang_protobuf_extensions/pbutil)
BuildRequires:  golang(github.com/mdlayher/apcupsd)
BuildRequires:  golang(github.com/microsoft/ApplicationInsights-Go/appinsights)
BuildRequires:  golang(github.com/miekg/dns)
BuildRequires:  golang(github.com/multiplay/go-ts3)
BuildRequires:  golang(github.com/nats-io/gnatsd/server)
BuildRequires:  golang(github.com/nats-io/go-nats)
BuildRequires:  golang(github.com/nsqio/go-nsq)
#BuildRequires:  golang(github.com/openconfig/gnmi/proto/gnmi)
BuildRequires:  golang(github.com/openzipkin/zipkin-go-opentracing)
BuildRequires:  golang(github.com/openzipkin/zipkin-go-opentracing/thrift/gen-go/zipkincore)
BuildRequires:  golang(github.com/pkg/errors)
BuildRequires:  golang(github.com/prometheus/client_golang/prometheus)
BuildRequires:  golang(github.com/prometheus/client_golang/prometheus/promhttp)
BuildRequires:  golang(github.com/prometheus/client_model/go)
BuildRequires:  golang(github.com/prometheus/common/expfmt)
BuildRequires:  golang(github.com/safchain/ethtool)
BuildRequires:  golang(github.com/satori/go.uuid)
# A newer version is needed (2.19.6 vs 2.19.7 vs 2.20.2) 
# https://bugzilla.redhat.com/show_bug.cgi?id=1742438
BuildRequires:  golang(github.com/shirou/gopsutil/cpu)
BuildRequires:  golang(github.com/shirou/gopsutil/disk)
BuildRequires:  golang(github.com/shirou/gopsutil/host)
BuildRequires:  golang(github.com/shirou/gopsutil/load)
BuildRequires:  golang(github.com/shirou/gopsutil/mem)
BuildRequires:  golang(github.com/shirou/gopsutil/net)
BuildRequires:  golang(github.com/shirou/gopsutil/process)
# Maybe a newer version is needed (1.26.1 vs 1.24.1 vs 1.22.0)
# https://bugzilla.redhat.com/show_bug.cgi?id=1449219
BuildRequires:  golang(github.com/Shopify/sarama)
BuildRequires:  golang(github.com/soniah/gosnmp)
BuildRequires:  golang(github.com/streadway/amqp)
BuildRequires:  golang(github.com/stretchr/testify/assert)
BuildRequires:  golang(github.com/stretchr/testify/mock)
BuildRequires:  golang(github.com/tidwall/gjson)
BuildRequires:  golang(github.com/vjeantet/grok)
BuildRequires:  golang(github.com/vmware/govmomi)
BuildRequires:  golang(github.com/vmware/govmomi/object)
BuildRequires:  golang(github.com/vmware/govmomi/performance)
BuildRequires:  golang(github.com/vmware/govmomi/property)
BuildRequires:  golang(github.com/vmware/govmomi/session)
BuildRequires:  golang(github.com/vmware/govmomi/view)
BuildRequires:  golang(github.com/vmware/govmomi/vim25)
BuildRequires:  golang(github.com/vmware/govmomi/vim25/methods)
BuildRequires:  golang(github.com/vmware/govmomi/vim25/mo)
BuildRequires:  golang(github.com/vmware/govmomi/vim25/soap)
BuildRequires:  golang(github.com/vmware/govmomi/vim25/types)
BuildRequires:  golang(github.com/wavefronthq/wavefront-sdk-go/senders)
BuildRequires:  golang(github.com/wvanbergen/kafka/consumergroup)
BuildRequires:  golang(golang.org/x/net/context)
BuildRequires:  golang(golang.org/x/net/html/charset)
BuildRequires:  golang(golang.org/x/oauth2)
BuildRequires:  golang(golang.org/x/oauth2/clientcredentials)
BuildRequires:  golang(golang.org/x/oauth2/google)
BuildRequires:  golang(golang.org/x/sys/unix)
BuildRequires:  golang(google.golang.org/api/iterator)
BuildRequires:  golang(google.golang.org/api/option)
BuildRequires:  golang(google.golang.org/api/support/bundler)
BuildRequires:  golang(google.golang.org/genproto/googleapis/api/distribution)
BuildRequires:  golang(google.golang.org/genproto/googleapis/api/metric)
BuildRequires:  golang(google.golang.org/genproto/googleapis/api/monitoredres)
BuildRequires:  golang(google.golang.org/genproto/googleapis/monitoring/v3)
BuildRequires:  golang(google.golang.org/grpc)
BuildRequires:  golang(google.golang.org/grpc/codes)
BuildRequires:  golang(google.golang.org/grpc/credentials)
BuildRequires:  golang(google.golang.org/grpc/metadata)
BuildRequires:  golang(google.golang.org/grpc/peer)
BuildRequires:  golang(google.golang.org/grpc/status)
BuildRequires:  golang(gopkg.in/gorethink/gorethink.v3)
BuildRequires:  golang(gopkg.in/ldap.v3)
BuildRequires:  golang(gopkg.in/mgo.v2)
BuildRequires:  golang(gopkg.in/mgo.v2/bson)
BuildRequires:  golang(gopkg.in/olivere/elastic.v5)
BuildRequires:  golang(gopkg.in/yaml.v2)

%if %{with check}
# Tests
BuildRequires:  golang(github.com/ericchiang/k8s/apis/meta/v1)
BuildRequires:  golang(github.com/ericchiang/k8s/apis/resource)
BuildRequires:  golang(github.com/ericchiang/k8s/util/intstr)
BuildRequires:  golang(github.com/golang/protobuf/ptypes/empty)
BuildRequires:  golang(github.com/stretchr/testify/require)
BuildRequires:  golang(github.com/vmware/govmomi/simulator)
%endif


%description
Telegraf is an agent for collecting, processing, aggregating, and writing
metrics.

%gopkg

%prep
%goprep
%patch0 -p1

# Drop some input plugins
for i in \
  aerospike \
  cisco_telemetry_gnmi \
  couchbase \
  elasticsearch \
  kafka_consumer \
  kafka_consumer_legacy \
  kinesis_consumer \
  kube_inventory \
  logparser \
  mem \
  prometheus \
  syslog \
  tail \
  vsphere \
  ;
do
  rm -rf plugins/inputs/$i
  sed -i -e "/plugins\/inputs\/$i/d" plugins/inputs/all/all.go
done
#  mem \ Needs golang-github-shirou-gopsutil 2.19.7 (currently 2.19.6, latest 2.20.2)
#  memcached \

# Drop some output plugins
for i in \
  elasticsearch \
  kafka \
  prometheus_client \
  syslog \
  ;
do
  rm -rf plugins/outputs/$i
  sed -i -e "/plugins\/outputs\/$i/d" plugins/outputs/all/all.go
done

# Drop some parser plugins
#for i in \
#  dropwizard \
#  json \
#  ;
#do
#  rm -rf plugins/parsers/$i
#  sed -i -e "/plugins\/parsers\/$i/d" plugins/parsers/registry.go
#  :
#done

# Drop some processors plugins
#for i in \
#  unpivot \
#  ;
#do
#  rm -rf plugins/processors/$i
#  sed -i -e "/plugins\/processors\/$i/d" plugins/processors/all/all.go
#done

# Drop some serializer plugins
#for i in \
#  wavefront \
#  ;
#do
#  rm -rf plugins/serializers/$i
#  sed -i -e "/plugins\/serializers\/$i/d" plugins/serializers/registry.go
#done


%build
for cmd in cmd/* ; do
  %gobuild -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd
done
#for cmd in plugins/inputs/snmp plugins/inputs/leofs; do
#  %gobuild -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd
#done

%install
%gopkginstall
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/

install -m 0755 -vd %{buildroot}%{_sysconfdir}/telegraf/telegraf.d/
install -m 0644 -vp etc/telegraf.conf %{buildroot}%{_sysconfdir}/telegraf/

install -m 0755 -vd %{buildroot}%{_sysconfdir}/logrotate.d/
install -m 0644 -vp etc/logrotate.d/telegraf \
    %{buildroot}%{_sysconfdir}/logrotate.d/
install -m 0755 -vd %{buildroot}%{_localstatedir}/log/telegraf/

%if 0%{?fedora} || 0%{?rhel} >= 7
install -m 0755 -vd %{buildroot}%{_unitdir}
install -m 0644 -vp scripts/telegraf.service %{buildroot}%{_unitdir}
%else
install -m 0755 -vd %{buildroot}%{_initrdir}
install -m 0644 -vp scripts/init.sh %{buildroot}%{_initrddir}/telegraf
sed -i -e 's,^#! /usr/bin/env bash$,#!/usr/bin/bash,' \
       -e 's,^# chkconfig: 2345 99 01,# chkconfig: - 99 01,' \
       %{buildroot}%{_initrddir}/telegraf
%endif


%if %{with check}
%check
%gocheck
%endif


%pre
getent group telegraf >/dev/null || /usr/sbin/groupadd -r telegraf

getent passwd telegraf >/dev/null || \
  /usr/sbin/useradd -r -g telegraf \
      -d %{_sysconfdir}/telegraf \
      -c "System User for telegraf" \
      -s "/sbin/nologin" \
telegraf


%post
%if 0%{?fedora} || 0%{?rhel} >= 7
%systemd_post telegraf.service
%else
/sbin/chkconfig --add telegraf
%endif


%postun
%if 0%{?fedora} || 0%{?rhel} >= 7
%systemd_postun_with_restart telegraf.service
%else
if [ "$1" -ge "1" ] ; then
    /sbin/service telegraf condrestart >/dev/null 2>&1 || :
fi
%endif


%files
%license LICENSE
%doc docs/ CONTRIBUTING.md CHANGELOG.md README.md 
%{_bindir}/*
%dir %{_sysconfdir}/telegraf/
%dir %{_sysconfdir}/telegraf/telegraf.d/
%config(noreplace) %{_sysconfdir}/telegraf/telegraf.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/telegraf
%dir %{_localstatedir}/log/telegraf/
%if 0%{?fedora} || 0%{?rhel} >= 7
%{_unitdir}/telegraf.service
%else
%config(noreplace) %{_initrddir}/telegraf
%endif

%gopkgfiles

%changelog
* Thu Mar 19 2020 Xavier Bachelot <xavier@bachelot.org> - 1.13.4-1
- Update to 1.13.4.

* Wed Feb 05 2020 Xavier Bachelot <xavier@bachelot.org> - 1.13.3-1
- Initial package