func()

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
}