in internal/manifests/collector/configmap.go [19:97]
func ConfigMaps(params manifests.Params) ([]*corev1.ConfigMap, error) {
var configmaps []*corev1.ConfigMap
name := naming.ConfigMap(params.OtelCol.Name)
labels := manifestutils.Labels(params.OtelCol.ObjectMeta, name, params.OtelCol.Spec.Image, ComponentAmazonCloudWatchAgent, []string{})
replacedConf, err := ReplaceConfig(params.OtelCol)
if err != nil {
params.Log.V(2).Info("failed to update config: ", "err", err)
return nil, err
}
sourceDataMap := map[string]string{
params.Config.CollectorConfigMapEntry(): replacedConf,
}
if params.OtelCol.Spec.OtelConfig != "" {
replacedOtelConfig, err := ReplaceOtelConfig(params.OtelCol)
if err != nil {
params.Log.V(2).Info("failed to update otel config: ", "err", err)
return nil, err
}
sourceDataMap[params.Config.OtelCollectorConfigMapEntry()] = replacedOtelConfig
}
configmaps = append(configmaps, &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: params.OtelCol.Namespace,
Labels: labels,
Annotations: params.OtelCol.Annotations,
},
Data: sourceDataMap,
})
if !params.OtelCol.Spec.Prometheus.IsEmpty() {
promName := naming.PrometheusConfigMap(params.OtelCol.Name)
promLabels := manifestutils.Labels(params.OtelCol.ObjectMeta, promName, "", ComponentAmazonCloudWatchAgent, []string{})
replacedPrometheusConf, err := ReplacePrometheusConfig(params.OtelCol)
if err != nil {
params.Log.V(2).Info("failed to update prometheus config to use sharded targets: ", "err", err)
return nil, err
}
if !params.OtelCol.Spec.TargetAllocator.Enabled {
replacedPrometheusConfig, err := adapters.ConfigFromString(replacedPrometheusConf)
if err != nil {
return nil, err
}
replacedPrometheusConfProp, ok := replacedPrometheusConfig["config"]
if !ok {
return nil, fmt.Errorf("no prometheusConfig available as part of the configuration")
}
replacedPrometheusConfPropYAML, err := yaml.Marshal(replacedPrometheusConfProp)
if err != nil {
return nil, err
}
replacedPrometheusConf = string(replacedPrometheusConfPropYAML)
}
configmaps = append(configmaps, &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: promName,
Namespace: params.OtelCol.Namespace,
Labels: promLabels,
Annotations: params.OtelCol.Annotations,
},
Data: map[string]string{
params.Config.PrometheusConfigMapEntry(): replacedPrometheusConf,
},
})
}
return configmaps, nil
}