func()

in controllers/seataserver_controller.go [114:155]


func (r *SeataServerReconciler) reconcileHeadlessService(ctx context.Context, s *seatav1alpha1.SeataServer) (err error) {
	svc := seata.MakeHeadlessService(s)
	if err := controllerutil.SetControllerReference(s, svc, r.Scheme); err != nil {
		r.recordError(ctx, types.NamespacedName{Name: s.Name, Namespace: s.Namespace},
			seatav1alpha1.ErrorTypeK8s_HeadlessService, fmt.Sprintf("Failed to set owner reference for SeataServer(%v)", s.Name), err)
		return err
	}
	foundSvc := &apiv1.Service{}
	err = r.Client.Get(ctx, types.NamespacedName{
		Name:      svc.Name,
		Namespace: svc.Namespace,
	}, foundSvc)
	if err != nil && errors.IsNotFound(err) {
		r.Log.Info(fmt.Sprintf("Creating a new SeataServer Service {%s:%s}",
			svc.Namespace, svc.Name))
		err = r.Client.Create(ctx, svc)
		if err != nil {
			r.recordError(ctx, types.NamespacedName{Name: s.Name, Namespace: s.Namespace},
				seatav1alpha1.ErrorTypeK8s_HeadlessService, fmt.Sprintf("Failed to create SeataServer Service {%s:%s}",
					svc.Namespace, svc.Name), err)
			return err
		}
		return nil
	} else if err != nil {
		r.recordError(ctx, types.NamespacedName{Name: s.Name, Namespace: s.Namespace},
			seatav1alpha1.ErrorTypeK8s_HeadlessService, fmt.Sprintf("Failed to get SeataServer Service {%s:%s}",
				svc.Namespace, svc.Name), err)
		return err
	} else {
		r.Log.Info(fmt.Sprintf("Updating existing SeataServer Service {%s:%s}",
			foundSvc.Namespace, foundSvc.Name))
		seata.SyncService(foundSvc, svc)
		err = r.Client.Update(ctx, foundSvc)
		if err != nil {
			r.recordError(ctx, types.NamespacedName{Name: s.Name, Namespace: s.Namespace},
				seatav1alpha1.ErrorTypeK8s_HeadlessService, fmt.Sprintf("Failed to update SeataServer Service {%s:%s}",
					foundSvc.Namespace, foundSvc.Name), err)
			return err
		}
	}
	return nil
}