in operator/controllers/operator/eventexporter_controller.go [105:157]
func (r *EventExporterReconciler) overlayData(ctx context.Context, log logr.Logger,
eventExporter *operatorv1alpha1.EventExporter, newConfigMapName string) (changed bool, err error) {
oldConfigMapName := eventExporter.Status.ConfigMapName
if oldConfigMapName == newConfigMapName {
log.Info("eventexporter configuration keeps the same as before")
return false, nil
}
newConfigMap := core.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Namespace: eventExporter.Namespace,
Name: newConfigMapName,
OwnerReferences: []metav1.OwnerReference{
{
APIVersion: eventExporter.APIVersion,
Kind: eventExporter.Kind,
Name: eventExporter.Name,
UID: eventExporter.UID,
},
},
Labels: map[string]string{
"app": "eventexporter",
"operator.skywalking.apache.org/eventexporter-name": eventExporter.Name,
"operator.skywalking.apache.org/application": "eventexporter",
"operator.skywalking.apache.org/component": "configmap",
},
},
Immutable: &useImmutableConfigMap,
Data: map[string]string{"config.yaml": eventExporter.Spec.Config},
}
if err = r.Client.Create(ctx, &newConfigMap); err != nil {
log.Error(err, "failed to create eventexporter's configmap")
return true, err
}
oldConfigMap := core.ConfigMap{}
err = r.Client.Get(ctx, client.ObjectKey{Namespace: eventExporter.Namespace, Name: oldConfigMapName}, &oldConfigMap)
if err != nil && !apierrors.IsNotFound(err) {
log.Error(err, "failed to get the eventexporter's configmap")
return true, err
}
if !apierrors.IsNotFound(err) {
if err = r.Client.Delete(ctx, &oldConfigMap); err != nil {
log.Error(err, "failed to delete eventexporter's configmap")
return true, err
}
}
return true, nil
}