func()

in pkg/probe/gke.go [76:113]


func (p *metricsServerProbe) Run(ctx context.Context, clientset *kubernetes.Clientset) Result {

	var podmetrics PodMetricsList
	var body []byte
	var err error
	body, err = clientset.RESTClient().Get().AbsPath(clusterMetricsApi).DoRaw(ctx)
	if err != nil {
		klog.Warningf("Get metrics from metrics-server returned error %s\n", err.Error())
		return Result{
			Available: "Unhealthy",
			Err:       err,
		}
	}
	if err = json.Unmarshal(body, &podmetrics); err != nil {
		klog.Warningf("Json parser metrics returned error %s\n", err.Error())
		return Result{
			Available: "Unhealthy",
			Err:       err,
		}
	}

	if len(podmetrics.Items) == 0 {
		err = fmt.Errorf("zero metrics returned\n")
		klog.Warningf("Get metrics from metrics-server returned error %s\n", err.Error())
		return Result{
			Available: "Unhealthy",
			Err:       err,
		}
	}

	str, _ := json.MarshalIndent(podmetrics, "", "\t")
	klog.V(2).Infof("Pod metrics List is %s\n", string(str))
	err = fmt.Errorf("Metrics-server is operational health")
	return Result{
		Available: "Healthy",
		Err:       err,
	}
}