func createMonitoredResource()

in internal/resourcemapping/resourcemapping.go [242:272]


func createMonitoredResource(
	monitoredResourceType string,
	resourceAttrs ReadOnlyAttributes,
) *monitoredrespb.MonitoredResource {
	mappings := monitoredResourceMappings[monitoredResourceType]
	mrLabels := make(map[string]string, len(mappings))

	for mrKey, mappingConfig := range mappings {
		mrValue := ""
		ok := false
		// Coalesce the possible keys in order
		for _, otelKey := range mappingConfig.otelKeys {
			mrValue, ok = resourceAttrs.GetString(otelKey)
			if mrValue != "" && !strings.HasPrefix(mrValue, unknownServicePrefix) {
				break
			}
		}
		if mrValue == "" && contains(mappingConfig.otelKeys, string(semconv.ServiceNameKey)) {
			// the service name started with unknown_service, and was ignored above
			mrValue, ok = resourceAttrs.GetString(string(semconv.ServiceNameKey))
		}
		if !ok || mrValue == "" {
			mrValue = mappingConfig.fallbackLiteral
		}
		mrLabels[mrKey] = sanitizeUTF8(mrValue)
	}
	return &monitoredrespb.MonitoredResource{
		Type:   monitoredResourceType,
		Labels: mrLabels,
	}
}