diff --git a/exporter/stackstateexporter/config.go b/exporter/stackstateexporter/config.go deleted file mode 100644 index 4919beb..0000000 --- a/exporter/stackstateexporter/config.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright StackState B.V. -// SPDX-License-Identifier: Apache-2.0 -package stackstateexporter - -import ( - "fmt" - - "go.opentelemetry.io/collector/config/configopaque" - "go.opentelemetry.io/collector/exporter/exporterhelper" -) - -type Config struct { - exporterhelper.TimeoutSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct. - exporterhelper.QueueSettings `mapstructure:"sending_queue"` - - API APIConfig `mapstructure:"api"` - Hostname string `mapstructure:"hostname"` - Env string `mapstructure:"env"` -} - -func (c *Config) Validate() error { - if c.Hostname == "" { - return fmt.Errorf("hostname is required") - } - - if c.Env == "" { - return fmt.Errorf("env is required") - } - - if err := c.API.Validate(); err != nil { - return err - } - - return nil -} - -type APIConfig struct { - // Endpoint is the StackState endpoint to send data to. - Endpoint string `mapstructure:"endpoint"` - - // APIKey is the StackState API key to use for authentication. - APIKey configopaque.String `mapstructure:"api_key"` -} - -func (c *APIConfig) Validate() error { - if c.Endpoint == "" { - return fmt.Errorf("endpoint is required") - } - - if c.APIKey == "" { - return fmt.Errorf("api_key is required") - } - - return nil -} diff --git a/exporter/stackstateexporter/doc.go b/exporter/stackstateexporter/doc.go deleted file mode 100644 index 2ab8b0e..0000000 --- a/exporter/stackstateexporter/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -//go:generate mdatagen metadata.yaml -//go:generate protoc --proto_path=proto --go_out=. --go_opt=module=github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter proto/trace_payload.proto proto/trace.proto proto/span.proto -package stackstateexporter diff --git a/exporter/stackstateexporter/factory.go b/exporter/stackstateexporter/factory.go deleted file mode 100644 index 7527178..0000000 --- a/exporter/stackstateexporter/factory.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright StackState B.V. -// SPDX-License-Identifier: Apache-2.0 -package stackstateexporter - -import ( - "context" - "time" - - "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/internal/metadata" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/exporter" - "go.opentelemetry.io/collector/exporter/exporterhelper" -) - -const ( - typeStr = "stackstate" -) - -func NewFactory() exporter.Factory { - return exporter.NewFactory( - typeStr, - createDefaultConfig, - exporter.WithTraces(createTraceExporter, metadata.TracesStability), - ) -} - -func createDefaultConfig() component.Config { - return &Config{ - TimeoutSettings: exporterhelper.TimeoutSettings{ - Timeout: 15 * time.Second, - }, - QueueSettings: exporterhelper.NewDefaultQueueSettings(), - Env: "none", - } -} - -var _ exporter.CreateTracesFunc = createTraceExporter // compile-time check -func createTraceExporter(ctx context.Context, settings exporter.CreateSettings, cfg component.Config) (exporter.Traces, error) { - exp, err := newTraceExporter(ctx, settings.Logger, cfg) - if err != nil { - return nil, err - } - - return exporterhelper.NewTracesRequestExporter(ctx, settings, exp.RequestFromTraces) -} diff --git a/exporter/stackstateexporter/go.mod b/exporter/stackstateexporter/go.mod deleted file mode 100644 index 4320314..0000000 --- a/exporter/stackstateexporter/go.mod +++ /dev/null @@ -1,47 +0,0 @@ -module github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter - -go 1.21.6 - -require ( - github.com/go-resty/resty/v2 v2.11.0 - github.com/stackvista/sts-opentelemetry-collector/common v0.0.0 - go.opentelemetry.io/collector/component v0.99.0 - go.opentelemetry.io/collector/config/configopaque v1.3.0 - go.opentelemetry.io/collector/exporter v0.99.0 - go.opentelemetry.io/collector/pdata v1.6.0 - go.uber.org/zap v1.27.0 - google.golang.org/protobuf v1.33.0 -) - -require ( - github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/knadh/koanf/maps v0.1.1 // indirect - github.com/knadh/koanf/providers/confmap v0.1.0 // indirect - github.com/knadh/koanf/v2 v2.1.1 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - go.opentelemetry.io/collector v0.99.0 // indirect - go.opentelemetry.io/collector/config/configretry v0.99.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.99.0 // indirect - go.opentelemetry.io/collector/confmap v0.99.0 // indirect - go.opentelemetry.io/collector/consumer v0.99.0 // indirect - go.opentelemetry.io/collector/extension v0.99.0 // indirect - go.opentelemetry.io/otel v1.25.0 // indirect - go.opentelemetry.io/otel/metric v1.25.0 // indirect - go.opentelemetry.io/otel/trace v1.25.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.63.2 // indirect -) - -replace github.com/stackvista/sts-opentelemetry-collector/common => ../../common diff --git a/exporter/stackstateexporter/go.sum b/exporter/stackstateexporter/go.sum deleted file mode 100644 index a4e4e3f..0000000 --- a/exporter/stackstateexporter/go.sum +++ /dev/null @@ -1,141 +0,0 @@ -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -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.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -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/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= -github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -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/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -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/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.opentelemetry.io/collector v0.99.0 h1:O3EtCr+Bp2FoYI4KZCcC10FbMOjtRPXN1JBgFmi2WvY= -go.opentelemetry.io/collector/component v0.99.0 h1:uU8m9d19Jf+zaf7T8Bl12Mm1qozqTZkDISCnnBnS0u4= -go.opentelemetry.io/collector/config/configopaque v1.3.0 h1:J60RL/XxGmBF+OX2+Gx+yAo/p7YwjSsOOlPlo1yXotA= -go.opentelemetry.io/collector/config/configopaque v1.3.0/go.mod h1:+vgBSjB0aSA5SnYAbLlWAcfqgNsrX/65/8EjMKCBGyk= -go.opentelemetry.io/collector/config/configretry v0.99.0 h1:ZVt2NVFaUn+wtNvvr9uU45tN59tc6qQUQBRgCslWSfQ= -go.opentelemetry.io/collector/config/configtelemetry v0.99.0 h1:Fks8xkTUnxw1nEcTyYOXnIHttI9BGgjOCB0bwBH3LcU= -go.opentelemetry.io/collector/confmap v0.99.0 h1:0ZJOl79eEm/oxR6aTIbhL9E5liq6UEod2gt1pYNaIoc= -go.opentelemetry.io/collector/consumer v0.99.0 h1:juBa4nikGfi5QxjvKnscWG88BXyyozmtSLiLrw2An84= -go.opentelemetry.io/collector/exporter v0.99.0 h1:A8F/65vFqAU3aJTAaVEg/16zh5vDdL75IyqKOsXe6xk= -go.opentelemetry.io/collector/extension v0.99.0 h1:o8Lb7oT/CvqLz9JC9qJCs5h8ABlDVsdGeIJp/a8BFvs= -go.opentelemetry.io/collector/pdata v1.6.0 h1:ZIByleLu7ZfHkfPuL8xIMb9M4Gv1R6568LAjhNOO9zY= -go.opentelemetry.io/collector/pdata/testdata v0.99.0 h1:/cEg4jdR3ntR3kZ0XjSelaBnm7GNSsFF1K3VK+ZHvL8= -go.opentelemetry.io/collector/receiver v0.99.0 h1:NdYShaEaabxVBRQaxK/HcKqRGl1eUFaipKmjZlQb5FA= -go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k= -go.opentelemetry.io/otel/exporters/prometheus v0.47.0 h1:OL6yk1Z/pEGdDnrBbxSsH+t4FY1zXfBRGd7bjwhlMLU= -go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA= -go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo= -go.opentelemetry.io/otel/sdk/metric v1.25.0 h1:7CiHOy08LbrxMAp4vWpbiPcklunUshVpAvGBrdDRlGw= -go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= -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/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -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/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -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.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -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/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/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.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -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.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -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/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -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-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -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/exporter/stackstateexporter/internal/convert/trace.go b/exporter/stackstateexporter/internal/convert/trace.go deleted file mode 100644 index a91e32b..0000000 --- a/exporter/stackstateexporter/internal/convert/trace.go +++ /dev/null @@ -1,72 +0,0 @@ -package convert - -import ( - "context" - "encoding/binary" - - "github.com/stackvista/sts-opentelemetry-collector/common/convert" - ststracepb "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/proto/sts/trace" - "go.opentelemetry.io/collector/pdata/ptrace" - "go.uber.org/zap" -) - -type TraceID uint64 - -func ConvertTrace(ctx context.Context, req ptrace.ResourceSpans, logger *zap.Logger) ([]*ststracepb.APITrace, error) { - l := logger.Named("converter") - l.Debug("Converting ResourceSpans to APITrace", zap.Any("resource-attributes", convert.ConvertCommonMap(req.Resource().Attributes(), map[string]string{})), zap.Uint32("dropped-attributes", req.Resource().DroppedAttributesCount())) - - traces := map[TraceID]*ststracepb.APITrace{} - scopeSpans := req.ScopeSpans() - for i := 0; i < scopeSpans.Len(); i++ { - ss := scopeSpans.At(i) - spans := ss.Spans() - for j := 0; j < spans.Len(); j++ { - span := spans.At(j) - - // Group the Spans by their TraceIDs for StS - tid := span.TraceID() - traceID := TraceID(convert.ConvertToUint64(tid[:])) - if _, ok := traces[traceID]; !ok { - traces[traceID] = &ststracepb.APITrace{ - TraceID: uint64(traceID), - Spans: []*ststracepb.Span{}, - } - } - stsTrace := traces[traceID] - - spanID := span.SpanID() - stsSpan := &ststracepb.Span{ - Name: span.Name(), - TraceID: uint64(traceID), - SpanID: convert.ConvertToUint64(spanID[:]), - Start: int64(span.StartTimestamp()), - Duration: int64(span.EndTimestamp() - span.StartTimestamp()), - Meta: convert.ConvertCommonMap(span.Attributes(), map[string]string{}), - Type: span.Kind().String(), - } - - if span.ParentSpanID().IsEmpty() { - // Root span, this contains the trace start and end times - stsTrace.StartTime = int64(span.StartTimestamp()) - stsTrace.EndTime = int64(span.EndTimestamp()) - // Add the resource metadata to the root span - stsSpan.Meta = convert.ConvertCommonMap(req.Resource().Attributes(), stsSpan.Meta) - } - - if !span.ParentSpanID().IsEmpty() { - parentSpanID := span.ParentSpanID() - stsSpan.ParentID = binary.BigEndian.Uint64(parentSpanID[:]) - } - - stsTrace.Spans = append(stsTrace.Spans, stsSpan) - - } - } - tt := []*ststracepb.APITrace{} - for _, stsTrace := range traces { - tt = append(tt, stsTrace) - } - - return tt, nil -} diff --git a/exporter/stackstateexporter/internal/logger/logger.go b/exporter/stackstateexporter/internal/logger/logger.go deleted file mode 100644 index 1fb9cdb..0000000 --- a/exporter/stackstateexporter/internal/logger/logger.go +++ /dev/null @@ -1,37 +0,0 @@ -package logger - -import ( - "context" - - "go.uber.org/zap" -) - -type ctxKey struct{} - -func ZapLogger(ctx context.Context, name string) *zap.Logger { - return ZapFromCtx(ctx) -} - -func ZapFromCtx(ctx context.Context) *zap.Logger { - ctxValue := ctx.Value(ctxKey{}) - if logger, ok := ctxValue.(*zap.Logger); ok { - return logger - } - return NewZap() -} - -func ZapToCtx(ctx context.Context, logger *zap.Logger) context.Context { - return context.WithValue(ctx, ctxKey{}, logger) -} - -func NewZap() *zap.Logger { - return zap.Must(zap.NewDevelopment()) - // core := zapcore.NewSamplerWithOptions( - // zap.L().Core(), - // 1*time.Second, - // 10, - // 5, - // ) - - // return zap.New(core) -} diff --git a/exporter/stackstateexporter/internal/metadata/generated_status.go b/exporter/stackstateexporter/internal/metadata/generated_status.go deleted file mode 100644 index 5137d23..0000000 --- a/exporter/stackstateexporter/internal/metadata/generated_status.go +++ /dev/null @@ -1,14 +0,0 @@ -// Code generated by mdatagen. DO NOT EDIT. - -package metadata - -import ( - "go.opentelemetry.io/collector/component" -) - -const ( - Type = "stackstate" - TracesStability = component.StabilityLevelDevelopment - LogsStability = component.StabilityLevelDevelopment - MetricsStability = component.StabilityLevelDevelopment -) diff --git a/exporter/stackstateexporter/internal/stackstate/client.go b/exporter/stackstateexporter/internal/stackstate/client.go deleted file mode 100644 index 9fa16be..0000000 --- a/exporter/stackstateexporter/internal/stackstate/client.go +++ /dev/null @@ -1,55 +0,0 @@ -package stackstate - -import ( - "context" - "fmt" - - "github.com/go-resty/resty/v2" - ststracepb "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/proto/sts/trace" - "go.opentelemetry.io/collector/config/configopaque" - "google.golang.org/protobuf/proto" -) - -type StackStateClient interface { - // SendTrace sends a trace to StackState - SendTrace(ctx context.Context, tracePayload *ststracepb.TracePayload) error -} - -type stackStateClient struct { - Endpoint string - APIKey configopaque.String - client *resty.Client -} - -func NewStackStateClient(endpoint string, apiKey configopaque.String) StackStateClient { - client := resty.New() - client = client.SetHeader("Content-Type", "application/json").SetHeader("sts-api-key", string(apiKey)).SetBaseURL(endpoint) - - return &stackStateClient{ - Endpoint: endpoint, - APIKey: apiKey, - client: client, - } -} - -func (c *stackStateClient) SendTrace(ctx context.Context, tracePayload *ststracepb.TracePayload) error { - bytes, err := proto.Marshal(tracePayload) - if err != nil { - return err - } - - r, err := c.client.R().SetContext(ctx).SetBody(bytes).Post("/api/v0.2/traces") - if err != nil { - return err - } - - if r.IsError() { - return fmt.Errorf("failed to send traces to StackState: %s", r.String()) - } - - return nil -} - -func (c *stackStateClient) String() string { - return fmt.Sprintf("StackStateClient{endpoint=%s}", c.Endpoint) -} diff --git a/exporter/stackstateexporter/metadata.yaml b/exporter/stackstateexporter/metadata.yaml deleted file mode 100644 index 73813b8..0000000 --- a/exporter/stackstateexporter/metadata.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: stackstate - -status: - class: exporter - stability: - development: [traces, logs, metrics] - codeowners: - active: StackState B.V. - diff --git a/exporter/stackstateexporter/proto/span.proto b/exporter/stackstateexporter/proto/span.proto deleted file mode 100644 index c99e9a9..0000000 --- a/exporter/stackstateexporter/proto/span.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -package sts; - -option go_package = "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/proto/sts/trace"; - -message Span { - string service = 1; - string name = 2; - string resource = 3; - uint64 traceID = 4; - uint64 spanID = 5; - uint64 parentID = 6; - int64 start = 7; - int64 duration = 8; - int32 error = 9; - map meta = 10; - map metrics = 11; - string type = 12; -} diff --git a/exporter/stackstateexporter/proto/sts/trace/span.pb.go b/exporter/stackstateexporter/proto/sts/trace/span.pb.go deleted file mode 100644 index 1c6acad..0000000 --- a/exporter/stackstateexporter/proto/sts/trace/span.pb.go +++ /dev/null @@ -1,265 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc v4.25.0 -// source: span.proto - -package trace - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type Span struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Resource string `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"` - TraceID uint64 `protobuf:"varint,4,opt,name=traceID,proto3" json:"traceID,omitempty"` - SpanID uint64 `protobuf:"varint,5,opt,name=spanID,proto3" json:"spanID,omitempty"` - ParentID uint64 `protobuf:"varint,6,opt,name=parentID,proto3" json:"parentID,omitempty"` - Start int64 `protobuf:"varint,7,opt,name=start,proto3" json:"start,omitempty"` - Duration int64 `protobuf:"varint,8,opt,name=duration,proto3" json:"duration,omitempty"` - Error int32 `protobuf:"varint,9,opt,name=error,proto3" json:"error,omitempty"` - Meta map[string]string `protobuf:"bytes,10,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Metrics map[string]float64 `protobuf:"bytes,11,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` - Type string `protobuf:"bytes,12,opt,name=type,proto3" json:"type,omitempty"` -} - -func (x *Span) Reset() { - *x = Span{} - if protoimpl.UnsafeEnabled { - mi := &file_span_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Span) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Span) ProtoMessage() {} - -func (x *Span) ProtoReflect() protoreflect.Message { - mi := &file_span_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Span.ProtoReflect.Descriptor instead. -func (*Span) Descriptor() ([]byte, []int) { - return file_span_proto_rawDescGZIP(), []int{0} -} - -func (x *Span) GetService() string { - if x != nil { - return x.Service - } - return "" -} - -func (x *Span) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Span) GetResource() string { - if x != nil { - return x.Resource - } - return "" -} - -func (x *Span) GetTraceID() uint64 { - if x != nil { - return x.TraceID - } - return 0 -} - -func (x *Span) GetSpanID() uint64 { - if x != nil { - return x.SpanID - } - return 0 -} - -func (x *Span) GetParentID() uint64 { - if x != nil { - return x.ParentID - } - return 0 -} - -func (x *Span) GetStart() int64 { - if x != nil { - return x.Start - } - return 0 -} - -func (x *Span) GetDuration() int64 { - if x != nil { - return x.Duration - } - return 0 -} - -func (x *Span) GetError() int32 { - if x != nil { - return x.Error - } - return 0 -} - -func (x *Span) GetMeta() map[string]string { - if x != nil { - return x.Meta - } - return nil -} - -func (x *Span) GetMetrics() map[string]float64 { - if x != nil { - return x.Metrics - } - return nil -} - -func (x *Span) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -var File_span_proto protoreflect.FileDescriptor - -var file_span_proto_rawDesc = []byte{ - 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x73, 0x74, - 0x73, 0x22, 0xca, 0x03, 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x04, 0x6d, 0x65, - 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x73, 0x2e, 0x53, - 0x70, 0x61, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d, - 0x65, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0b, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x2e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x5f, - 0x5a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x76, 0x69, 0x73, 0x74, 0x61, 0x2f, 0x73, 0x74, 0x73, 0x2d, 0x6f, 0x70, 0x65, 0x6e, - 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_span_proto_rawDescOnce sync.Once - file_span_proto_rawDescData = file_span_proto_rawDesc -) - -func file_span_proto_rawDescGZIP() []byte { - file_span_proto_rawDescOnce.Do(func() { - file_span_proto_rawDescData = protoimpl.X.CompressGZIP(file_span_proto_rawDescData) - }) - return file_span_proto_rawDescData -} - -var file_span_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_span_proto_goTypes = []interface{}{ - (*Span)(nil), // 0: sts.Span - nil, // 1: sts.Span.MetaEntry - nil, // 2: sts.Span.MetricsEntry -} -var file_span_proto_depIdxs = []int32{ - 1, // 0: sts.Span.meta:type_name -> sts.Span.MetaEntry - 2, // 1: sts.Span.metrics:type_name -> sts.Span.MetricsEntry - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_span_proto_init() } -func file_span_proto_init() { - if File_span_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_span_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Span); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_span_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_span_proto_goTypes, - DependencyIndexes: file_span_proto_depIdxs, - MessageInfos: file_span_proto_msgTypes, - }.Build() - File_span_proto = out.File - file_span_proto_rawDesc = nil - file_span_proto_goTypes = nil - file_span_proto_depIdxs = nil -} diff --git a/exporter/stackstateexporter/proto/sts/trace/trace.pb.go b/exporter/stackstateexporter/proto/sts/trace/trace.pb.go deleted file mode 100644 index e275117..0000000 --- a/exporter/stackstateexporter/proto/sts/trace/trace.pb.go +++ /dev/null @@ -1,180 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc v4.25.0 -// source: trace.proto - -package trace - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type APITrace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TraceID uint64 `protobuf:"varint,1,opt,name=traceID,proto3" json:"traceID,omitempty"` - Spans []*Span `protobuf:"bytes,2,rep,name=spans,proto3" json:"spans,omitempty"` - StartTime int64 `protobuf:"varint,6,opt,name=startTime,proto3" json:"startTime,omitempty"` - EndTime int64 `protobuf:"varint,7,opt,name=endTime,proto3" json:"endTime,omitempty"` -} - -func (x *APITrace) Reset() { - *x = APITrace{} - if protoimpl.UnsafeEnabled { - mi := &file_trace_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *APITrace) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*APITrace) ProtoMessage() {} - -func (x *APITrace) ProtoReflect() protoreflect.Message { - mi := &file_trace_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use APITrace.ProtoReflect.Descriptor instead. -func (*APITrace) Descriptor() ([]byte, []int) { - return file_trace_proto_rawDescGZIP(), []int{0} -} - -func (x *APITrace) GetTraceID() uint64 { - if x != nil { - return x.TraceID - } - return 0 -} - -func (x *APITrace) GetSpans() []*Span { - if x != nil { - return x.Spans - } - return nil -} - -func (x *APITrace) GetStartTime() int64 { - if x != nil { - return x.StartTime - } - return 0 -} - -func (x *APITrace) GetEndTime() int64 { - if x != nil { - return x.EndTime - } - return 0 -} - -var File_trace_proto protoreflect.FileDescriptor - -var file_trace_proto_rawDesc = []byte{ - 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x73, - 0x74, 0x73, 0x1a, 0x0a, 0x73, 0x70, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7d, - 0x0a, 0x08, 0x41, 0x50, 0x49, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, - 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x49, 0x44, 0x12, 0x1f, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x05, - 0x73, 0x70, 0x61, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x5f, 0x5a, - 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x76, 0x69, 0x73, 0x74, 0x61, 0x2f, 0x73, 0x74, 0x73, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x74, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_trace_proto_rawDescOnce sync.Once - file_trace_proto_rawDescData = file_trace_proto_rawDesc -) - -func file_trace_proto_rawDescGZIP() []byte { - file_trace_proto_rawDescOnce.Do(func() { - file_trace_proto_rawDescData = protoimpl.X.CompressGZIP(file_trace_proto_rawDescData) - }) - return file_trace_proto_rawDescData -} - -var file_trace_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_trace_proto_goTypes = []interface{}{ - (*APITrace)(nil), // 0: sts.APITrace - (*Span)(nil), // 1: sts.Span -} -var file_trace_proto_depIdxs = []int32{ - 1, // 0: sts.APITrace.spans:type_name -> sts.Span - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_trace_proto_init() } -func file_trace_proto_init() { - if File_trace_proto != nil { - return - } - file_span_proto_init() - if !protoimpl.UnsafeEnabled { - file_trace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*APITrace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_trace_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_trace_proto_goTypes, - DependencyIndexes: file_trace_proto_depIdxs, - MessageInfos: file_trace_proto_msgTypes, - }.Build() - File_trace_proto = out.File - file_trace_proto_rawDesc = nil - file_trace_proto_goTypes = nil - file_trace_proto_depIdxs = nil -} diff --git a/exporter/stackstateexporter/proto/sts/trace/trace_payload.pb.go b/exporter/stackstateexporter/proto/sts/trace/trace_payload.pb.go deleted file mode 100644 index 3e83a28..0000000 --- a/exporter/stackstateexporter/proto/sts/trace/trace_payload.pb.go +++ /dev/null @@ -1,186 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc v4.25.0 -// source: trace_payload.proto - -package trace - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type TracePayload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HostName string `protobuf:"bytes,1,opt,name=hostName,proto3" json:"hostName,omitempty"` - Env string `protobuf:"bytes,2,opt,name=env,proto3" json:"env,omitempty"` - Traces []*APITrace `protobuf:"bytes,3,rep,name=traces,proto3" json:"traces,omitempty"` - Transactions []*Span `protobuf:"bytes,4,rep,name=transactions,proto3" json:"transactions,omitempty"` -} - -func (x *TracePayload) Reset() { - *x = TracePayload{} - if protoimpl.UnsafeEnabled { - mi := &file_trace_payload_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TracePayload) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TracePayload) ProtoMessage() {} - -func (x *TracePayload) ProtoReflect() protoreflect.Message { - mi := &file_trace_payload_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TracePayload.ProtoReflect.Descriptor instead. -func (*TracePayload) Descriptor() ([]byte, []int) { - return file_trace_payload_proto_rawDescGZIP(), []int{0} -} - -func (x *TracePayload) GetHostName() string { - if x != nil { - return x.HostName - } - return "" -} - -func (x *TracePayload) GetEnv() string { - if x != nil { - return x.Env - } - return "" -} - -func (x *TracePayload) GetTraces() []*APITrace { - if x != nil { - return x.Traces - } - return nil -} - -func (x *TracePayload) GetTransactions() []*Span { - if x != nil { - return x.Transactions - } - return nil -} - -var File_trace_payload_proto protoreflect.FileDescriptor - -var file_trace_payload_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x73, 0x74, 0x73, 0x1a, 0x0b, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x73, 0x70, 0x61, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, - 0x6e, 0x76, 0x12, 0x25, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x74, 0x73, 0x2e, 0x41, 0x50, 0x49, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x0c, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x09, 0x2e, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x5f, 0x5a, 0x5d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x76, 0x69, 0x73, 0x74, - 0x61, 0x2f, 0x73, 0x74, 0x73, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x74, 0x72, 0x79, 0x2d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2f, 0x65, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x73, 0x74, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_trace_payload_proto_rawDescOnce sync.Once - file_trace_payload_proto_rawDescData = file_trace_payload_proto_rawDesc -) - -func file_trace_payload_proto_rawDescGZIP() []byte { - file_trace_payload_proto_rawDescOnce.Do(func() { - file_trace_payload_proto_rawDescData = protoimpl.X.CompressGZIP(file_trace_payload_proto_rawDescData) - }) - return file_trace_payload_proto_rawDescData -} - -var file_trace_payload_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_trace_payload_proto_goTypes = []interface{}{ - (*TracePayload)(nil), // 0: sts.TracePayload - (*APITrace)(nil), // 1: sts.APITrace - (*Span)(nil), // 2: sts.Span -} -var file_trace_payload_proto_depIdxs = []int32{ - 1, // 0: sts.TracePayload.traces:type_name -> sts.APITrace - 2, // 1: sts.TracePayload.transactions:type_name -> sts.Span - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_trace_payload_proto_init() } -func file_trace_payload_proto_init() { - if File_trace_payload_proto != nil { - return - } - file_trace_proto_init() - file_span_proto_init() - if !protoimpl.UnsafeEnabled { - file_trace_payload_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TracePayload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_trace_payload_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_trace_payload_proto_goTypes, - DependencyIndexes: file_trace_payload_proto_depIdxs, - MessageInfos: file_trace_payload_proto_msgTypes, - }.Build() - File_trace_payload_proto = out.File - file_trace_payload_proto_rawDesc = nil - file_trace_payload_proto_goTypes = nil - file_trace_payload_proto_depIdxs = nil -} diff --git a/exporter/stackstateexporter/proto/trace.proto b/exporter/stackstateexporter/proto/trace.proto deleted file mode 100644 index 85f7477..0000000 --- a/exporter/stackstateexporter/proto/trace.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -package sts; - -import "span.proto"; - -option go_package = "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/proto/sts/trace"; - -message APITrace { - uint64 traceID = 1; - repeated Span spans = 2; - int64 startTime = 6; - int64 endTime = 7; -} diff --git a/exporter/stackstateexporter/proto/trace_payload.proto b/exporter/stackstateexporter/proto/trace_payload.proto deleted file mode 100644 index 0ebf076..0000000 --- a/exporter/stackstateexporter/proto/trace_payload.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package sts; - -import "trace.proto"; -import "span.proto"; - -option go_package = "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/proto/sts/trace"; - -message TracePayload { - string hostName = 1; - string env = 2; - repeated APITrace traces = 3; - repeated Span transactions = 4; -} diff --git a/exporter/stackstateexporter/request.go b/exporter/stackstateexporter/request.go deleted file mode 100644 index b68fd62..0000000 --- a/exporter/stackstateexporter/request.go +++ /dev/null @@ -1,49 +0,0 @@ -package stackstateexporter - -import ( - "context" - - "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/internal/stackstate" - ststracepb "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/proto/sts/trace" - "go.opentelemetry.io/collector/exporter/exporterhelper" - "go.uber.org/zap" -) - -var _ exporterhelper.Request = (*StackStateRequest)(nil) - -type StackStateRequest struct { - APITraces []*ststracepb.APITrace - logger *zap.Logger - client stackstate.StackStateClient - Hostname string - Env string -} - -func EmptyRequest(logger *zap.Logger, client stackstate.StackStateClient, cfg *Config) *StackStateRequest { - return &StackStateRequest{ - APITraces: []*ststracepb.APITrace{}, - logger: logger, - client: client, - Hostname: cfg.Hostname, - Env: cfg.Env, - } -} - -func (r *StackStateRequest) AppendTrace(trace []*ststracepb.APITrace) { - r.APITraces = append(r.APITraces, trace...) -} - -func (r *StackStateRequest) Export(ctx context.Context) error { - payload := &ststracepb.TracePayload{ - HostName: r.Hostname, - Env: r.Env, - Traces: r.APITraces, - } - - r.logger.Info("Sending trace to StackState", zap.Any("client", r.client), zap.Int("traces", len(r.APITraces))) - return r.client.SendTrace(ctx, payload) -} - -func (r *StackStateRequest) ItemsCount() int { - return len(r.APITraces) -} diff --git a/exporter/stackstateexporter/trace.go b/exporter/stackstateexporter/trace.go deleted file mode 100644 index 100233c..0000000 --- a/exporter/stackstateexporter/trace.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright StackState B.V. -// SPDX-License-Identifier: Apache-2.0 -package stackstateexporter - -import ( - "context" - "fmt" - - "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/internal/convert" - "github.com/stackvista/sts-opentelemetry-collector/exporter/stackstateexporter/internal/stackstate" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/exporter/exporterhelper" - "go.opentelemetry.io/collector/pdata/ptrace" - "go.uber.org/zap" -) - -type traceExporter struct { - logger *zap.Logger - client stackstate.StackStateClient - cfg *Config -} - -func newTraceExporter(ctx context.Context, logger *zap.Logger, cfg component.Config) (*traceExporter, error) { - if _, ok := cfg.(*Config); !ok { - return nil, fmt.Errorf("invalid config passed to stackstateexporter: %T", cfg) - } - c := cfg.(*Config) - - logger.Info("Configuring StackState exporter", zap.String("endpoint", c.API.Endpoint)) - - client := stackstate.NewStackStateClient(c.API.Endpoint, c.API.APIKey) - - return &traceExporter{logger: logger, client: client}, nil -} - -func (t *traceExporter) RequestFromTraces(ctx context.Context, td ptrace.Traces) (exporterhelper.Request, error) { - logger := t.logger - - req := EmptyRequest(logger, t.client, t.cfg) - for i := 0; i < td.ResourceSpans().Len(); i++ { - rs := td.ResourceSpans().At(i) - apiTrace, err := convert.ConvertTrace(ctx, rs, logger) - if err != nil { - logger.Warn("Failed to convert ResourceSpans to APITrace", zap.Error(err)) - return nil, err - } - req.AppendTrace(apiTrace) - } - - return req, nil -} diff --git a/extension/stsapitokenextension/README.md b/extension/stsapitokenextension/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/extension/stsapitokenextension/config.go b/extension/stsapitokenextension/config.go deleted file mode 100644 index 449f5c0..0000000 --- a/extension/stsapitokenextension/config.go +++ /dev/null @@ -1,29 +0,0 @@ -package stsapitokenextension - -import ( - "errors" - - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configopaque" -) - -// Config specifies how the Per-RPC StackState Telemetry API token based authentication data should be obtained. -type Config struct { - - // APIToken specifies the StackState Telemetry API token to use for every RPC. - APIToken configopaque.String `mapstructure:"token,omitempty"` - - // Filename points to a file that contains the StackState Telemetry API token to use for every RPC. - Filename string `mapstructure:"filename,omitempty"` -} - -var _ component.Config = (*Config)(nil) -var errNoTokenProvided = errors.New("no Stackstate Telemetry API token provided") - -// Validate checks if the extension configuration is valid -func (cfg *Config) Validate() error { - if cfg.APIToken == "" && cfg.Filename == "" { - return errNoTokenProvided - } - return nil -} diff --git a/extension/stsapitokenextension/config_test.go b/extension/stsapitokenextension/config_test.go deleted file mode 100644 index fcd2ff7..0000000 --- a/extension/stsapitokenextension/config_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package stsapitokenextension - -import ( - "path/filepath" - "testing" - - "github.com/stackvista/sts-opentelemetry-collector/extension/stsapitokenextension/internal/metadata" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/confmap/confmaptest" -) - -func TestLoadConfig(t *testing.T) { - t.Parallel() - - tests := []struct { - id component.ID - expected component.Config - expectedErr bool - }{ - { - id: component.NewID(metadata.Type), - expectedErr: true, - }, - { - id: component.NewIDWithName(metadata.Type, "sometoken"), - expected: &Config{ - APIToken: "sometoken", - }, - }, - } - for _, tt := range tests { - t.Run(tt.id.String(), func(t *testing.T) { - cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) - require.NoError(t, err) - factory := NewFactory() - cfg := factory.CreateDefaultConfig() - sub, err := cm.Sub(tt.id.String()) - require.NoError(t, err) - require.NoError(t, component.UnmarshalConfig(sub, cfg)) - if tt.expectedErr { - assert.Error(t, component.ValidateConfig(cfg)) - return - } - assert.NoError(t, component.ValidateConfig(cfg)) - assert.Equal(t, tt.expected, cfg) - }) - } -} diff --git a/extension/stsapitokenextension/doc.go b/extension/stsapitokenextension/doc.go deleted file mode 100644 index 2cf7b3a..0000000 --- a/extension/stsapitokenextension/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// The STS API Token Extension is used as a client side credential provider to connect to StackState's OTEL ingestion API's. -// -//go:generate mdatagen metadata.yaml -package stsapitokenextension diff --git a/extension/stsapitokenextension/factory.go b/extension/stsapitokenextension/factory.go deleted file mode 100644 index 8271dd0..0000000 --- a/extension/stsapitokenextension/factory.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package stsapitokenextension - -import ( - "context" - - "github.com/stackvista/sts-opentelemetry-collector/extension/stsapitokenextension/internal/metadata" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/extension" -) - -// NewFactory creates a factory for the static bearer token Authenticator extension. -func NewFactory() extension.Factory { - return extension.NewFactory( - metadata.Type, - createDefaultConfig, - createExtension, - metadata.ExtensionStability, - ) -} - -func createDefaultConfig() component.Config { - return &Config{} -} - -func createExtension(_ context.Context, set extension.CreateSettings, cfg component.Config) (extension.Extension, error) { - return newStsAPITokenAuth(cfg.(*Config), set.Logger), nil -} diff --git a/extension/stsapitokenextension/factory_test.go b/extension/stsapitokenextension/factory_test.go deleted file mode 100644 index 0b34a6f..0000000 --- a/extension/stsapitokenextension/factory_test.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package stsapitokenextension - -import ( - "context" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/extension/extensiontest" -) - -func TestFactory_CreateDefaultConfig(t *testing.T) { - cfg := createDefaultConfig() - assert.NoError(t, componenttest.CheckConfigStruct(cfg)) -} - -func TestFactory_CreateExtension(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.APIToken = "somerandometoken" - ext, err := createExtension(context.Background(), extensiontest.NewNopCreateSettings(), cfg) - require.NoError(t, err) - require.NotNil(t, ext) -} diff --git a/extension/stsapitokenextension/go.mod b/extension/stsapitokenextension/go.mod deleted file mode 100644 index 63d6a7b..0000000 --- a/extension/stsapitokenextension/go.mod +++ /dev/null @@ -1,60 +0,0 @@ -module github.com/stackvista/sts-opentelemetry-collector/extension/stsapitokenextension - -go 1.21.6 - -require ( - github.com/stackvista/sts-opentelemetry-collector/common v0.0.1 - github.com/stretchr/testify v1.9.0 - go.opentelemetry.io/collector/component v0.99.0 - go.opentelemetry.io/collector/config/configopaque v1.3.0 - go.uber.org/zap v1.27.0 -) - -require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.52.3 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.47.0 // indirect - go.opentelemetry.io/otel/sdk v1.25.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.25.0 // indirect -) - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - go.opentelemetry.io/collector/extension v0.99.0 - go.opentelemetry.io/collector/pdata v1.6.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) - -require ( - github.com/fsnotify/fsnotify v1.7.0 - github.com/gogo/protobuf v1.3.2 // indirect - github.com/knadh/koanf/maps v0.1.1 // indirect - github.com/knadh/koanf/providers/confmap v0.1.0 // indirect - github.com/knadh/koanf/v2 v2.1.1 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.99.0 // indirect - go.opentelemetry.io/collector/confmap v0.99.0 - go.opentelemetry.io/collector/extension/auth v0.99.0 - go.opentelemetry.io/otel v1.25.0 // indirect - go.opentelemetry.io/otel/metric v1.25.0 // indirect - go.opentelemetry.io/otel/trace v1.25.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 // indirect -) - -replace github.com/stackvista/sts-opentelemetry-collector/common => ../../common diff --git a/extension/stsapitokenextension/go.sum b/extension/stsapitokenextension/go.sum deleted file mode 100644 index b192951..0000000 --- a/extension/stsapitokenextension/go.sum +++ /dev/null @@ -1,104 +0,0 @@ -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -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/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -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/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/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -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/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -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/collector/component v0.99.0 h1:uU8m9d19Jf+zaf7T8Bl12Mm1qozqTZkDISCnnBnS0u4= -go.opentelemetry.io/collector/config/configopaque v1.3.0 h1:J60RL/XxGmBF+OX2+Gx+yAo/p7YwjSsOOlPlo1yXotA= -go.opentelemetry.io/collector/config/configopaque v1.3.0/go.mod h1:+vgBSjB0aSA5SnYAbLlWAcfqgNsrX/65/8EjMKCBGyk= -go.opentelemetry.io/collector/config/configtelemetry v0.99.0 h1:Fks8xkTUnxw1nEcTyYOXnIHttI9BGgjOCB0bwBH3LcU= -go.opentelemetry.io/collector/confmap v0.99.0 h1:0ZJOl79eEm/oxR6aTIbhL9E5liq6UEod2gt1pYNaIoc= -go.opentelemetry.io/collector/extension v0.99.0 h1:o8Lb7oT/CvqLz9JC9qJCs5h8ABlDVsdGeIJp/a8BFvs= -go.opentelemetry.io/collector/extension/auth v0.99.0 h1:txyH8hQugRinASfuRmNgFj24TpkXN7q5H+oLVB9VaS4= -go.opentelemetry.io/collector/pdata v1.6.0 h1:ZIByleLu7ZfHkfPuL8xIMb9M4Gv1R6568LAjhNOO9zY= -go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k= -go.opentelemetry.io/otel/exporters/prometheus v0.47.0 h1:OL6yk1Z/pEGdDnrBbxSsH+t4FY1zXfBRGd7bjwhlMLU= -go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA= -go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo= -go.opentelemetry.io/otel/sdk/metric v1.25.0 h1:7CiHOy08LbrxMAp4vWpbiPcklunUshVpAvGBrdDRlGw= -go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= -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.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -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.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -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-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -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/extension/stsapitokenextension/http_roundtrip.go b/extension/stsapitokenextension/http_roundtrip.go deleted file mode 100644 index 0c71dbe..0000000 --- a/extension/stsapitokenextension/http_roundtrip.go +++ /dev/null @@ -1,24 +0,0 @@ -package stsapitokenextension - -import ( - "net/http" -) - -// StsAPITokenRoundTripper intercepts and adds Bearer token Authorization headers to each http request. -type StsAPITokenRoundTripper struct { - baseTransport http.RoundTripper - apiTokenHeader string - apiTokenFunc func() string -} - -// RoundTrip modifies the original request and adds Bearer token Authorization headers. -func (interceptor *StsAPITokenRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { - req2 := req.Clone(req.Context()) - if req2.Header == nil { - req2.Header = make(http.Header) - } - - req2.Header.Set(interceptor.apiTokenHeader, interceptor.apiTokenFunc()) - - return interceptor.baseTransport.RoundTrip(req2) -} diff --git a/extension/stsapitokenextension/internal/metadata/generated_status.go b/extension/stsapitokenextension/internal/metadata/generated_status.go deleted file mode 100644 index 0cb923c..0000000 --- a/extension/stsapitokenextension/internal/metadata/generated_status.go +++ /dev/null @@ -1,12 +0,0 @@ -// Code generated by mdatagen. DO NOT EDIT. - -package metadata - -import ( - "go.opentelemetry.io/collector/component" -) - -const ( - Type = "stsapitoken" - ExtensionStability = component.StabilityLevelBeta -) diff --git a/extension/stsapitokenextension/metadata.yaml b/extension/stsapitokenextension/metadata.yaml deleted file mode 100644 index beb5345..0000000 --- a/extension/stsapitokenextension/metadata.yaml +++ /dev/null @@ -1,10 +0,0 @@ -type: stsapitoken - -status: - class: extension - stability: - beta: [extension] - distributions: [contrib] - codeowners: - active: [hierynomus] - diff --git a/extension/stsapitokenextension/rpc_token.go b/extension/stsapitokenextension/rpc_token.go deleted file mode 100644 index 7b5d7d4..0000000 --- a/extension/stsapitokenextension/rpc_token.go +++ /dev/null @@ -1,23 +0,0 @@ -package stsapitokenextension - -import ( - "context" - - "google.golang.org/grpc/credentials" -) - -var _ credentials.PerRPCCredentials = (*PerRPCToken)(nil) - -// PerRPCToken is a gRPC credentials.PerRPCCredentials implementation that returns an 'authorization' header. -type PerRPCToken struct { - metadata map[string]string -} - -// GetRequestMetadata returns the request metadata to be used with the RPC. -func (c *PerRPCToken) GetRequestMetadata(context.Context, ...string) (map[string]string, error) { - return c.metadata, nil -} - -func (c *PerRPCToken) RequireTransportSecurity() bool { - return true -} diff --git a/extension/stsapitokenextension/stsapitoken.go b/extension/stsapitokenextension/stsapitoken.go deleted file mode 100644 index b228c92..0000000 --- a/extension/stsapitokenextension/stsapitoken.go +++ /dev/null @@ -1,155 +0,0 @@ -package stsapitokenextension - -import ( - "context" - "fmt" - "net/http" - "os" - "sync" - - "github.com/fsnotify/fsnotify" - stsauth "github.com/stackvista/sts-opentelemetry-collector/common/auth" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/extension/auth" - "go.uber.org/zap" - "google.golang.org/grpc/credentials" -) - -var ( - _ auth.Client = (*StsAPITokenAuth)(nil) -) - -type StsAPITokenAuth struct { - muTokenString sync.RWMutex - tokenString string - - shutdownCh chan struct{} - - filename string - logger *zap.Logger -} - -var _ auth.Client = (*StsAPITokenAuth)(nil) - -func newStsAPITokenAuth(cfg *Config, logger *zap.Logger) *StsAPITokenAuth { - logger.Info("StS API Token Auth initializing") - if cfg.Filename != "" && cfg.APIToken != "" { - logger.Warn("a filename is specified. Configured token is ignored!") - } - return &StsAPITokenAuth{ - tokenString: string(cfg.APIToken), - filename: cfg.Filename, - logger: logger, - } -} - -// Start of StsAPITokenAuth does nothing and returns nil if no filename -// is specified. Otherwise a routine is started to monitor the file containing -// the token to be transferred. -func (b *StsAPITokenAuth) Start(ctx context.Context, _ component.Host) error { - if b.filename == "" { - return nil - } - - if b.shutdownCh != nil { - return fmt.Errorf("StS API Token file monitoring is already running") - } - - // Read file once - b.refreshToken() - - b.shutdownCh = make(chan struct{}) - - watcher, err := fsnotify.NewWatcher() - if err != nil { - return err - } - // start file watcher - go b.startWatcher(ctx, watcher) - - return watcher.Add(b.filename) -} - -func (b *StsAPITokenAuth) startWatcher(ctx context.Context, watcher *fsnotify.Watcher) { - defer watcher.Close() - for { - select { - case _, ok := <-b.shutdownCh: - _ = ok - return - case <-ctx.Done(): - return - case event, ok := <-watcher.Events: - if !ok { - continue - } - // NOTE: k8s configmaps uses symlinks, we need this workaround. - // original configmap file is removed. - // SEE: https://martensson.io/go-fsnotify-and-kubernetes-configmaps/ - if event.Op == fsnotify.Remove || event.Op == fsnotify.Chmod { - // remove the watcher since the file is removed - if err := watcher.Remove(event.Name); err != nil { - b.logger.Error(err.Error()) - } - // add a new watcher pointing to the new symlink/file - if err := watcher.Add(b.filename); err != nil { - b.logger.Error(err.Error()) - } - b.refreshToken() - } - // also allow normal files to be modified and reloaded. - if event.Op == fsnotify.Write { - b.refreshToken() - } - } - } -} - -func (b *StsAPITokenAuth) refreshToken() { - b.logger.Info("Refresh StS API Token", zap.String("filename", b.filename)) - token, err := os.ReadFile(b.filename) - if err != nil { - b.logger.Error(err.Error()) - return - } - b.muTokenString.Lock() - b.tokenString = string(token) - b.muTokenString.Unlock() -} - -// Shutdown of BearerTokenAuth does nothing and returns nil -func (b *StsAPITokenAuth) Shutdown(_ context.Context) error { - if b.filename == "" { - return nil - } - - if b.shutdownCh == nil { - return fmt.Errorf("bearerToken file monitoring is not running") - } - b.shutdownCh <- struct{}{} - close(b.shutdownCh) - b.shutdownCh = nil - return nil -} - -// PerRPCCredentials returns PerRPCAuth an implementation of credentials.PerRPCCredentials that -func (b *StsAPITokenAuth) PerRPCCredentials() (credentials.PerRPCCredentials, error) { - return &PerRPCToken{ - metadata: map[string]string{stsauth.StsAPIKeyHeader: b.token()}, - }, nil -} - -func (b *StsAPITokenAuth) token() string { - b.muTokenString.RLock() - defer b.muTokenString.RUnlock() - return fmt.Sprintf("%s", b.tokenString) -} - -// RoundTripper is not implemented by BearerTokenAuth -func (b *StsAPITokenAuth) RoundTripper(base http.RoundTripper) (http.RoundTripper, error) { - return &StsAPITokenRoundTripper{ - baseTransport: base, - apiTokenFunc: b.token, - apiTokenHeader: stsauth.StsAPIKeyHeader, - }, nil -} diff --git a/extension/stsapitokenextension/stsapitoken_test.go b/extension/stsapitokenextension/stsapitoken_test.go deleted file mode 100644 index 1c7c37a..0000000 --- a/extension/stsapitokenextension/stsapitoken_test.go +++ /dev/null @@ -1,197 +0,0 @@ -package stsapitokenextension - -import ( - "context" - "fmt" - "net/http" - "os" - "testing" - "time" - - stsauth "github.com/stackvista/sts-opentelemetry-collector/common/auth" - "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/component/componenttest" - - "go.uber.org/zap/zaptest" -) - -func TestPerRPCAuth(t *testing.T) { - metadata := map[string]string{ - stsauth.StsAPIKeyHeader: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - } - - // test meta data is properly - perRPCAuth := &PerRPCToken{metadata: metadata} - md, err := perRPCAuth.GetRequestMetadata(context.Background()) - assert.NoError(t, err) - assert.Equal(t, md, metadata) - - // always true - ok := perRPCAuth.RequireTransportSecurity() - assert.True(t, ok) -} - -type mockRoundTripper struct{} - -func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { - resp := &http.Response{StatusCode: http.StatusOK, Header: map[string][]string{}} - for k, v := range req.Header { - resp.Header.Set(k, v[0]) - } - return resp, nil -} - -func TestStSAPITokenAuthenticatorHttp(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.APIToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." - - bauth := newStsAPITokenAuth(cfg, nil) - assert.NotNil(t, bauth) - - base := &mockRoundTripper{} - c, err := bauth.RoundTripper(base) - assert.NoError(t, err) - assert.NotNil(t, c) - - request := &http.Request{Method: "Get"} - resp, err := c.RoundTrip(request) - assert.NoError(t, err) - authHeaderValue := resp.Header.Get(stsauth.StsAPIKeyHeader) - assert.Equal(t, authHeaderValue, string(cfg.APIToken)) - -} - -func TestStSAPITokenAuthenticator(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.APIToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." - - bauth := newStsAPITokenAuth(cfg, nil) - assert.NotNil(t, bauth) - - assert.Nil(t, bauth.Start(context.Background(), componenttest.NewNopHost())) - credential, err := bauth.PerRPCCredentials() - - assert.NoError(t, err) - assert.NotNil(t, credential) - - md, err := credential.GetRequestMetadata(context.Background()) - expectedMd := map[string]string{ - stsauth.StsAPIKeyHeader: string(cfg.APIToken), - } - assert.Equal(t, md, expectedMd) - assert.NoError(t, err) - assert.True(t, credential.RequireTransportSecurity()) - - roundTripper, _ := bauth.RoundTripper(&mockRoundTripper{}) - orgHeaders := http.Header{ - "Foo": {"bar"}, - } - expectedHeaders := http.Header{ - "Foo": {"bar"}, - stsauth.StsAPIKeyHeader: {bauth.token()}, - } - - resp, err := roundTripper.RoundTrip(&http.Request{Header: orgHeaders}) - assert.NoError(t, err) - assert.Equal(t, expectedHeaders, resp.Header) - assert.Nil(t, bauth.Shutdown(context.Background())) -} - -func TestStSAPITokenStartWatchStop(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.Filename = "test.token" - - bauth := newStsAPITokenAuth(cfg, zaptest.NewLogger(t)) - assert.NotNil(t, bauth) - - assert.Nil(t, bauth.Start(context.Background(), componenttest.NewNopHost())) - assert.Error(t, bauth.Start(context.Background(), componenttest.NewNopHost())) - - credential, err := bauth.PerRPCCredentials() - assert.NoError(t, err) - assert.NotNil(t, credential) - - token, err := os.ReadFile(bauth.filename) - assert.NoError(t, err) - - tokenStr := string(token) - md, err := credential.GetRequestMetadata(context.Background()) - expectedMd := map[string]string{ - stsauth.StsAPIKeyHeader: tokenStr, - } - assert.Equal(t, md, expectedMd) - assert.NoError(t, err) - assert.True(t, credential.RequireTransportSecurity()) - - // change file content once - assert.Nil(t, os.WriteFile(bauth.filename, []byte(fmt.Sprintf("%stest", token)), 0600)) - time.Sleep(5 * time.Second) - credential, _ = bauth.PerRPCCredentials() - md, err = credential.GetRequestMetadata(context.Background()) - expectedMd[stsauth.StsAPIKeyHeader] = tokenStr + "test" - assert.Equal(t, md, expectedMd) - assert.NoError(t, err) - - // change file content back - assert.Nil(t, os.WriteFile(bauth.filename, token, 0600)) - time.Sleep(5 * time.Second) - credential, _ = bauth.PerRPCCredentials() - md, err = credential.GetRequestMetadata(context.Background()) - expectedMd[stsauth.StsAPIKeyHeader] = tokenStr - time.Sleep(5 * time.Second) - assert.Equal(t, md, expectedMd) - assert.NoError(t, err) - - assert.Nil(t, bauth.Shutdown(context.Background())) - assert.Nil(t, bauth.shutdownCh) -} - -func TestStSAPITokenTokenFileContentUpdate(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.Filename = "test.token" - - bauth := newStsAPITokenAuth(cfg, zaptest.NewLogger(t)) - assert.NotNil(t, bauth) - - assert.Nil(t, bauth.Start(context.Background(), componenttest.NewNopHost())) - assert.Error(t, bauth.Start(context.Background(), componenttest.NewNopHost())) - - token, err := os.ReadFile(bauth.filename) - assert.NoError(t, err) - - base := &mockRoundTripper{} - rt, err := bauth.RoundTripper(base) - assert.NoError(t, err) - assert.NotNil(t, rt) - - request := &http.Request{Method: "Get"} - resp, err := rt.RoundTrip(request) - assert.NoError(t, err) - authHeaderValue := resp.Header.Get(stsauth.StsAPIKeyHeader) - assert.Equal(t, authHeaderValue, string(token)) - - // change file content once - assert.Nil(t, os.WriteFile(bauth.filename, []byte(fmt.Sprintf("%stest", token)), 0600)) - time.Sleep(5 * time.Second) - - tokenNew, err := os.ReadFile(bauth.filename) - assert.NoError(t, err) - - // check if request is updated with the new token - request = &http.Request{Method: "Get"} - resp, err = rt.RoundTrip(request) - assert.NoError(t, err) - authHeaderValue = resp.Header.Get(stsauth.StsAPIKeyHeader) - assert.Equal(t, authHeaderValue, string(tokenNew)) - - // change file content back - assert.Nil(t, os.WriteFile(bauth.filename, token, 0600)) - time.Sleep(5 * time.Second) - - // check if request is updated with the old token - request = &http.Request{Method: "Get"} - resp, err = rt.RoundTrip(request) - assert.NoError(t, err) - authHeaderValue = resp.Header.Get(stsauth.StsAPIKeyHeader) - assert.Equal(t, authHeaderValue, string(token)) -} diff --git a/extension/stsapitokenextension/test.token b/extension/stsapitokenextension/test.token deleted file mode 100644 index eeb8f4d..0000000 --- a/extension/stsapitokenextension/test.token +++ /dev/null @@ -1,2 +0,0 @@ -eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...+file+ -test \ No newline at end of file diff --git a/extension/stsapitokenextension/testdata/config.yaml b/extension/stsapitokenextension/testdata/config.yaml deleted file mode 100644 index 2d62cda..0000000 --- a/extension/stsapitokenextension/testdata/config.yaml +++ /dev/null @@ -1,3 +0,0 @@ -stsapitoken: -stsapitoken/sometoken: - token: "sometoken" diff --git a/extension/stsauthenticationextension/config.go b/extension/stsauthenticationextension/config.go deleted file mode 100644 index e1e099b..0000000 --- a/extension/stsauthenticationextension/config.go +++ /dev/null @@ -1,27 +0,0 @@ -package stsauthenticationextension - -import ( - "errors" - - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configopaque" -) - -// Config specifies how the Per-RPC StackState Telemetry API token based authentication data should be obtained. -type Config struct { - - // Single token configured to validate all requests. - Tenants map[configopaque.String]string `mapstructure:"tenants,omitempty"` -} - -var _ component.Config = (*Config)(nil) -var errNoTokenProvided = errors.New("no Stackstate Telemetry API token provided") - -// Validate checks if the extension configuration is valid -func (cfg *Config) Validate() error { - if len(cfg.Tenants) == 0 { - return errNoTokenProvided - } - - return nil -} diff --git a/extension/stsauthenticationextension/config_test.go b/extension/stsauthenticationextension/config_test.go deleted file mode 100644 index 31c62a9..0000000 --- a/extension/stsauthenticationextension/config_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package stsauthenticationextension - -import ( - "path/filepath" - "testing" - - "github.com/stackvista/sts-opentelemetry-collector/extension/stsauthenticationextension/internal/metadata" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configopaque" - "go.opentelemetry.io/collector/confmap/confmaptest" -) - -func TestLoadConfig(t *testing.T) { - t.Parallel() - - tests := []struct { - id component.ID - expected component.Config - expectedErr bool - }{ - { - id: component.NewID(metadata.Type), - expectedErr: true, - }, - { - id: component.NewIDWithName(metadata.Type, "sometoken"), - expected: &Config{ - Tenants: map[configopaque.String]string{"sometoken": "tenant"}, - }, - }, - } - for _, tt := range tests { - t.Run(tt.id.String(), func(t *testing.T) { - cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) - require.NoError(t, err) - factory := NewFactory() - cfg := factory.CreateDefaultConfig() - sub, err := cm.Sub(tt.id.String()) - require.NoError(t, err) - require.NoError(t, component.UnmarshalConfig(sub, cfg)) - if tt.expectedErr { - assert.Error(t, component.ValidateConfig(cfg)) - return - } - assert.NoError(t, component.ValidateConfig(cfg)) - assert.Equal(t, tt.expected, cfg) - }) - } -} diff --git a/extension/stsauthenticationextension/doc.go b/extension/stsauthenticationextension/doc.go deleted file mode 100644 index 2eb4d9e..0000000 --- a/extension/stsauthenticationextension/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -// The STS Authentication Extension is used as a server side authenticator to validate the incoming requests for a valid StackState API Token. -// If the incoming token is valid, the STS Authentication Extension will add a tenant id belonging to the API Token to the context of the incoming request. -// -//go:generate mdatagen metadata.yaml -package stsauthenticationextension diff --git a/extension/stsauthenticationextension/factory.go b/extension/stsauthenticationextension/factory.go deleted file mode 100644 index 5c703ad..0000000 --- a/extension/stsauthenticationextension/factory.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package stsauthenticationextension - -import ( - "context" - - "github.com/stackvista/sts-opentelemetry-collector/extension/stsauthenticationextension/internal/metadata" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/extension" -) - -// NewFactory creates a factory for the static bearer token Authenticator extension. -func NewFactory() extension.Factory { - return extension.NewFactory( - metadata.Type, - createDefaultConfig, - createExtension, - metadata.ExtensionStability, - ) -} - -func createDefaultConfig() component.Config { - return &Config{} -} - -func createExtension(_ context.Context, set extension.CreateSettings, cfg component.Config) (extension.Extension, error) { - return newStsAuthenticator(cfg.(*Config), set.Logger), nil -} diff --git a/extension/stsauthenticationextension/factory_test.go b/extension/stsauthenticationextension/factory_test.go deleted file mode 100644 index ae34786..0000000 --- a/extension/stsauthenticationextension/factory_test.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package stsauthenticationextension - -import ( - "context" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config/configopaque" - "go.opentelemetry.io/collector/extension/extensiontest" -) - -func TestFactory_CreateDefaultConfig(t *testing.T) { - cfg := createDefaultConfig() - assert.NoError(t, componenttest.CheckConfigStruct(cfg)) -} - -func TestFactory_CreateExtension(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.Tenants = map[configopaque.String]string{"somerandometoken": "tenant"} - ext, err := createExtension(context.Background(), extensiontest.NewNopCreateSettings(), cfg) - require.NoError(t, err) - require.NotNil(t, ext) -} diff --git a/extension/stsauthenticationextension/go.mod b/extension/stsauthenticationextension/go.mod deleted file mode 100644 index 6717e76..0000000 --- a/extension/stsauthenticationextension/go.mod +++ /dev/null @@ -1,56 +0,0 @@ -module github.com/stackvista/sts-opentelemetry-collector/extension/stsauthenticationextension - -go 1.21.6 - -require ( - github.com/stackvista/sts-opentelemetry-collector/common v0.0.1 - github.com/stretchr/testify v1.9.0 - go.opentelemetry.io/collector/component v0.99.0 - go.opentelemetry.io/collector/config/configopaque v1.3.0 - go.opentelemetry.io/collector/extension v0.99.0 - go.uber.org/zap v1.27.0 -) - -require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.52.3 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - go.opentelemetry.io/collector/pdata v1.6.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.47.0 // indirect - go.opentelemetry.io/otel/sdk v1.25.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.25.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) - -require ( - github.com/gogo/protobuf v1.3.2 // indirect - github.com/knadh/koanf/maps v0.1.1 // indirect - github.com/knadh/koanf/providers/confmap v0.1.0 // indirect - github.com/knadh/koanf/v2 v2.1.1 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.99.0 // indirect - go.opentelemetry.io/collector/confmap v0.99.0 - go.opentelemetry.io/collector/extension/auth v0.99.0 - go.opentelemetry.io/otel v1.25.0 // indirect - go.opentelemetry.io/otel/metric v1.25.0 // indirect - go.opentelemetry.io/otel/trace v1.25.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.33.0 // indirect -) - -replace github.com/stackvista/sts-opentelemetry-collector/common => ../../common diff --git a/extension/stsauthenticationextension/go.sum b/extension/stsauthenticationextension/go.sum deleted file mode 100644 index 28288b5..0000000 --- a/extension/stsauthenticationextension/go.sum +++ /dev/null @@ -1,94 +0,0 @@ -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -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.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -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/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/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -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/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -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/collector/component v0.99.0 h1:uU8m9d19Jf+zaf7T8Bl12Mm1qozqTZkDISCnnBnS0u4= -go.opentelemetry.io/collector/config/configopaque v1.3.0 h1:J60RL/XxGmBF+OX2+Gx+yAo/p7YwjSsOOlPlo1yXotA= -go.opentelemetry.io/collector/config/configtelemetry v0.99.0 h1:Fks8xkTUnxw1nEcTyYOXnIHttI9BGgjOCB0bwBH3LcU= -go.opentelemetry.io/collector/confmap v0.99.0 h1:0ZJOl79eEm/oxR6aTIbhL9E5liq6UEod2gt1pYNaIoc= -go.opentelemetry.io/collector/extension v0.99.0 h1:o8Lb7oT/CvqLz9JC9qJCs5h8ABlDVsdGeIJp/a8BFvs= -go.opentelemetry.io/collector/extension/auth v0.99.0 h1:txyH8hQugRinASfuRmNgFj24TpkXN7q5H+oLVB9VaS4= -go.opentelemetry.io/collector/pdata v1.6.0 h1:ZIByleLu7ZfHkfPuL8xIMb9M4Gv1R6568LAjhNOO9zY= -go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k= -go.opentelemetry.io/otel/exporters/prometheus v0.47.0 h1:OL6yk1Z/pEGdDnrBbxSsH+t4FY1zXfBRGd7bjwhlMLU= -go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA= -go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo= -go.opentelemetry.io/otel/sdk/metric v1.25.0 h1:7CiHOy08LbrxMAp4vWpbiPcklunUshVpAvGBrdDRlGw= -go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= -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= -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.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -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.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -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-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -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/extension/stsauthenticationextension/internal/metadata/generated_status.go b/extension/stsauthenticationextension/internal/metadata/generated_status.go deleted file mode 100644 index cbc7433..0000000 --- a/extension/stsauthenticationextension/internal/metadata/generated_status.go +++ /dev/null @@ -1,12 +0,0 @@ -// Code generated by mdatagen. DO NOT EDIT. - -package metadata - -import ( - "go.opentelemetry.io/collector/component" -) - -const ( - Type = "stsauthentication" - ExtensionStability = component.StabilityLevelBeta -) diff --git a/extension/stsauthenticationextension/metadata.yaml b/extension/stsauthenticationextension/metadata.yaml deleted file mode 100644 index cb62820..0000000 --- a/extension/stsauthenticationextension/metadata.yaml +++ /dev/null @@ -1,10 +0,0 @@ -type: stsauthentication - -status: - class: extension - stability: - beta: [extension] - distributions: [contrib] - codeowners: - active: [hierynomus] - diff --git a/extension/stsauthenticationextension/stsauthentication.go b/extension/stsauthenticationextension/stsauthentication.go deleted file mode 100644 index c212bd8..0000000 --- a/extension/stsauthenticationextension/stsauthentication.go +++ /dev/null @@ -1,61 +0,0 @@ -package stsauthenticationextension - -import ( - "context" - "errors" - - stsauth "github.com/stackvista/sts-opentelemetry-collector/common/auth" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/extension/auth" - "go.uber.org/zap" -) - -var _ auth.Server = (*StsAuthentication)(nil) - -type StsAuthentication struct { - FixedTenants map[string]string -} - -func newStsAuthenticator(cfg *Config, logger *zap.Logger) *StsAuthentication { - tenants := make(map[string]string) - for k, v := range cfg.Tenants { - tenants[string(k)] = v - } - - return &StsAuthentication{FixedTenants: tenants} -} - -// Start of StsAuthentication does nothing. -func (b *StsAuthentication) Start(ctx context.Context, _ component.Host) error { - return nil -} - -// Shutdown stops the authenticator. -func (b *StsAuthentication) Shutdown(context.Context) error { - return nil -} - -// Authenticate checks whether the given context contains valid auth data. -func (a *StsAuthentication) Authenticate(ctx context.Context, headers map[string][]string) (context.Context, error) { - head, ok := headers[stsauth.StsAPIKeyHeader] - if !ok || len(head) == 0 { - return ctx, errors.New("No authentication found in request") - } - token := head[0] - - newCtx, err := a.validateKey(ctx, token) - if err != nil { - return ctx, err - } - return newCtx, nil -} - -func (a *StsAuthentication) validateKey(ctx context.Context, incomingKey string) (context.Context, error) { - if _, ok := a.FixedTenants[incomingKey]; !ok { - return ctx, errors.New("Unknown StackState API Token") - } - - ctx = context.WithValue(ctx, stsauth.StsAPIKeyHeader, incomingKey) - ctx = context.WithValue(ctx, stsauth.StsTenantContextKey, a.FixedTenants[incomingKey]) - return ctx, nil -} diff --git a/extension/stsauthenticationextension/stsauthentication_test.go b/extension/stsauthenticationextension/stsauthentication_test.go deleted file mode 100644 index f4e7cbb..0000000 --- a/extension/stsauthenticationextension/stsauthentication_test.go +++ /dev/null @@ -1,42 +0,0 @@ -package stsauthenticationextension - -import ( - "context" - "testing" - - stsauth "github.com/stackvista/sts-opentelemetry-collector/common/auth" - "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/config/configopaque" - "go.opentelemetry.io/collector/extension/extensiontest" -) - -func TestShouldNotAuthenticateWithMissingHeader(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.Tenants = map[configopaque.String]string{"somerandometoken": "tenant"} - ext, err := createExtension(context.Background(), extensiontest.NewNopCreateSettings(), cfg) - assert.NoError(t, err) - _, err = ext.(*StsAuthentication).Authenticate(context.Background(), map[string][]string{}) - assert.Error(t, err) - assert.ErrorContains(t, err, "No authentication found in request") -} - -func TestShouldNotAuthenticateWithInvalidHeader(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.Tenants = map[configopaque.String]string{"somerandometoken": "tenant"} - ext, err := createExtension(context.Background(), extensiontest.NewNopCreateSettings(), cfg) - assert.NoError(t, err) - _, err = ext.(*StsAuthentication).Authenticate(context.Background(), map[string][]string{stsauth.StsAPIKeyHeader: {"invalid"}}) - assert.Error(t, err) - assert.ErrorContains(t, err, "Unknown StackState API Token") -} - -func TestShouldAuthenticateWithValidHeader(t *testing.T) { - cfg := createDefaultConfig().(*Config) - cfg.Tenants = map[configopaque.String]string{"somerandometoken": "tenant"} - ext, err := createExtension(context.Background(), extensiontest.NewNopCreateSettings(), cfg) - assert.NoError(t, err) - ctx, err := ext.(*StsAuthentication).Authenticate(context.Background(), map[string][]string{stsauth.StsAPIKeyHeader: {"somerandometoken"}}) - assert.NoError(t, err) - assert.Equal(t, "tenant", ctx.Value(stsauth.StsTenantContextKey)) - assert.Equal(t, "somerandometoken", ctx.Value(stsauth.StsAPIKeyHeader)) -} diff --git a/extension/stsauthenticationextension/testdata/config.yaml b/extension/stsauthenticationextension/testdata/config.yaml deleted file mode 100644 index 99f6cb0..0000000 --- a/extension/stsauthenticationextension/testdata/config.yaml +++ /dev/null @@ -1,4 +0,0 @@ -stsauthentication: -stsauthentication/sometoken: - tenants: - "sometoken": "tenant" diff --git a/processor/stackstateprocessor/config.go b/processor/stackstateprocessor/config.go deleted file mode 100644 index 2404c48..0000000 --- a/processor/stackstateprocessor/config.go +++ /dev/null @@ -1,18 +0,0 @@ -package stackstateprocessor - -import ( - "fmt" -) - -type Config struct { - // The ClusterName to tag the trace with - ClusterName string `mapstructure:"cluster_name"` -} - -func (c *Config) Validate() error { - if c.ClusterName == "" { - return fmt.Errorf("cluster_name is required") - } - - return nil -} diff --git a/processor/stackstateprocessor/doc.go b/processor/stackstateprocessor/doc.go deleted file mode 100644 index 6005c48..0000000 --- a/processor/stackstateprocessor/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -// The StackState Processor is a custom processor that adds StackState specific attributes to the trace, log or metric. -// It is intended to be used in conjunction with the StackState Exporter, so that the right attributes are added to the trace and StackState can correctly link the data to the Kubernetes resources. -// -//go:generate mdatagen metadata.yaml -package stackstateprocessor diff --git a/processor/stackstateprocessor/factory.go b/processor/stackstateprocessor/factory.go deleted file mode 100644 index ec8e27b..0000000 --- a/processor/stackstateprocessor/factory.go +++ /dev/null @@ -1,70 +0,0 @@ -package stackstateprocessor - -import ( - "context" - - "github.com/stackvista/sts-opentelemetry-collector/processor/stackstateprocessor/internal/metadata" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/processor" - "go.opentelemetry.io/collector/processor/processorhelper" -) - -func NewFactory() processor.Factory { - return processor.NewFactory( - metadata.Type, - createDefaultConfig, - processor.WithTraces(CreateTracesProcessor, metadata.TracesStability), - processor.WithMetrics(CreateMetricsProcessor, metadata.MetricsStability), - processor.WithLogs(CreateLogsProcessor, metadata.MetricsStability), - ) -} - -func createDefaultConfig() component.Config { - return &Config{} -} - -var _ processor.CreateTracesFunc = CreateTracesProcessor // compile-time type check -var _ processor.CreateMetricsFunc = CreateMetricsProcessor // compile-time type check - -func CreateTracesProcessor( - ctx context.Context, - set processor.CreateSettings, - cfg component.Config, - nextConsumer consumer.Traces, -) (processor.Traces, error) { - ssp, err := newStackstateprocessor(ctx, set.Logger, cfg) - if err != nil { - return nil, err - } - - return processorhelper.NewTracesProcessor(ctx, set, cfg, nextConsumer, ssp.ProcessTraces, processorhelper.WithCapabilities(consumer.Capabilities{MutatesData: true})) -} - -func CreateMetricsProcessor( - ctx context.Context, - set processor.CreateSettings, - cfg component.Config, - nextConsumer consumer.Metrics, -) (processor.Metrics, error) { - ssp, err := newStackstateprocessor(ctx, set.Logger, cfg) - if err != nil { - return nil, err - } - - return processorhelper.NewMetricsProcessor(ctx, set, cfg, nextConsumer, ssp.ProcessMetrics, processorhelper.WithCapabilities(consumer.Capabilities{MutatesData: true})) -} - -func CreateLogsProcessor( - ctx context.Context, - set processor.CreateSettings, - cfg component.Config, - nextConsumer consumer.Logs, -) (processor.Logs, error) { - ssp, err := newStackstateprocessor(ctx, set.Logger, cfg) - if err != nil { - return nil, err - } - - return processorhelper.NewLogsProcessor(ctx, set, cfg, nextConsumer, ssp.ProcessLogs, processorhelper.WithCapabilities(consumer.Capabilities{MutatesData: true})) -} diff --git a/processor/stackstateprocessor/go.mod b/processor/stackstateprocessor/go.mod deleted file mode 100644 index 17373d3..0000000 --- a/processor/stackstateprocessor/go.mod +++ /dev/null @@ -1,43 +0,0 @@ -module github.com/stackvista/sts-opentelemetry-collector/processor/stackstateprocessor - -go 1.21.6 - -require ( - github.com/stackvista/sts-opentelemetry-collector/common v0.0.1 - go.opentelemetry.io/collector/component v0.99.0 - go.opentelemetry.io/collector/consumer v0.99.0 - go.opentelemetry.io/collector/pdata v1.6.0 - go.opentelemetry.io/collector/processor v0.99.0 - go.uber.org/zap v1.27.0 -) - -require ( - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/knadh/koanf/maps v0.1.1 // indirect - github.com/knadh/koanf/providers/confmap v0.1.0 // indirect - github.com/knadh/koanf/v2 v2.1.1 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasttemplate v1.2.2 // indirect - go.opentelemetry.io/collector v0.99.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.99.0 // indirect - go.opentelemetry.io/collector/confmap v0.99.0 // indirect - go.opentelemetry.io/otel v1.25.0 // indirect - go.opentelemetry.io/otel/metric v1.25.0 // indirect - go.opentelemetry.io/otel/trace v1.25.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.33.0 // indirect -) - -replace github.com/stackvista/sts-opentelemetry-collector/common => ../../common diff --git a/processor/stackstateprocessor/go.sum b/processor/stackstateprocessor/go.sum deleted file mode 100644 index 8101155..0000000 --- a/processor/stackstateprocessor/go.sum +++ /dev/null @@ -1,132 +0,0 @@ -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -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.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -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/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= -github.com/knadh/koanf/v2 v2.1.1/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -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/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA= -github.com/prometheus/common v0.52.3/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= -github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -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/collector v0.99.0 h1:O3EtCr+Bp2FoYI4KZCcC10FbMOjtRPXN1JBgFmi2WvY= -go.opentelemetry.io/collector v0.99.0/go.mod h1:rdrDdSy+184UZ7YhJEo7aq9KHdrq6J46WWC//Tg7FBo= -go.opentelemetry.io/collector/component v0.99.0 h1:uU8m9d19Jf+zaf7T8Bl12Mm1qozqTZkDISCnnBnS0u4= -go.opentelemetry.io/collector/component v0.99.0/go.mod h1:sGAyyOtJRlqqt396jisIQxsOW7cOIKOTLi+iCarx++s= -go.opentelemetry.io/collector/config/configtelemetry v0.99.0 h1:Fks8xkTUnxw1nEcTyYOXnIHttI9BGgjOCB0bwBH3LcU= -go.opentelemetry.io/collector/config/configtelemetry v0.99.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= -go.opentelemetry.io/collector/confmap v0.99.0 h1:0ZJOl79eEm/oxR6aTIbhL9E5liq6UEod2gt1pYNaIoc= -go.opentelemetry.io/collector/confmap v0.99.0/go.mod h1:BWKPIpYeUzSG6ZgCJMjF7xsLvyrvJCfYURl57E5vhiQ= -go.opentelemetry.io/collector/consumer v0.99.0 h1:juBa4nikGfi5QxjvKnscWG88BXyyozmtSLiLrw2An84= -go.opentelemetry.io/collector/consumer v0.99.0/go.mod h1:YzGeaxvKqkgtPFbFWXf4WtNO6KC8pdw209PaBQzV8Pk= -go.opentelemetry.io/collector/pdata v1.6.0 h1:ZIByleLu7ZfHkfPuL8xIMb9M4Gv1R6568LAjhNOO9zY= -go.opentelemetry.io/collector/pdata v1.6.0/go.mod h1:pQv6AJO6wDUDxrPxhNaj3JdSzaOIo5glTGL1b4h4KTg= -go.opentelemetry.io/collector/pdata/testdata v0.99.0 h1:/cEg4jdR3ntR3kZ0XjSelaBnm7GNSsFF1K3VK+ZHvL8= -go.opentelemetry.io/collector/pdata/testdata v0.99.0/go.mod h1:YzEkHFLPsxeNI2gv6UQvvn73nsgRNxMRnBpY63qvdsg= -go.opentelemetry.io/collector/processor v0.99.0 h1:A6xaGNybbHn/FDLVeDY2ZmU5S6F8y4si91IKIUHzPm8= -go.opentelemetry.io/collector/processor v0.99.0/go.mod h1:+uCijw9sMfQFg2ePkiVn1JM6jhBbjYrnvu4Kzdx2y3g= -go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k= -go.opentelemetry.io/otel v1.25.0/go.mod h1:Wa2ds5NOXEMkCmUou1WA7ZBfLTHWIsp034OVD7AO+Vg= -go.opentelemetry.io/otel/exporters/prometheus v0.47.0 h1:OL6yk1Z/pEGdDnrBbxSsH+t4FY1zXfBRGd7bjwhlMLU= -go.opentelemetry.io/otel/exporters/prometheus v0.47.0/go.mod h1:xF3N4OSICZDVbbYZydz9MHFro1RjmkPUKEvar2utG+Q= -go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA= -go.opentelemetry.io/otel/metric v1.25.0/go.mod h1:rkDLUSd2lC5lq2dFNrX9LGAbINP5B7WBkC78RXCpH5s= -go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo= -go.opentelemetry.io/otel/sdk v1.25.0/go.mod h1:oFgzCM2zdsxKzz6zwpTZYLLQsFwc+K0daArPdIhuxkw= -go.opentelemetry.io/otel/sdk/metric v1.25.0 h1:7CiHOy08LbrxMAp4vWpbiPcklunUshVpAvGBrdDRlGw= -go.opentelemetry.io/otel/sdk/metric v1.25.0/go.mod h1:LzwoKptdbBBdYfvtGCzGwk6GWMA3aUzBOwtQpR6Nz7o= -go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= -go.opentelemetry.io/otel/trace v1.25.0/go.mod h1:hCCs70XM/ljO+BeQkyFnbK28SBIJ/Emuha+ccrCRT7I= -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.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -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.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -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-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -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/processor/stackstateprocessor/internal/metadata/generated_status.go b/processor/stackstateprocessor/internal/metadata/generated_status.go deleted file mode 100644 index 748ca48..0000000 --- a/processor/stackstateprocessor/internal/metadata/generated_status.go +++ /dev/null @@ -1,14 +0,0 @@ -// Code generated by mdatagen. DO NOT EDIT. - -package metadata - -import ( - "go.opentelemetry.io/collector/component" -) - -const ( - Type = "stackstate" - TracesStability = component.StabilityLevelAlpha - LogsStability = component.StabilityLevelAlpha - MetricsStability = component.StabilityLevelAlpha -) diff --git a/processor/stackstateprocessor/metadata.yaml b/processor/stackstateprocessor/metadata.yaml deleted file mode 100644 index a659072..0000000 --- a/processor/stackstateprocessor/metadata.yaml +++ /dev/null @@ -1,10 +0,0 @@ -type: stackstate - -status: - class: processor - stability: - alpha: [traces, logs, metrics] - distributions: [contrib] - codeowners: - active: [hierynomus] - diff --git a/processor/stackstateprocessor/processor.go b/processor/stackstateprocessor/processor.go deleted file mode 100644 index 2ea50bc..0000000 --- a/processor/stackstateprocessor/processor.go +++ /dev/null @@ -1,85 +0,0 @@ -package stackstateprocessor - -import ( - "context" - "fmt" - - "github.com/stackvista/sts-opentelemetry-collector/common/identifier" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/pdata/pcommon" - "go.opentelemetry.io/collector/pdata/plog" - "go.opentelemetry.io/collector/pdata/pmetric" - "go.opentelemetry.io/collector/pdata/ptrace" - "go.opentelemetry.io/collector/processor/processorhelper" - "go.uber.org/zap" -) - -const ( - ClusterName = "io.stackstate.clustername" -) - -var _ processorhelper.ProcessTracesFunc = (*stackstateprocessor)(nil).ProcessTraces - -var _ processorhelper.ProcessLogsFunc = (*stackstateprocessor)(nil).ProcessLogs -var _ processorhelper.ProcessMetricsFunc = (*stackstateprocessor)(nil).ProcessMetrics - -// var _ consumer.Traces = (*stackstateprocessor)(nil) // compile-time type check -// var _ processor.Traces = (*stackstateprocessor)(nil) // compile-time type check - -type stackstateprocessor struct { - logger *zap.Logger - identifier identifier.Identifier - clusterName string -} - -func newStackstateprocessor(ctx context.Context, logger *zap.Logger, cfg component.Config) (*stackstateprocessor, error) { - if _, ok := cfg.(*Config); !ok { - return nil, fmt.Errorf("invalid config passed to stackstateprocessor: %T", cfg) - } - c := cfg.(*Config) - - logger.Info("Configuring StackState processor", zap.String("cluster_name", c.ClusterName)) - - id, err := identifier.NewIdentifier(logger, c.ClusterName) - if err != nil { - return nil, err - } - - return &stackstateprocessor{ - logger: logger, - identifier: id, - clusterName: c.ClusterName, - }, nil -} - -func (ssp *stackstateprocessor) ProcessMetrics(ctx context.Context, metrics pmetric.Metrics) (pmetric.Metrics, error) { - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - ssp.addStackStateAttributes(ctx, rm.Resource()) - } - - return metrics, nil -} - -func (ssp *stackstateprocessor) ProcessTraces(ctx context.Context, traces ptrace.Traces) (ptrace.Traces, error) { - for i := 0; i < traces.ResourceSpans().Len(); i++ { - rs := traces.ResourceSpans().At(i) - ssp.addStackStateAttributes(ctx, rs.Resource()) - } - - return traces, nil -} - -func (ssp *stackstateprocessor) ProcessLogs(ctx context.Context, logs plog.Logs) (plog.Logs, error) { - for i := 0; i < logs.ResourceLogs().Len(); i++ { - rl := logs.ResourceLogs().At(i) - ssp.addStackStateAttributes(ctx, rl.Resource()) - } - - return logs, nil -} - -func (ssp *stackstateprocessor) addStackStateAttributes(_ context.Context, res pcommon.Resource) { - attrMap := res.Attributes() - attrMap.PutStr(ClusterName, ssp.clusterName) -}