in internal/controller/appconfigurationprovider_controller.go [373:421]
func (reconciler *AzureAppConfigurationProviderReconciler) createOrUpdateConfigMap(
ctx context.Context,
existingConfigMap *corev1.ConfigMap,
provider *acpv1.AzureAppConfigurationProvider,
settings *loader.TargetKeyValueSettings) (reconcile.Result, error) {
if !shouldCreateOrUpdateConfigMap(existingConfigMap, settings.ConfigMapSettings, provider.Spec.Target.ConfigMapData) {
klog.V(5).Infof("Skip updating the configMap %q in %q namespace since data is not changed", provider.Spec.Target.ConfigMapName, provider.Namespace)
return reconcile.Result{}, nil
}
configMapObj := &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: provider.Spec.Target.ConfigMapName,
Namespace: provider.Namespace,
},
}
// Important: set the ownership of configMap
if err := controllerutil.SetControllerReference(provider, configMapObj, reconciler.Scheme); err != nil {
reconciler.logAndSetFailStatus(provider, err)
return reconcile.Result{Requeue: true, RequeueAfter: RequeueReconcileAfter}, err
}
annotations := make(map[string]string)
maps.Copy(annotations, provider.Annotations)
annotations[LastReconcileTimeAnnotation] = metav1.Now().UTC().String()
if len(settings.ConfigMapSettings) == 0 {
klog.V(3).Info("No configMap settings are fetched from Azure AppConfiguration")
}
operationResult, err := ctrl.CreateOrUpdate(ctx, reconciler.Client, configMapObj, func() error {
configMapObj.Data = settings.ConfigMapSettings
configMapObj.Labels = provider.Labels
configMapObj.Annotations = annotations
return nil
})
if err != nil {
reconciler.logAndSetFailStatus(provider, err)
return reconcile.Result{Requeue: true, RequeueAfter: RequeueReconcileAfter}, err
}
namespacedName := types.NamespacedName{
Name: provider.Name,
Namespace: provider.Namespace,
}
reconciler.ProvidersReconcileState[namespacedName].ConfigMapResourceVersion = &configMapObj.ResourceVersion
klog.V(5).Infof("configMap %q in %q namespace is %s", configMapObj.Name, configMapObj.Namespace, string(operationResult))
return reconcile.Result{}, nil
}