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
}