in controllers/dsmaster_controller.go [433:459]
func (r *DSMasterReconciler) ensureHPA(ctx context.Context, cluster *dsv1alpha1.DSMaster) error {
hpa := &v2beta2.HorizontalPodAutoscaler{}
namespacedName := types.NamespacedName{Namespace: cluster.Namespace, Name: dsv1alpha1.DsWorkerHpa}
if err := r.Client.Get(ctx, namespacedName, hpa); err != nil {
// Local cache not found
if apierrors.IsNotFound(err) && cluster.Spec.HpaPolicy != nil {
hpa := r.createHPA(cluster)
if err := controllerutil.SetControllerReference(cluster, hpa, r.Scheme); err != nil {
masterLogger.Info("set controller worker hpa error")
return err
}
// Remote may already exist, so we will return err, for the next time, this code will not execute
if err := r.Client.Create(ctx, hpa); err != nil {
masterLogger.Info("create worker hpa error")
return err
}
}
}
if hpa.Kind != "" && cluster.Spec.HpaPolicy == nil {
if err := r.deleteHPA(ctx, hpa); err != nil {
masterLogger.Info("delete hpa error")
return err
}
}
return nil
}