package kube_state

import (
	"context"
	"time"

	"github.com/influxdata/telegraf"
	"k8s.io/api/core/v1"
)

var configMapMeasurement = "kube_configmap"

func registerConfigMapCollector(ctx context.Context, acc telegraf.Accumulator, ks *KubenetesState) {
	list, err := ks.client.getConfigMaps(ctx)
	if err != nil {
		acc.AddError(err)
		return
	}
	for _, s := range list.Items {
		if err = ks.gatherConfigMap(s, acc); err != nil {
			acc.AddError(err)
			return
		}
	}
}

func (ks *KubenetesState) gatherConfigMap(s v1.ConfigMap, acc telegraf.Accumulator) error {
	var creationTime time.Time
	if !s.CreationTimestamp.IsZero() {
		creationTime = s.CreationTimestamp.Time
	}
	fields := map[string]interface{}{
		"gauge": 1,
	}
	tags := map[string]string{
		"namespace":        s.Namespace,
		"configmap":        s.Name,
		"resource_version": s.ResourceVersion,
	}
	acc.AddFields(configMapMeasurement, fields, tags, creationTime)
	return nil
}