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
}