Skip to content

Commit aa5b65a

Browse files
SylvainJugetrask
andauthored
Inline incubating attributes + central semconv-incubating dependency (open-telemetry#1298)
Co-authored-by: Trask Stalnaker <[email protected]>
1 parent 516aed9 commit aa5b65a

File tree

25 files changed

+253
-101
lines changed

25 files changed

+253
-101
lines changed

aws-resources/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ dependencies {
1212
api("io.opentelemetry:opentelemetry-sdk")
1313

1414
implementation("io.opentelemetry.semconv:opentelemetry-semconv")
15-
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.25.0-alpha")
15+
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
1616

1717
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
1818

aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/BeanstalkResource.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
package io.opentelemetry.contrib.aws.resource;
77

8+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
9+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
10+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_ELASTIC_BEANSTALK;
11+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
12+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.SERVICE_INSTANCE_ID;
13+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.SERVICE_NAMESPACE;
814
import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_VERSION;
9-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
10-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
11-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_ELASTIC_BEANSTALK;
12-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
13-
import static io.opentelemetry.semconv.incubating.ServiceIncubatingAttributes.SERVICE_INSTANCE_ID;
14-
import static io.opentelemetry.semconv.incubating.ServiceIncubatingAttributes.SERVICE_NAMESPACE;
1515

1616
import com.fasterxml.jackson.core.JsonFactory;
1717
import com.fasterxml.jackson.core.JsonParser;

aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/CloudResourceProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
package io.opentelemetry.contrib.aws.resource;
77

8-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
8+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
99

1010
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1111
import io.opentelemetry.sdk.autoconfigure.spi.internal.ConditionalResourceProvider;

aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/Ec2Resource.java

+11-12
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55

66
package io.opentelemetry.contrib.aws.resource;
77

8-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_ACCOUNT_ID;
9-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
10-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
11-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
12-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
13-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_EC2;
14-
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_ID;
15-
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_IMAGE_ID;
16-
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_NAME;
17-
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_TYPE;
8+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_ACCOUNT_ID;
9+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
10+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
11+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
12+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_REGION;
13+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_EC2;
14+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_ID;
15+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_IMAGE_ID;
16+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_NAME;
17+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_TYPE;
1818

1919
import com.fasterxml.jackson.core.JsonFactory;
2020
import com.fasterxml.jackson.core.JsonParser;
@@ -23,7 +23,6 @@
2323
import io.opentelemetry.api.common.AttributesBuilder;
2424
import io.opentelemetry.sdk.resources.Resource;
2525
import io.opentelemetry.semconv.SchemaUrls;
26-
import io.opentelemetry.semconv.incubating.CloudIncubatingAttributes;
2726
import java.io.IOException;
2827
import java.net.MalformedURLException;
2928
import java.net.URL;
@@ -90,7 +89,7 @@ static Resource buildResource(String endpoint) {
9089
String hostname = fetchHostname(hostnameUrl, token);
9190

9291
AttributesBuilder attrBuilders = Attributes.builder();
93-
attrBuilders.put(CLOUD_PROVIDER, CloudIncubatingAttributes.CloudProviderValues.AWS);
92+
attrBuilders.put(CLOUD_PROVIDER, IncubatingAttributes.CloudProviderValues.AWS);
9493
attrBuilders.put(CLOUD_PLATFORM, AWS_EC2);
9594

9695
try (JsonParser parser = JSON_FACTORY.createParser(identity)) {

aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/EcsResource.java

+20-20
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,26 @@
55

66
package io.opentelemetry.contrib.aws.resource;
77

8-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_CONTAINER_ARN;
9-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_LAUNCHTYPE;
10-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_TASK_ARN;
11-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_TASK_FAMILY;
12-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_TASK_REVISION;
13-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_GROUP_ARNS;
14-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_GROUP_NAMES;
15-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_STREAM_ARNS;
16-
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_STREAM_NAMES;
17-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_ACCOUNT_ID;
18-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
19-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
20-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
21-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
22-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_RESOURCE_ID;
23-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_ECS;
24-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
25-
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_ID;
26-
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_IMAGE_NAME;
27-
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_NAME;
8+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_CONTAINER_ARN;
9+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_LAUNCHTYPE;
10+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_TASK_ARN;
11+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_TASK_FAMILY;
12+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_TASK_REVISION;
13+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_GROUP_ARNS;
14+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_GROUP_NAMES;
15+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_STREAM_ARNS;
16+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_STREAM_NAMES;
17+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_ACCOUNT_ID;
18+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
19+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
20+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
21+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_REGION;
22+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_RESOURCE_ID;
23+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_ID;
24+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_IMAGE_NAME;
25+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_NAME;
26+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_ECS;
27+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
2828

2929
import com.fasterxml.jackson.core.JsonFactory;
3030
import com.fasterxml.jackson.core.JsonParser;

aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/EksResource.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55

66
package io.opentelemetry.contrib.aws.resource;
77

8-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
9-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
10-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_EKS;
11-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
12-
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_ID;
13-
import static io.opentelemetry.semconv.incubating.K8sIncubatingAttributes.K8S_CLUSTER_NAME;
8+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
9+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
10+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_ID;
11+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_EKS;
12+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
13+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.K8S_CLUSTER_NAME;
1414

1515
import com.fasterxml.jackson.core.JsonFactory;
1616
import com.fasterxml.jackson.core.JsonParser;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.contrib.aws.resource;
7+
8+
import io.opentelemetry.api.common.AttributeKey;
9+
import java.util.List;
10+
11+
/**
12+
* Inlines incubating attributes until they are stable, doing this prevents having a direct
13+
* dependency on incubating artifact which can conflict with another incubating version.
14+
*/
15+
class IncubatingAttributes {
16+
private IncubatingAttributes() {}
17+
18+
public static final AttributeKey<String> CLOUD_ACCOUNT_ID =
19+
AttributeKey.stringKey("cloud.account.id");
20+
public static final AttributeKey<String> CLOUD_AVAILABILITY_ZONE =
21+
AttributeKey.stringKey("cloud.availability_zone");
22+
public static final AttributeKey<String> CLOUD_PLATFORM =
23+
AttributeKey.stringKey("cloud.platform");
24+
public static final AttributeKey<String> CLOUD_PROVIDER =
25+
AttributeKey.stringKey("cloud.provider");
26+
public static final AttributeKey<String> CLOUD_REGION = AttributeKey.stringKey("cloud.region");
27+
public static final AttributeKey<String> CLOUD_RESOURCE_ID =
28+
AttributeKey.stringKey("cloud.resource_id");
29+
30+
public static final class CloudPlatformValues {
31+
public static final String AWS_EC2 = "aws_ec2";
32+
public static final String AWS_ECS = "aws_ecs";
33+
public static final String AWS_EKS = "aws_eks";
34+
public static final String AWS_LAMBDA = "aws_lambda";
35+
public static final String AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk";
36+
37+
private CloudPlatformValues() {}
38+
}
39+
40+
public static final class CloudProviderValues {
41+
public static final String AWS = "aws";
42+
43+
private CloudProviderValues() {}
44+
}
45+
46+
public static final AttributeKey<String> SERVICE_INSTANCE_ID =
47+
AttributeKey.stringKey("service.instance.id");
48+
public static final AttributeKey<String> SERVICE_NAMESPACE =
49+
AttributeKey.stringKey("service.namespace");
50+
51+
public static final AttributeKey<String> HOST_ID = AttributeKey.stringKey("host.id");
52+
public static final AttributeKey<String> HOST_IMAGE_ID = AttributeKey.stringKey("host.image.id");
53+
public static final AttributeKey<String> HOST_NAME = AttributeKey.stringKey("host.name");
54+
public static final AttributeKey<String> HOST_TYPE = AttributeKey.stringKey("host.type");
55+
56+
public static final AttributeKey<String> CONTAINER_ID = AttributeKey.stringKey("container.id");
57+
public static final AttributeKey<String> CONTAINER_IMAGE_NAME =
58+
AttributeKey.stringKey("container.image.name");
59+
public static final AttributeKey<String> CONTAINER_NAME =
60+
AttributeKey.stringKey("container.name");
61+
62+
public static final AttributeKey<String> K8S_CLUSTER_NAME =
63+
AttributeKey.stringKey("k8s.cluster.name");
64+
65+
public static final AttributeKey<String> AWS_ECS_CONTAINER_ARN =
66+
AttributeKey.stringKey("aws.ecs.container.arn");
67+
public static final AttributeKey<String> AWS_ECS_LAUNCHTYPE =
68+
AttributeKey.stringKey("aws.ecs.launchtype");
69+
public static final AttributeKey<String> AWS_ECS_TASK_ARN =
70+
AttributeKey.stringKey("aws.ecs.task.arn");
71+
public static final AttributeKey<String> AWS_ECS_TASK_FAMILY =
72+
AttributeKey.stringKey("aws.ecs.task.family");
73+
public static final AttributeKey<String> AWS_ECS_TASK_REVISION =
74+
AttributeKey.stringKey("aws.ecs.task.revision");
75+
public static final AttributeKey<List<String>> AWS_LOG_GROUP_ARNS =
76+
AttributeKey.stringArrayKey("aws.log.group.arns");
77+
public static final AttributeKey<List<String>> AWS_LOG_GROUP_NAMES =
78+
AttributeKey.stringArrayKey("aws.log.group.names");
79+
public static final AttributeKey<List<String>> AWS_LOG_STREAM_ARNS =
80+
AttributeKey.stringArrayKey("aws.log.stream.arns");
81+
public static final AttributeKey<List<String>> AWS_LOG_STREAM_NAMES =
82+
AttributeKey.stringArrayKey("aws.log.stream.names");
83+
84+
public static final AttributeKey<String> FAAS_NAME = AttributeKey.stringKey("faas.name");
85+
public static final AttributeKey<String> FAAS_VERSION = AttributeKey.stringKey("faas.version");
86+
}

aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/LambdaResource.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
package io.opentelemetry.contrib.aws.resource;
77

8-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
9-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
10-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
11-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_LAMBDA;
12-
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
13-
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_NAME;
14-
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_VERSION;
8+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
9+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
10+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_REGION;
11+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_LAMBDA;
12+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
13+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.FAAS_NAME;
14+
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.FAAS_VERSION;
1515

1616
import io.opentelemetry.api.common.Attributes;
1717
import io.opentelemetry.api.common.AttributesBuilder;

dependencyManagement/build.gradle.kts

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ val errorProneVersion = "2.27.1"
2323
val prometheusVersion = "0.16.0"
2424
val mockitoVersion = "4.11.0"
2525
val slf4jVersion = "2.0.13"
26+
val semConvVersion = "1.25.0-alpha"
2627

2728
val CORE_DEPENDENCIES = listOf(
2829
"com.google.auto.service:auto-service:${autoServiceVersion}",
@@ -33,6 +34,8 @@ val CORE_DEPENDENCIES = listOf(
3334
"com.google.errorprone:error_prone_core:${errorProneVersion}",
3435
"io.github.netmikey.logunit:logunit-jul:2.0.0",
3536
"io.opentelemetry.proto:opentelemetry-proto:1.0.0-alpha",
37+
"io.opentelemetry.semconv:opentelemetry-semconv:${semConvVersion}",
38+
"io.opentelemetry.semconv:opentelemetry-semconv-incubating:${semConvVersion}",
3639
"io.prometheus:simpleclient:${prometheusVersion}",
3740
"io.prometheus:simpleclient_common:${prometheusVersion}",
3841
"io.prometheus:simpleclient_httpserver:${prometheusVersion}",

gcp-resources/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies {
1515
implementation("com.google.cloud.opentelemetry:detector-resources-support:0.29.0")
1616

1717
implementation("io.opentelemetry.semconv:opentelemetry-semconv")
18-
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.25.0-alpha")
18+
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
1919

2020
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
2121

0 commit comments

Comments
 (0)