func()

in shardingsphere-operator/pkg/controllers/proxyconfig_controller.go [54:107]


func (r *ProxyConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
	logger := r.Log.WithValues(proxyConfigControllerName, req.NamespacedName)

	run := &shardingspherev1alpha1.ShardingSphereProxyServerConfig{}
	err := r.Get(ctx, req.NamespacedName, run)
	if apierrors.IsNotFound(err) {
		logger.Info("Resource in work queue no longer exists!")
		return ctrl.Result{}, nil
	} else if err != nil {
		logger.Error(err, "Error getting CRD resource")
		return ctrl.Result{}, err
	}

	cm := &v1.ConfigMap{}
	configmap := reconcile.ConstructCascadingConfigmap(run)
	err = r.Get(ctx, req.NamespacedName, cm)
	if apierrors.IsNotFound(err) {
		logger.Info("Creating cascaded configmap")
		err = r.Create(ctx, configmap)
		if err != nil {
			logger.Error(err, "Error creating cascaded configmap")
			return ctrl.Result{}, err
		}
		run.SetMetadataRepository(run.Spec.ClusterConfig.Repository.Type)
		err = r.Status().Update(ctx, run)
		if err != nil {
			logger.Error(err, "Error updating CRD resource status")
			return ctrl.Result{}, err
		}
		return ctrl.Result{}, nil
	} else if err != nil {
		logger.Error(err, "Error getting cascaded configmap")
		return ctrl.Result{}, err
	}

	if !equality.Semantic.DeepEqual(configmap.Data, cm.Data) {
		cm = configmap
		logger.Info("Update or correct the configmap")
		err = r.Update(ctx, configmap)
		if err != nil {
			logger.Error(err, "Error updating cascaded configmap")
			return ctrl.Result{Requeue: true}, err
		}
	}
	if run.Status.MetadataRepository != run.Spec.ClusterConfig.Repository.Type || run.Status.MetadataRepository == "" {
		run.SetMetadataRepository(run.Spec.ClusterConfig.Repository.Type)
		err = r.Status().Update(ctx, run)
		if err != nil {
			logger.Error(err, "Error updating CRD resource status")
			return ctrl.Result{}, err
		}
	}
	return ctrl.Result{}, nil
}