package noderecover

import (
	"context"
	"fmt"
	"strconv"
	"time"
)

func (r *Reconciler) getMemIdle(ctx context.Context, nodeName, interval string) (idle float64, err error) {
	base10 := 10
	v := map[string]string{
		"query": fmt.Sprintf(`avg_over_time(node_memory_MemAvailable_bytes{instance="%s"}[%s])/node_memory_MemTotal_bytes`,
			nodeName, interval),
		"_": strconv.FormatInt(time.Now().Unix(), base10), // a dummy value just avoid cache
	}
	resp, err := r.o11yQuerier.QueryMetrics(ctx, "/api/v1/query", v)
	if err != nil {
		return
	}

	for _, rlt := range resp.Data.Result {
		idleStr := rlt.Value[1].(string)
		return strconv.ParseFloat(idleStr, 64)
	}

	return 0, ErrNoMetric
}
