mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-04 23:45:34 +00:00
cmd/k8s-operator: fix a bunch of status equality checks (#14270)
Updates tailscale/tailscale#14269 Signed-off-by: Irbe Krumina <irbe@tailscale.com>
This commit is contained in:
parent
cbf1a4efe9
commit
aa43388363
@ -113,7 +113,7 @@ func (a *ConnectorReconciler) Reconcile(ctx context.Context, req reconcile.Reque
|
|||||||
setStatus := func(cn *tsapi.Connector, _ tsapi.ConditionType, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
setStatus := func(cn *tsapi.Connector, _ tsapi.ConditionType, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
||||||
tsoperator.SetConnectorCondition(cn, tsapi.ConnectorReady, status, reason, message, cn.Generation, a.clock, logger)
|
tsoperator.SetConnectorCondition(cn, tsapi.ConnectorReady, status, reason, message, cn.Generation, a.clock, logger)
|
||||||
var updateErr error
|
var updateErr error
|
||||||
if !apiequality.Semantic.DeepEqual(oldCnStatus, cn.Status) {
|
if !apiequality.Semantic.DeepEqual(oldCnStatus, &cn.Status) {
|
||||||
// An error encountered here should get returned by the Reconcile function.
|
// An error encountered here should get returned by the Reconcile function.
|
||||||
updateErr = a.Client.Status().Update(ctx, cn)
|
updateErr = a.Client.Status().Update(ctx, cn)
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ func (esrr *egressSvcsReadinessReconciler) Reconcile(ctx context.Context, req re
|
|||||||
oldStatus := svc.Status.DeepCopy()
|
oldStatus := svc.Status.DeepCopy()
|
||||||
defer func() {
|
defer func() {
|
||||||
tsoperator.SetServiceCondition(svc, tsapi.EgressSvcReady, st, reason, msg, esrr.clock, l)
|
tsoperator.SetServiceCondition(svc, tsapi.EgressSvcReady, st, reason, msg, esrr.clock, l)
|
||||||
if !apiequality.Semantic.DeepEqual(oldStatus, svc.Status) {
|
if !apiequality.Semantic.DeepEqual(oldStatus, &svc.Status) {
|
||||||
err = errors.Join(err, esrr.Status().Update(ctx, svc))
|
err = errors.Join(err, esrr.Status().Update(ctx, svc))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -123,7 +123,7 @@ func (esr *egressSvcsReconciler) Reconcile(ctx context.Context, req reconcile.Re
|
|||||||
|
|
||||||
oldStatus := svc.Status.DeepCopy()
|
oldStatus := svc.Status.DeepCopy()
|
||||||
defer func() {
|
defer func() {
|
||||||
if !apiequality.Semantic.DeepEqual(oldStatus, svc.Status) {
|
if !apiequality.Semantic.DeepEqual(oldStatus, &svc.Status) {
|
||||||
err = errors.Join(err, esr.Status().Update(ctx, svc))
|
err = errors.Join(err, esr.Status().Update(ctx, svc))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -86,7 +86,7 @@ func (a *NameserverReconciler) Reconcile(ctx context.Context, req reconcile.Requ
|
|||||||
return reconcile.Result{}, nil
|
return reconcile.Result{}, nil
|
||||||
}
|
}
|
||||||
logger.Info("Cleaning up DNSConfig resources")
|
logger.Info("Cleaning up DNSConfig resources")
|
||||||
if err := a.maybeCleanup(ctx, &dnsCfg, logger); err != nil {
|
if err := a.maybeCleanup(&dnsCfg); err != nil {
|
||||||
logger.Errorf("error cleaning up reconciler resource: %v", err)
|
logger.Errorf("error cleaning up reconciler resource: %v", err)
|
||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
@ -100,9 +100,9 @@ func (a *NameserverReconciler) Reconcile(ctx context.Context, req reconcile.Requ
|
|||||||
}
|
}
|
||||||
|
|
||||||
oldCnStatus := dnsCfg.Status.DeepCopy()
|
oldCnStatus := dnsCfg.Status.DeepCopy()
|
||||||
setStatus := func(dnsCfg *tsapi.DNSConfig, conditionType tsapi.ConditionType, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
setStatus := func(dnsCfg *tsapi.DNSConfig, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
||||||
tsoperator.SetDNSConfigCondition(dnsCfg, tsapi.NameserverReady, status, reason, message, dnsCfg.Generation, a.clock, logger)
|
tsoperator.SetDNSConfigCondition(dnsCfg, tsapi.NameserverReady, status, reason, message, dnsCfg.Generation, a.clock, logger)
|
||||||
if !apiequality.Semantic.DeepEqual(oldCnStatus, dnsCfg.Status) {
|
if !apiequality.Semantic.DeepEqual(oldCnStatus, &dnsCfg.Status) {
|
||||||
// An error encountered here should get returned by the Reconcile function.
|
// An error encountered here should get returned by the Reconcile function.
|
||||||
if updateErr := a.Client.Status().Update(ctx, dnsCfg); updateErr != nil {
|
if updateErr := a.Client.Status().Update(ctx, dnsCfg); updateErr != nil {
|
||||||
err = errors.Wrap(err, updateErr.Error())
|
err = errors.Wrap(err, updateErr.Error())
|
||||||
@ -118,7 +118,7 @@ func (a *NameserverReconciler) Reconcile(ctx context.Context, req reconcile.Requ
|
|||||||
msg := "invalid cluster configuration: more than one tailscale.com/dnsconfigs found. Please ensure that no more than one is created."
|
msg := "invalid cluster configuration: more than one tailscale.com/dnsconfigs found. Please ensure that no more than one is created."
|
||||||
logger.Error(msg)
|
logger.Error(msg)
|
||||||
a.recorder.Event(&dnsCfg, corev1.EventTypeWarning, reasonMultipleDNSConfigsPresent, messageMultipleDNSConfigsPresent)
|
a.recorder.Event(&dnsCfg, corev1.EventTypeWarning, reasonMultipleDNSConfigsPresent, messageMultipleDNSConfigsPresent)
|
||||||
setStatus(&dnsCfg, tsapi.NameserverReady, metav1.ConditionFalse, reasonMultipleDNSConfigsPresent, messageMultipleDNSConfigsPresent)
|
setStatus(&dnsCfg, metav1.ConditionFalse, reasonMultipleDNSConfigsPresent, messageMultipleDNSConfigsPresent)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !slices.Contains(dnsCfg.Finalizers, FinalizerName) {
|
if !slices.Contains(dnsCfg.Finalizers, FinalizerName) {
|
||||||
@ -127,7 +127,7 @@ func (a *NameserverReconciler) Reconcile(ctx context.Context, req reconcile.Requ
|
|||||||
if err := a.Update(ctx, &dnsCfg); err != nil {
|
if err := a.Update(ctx, &dnsCfg); err != nil {
|
||||||
msg := fmt.Sprintf(messageNameserverCreationFailed, err)
|
msg := fmt.Sprintf(messageNameserverCreationFailed, err)
|
||||||
logger.Error(msg)
|
logger.Error(msg)
|
||||||
return setStatus(&dnsCfg, tsapi.NameserverReady, metav1.ConditionFalse, reasonNameserverCreationFailed, msg)
|
return setStatus(&dnsCfg, metav1.ConditionFalse, reasonNameserverCreationFailed, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := a.maybeProvision(ctx, &dnsCfg, logger); err != nil {
|
if err := a.maybeProvision(ctx, &dnsCfg, logger); err != nil {
|
||||||
@ -149,7 +149,7 @@ func (a *NameserverReconciler) Reconcile(ctx context.Context, req reconcile.Requ
|
|||||||
dnsCfg.Status.Nameserver = &tsapi.NameserverStatus{
|
dnsCfg.Status.Nameserver = &tsapi.NameserverStatus{
|
||||||
IP: ip,
|
IP: ip,
|
||||||
}
|
}
|
||||||
return setStatus(&dnsCfg, tsapi.NameserverReady, metav1.ConditionTrue, reasonNameserverCreated, reasonNameserverCreated)
|
return setStatus(&dnsCfg, metav1.ConditionTrue, reasonNameserverCreated, reasonNameserverCreated)
|
||||||
}
|
}
|
||||||
logger.Info("nameserver Service does not have an IP address allocated, waiting...")
|
logger.Info("nameserver Service does not have an IP address allocated, waiting...")
|
||||||
return reconcile.Result{}, nil
|
return reconcile.Result{}, nil
|
||||||
@ -188,7 +188,7 @@ func (a *NameserverReconciler) maybeProvision(ctx context.Context, tsDNSCfg *tsa
|
|||||||
// maybeCleanup removes DNSConfig from being tracked. The cluster resources
|
// maybeCleanup removes DNSConfig from being tracked. The cluster resources
|
||||||
// created, will be automatically garbage collected as they are owned by the
|
// created, will be automatically garbage collected as they are owned by the
|
||||||
// DNSConfig.
|
// DNSConfig.
|
||||||
func (a *NameserverReconciler) maybeCleanup(ctx context.Context, dnsCfg *tsapi.DNSConfig, logger *zap.SugaredLogger) error {
|
func (a *NameserverReconciler) maybeCleanup(dnsCfg *tsapi.DNSConfig) error {
|
||||||
a.mu.Lock()
|
a.mu.Lock()
|
||||||
a.managedNameservers.Remove(dnsCfg.UID)
|
a.managedNameservers.Remove(dnsCfg.UID)
|
||||||
a.mu.Unlock()
|
a.mu.Unlock()
|
||||||
|
@ -103,7 +103,7 @@ func (pcr *ProxyClassReconciler) Reconcile(ctx context.Context, req reconcile.Re
|
|||||||
} else {
|
} else {
|
||||||
tsoperator.SetProxyClassCondition(pc, tsapi.ProxyClassReady, metav1.ConditionTrue, reasonProxyClassValid, reasonProxyClassValid, pc.Generation, pcr.clock, logger)
|
tsoperator.SetProxyClassCondition(pc, tsapi.ProxyClassReady, metav1.ConditionTrue, reasonProxyClassValid, reasonProxyClassValid, pc.Generation, pcr.clock, logger)
|
||||||
}
|
}
|
||||||
if !apiequality.Semantic.DeepEqual(oldPCStatus, pc.Status) {
|
if !apiequality.Semantic.DeepEqual(oldPCStatus, &pc.Status) {
|
||||||
if err := pcr.Client.Status().Update(ctx, pc); err != nil {
|
if err := pcr.Client.Status().Update(ctx, pc); err != nil {
|
||||||
logger.Errorf("error updating ProxyClass status: %v", err)
|
logger.Errorf("error updating ProxyClass status: %v", err)
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
|
@ -110,7 +110,7 @@ func (r *ProxyGroupReconciler) Reconcile(ctx context.Context, req reconcile.Requ
|
|||||||
oldPGStatus := pg.Status.DeepCopy()
|
oldPGStatus := pg.Status.DeepCopy()
|
||||||
setStatusReady := func(pg *tsapi.ProxyGroup, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
setStatusReady := func(pg *tsapi.ProxyGroup, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
||||||
tsoperator.SetProxyGroupCondition(pg, tsapi.ProxyGroupReady, status, reason, message, pg.Generation, r.clock, logger)
|
tsoperator.SetProxyGroupCondition(pg, tsapi.ProxyGroupReady, status, reason, message, pg.Generation, r.clock, logger)
|
||||||
if !apiequality.Semantic.DeepEqual(oldPGStatus, pg.Status) {
|
if !apiequality.Semantic.DeepEqual(oldPGStatus, &pg.Status) {
|
||||||
// An error encountered here should get returned by the Reconcile function.
|
// An error encountered here should get returned by the Reconcile function.
|
||||||
if updateErr := r.Client.Status().Update(ctx, pg); updateErr != nil {
|
if updateErr := r.Client.Status().Update(ctx, pg); updateErr != nil {
|
||||||
err = errors.Wrap(err, updateErr.Error())
|
err = errors.Wrap(err, updateErr.Error())
|
||||||
|
@ -131,7 +131,7 @@ func (a *ServiceReconciler) Reconcile(ctx context.Context, req reconcile.Request
|
|||||||
func (a *ServiceReconciler) maybeCleanup(ctx context.Context, logger *zap.SugaredLogger, svc *corev1.Service) (err error) {
|
func (a *ServiceReconciler) maybeCleanup(ctx context.Context, logger *zap.SugaredLogger, svc *corev1.Service) (err error) {
|
||||||
oldSvcStatus := svc.Status.DeepCopy()
|
oldSvcStatus := svc.Status.DeepCopy()
|
||||||
defer func() {
|
defer func() {
|
||||||
if !apiequality.Semantic.DeepEqual(oldSvcStatus, svc.Status) {
|
if !apiequality.Semantic.DeepEqual(oldSvcStatus, &svc.Status) {
|
||||||
// An error encountered here should get returned by the Reconcile function.
|
// An error encountered here should get returned by the Reconcile function.
|
||||||
err = errors.Join(err, a.Client.Status().Update(ctx, svc))
|
err = errors.Join(err, a.Client.Status().Update(ctx, svc))
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ func (a *ServiceReconciler) maybeCleanup(ctx context.Context, logger *zap.Sugare
|
|||||||
func (a *ServiceReconciler) maybeProvision(ctx context.Context, logger *zap.SugaredLogger, svc *corev1.Service) (err error) {
|
func (a *ServiceReconciler) maybeProvision(ctx context.Context, logger *zap.SugaredLogger, svc *corev1.Service) (err error) {
|
||||||
oldSvcStatus := svc.Status.DeepCopy()
|
oldSvcStatus := svc.Status.DeepCopy()
|
||||||
defer func() {
|
defer func() {
|
||||||
if !apiequality.Semantic.DeepEqual(oldSvcStatus, svc.Status) {
|
if !apiequality.Semantic.DeepEqual(oldSvcStatus, &svc.Status) {
|
||||||
// An error encountered here should get returned by the Reconcile function.
|
// An error encountered here should get returned by the Reconcile function.
|
||||||
err = errors.Join(err, a.Client.Status().Update(ctx, svc))
|
err = errors.Join(err, a.Client.Status().Update(ctx, svc))
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ func (r *RecorderReconciler) Reconcile(ctx context.Context, req reconcile.Reques
|
|||||||
oldTSRStatus := tsr.Status.DeepCopy()
|
oldTSRStatus := tsr.Status.DeepCopy()
|
||||||
setStatusReady := func(tsr *tsapi.Recorder, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
setStatusReady := func(tsr *tsapi.Recorder, status metav1.ConditionStatus, reason, message string) (reconcile.Result, error) {
|
||||||
tsoperator.SetRecorderCondition(tsr, tsapi.RecorderReady, status, reason, message, tsr.Generation, r.clock, logger)
|
tsoperator.SetRecorderCondition(tsr, tsapi.RecorderReady, status, reason, message, tsr.Generation, r.clock, logger)
|
||||||
if !apiequality.Semantic.DeepEqual(oldTSRStatus, tsr.Status) {
|
if !apiequality.Semantic.DeepEqual(oldTSRStatus, &tsr.Status) {
|
||||||
// An error encountered here should get returned by the Reconcile function.
|
// An error encountered here should get returned by the Reconcile function.
|
||||||
if updateErr := r.Client.Status().Update(ctx, tsr); updateErr != nil {
|
if updateErr := r.Client.Status().Update(ctx, tsr); updateErr != nil {
|
||||||
err = errors.Wrap(err, updateErr.Error())
|
err = errors.Wrap(err, updateErr.Error())
|
||||||
|
Loading…
Reference in New Issue
Block a user