@@ -4,6 +4,9 @@ import com.intellij.execution.configurations.RunConfiguration
44import com.intellij.execution.configurations.RunnerSettings
55import com.intellij.execution.configurations.SimpleProgramParameters
66import com.intellij.openapi.module.Module
7+ import org.digma.intellij.plugin.analytics.LOCAL_ENV
8+ import org.digma.intellij.plugin.analytics.LOCAL_TESTS_ENV
9+ import org.digma.intellij.plugin.analytics.isCentralized
710import org.digma.intellij.plugin.errorreporting.ErrorReporter
811import org.digma.intellij.plugin.execution.RunConfigurationInstrumentationService
912import org.digma.intellij.plugin.idea.execution.JavaToolOptionsBuilder
@@ -16,6 +19,10 @@ import org.digma.intellij.plugin.idea.execution.getModuleMetadata
1619import org.digma.intellij.plugin.idea.execution.isMicrometerTracingInSettings
1720
1821
22+ private const val ENVIRONMENT_RESOURCE_ATTRIBUTE = " MANAGEMENT_OPENTELEMETRY_RESOURCE-ATTRIBUTES_digma_environment"
23+ private const val ENVIRONMENT_ID_RESOURCE_ATTRIBUTE = " MANAGEMENT_OPENTELEMETRY_RESOURCE-ATTRIBUTES_digma_environment_id"
24+
25+
1926// SpringBootMicrometerInstrumentationFlavor supports the same gradle/maven tasks as DefaultInstrumentationFlavor.
2027class SpringBootMicrometerInstrumentationFlavor : DefaultInstrumentationFlavor () {
2128
@@ -109,8 +116,24 @@ class SpringBootMicrometerInstrumentationFlavor : DefaultInstrumentationFlavor()
109116 return try {
110117 val isTest = isTest(instrumentationService, configuration, params)
111118
119+ if (needToAddDigmaEnvironmentAttribute(parametersExtractor)) {
120+ val envAttribute = if (isTest) {
121+ " $ENVIRONMENT_RESOURCE_ATTRIBUTE =$LOCAL_TESTS_ENV "
122+ } else {
123+ " $ENVIRONMENT_RESOURCE_ATTRIBUTE =$LOCAL_ENV "
124+ }
125+
126+ otelResourceAttributesBuilder.withOtelResourceAttribute(envAttribute)
127+ }
128+
129+ if (! hasEnvironmentIdAttribute(parametersExtractor) &&
130+ isCentralized(configuration.project)
131+ ) {
132+ otelResourceAttributesBuilder.withUserId()
133+ }
134+
112135 otelResourceAttributesBuilder
113- .withCommonResourceAttributes(isTest, parametersExtractor )
136+ .withScmCommitId( )
114137 .build()
115138
116139 } catch (e: Throwable ) {
@@ -120,6 +143,19 @@ class SpringBootMicrometerInstrumentationFlavor : DefaultInstrumentationFlavor()
120143 }
121144
122145
146+ private fun needToAddDigmaEnvironmentAttribute (parametersExtractor : ParametersExtractor ): Boolean {
147+ return ! hasEnvironmentAttribute(parametersExtractor) && ! hasEnvironmentIdAttribute(parametersExtractor)
148+ }
149+
150+ private fun hasEnvironmentAttribute (parametersExtractor : ParametersExtractor ): Boolean {
151+ return parametersExtractor.extractEnvValue(ENVIRONMENT_RESOURCE_ATTRIBUTE ) != null
152+ }
153+
154+ private fun hasEnvironmentIdAttribute (parametersExtractor : ParametersExtractor ): Boolean {
155+ return parametersExtractor.extractEnvValue(ENVIRONMENT_ID_RESOURCE_ATTRIBUTE ) != null
156+ }
157+
158+
123159 // actually not relevant because this flavor never calls withOtelAgent
124160 override fun useOtelAgent (): Boolean {
125161 return false
0 commit comments