func()

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
}