From 2eca9313c2f3e82c34137111408996216db895c2 Mon Sep 17 00:00:00 2001
From: jhrotko <joana.hrotko@docker.com>
Date: Thu, 8 Feb 2024 15:58:50 +0000
Subject: [PATCH] Add OTEL specs: build, depends_on, capabilities (gpu/tpu)

Signed-off-by: jhrotko <joana.hrotko@docker.com>
---
 go.mod                         | 2 +-
 go.sum                         | 4 ++--
 internal/tracing/attributes.go | 6 ++++++
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/go.mod b/go.mod
index f6bdcf6f7..48e24ba0f 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,7 @@ require (
 	github.com/AlecAivazis/survey/v2 v2.3.7
 	github.com/Microsoft/go-winio v0.6.1
 	github.com/buger/goterm v1.0.4
-	github.com/compose-spec/compose-go/v2 v2.0.0-rc.4
+	github.com/compose-spec/compose-go/v2 v2.0.0-rc.5
 	github.com/containerd/console v1.0.3
 	github.com/containerd/containerd v1.7.12
 	github.com/davecgh/go-spew v1.1.1
diff --git a/go.sum b/go.sum
index 2df8f7c9d..d9e35e6a4 100644
--- a/go.sum
+++ b/go.sum
@@ -86,8 +86,8 @@ github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+g
 github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
 github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
-github.com/compose-spec/compose-go/v2 v2.0.0-rc.4 h1:vVDWv1xm7Lqi7sEevU0Jk+T2huxNzf92lFhqKbn3sT8=
-github.com/compose-spec/compose-go/v2 v2.0.0-rc.4/go.mod h1:IbZsys5a7eFTsdcWvM3brnghkK7ctZwUSr7mCj5NXu0=
+github.com/compose-spec/compose-go/v2 v2.0.0-rc.5 h1:YoGsuVzxve1m5SdCfZqI8wJoMVZWu7SelHoqiCqb+iQ=
+github.com/compose-spec/compose-go/v2 v2.0.0-rc.5/go.mod h1:bEPizBkIojlQ20pi2vNluBa58tevvj0Y18oUSHPyfdc=
 github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
 github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
 github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=
diff --git a/internal/tracing/attributes.go b/internal/tracing/attributes.go
index a603ec910..5eb470c6c 100644
--- a/internal/tracing/attributes.go
+++ b/internal/tracing/attributes.go
@@ -61,6 +61,7 @@ func ProjectOptions(proj *types.Project) SpanOptions {
 		return nil
 	}
 
+	capabilities, gpu, tpu := proj.ServicesWithCapabilities()
 	attrs := []attribute.KeyValue{
 		attribute.String("project.name", proj.Name),
 		attribute.String("project.dir", proj.WorkingDir),
@@ -74,6 +75,11 @@ func ProjectOptions(proj *types.Project) SpanOptions {
 		attribute.StringSlice("project.configs", proj.ConfigNames()),
 		attribute.StringSlice("project.extensions", keys(proj.Extensions)),
 		attribute.StringSlice("project.includes", flattenIncludeReferences(proj.IncludeReferences)),
+		attribute.StringSlice("project.services.build", proj.ServicesWithBuild()),
+		attribute.StringSlice("project.services.depends_on", proj.ServicesWithDependsOn()),
+		attribute.StringSlice("project.services.capabilities", capabilities),
+		attribute.StringSlice("project.services.capabilities.gpu", gpu),
+		attribute.StringSlice("project.services.capabilities.tpu", tpu),
 	}
 	if projHash, ok := projectHash(proj); ok {
 		attrs = append(attrs, attribute.String("project.hash", projHash))