diff --git a/.chloggen/jackgopack4-create-service-hostcapabilities-module.yaml b/.chloggen/jackgopack4-create-service-hostcapabilities-module.yaml new file mode 100644 index 00000000000..0e1a1bbb654 --- /dev/null +++ b/.chloggen/jackgopack4-create-service-hostcapabilities-module.yaml @@ -0,0 +1,28 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: new_component + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: service/hostcapabilities + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: create `service/hostcapabilities` module + +# One or more tracking issues or pull requests related to the change +issues: [12296, 12375] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: | + Removes getExporters interface in service/internal/graph. + Removes getModuleInfos interface in service/internal/graph. + Creates interface ExposeExporters in service/hostcapabilities to expose GetExporters function. + Creates interface ModuleInfo in service/hostcapabilities to expose GetModuleInfos function. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] diff --git a/cmd/builder/internal/builder/main_test.go b/cmd/builder/internal/builder/main_test.go index 178f0afb6b2..e36e83ae745 100644 --- a/cmd/builder/internal/builder/main_test.go +++ b/cmd/builder/internal/builder/main_test.go @@ -105,6 +105,7 @@ var replaceModules = []string{ "/receiver/xreceiver", "/semconv", "/service", + "/service/hostcapabilities", } func newTestConfig(tb testing.TB) *Config { diff --git a/cmd/otelcorecol/builder-config.yaml b/cmd/otelcorecol/builder-config.yaml index 794edec135d..191da5a00ce 100644 --- a/cmd/otelcorecol/builder-config.yaml +++ b/cmd/otelcorecol/builder-config.yaml @@ -106,3 +106,4 @@ replaces: - go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xreceiver - go.opentelemetry.io/collector/semconv => ../../semconv - go.opentelemetry.io/collector/service => ../../service + - go.opentelemetry.io/collector/service/hostcapabilities => ../../service/hostcapabilities diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index cfd7723f36a..e8bccdc2e43 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -124,6 +124,7 @@ require ( go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 // indirect go.opentelemetry.io/collector/semconv v0.120.0 // indirect go.opentelemetry.io/collector/service v0.120.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.120.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 // indirect go.opentelemetry.io/contrib/config v0.14.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect @@ -299,3 +300,5 @@ replace go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xrece replace go.opentelemetry.io/collector/semconv => ../../semconv replace go.opentelemetry.io/collector/service => ../../service + +replace go.opentelemetry.io/collector/service/hostcapabilities => ../../service/hostcapabilities diff --git a/internal/e2e/go.mod b/internal/e2e/go.mod index e846474c0fc..f18e77b3481 100644 --- a/internal/e2e/go.mod +++ b/internal/e2e/go.mod @@ -102,6 +102,7 @@ require ( go.opentelemetry.io/collector/processor/xprocessor v0.120.0 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 // indirect go.opentelemetry.io/collector/semconv v0.120.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.120.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 // indirect go.opentelemetry.io/contrib/config v0.14.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect @@ -253,3 +254,5 @@ replace go.opentelemetry.io/collector/otelcol => ../../otelcol replace go.opentelemetry.io/collector/confmap/provider/yamlprovider => ../../confmap/provider/yamlprovider replace go.opentelemetry.io/collector/confmap/provider/fileprovider => ../../confmap/provider/fileprovider + +replace go.opentelemetry.io/collector/service/hostcapabilities => ../../service/hostcapabilities diff --git a/otelcol/go.mod b/otelcol/go.mod index fe4a17c6819..f69f1732cd8 100644 --- a/otelcol/go.mod +++ b/otelcol/go.mod @@ -90,6 +90,7 @@ require ( go.opentelemetry.io/collector/processor/xprocessor v0.120.0 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 // indirect go.opentelemetry.io/collector/semconv v0.120.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.120.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.34.0 // indirect go.opentelemetry.io/otel v1.34.0 // indirect @@ -123,6 +124,8 @@ replace go.opentelemetry.io/collector => ../ replace go.opentelemetry.io/collector/service => ../service +replace go.opentelemetry.io/collector/service/hostcapabilities => ../service/hostcapabilities + replace go.opentelemetry.io/collector/connector => ../connector replace go.opentelemetry.io/collector/connector/connectortest => ../connector/connectortest diff --git a/otelcol/otelcoltest/go.mod b/otelcol/otelcoltest/go.mod index 55374c1d91c..7bcabaaa59c 100644 --- a/otelcol/otelcoltest/go.mod +++ b/otelcol/otelcoltest/go.mod @@ -86,6 +86,7 @@ require ( go.opentelemetry.io/collector/receiver v0.120.0 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 // indirect go.opentelemetry.io/collector/semconv v0.120.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.120.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 // indirect go.opentelemetry.io/contrib/config v0.14.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.34.0 // indirect @@ -208,6 +209,8 @@ replace go.opentelemetry.io/collector/extension/zpagesextension => ../../extensi replace go.opentelemetry.io/collector/service => ../../service +replace go.opentelemetry.io/collector/service/hostcapabilities => ../../service/hostcapabilities + replace go.opentelemetry.io/collector/internal/fanoutconsumer => ../../internal/fanoutconsumer replace go.opentelemetry.io/collector/extension/extensiontest => ../../extension/extensiontest diff --git a/service/go.mod b/service/go.mod index 3e82c865572..a4f0d032d94 100644 --- a/service/go.mod +++ b/service/go.mod @@ -45,6 +45,7 @@ require ( go.opentelemetry.io/collector/receiver/receivertest v0.120.0 go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 go.opentelemetry.io/collector/semconv v0.120.0 + go.opentelemetry.io/collector/service/hostcapabilities v0.120.0 go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 go.opentelemetry.io/contrib/config v0.14.0 go.opentelemetry.io/contrib/propagators/b3 v1.34.0 @@ -173,6 +174,8 @@ replace go.opentelemetry.io/collector/consumer => ../consumer replace go.opentelemetry.io/collector/semconv => ../semconv +replace go.opentelemetry.io/collector/service/hostcapabilities => ./hostcapabilities + replace go.opentelemetry.io/collector/receiver => ../receiver replace go.opentelemetry.io/collector/featuregate => ../featuregate diff --git a/service/hostcapabilities/Makefile b/service/hostcapabilities/Makefile new file mode 100644 index 00000000000..ded7a36092d --- /dev/null +++ b/service/hostcapabilities/Makefile @@ -0,0 +1 @@ +include ../../Makefile.Common diff --git a/service/hostcapabilities/go.mod b/service/hostcapabilities/go.mod new file mode 100644 index 00000000000..b2bf3343aa2 --- /dev/null +++ b/service/hostcapabilities/go.mod @@ -0,0 +1,81 @@ +module go.opentelemetry.io/collector/service/hostcapabilities + +go 1.23.0 + +require ( + go.opentelemetry.io/collector/component v0.120.0 + go.opentelemetry.io/collector/pipeline v0.120.0 + go.opentelemetry.io/collector/service v0.119.0 +) + +require ( + github.com/gogo/protobuf v1.3.2 // indirect + go.opentelemetry.io/collector/pdata v1.26.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/grpc v1.70.0 // indirect + google.golang.org/protobuf v1.36.5 // indirect +) + +replace ( + go.opentelemetry.io/collector => ../.. + go.opentelemetry.io/collector/client => ../../client + go.opentelemetry.io/collector/component => ../../component + go.opentelemetry.io/collector/component/componentstatus => ../../component/componentstatus + go.opentelemetry.io/collector/component/componenttest => ../../component/componenttest + go.opentelemetry.io/collector/config/configauth => ../../config/configauth + go.opentelemetry.io/collector/config/configcompression => ../../config/configcompression + go.opentelemetry.io/collector/config/confighttp => ../../config/confighttp + go.opentelemetry.io/collector/config/configopaque => ../../config/configopaque + go.opentelemetry.io/collector/config/configretry => ../../config/configretry + go.opentelemetry.io/collector/config/configtelemetry => ../../config/configtelemetry + go.opentelemetry.io/collector/config/configtls => ../../config/configtls + go.opentelemetry.io/collector/confmap => ../../confmap + go.opentelemetry.io/collector/confmap/xconfmap => ../../confmap/xconfmap + go.opentelemetry.io/collector/connector => ../../connector + go.opentelemetry.io/collector/connector/connectortest => ../../connector/connectortest + go.opentelemetry.io/collector/connector/xconnector => ../../connector/xconnector + go.opentelemetry.io/collector/consumer => ../../consumer + go.opentelemetry.io/collector/consumer/consumererror => ../../consumer/consumererror + go.opentelemetry.io/collector/consumer/consumertest => ../../consumer/consumertest + go.opentelemetry.io/collector/consumer/xconsumer => ../../consumer/xconsumer + go.opentelemetry.io/collector/exporter => ../../exporter + go.opentelemetry.io/collector/exporter/exportertest => ../../exporter/exportertest + go.opentelemetry.io/collector/exporter/xexporter => ../../exporter/xexporter + go.opentelemetry.io/collector/extension => ../../extension + go.opentelemetry.io/collector/extension/auth => ../../extension/auth + go.opentelemetry.io/collector/extension/auth/authtest => ../../extension/auth/authtest + go.opentelemetry.io/collector/extension/extensioncapabilities => ../../extension/extensioncapabilities + go.opentelemetry.io/collector/extension/extensiontest => ../../extension/extensiontest + go.opentelemetry.io/collector/extension/xextension => ../../extension/xextension + go.opentelemetry.io/collector/extension/zpagesextension => ../../extension/zpagesextension + go.opentelemetry.io/collector/featuregate => ../../featuregate + go.opentelemetry.io/collector/internal/fanoutconsumer => ../../internal/fanoutconsumer + go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry + go.opentelemetry.io/collector/pdata => ../../pdata + go.opentelemetry.io/collector/pdata/pprofile => ../../pdata/pprofile + go.opentelemetry.io/collector/pdata/testdata => ../../pdata/testdata + go.opentelemetry.io/collector/pipeline => ../../pipeline + go.opentelemetry.io/collector/pipeline/xpipeline => ../../pipeline/xpipeline + go.opentelemetry.io/collector/processor => ../../processor + go.opentelemetry.io/collector/processor/processortest => ../../processor/processortest + go.opentelemetry.io/collector/processor/xprocessor => ../../processor/xprocessor + go.opentelemetry.io/collector/receiver => ../../receiver + go.opentelemetry.io/collector/receiver/receivertest => ../../receiver/receivertest + go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xreceiver + go.opentelemetry.io/collector/semconv => ../../semconv + go.opentelemetry.io/collector/service => .. +) + +replace go.opentelemetry.io/collector/otelcol => ../../otelcol + +replace go.opentelemetry.io/collector/confmap/provider/fileprovider => ../../confmap/provider/fileprovider + +replace go.opentelemetry.io/collector/confmap/provider/yamlprovider => ../../confmap/provider/yamlprovider diff --git a/service/hostcapabilities/go.sum b/service/hostcapabilities/go.sum new file mode 100644 index 00000000000..2c4d9093c54 --- /dev/null +++ b/service/hostcapabilities/go.sum @@ -0,0 +1,79 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/service/hostcapabilities/interfaces.go b/service/hostcapabilities/interfaces.go new file mode 100644 index 00000000000..b7a76d4500d --- /dev/null +++ b/service/hostcapabilities/interfaces.go @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Package hostcapabilities provides interfaces that can be implemented by the host +// to provide additional capabilities. +package hostcapabilities // import "go.opentelemetry.io/collector/service/hostcapabilities" + +import ( + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/pipeline" + "go.opentelemetry.io/collector/service/internal/moduleinfo" +) + +// ModuleInfo is an interface that may be implemented by the host to provide +// information about modules that were used to build the host. +type ModuleInfo interface { + // GetModuleInfos returns the module information for the host + // i.e. Receivers, Processors, Exporters, Extensions, and Connectors + GetModuleInfos() moduleinfo.ModuleInfos +} + +// ExposeExporters is an interface that may be implemented by the host to provide +// access to the exporters that were used to build the host. +// Deprecated: [v0.121.0] Will be removed in Service 1.0. +// See: https://github.com/open-telemetry/opentelemetry-collector/issues/7370 for service 1.0 +type ExposeExporters interface { + GetExporters() map[pipeline.Signal]map[component.ID]component.Component +} diff --git a/service/internal/graph/graph.go b/service/internal/graph/graph.go index 3f5ae33fd91..6fa2825ec80 100644 --- a/service/internal/graph/graph.go +++ b/service/internal/graph/graph.go @@ -33,6 +33,7 @@ import ( "go.opentelemetry.io/collector/internal/fanoutconsumer" "go.opentelemetry.io/collector/pipeline" "go.opentelemetry.io/collector/pipeline/xpipeline" + "go.opentelemetry.io/collector/service/hostcapabilities" "go.opentelemetry.io/collector/service/internal/builders" "go.opentelemetry.io/collector/service/internal/capabilityconsumer" "go.opentelemetry.io/collector/service/internal/status" @@ -604,9 +605,9 @@ func connectorStability(f connector.Factory, expType, recType pipeline.Signal) c } var ( - _ getExporters = (*HostWrapper)(nil) - _ component.Host = (*HostWrapper)(nil) - _ componentstatus.Reporter = (*HostWrapper)(nil) + _ component.Host = (*HostWrapper)(nil) + _ componentstatus.Reporter = (*HostWrapper)(nil) + _ hostcapabilities.ExposeExporters = (*HostWrapper)(nil) ) type HostWrapper struct { diff --git a/service/internal/graph/host.go b/service/internal/graph/host.go index 601cc3947f1..1a25e45e53b 100644 --- a/service/internal/graph/host.go +++ b/service/internal/graph/host.go @@ -14,27 +14,17 @@ import ( "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pipeline" "go.opentelemetry.io/collector/service/extensions" + "go.opentelemetry.io/collector/service/hostcapabilities" "go.opentelemetry.io/collector/service/internal/builders" "go.opentelemetry.io/collector/service/internal/moduleinfo" "go.opentelemetry.io/collector/service/internal/status" "go.opentelemetry.io/collector/service/internal/zpages" ) -// TODO: remove as part of https://github.com/open-telemetry/opentelemetry-collector/issues/7370 for service 1.0 -type getExporters interface { - GetExporters() map[pipeline.Signal]map[component.ID]component.Component -} - -// TODO: expose GetModuleInfo as part of a service/hostcapabilities package. -type getModuleInfos interface { - // GetModuleInfo returns the module information for the host. - GetModuleInfos() moduleinfo.ModuleInfos -} - var ( - _ getExporters = (*Host)(nil) - _ component.Host = (*Host)(nil) - _ getModuleInfos = (*Host)(nil) + _ component.Host = (*Host)(nil) + _ hostcapabilities.ModuleInfo = (*Host)(nil) + _ hostcapabilities.ExposeExporters = (*Host)(nil) ) type Host struct { diff --git a/versions.yaml b/versions.yaml index c03da2e8304..9bfd5937fbd 100644 --- a/versions.yaml +++ b/versions.yaml @@ -85,6 +85,7 @@ module-sets: - go.opentelemetry.io/collector/scraper/scrapertest - go.opentelemetry.io/collector/semconv - go.opentelemetry.io/collector/service + - go.opentelemetry.io/collector/service/hostcapabilities - go.opentelemetry.io/collector/filter excluded-modules: