package monitor

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

var (
	RcuCapacityGauge = prometheus.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: MetricNamespace,
			Name:      "rcu_provisioned_capacity",
			Help:      "Provisioned capacity of the RCU",
		},
		[]string{"keyspace_id", "keyspace_token", "cluster_id"},
	)
	RcuMinGauge = prometheus.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: MetricNamespace,
			Name:      "rcu_min",
			Help:      "min value of the RCU",
		},
		[]string{"keyspace_id", "keyspace_token", "cluster_id"},
	)
	RcuMaxGauge = prometheus.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: MetricNamespace,
			Name:      "rcu_max",
			Help:      "max value of the RCU",
		},
		[]string{"keyspace_id", "keyspace_token", "cluster_id"},
	)
	RcuUpdateResult = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: MetricNamespace,
			Name:      "rcu_update_result",
			Help:      "Result of updating RCU capacity",
		},
		[]string{"keyspace_id", "result"},
	)
	RcuCapacityV2Gauge = prometheus.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: MetricNamespace,
			Name:      "rcu_provisioned_capacity_v2",
			Help:      "Provisioned capacity of the RCU v2",
		},
		[]string{"keyspace_id", "keyspace_token", "cluster_id"},
	)
)

func init() {
	prometheus.MustRegister(RcuCapacityGauge)
	prometheus.MustRegister(RcuMinGauge)
	prometheus.MustRegister(RcuMaxGauge)
	prometheus.MustRegister(RcuUpdateResult)
	prometheus.MustRegister(RcuCapacityV2Gauge)
}
