package cron

import (
	"github.com/prometheus/client_golang/prometheus"
)

const (
	workerNodeMeteringResultOK    = "ok"
	workerNodeMeteringResultError = "error"
)

var (
	workerNodeMeteringRunTotal = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name: "worker_node_metering_run_total",
			Help: "Total runs of worker-node metering cron job.",
		}, []string{"result"})

	workerNodeMeteringDataplaneAccessTotal = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name: "worker_node_metering_dataplane_access_total",
			Help: "Total dataplane access attempts in worker-node metering.",
		}, []string{"result"})

	workerNodeMeteringWriteTotal = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name: "worker_node_metering_write_total",
			Help: "Total metering data write attempts.",
		}, []string{"result"})

	workerNodeMeteringCompensationSecondsTotal = prometheus.NewCounter(
		prometheus.CounterOpts{
			Name: "worker_node_metering_compensation_seconds_total",
			Help: "Total seconds processed in compensation window.",
		})

	workerNodeMeteringNodeDropTotal = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name: "worker_node_metering_node_drop_total",
			Help: "Total nodes dropped from billing.",
		}, []string{"reason"})

	workerNodeMeteringCPUMismatchTotal = prometheus.NewCounter(
		prometheus.CounterOpts{
			Name: "worker_node_metering_cpu_mismatch_total",
			Help: "Total nodes with node-spec CPU mismatching status.capacity.cpu.",
		})
)

func init() {
	prometheus.MustRegister(workerNodeMeteringRunTotal)
	prometheus.MustRegister(workerNodeMeteringDataplaneAccessTotal)
	prometheus.MustRegister(workerNodeMeteringWriteTotal)
	prometheus.MustRegister(workerNodeMeteringCompensationSecondsTotal)
	prometheus.MustRegister(workerNodeMeteringNodeDropTotal)
	prometheus.MustRegister(workerNodeMeteringCPUMismatchTotal)
}
