diff --git a/go.mod b/go.mod index fb221bb492..da0018bfda 100644 --- a/go.mod +++ b/go.mod @@ -431,7 +431,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.87.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.87.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc4 // indirect + github.com/opencontainers/image-spec v1.1.0-rc5 // indirect github.com/opencontainers/runc v1.1.9 // indirect github.com/openshift/api v3.9.0+incompatible // indirect github.com/openshift/client-go v0.0.0-20230419131419-497c7032c581 // indirect diff --git a/go.sum b/go.sum index 45e3ed64b7..125df3c25c 100644 --- a/go.sum +++ b/go.sum @@ -1245,8 +1245,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceive github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.87.0/go.mod h1:tSxkxxWCcGh/vh1mHflhQTlwulkwWM1yyEABa6DXSmY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= -github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.9 h1:XR0VIHTGce5eWPkaPesqTBrhW2yAcaraWfsEalNwQLM= github.com/opencontainers/runc v1.1.9/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50= github.com/openshift/api v0.0.0-20230417092139-1b2161d23365 h1:GhoBJpneEqxclWofdb4Y5jJOcts4jnr3POkOcFJuuhw= diff --git a/pkg/extension/smartagentextension/go.mod b/pkg/extension/smartagentextension/go.mod index 1d8d69b1ea..392e8c6b6f 100644 --- a/pkg/extension/smartagentextension/go.mod +++ b/pkg/extension/smartagentextension/go.mod @@ -24,7 +24,7 @@ require ( github.com/aws/aws-sdk-go v1.45.12 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/containerd/containerd v1.7.0 // indirect + github.com/containerd/containerd v1.7.6 // indirect github.com/coreos/go-semver v0.3.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -103,14 +103,14 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/patternmatcher v0.5.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect - github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect + github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/mostynb/go-grpc-compression v1.2.1 // indirect github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b // indirect + github.com/opencontainers/image-spec v1.1.0-rc5 // indirect github.com/opencontainers/runc v1.1.6 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect diff --git a/pkg/extension/smartagentextension/go.sum b/pkg/extension/smartagentextension/go.sum index 998c4eaa33..564d9107bb 100644 --- a/pkg/extension/smartagentextension/go.sum +++ b/pkg/extension/smartagentextension/go.sum @@ -539,8 +539,8 @@ github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= 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= @@ -567,8 +567,8 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn github.com/okta/okta-sdk-golang/v2 v2.12.1 h1:U+smE7trkHSZO8Mval3Ow85dbxawO+pMAr692VZq9gM= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.6 h1:XbhB8IfG/EsnhNvZtNdLB0GBw92GYEFvKlhaJk9jUgA= github.com/opencontainers/runc v1.1.6/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50= github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A= diff --git a/pkg/receiver/smartagentreceiver/go.mod b/pkg/receiver/smartagentreceiver/go.mod index 3243e70765..b569f6e9b4 100644 --- a/pkg/receiver/smartagentreceiver/go.mod +++ b/pkg/receiver/smartagentreceiver/go.mod @@ -216,7 +216,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.87.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.87.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc4 // indirect + github.com/opencontainers/image-spec v1.1.0-rc5 // indirect github.com/opencontainers/runc v1.1.9 // indirect github.com/openshift/api v0.0.0-20230417092139-1b2161d23365 // indirect github.com/openshift/client-go v0.0.0-20230419131419-497c7032c581 // indirect diff --git a/pkg/receiver/smartagentreceiver/go.sum b/pkg/receiver/smartagentreceiver/go.sum index dc5711b2c2..5b04ce7baf 100644 --- a/pkg/receiver/smartagentreceiver/go.sum +++ b/pkg/receiver/smartagentreceiver/go.sum @@ -789,8 +789,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.87.0/go.mod h1:ybZnD0ldx1tEm6xgJ5wP5tK2x6AY8PNpTonCpOBVI6Y= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= -github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.9 h1:XR0VIHTGce5eWPkaPesqTBrhW2yAcaraWfsEalNwQLM= github.com/opencontainers/runc v1.1.9/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50= github.com/openshift/api v0.0.0-20230417092139-1b2161d23365 h1:GhoBJpneEqxclWofdb4Y5jJOcts4jnr3POkOcFJuuhw= diff --git a/tests/go.mod b/tests/go.mod index a4caaaf854..766303448a 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -3,6 +3,7 @@ module github.com/signalfx/splunk-otel-collector/tests go 1.20 require ( + github.com/Masterminds/semver v1.5.0 github.com/Masterminds/sprig/v3 v3.2.3 github.com/docker/docker v24.0.7+incompatible github.com/docker/go-connections v0.4.0 @@ -34,6 +35,7 @@ require ( golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 + helm.sh/helm/v3 v3.13.0 k8s.io/api v0.28.3 k8s.io/apimachinery v0.28.3 k8s.io/cli-runtime v0.28.3 @@ -45,35 +47,46 @@ require ( require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v1.0.0 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.2.0 // indirect - github.com/Microsoft/go-winio v0.5.2 // indirect + github.com/Masterminds/semver/v3 v3.2.1 // indirect + github.com/Masterminds/squirrel v1.5.4 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect github.com/alessio/shellescape v1.4.1 // indirect + github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect + github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect - github.com/containerd/containerd v1.6.19 // indirect + github.com/containerd/containerd v1.7.6 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/daviddengcn/go-colortext v1.0.0 // indirect + github.com/docker/cli v24.0.6+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/docker/docker-credential-helpers v0.7.0 // indirect + github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/emicklei/go-restful/v3 v3.9.0 // indirect + github.com/emicklei/go-restful/v3 v3.10.1 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/fatih/camelcase v1.0.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect + github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect + github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect @@ -83,30 +96,42 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect + github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect + github.com/gosuri/uitable v0.0.4 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/huandu/xstrings v1.3.3 // indirect - github.com/imdario/mergo v0.3.12 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/huandu/xstrings v1.4.0 // indirect + github.com/imdario/mergo v0.3.13 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmoiron/sqlx v1.3.5 // indirect github.com/jonboulle/clockwork v0.2.2 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.0 // indirect github.com/knadh/koanf/v2 v2.0.1 // indirect + github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect + github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/lithammer/dedent v1.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.5.0 // indirect github.com/moby/spdystream v0.2.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect - github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect + github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect @@ -115,23 +140,31 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc2 // indirect + github.com/opencontainers/image-spec v1.1.0-rc5 // indirect github.com/opencontainers/runc v1.1.6 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect github.com/rs/cors v1.10.1 // indirect + github.com/rubenv/sql-migrate v1.5.2 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/shopspring/decimal v1.2.0 // indirect - github.com/sirupsen/logrus v1.9.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opencensus.io v0.24.0 // indirect @@ -150,6 +183,7 @@ require ( go.opentelemetry.io/otel v1.19.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect golang.org/x/crypto v0.14.0 // indirect + golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.10.0 // indirect golang.org/x/sync v0.3.0 // indirect @@ -157,17 +191,21 @@ require ( golang.org/x/term v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect + golang.org/x/tools v0.8.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect google.golang.org/grpc v1.58.3 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect + k8s.io/apiextensions-apiserver v0.28.2 // indirect + k8s.io/apiserver v0.28.2 // indirect k8s.io/component-base v0.28.3 // indirect k8s.io/component-helpers v0.28.3 // indirect k8s.io/klog/v2 v2.100.1 // indirect k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect k8s.io/metrics v0.28.3 // indirect k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect + oras.land/oras-go v1.2.4 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 // indirect diff --git a/tests/go.sum b/tests/go.sum index eec769f772..009ebce834 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -545,26 +545,34 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxa dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8 h1:V8krnnfGj4pV65YLUm3C0/8bl7V5Nry2Pwvy3ru/wLc= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/hcsshim v0.9.6 h1:VwnDOgLeoi2du6dAznfmspNqTiwczvjv4K7NxuY9jsY= +github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= +github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.11.0 h1:7EFNIY4igHEXUdj1zXgAyU3fLc7QfOKHbkldRVTBdiM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -586,6 +594,8 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= +github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= @@ -603,12 +613,15 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -633,6 +646,7 @@ github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/containerd v1.6.18 h1:qZbsLvmyu+Vlty0/Ex5xc0z2YtKpIsb5n45mAMI+2Ns= github.com/containerd/containerd v1.6.18/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -643,23 +657,34 @@ github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= 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/daviddengcn/go-colortext v1.0.0 h1:ANqDyC0ys6qCSvuEK7l3g5RaehL/Xck9EX8ATG8oKsE= github.com/daviddengcn/go-colortext v1.0.0/go.mod h1:zDqEI5NVUop5QPpVJUxE9UO10hRnmkD5G4Pmri9+m4c= +github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc= +github.com/docker/cli v24.0.6+incompatible h1:fF+XCQCgJjjQNIMjzaSmiKJSCcfcXb3TWTcc7GAneOY= +github.com/docker/cli v24.0.6+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= +github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -686,11 +711,14 @@ github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8 github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -706,6 +734,8 @@ github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2H github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= +github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -733,11 +763,17 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= +github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= +github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -780,6 +816,7 @@ github.com/golangplus/bytes v1.0.0/go.mod h1:AdRaCFwmc/00ZzELMWb01soso6W1R/++O1X github.com/golangplus/fmt v1.0.0/go.mod h1:zpM0OfbMCjPtd2qkTD/jX2MgiFCqklhSUFyDW44gVQE= github.com/golangplus/testing v1.0.0 h1:+ZeeiKZENNOMkTTELoSySazi+XaEhVO0mb+eanrSEUQ= github.com/golangplus/testing v1.0.0/go.mod h1:ZDreixUV3YzhoVraIDyOzHrr76p6NUh6k/pPg/Q3gYA= +github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= @@ -835,9 +872,14 @@ github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38 github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= +github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -847,6 +889,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.13.1/go.mod h1:SW/mM4LbKfqmMvcFu8v+eiQQ7oitXEFeiBe9StxERb0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= @@ -856,6 +900,8 @@ github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjh github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -869,6 +915,7 @@ github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= @@ -879,18 +926,21 @@ github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvh github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= -github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= +github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= @@ -898,6 +948,7 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -906,6 +957,7 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= 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= @@ -931,6 +983,13 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= +github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= +github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= +github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= @@ -944,21 +1003,34 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= +github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= +github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= @@ -981,14 +1053,17 @@ github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4/go.mod h1 github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= 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= @@ -1027,6 +1102,7 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= @@ -1045,26 +1121,34 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= @@ -1074,6 +1158,8 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= +github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= @@ -1089,8 +1175,9 @@ github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFt github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 h1:32k2QLgsKhcEs55q4REPKyIadvid5FPy2+VMgvbmKJ0= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3/go.mod h1:gJrXWi7wSGXfiC7+VheQaz+ypdCt5SmZNL+BRxUe7y4= github.com/signalfx/signalfx-go v1.33.0 h1:+v1fa+is8rYSxGoN1W+9PiDj1dCF5sVjJx60dhNLsTA= @@ -1100,9 +1187,8 @@ github.com/signalfx/signalfx-go/signalflow/v2 v2.1.0/go.mod h1:jpCBHD+xwhN8rd8aY github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= @@ -1137,6 +1223,13 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1146,6 +1239,9 @@ github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= @@ -1271,6 +1367,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1328,6 +1426,7 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1438,6 +1537,7 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= 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= @@ -1662,17 +1762,24 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= +helm.sh/helm/v3 v3.13.0 h1:XPJKIU30K4JTQ6VX/6e0hFAmEIonYa8E7wx5aqv4xOc= +helm.sh/helm/v3 v3.13.0/go.mod h1:2PBEKsMWKLVZTojUOqMS3Eadv5mP43FBWrRgLNkNm9Y= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= +k8s.io/apiextensions-apiserver v0.28.2 h1:J6/QRWIKV2/HwBhHRVITMLYoypCoPY1ftigDM0Kn+QU= +k8s.io/apiextensions-apiserver v0.28.2/go.mod h1:5tnkxLGa9nefefYzWuAlWZ7RZYuN/765Au8cWLA6SRg= k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= +k8s.io/apiserver v0.28.2 h1:rBeYkLvF94Nku9XfXyUIirsVzCzJBs6jMn3NWeHieyI= +k8s.io/apiserver v0.28.2/go.mod h1:f7D5e8wH8MWcKD7azq6Csw9UN+CjdtXIVQUyUhrtb+E= k8s.io/cli-runtime v0.28.3 h1:lvuJYVkwCqHEvpS6KuTZsUVwPePFjBfSGvuaLl2SxzA= k8s.io/cli-runtime v0.28.3/go.mod h1:jeX37ZPjIcENVuXDDTskG3+FnVuZms5D9omDXS/2Jjc= k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= @@ -1725,6 +1832,8 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= +oras.land/oras-go v1.2.4 h1:djpBY2/2Cs1PV87GSJlxv4voajVOMZxqqtq9AB8YNvY= +oras.land/oras-go v1.2.4/go.mod h1:DYcGfb3YF1nKjcezfX2SNlDAeQFKSXmf+qrFmrh4324= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= diff --git a/tests/helm/helm_test.go b/tests/helm/helm_test.go new file mode 100644 index 0000000000..c1f929d285 --- /dev/null +++ b/tests/helm/helm_test.go @@ -0,0 +1,150 @@ +// Copyright Splunk, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build integration + +package tests + +import ( + "fmt" + "os" + "regexp" + "strings" + "testing" + "time" + + "github.com/Masterminds/semver" + "github.com/stretchr/testify/require" + "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v3/pkg/cli" + + "github.com/signalfx/splunk-otel-collector/tests/internal/version" + "github.com/signalfx/splunk-otel-collector/tests/testutils" + "github.com/signalfx/splunk-otel-collector/tests/testutils/kubeutils" +) + +const ( + chartPathEnvVar = "SPLUNK_COLLECTOR_HELM_CHART_PATH" + chartVersionEnvVar = "SPLUNK_COLLECTOR_HELM_CHART_VERSION" + helmRepoTmpl = "https://github.com/signalfx/splunk-otel-collector-chart/releases/download/splunk-otel-collector-%s/splunk-otel-collector-%s.tgz" +) + +func getHelmChartPath(t testing.TB) string { + if chartPath := strings.TrimSpace(os.Getenv(chartPathEnvVar)); chartPath != "" { + return chartPath + } + + var ver string + if ver = strings.TrimSpace(os.Getenv(chartVersionEnvVar)); ver == "" { + if matches := regexp.MustCompile("v(?P[\\d.]+)(-.*)?").FindStringSubmatch(version.Version); len(matches) == 3 { + v, err := semver.NewVersion(matches[1]) + require.NoError(t, err) + v, err = semver.NewVersion(fmt.Sprintf("%d.%d.0", v.Major(), v.Minor()-1)) + require.NoError(t, err) + ver = v.String() + } + } + + require.NotEmpty(t, ver, "Must set %q or %q to determine chart path if not valid version.Version", chartPathEnvVar, chartVersionEnvVar) + return fmt.Sprintf(helmRepoTmpl, ver, ver) +} + +// TestHelmChartMetricsHappyPath ensures that the default metrics (except for env-required filters) +// for a helm chart installation are exported. The target chart is determined from first hit of +// 1. SPLUNK_COLLECTOR_HELM_CHART_PATH env var value +// 2. SPLUNK_COLLECTOR_HELM_CHART_VERSION env var set in helmRepoTmpl +// 3. parsed version.Version (with decremented minor to check previous release compatibility) +func TestHelmChartMetricsHappyPath(t *testing.T) { + testutils.SkipIfNotContainerTest(t) + if testutils.CollectorImageIsForArm(t) { + t.Skip("Apparent metric loss on qemu. Deferring.") + } + helmChartPath := getHelmChartPath(t) + tc := testutils.NewTestcase(t, testutils.OTLPReceiverSinkAllInterfaces) + defer tc.PrintLogsOnFailure() + defer tc.ShutdownOTLPReceiverSink() + + cluster := kubeutils.NewKindCluster(tc) + defer cluster.Teardown() + cluster.Create() + + cluster.LoadLocalCollectorImageIfNecessary() + + defer kubeutils.NewOTLPSinkDeployment(cluster).Teardown() + + helm := kubeutils.Helm(cluster, func(settings *cli.EnvSettings) { + settings.SetNamespace("monitoring") + }) + + img := strings.Split(testutils.GetCollectorImage(), ":") + image := img[0] + tag := "latest" + if len(img) == 2 { + tag = img[1] + } + + values := fmt.Sprintf(`clusterName: test-cluster +environment: test-cluster +image: + otelcol: + repository: %s + tag: %s + +splunkObservability: + realm: noop + accessToken: splunk-o11y-token + apiUrl: http://otlp-sink.testing.svc.cluster.local:26060 + ingestUrl: http://otlp-sink.testing.svc.cluster.local:29943 + metricsEnabled: true + tracesEnabled: false + logsEnabled: false + +agent: + config: + receivers: + kubeletstats: + insecure_skip_verify: true + # current gh action runner + # doesn't have working kubelet cadvisor + # w/ systemd or cgroupfs cgroup driver so avoiding these + # https://github.com/kubernetes/kubernetes/issues/103366#issuecomment-887247862 + metrics: + k8s.pod.network.errors: + enabled: false + k8s.pod.network.io: + enabled: false +gateway: + enabled: true + replicaCount: 1 + resources: + limits: + cpu: 200m + memory: 128Mi +`, image, tag) + + release, err := helm.Install( + helmChartPath, values, + func(install *action.Install) { + install.CreateNamespace = true + install.Namespace = "monitoring" + }, + ) + require.NoError(t, err) + + for _, pod := range []string{"agent-.*", "k8s-cluster-receiver-.*", ".{16}"} { + cluster.WaitForPods(fmt.Sprintf("%s-%s", release.Name, pod), "monitoring", 2*time.Minute) + } + + tc.OTLPReceiverSink.AssertAllMetricsReceived(tc, *tc.ResourceMetrics("all.yaml"), 30*time.Second) +} diff --git a/tests/helm/testdata/resource_metrics/all.yaml b/tests/helm/testdata/resource_metrics/all.yaml new file mode 100644 index 0000000000..e8742d7c4d --- /dev/null +++ b/tests/helm/testdata/resource_metrics/all.yaml @@ -0,0 +1,3304 @@ +resource_metrics: + - attributes: + com.splunk.signalfx.access_token: splunk-o11y-token + scope_metrics: + - instrumentation_scope: + attributes: {} + metrics: + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + name: scrape_samples_post_metric_relabeling + type: DoubleGauge + - attributes: + exporter: signalfx + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_exporter_queue_size + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_process_cpu_seconds + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_process_memory_rss + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_process_runtime_total_alloc_bytes + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + name: up + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + name: scrape_samples_scraped + type: DoubleGauge + - attributes: + exporter: signalfx + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_exporter_enqueue_failed_log_records + type: DoubleMonotonicCumulativeSum + - attributes: + exporter: signalfx + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_exporter_enqueue_failed_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_process_runtime_total_sys_memory_bytes + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_process_uptime + type: DoubleMonotonicCumulativeSum + - attributes: + exporter: signalfx + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_exporter_enqueue_failed_spans + type: DoubleMonotonicCumulativeSum + - attributes: + exporter: signalfx + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_exporter_queue_capacity + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + name: scrape_duration_seconds + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + name: scrape_series_added + type: DoubleGauge + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_process_runtime_heap_alloc_bytes + type: DoubleGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.pod.phase + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/etcd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/kindnetd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/coredns/coredns + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-apiserver + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-scheduler + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-controller-manager + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_request + type: DoubleGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/etcd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/kindnetd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/coredns/coredns + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_request + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/etcd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/kindnetd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/coredns/coredns + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-apiserver + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-scheduler + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-controller-manager + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-proxy + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/local-path-provisioner + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.ready + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/etcd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/kindnetd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/coredns/coredns + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-apiserver + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-scheduler + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-controller-manager + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/kube-proxy + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/local-path-provisioner + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.restarts + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_limit + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_limit + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/kindnetd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_limit + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_limit + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.cpu_limit + type: DoubleGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_limit + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_limit + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/kindest/kindnetd + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_limit + type: IntGauge + - attributes: + container.id: + container.image.name: registry.k8s.io/coredns/coredns + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_limit + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_limit + type: IntGauge + - attributes: + container.id: + container.image.name: docker.io/library/otelcol + container.image.tag: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.container.memory_limit + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: testing + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-public + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-node-lease + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: default + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: local-path-storage + k8s.namespace.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.namespace.phase + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: otlp-sink + k8s.deployment.uid: + k8s.namespace.name: testing + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: + k8s.deployment.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: + k8s.deployment.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: coredns + k8s.deployment.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: local-path-provisioner + k8s.deployment.uid: + k8s.namespace.name: local-path-storage + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: otlp-sink + k8s.deployment.uid: + k8s.namespace.name: testing + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: + k8s.deployment.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: + k8s.deployment.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: coredns + k8s.deployment.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.deployment.name: local-path-provisioner + k8s.deployment.uid: + k8s.namespace.name: local-path-storage + metric_source: kubernetes + receiver: k8scluster + name: k8s.deployment.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.replicaset.name: coredns-787d4945fb + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: testing + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: local-path-storage + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.available + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.replicaset.name: coredns-787d4945fb + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: testing + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.namespace.name: local-path-storage + k8s.replicaset.name: + k8s.replicaset.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.replicaset.desired + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kube-proxy + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.current_scheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kindnet + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.current_scheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: + k8s.daemonset.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.current_scheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kube-proxy + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.desired_scheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kindnet + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.desired_scheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: + k8s.daemonset.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.desired_scheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kube-proxy + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.misscheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kindnet + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.misscheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: + k8s.daemonset.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.misscheduled_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kube-proxy + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.ready_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: kindnet + k8s.daemonset.uid: + k8s.namespace.name: kube-system + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.ready_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.daemonset.name: + k8s.daemonset.uid: + k8s.namespace.name: monitoring + metric_source: kubernetes + receiver: k8scluster + name: k8s.daemonset.ready_nodes + type: IntGauge + - attributes: + k8s.cluster.name: test-cluster + k8s.node.name: + k8s.node.uid: + metric_source: kubernetes + receiver: k8scluster + name: k8s.node.condition_ready + type: IntGauge + - attributes: + exporter: signalfx + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_exporter_sent_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_count + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '10' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '25' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '75' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '100' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '250' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '500' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '2000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '3000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '7000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '8000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '9000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '10000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '30000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '50000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '100000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: +Inf + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: memory_limiter + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_dropped_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: k8s_cluster + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + transport: http + name: otelcol_receiver_accepted_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: prometheus/k8s_cluster_receiver + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + transport: http + name: otelcol_receiver_accepted_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: memory_limiter + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_accepted_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_timeout_trigger_send + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: k8s_cluster + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + transport: http + name: otelcol_receiver_refused_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: prometheus/k8s_cluster_receiver + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + transport: http + name: otelcol_receiver_refused_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: memory_limiter + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_refused_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_sum + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '50' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '100' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '750' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '1000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '4000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '5000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '6000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '10000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + le: '20000' + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + processor: batch + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_processor_batch_batch_send_size_bucket + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: k8s_cluster + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + transport: http + name: otelcol_receiver_accepted_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: kubernetes + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: prometheus/k8s_cluster_receiver + service.instance.id: + service.name: otel-k8s-cluster-receiver + service_instance_id: + service_name: otelcol + service_version: + transport: http + name: otelcol_receiver_accepted_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: k8s-coredns + os.type: linux + server: + system.type: coredns + type: + zones: . + name: coredns_cache_entries + type: DoubleGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: k8s-coredns + os.type: linux + proto: udp + server: + system.type: coredns + zone: . + name: coredns_dns_request_size_bytes + type: DoubleMonotonicCumulativeSum + - attributes: + family: '1' + host.name: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: k8s-coredns + os.type: linux + proto: udp + server: + system.type: coredns + type: + zone: . + name: coredns_dns_requests_total + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + metric_source: k8s-coredns + os.type: linux + plugin: loadbalance + rcode: + server: + system.type: coredns + zone: . + name: coredns_dns_responses_total + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: cpu.idle + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: cpu.num_processors + type: IntGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: cpu.utilization + type: DoubleGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: disk.summary_utilization + type: DoubleGauge + - attributes: + device: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + mode: + mountpoint: + os.type: linux + type: ext4 + name: disk.utilization + type: DoubleGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: disk_ops.total + type: IntGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: memory.total + type: IntGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: memory.utilization + type: DoubleGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: network.total + type: IntMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: hostmetrics + scraper: cpu + service.instance.id: + service.name: otel-agent + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_scraper_errored_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + http.scheme: http + k8s.cluster.name: test-cluster + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + net.host.name: + net.host.port: '8889' + os.type: linux + receiver: hostmetrics + scraper: cpu + service.instance.id: + service.name: otel-agent + service_instance_id: + service_name: otelcol + service_version: + name: otelcol_scraper_scraped_metric_points + type: DoubleMonotonicCumulativeSum + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.cpu.load_average.15m + type: DoubleGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.cpu.load_average.1m + type: DoubleGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.cpu.load_average.5m + type: DoubleGauge + - attributes: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.disk.io.total + type: IntMonotonicCumulativeSum + - attributes: + device: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.disk.operations + type: IntMonotonicCumulativeSum + - attributes: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.disk.operations.total + type: IntMonotonicCumulativeSum + - attributes: + device: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + mode: + mountpoint: + os.type: linux + state: + type: + name: system.filesystem.usage + type: IntGauge + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + state: + name: system.memory.usage + type: IntGauge + - attributes: + device: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.network.errors + type: IntMonotonicCumulativeSum + - attributes: + device: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.network.io + type: IntMonotonicCumulativeSum + - attributes: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.network.io.total + type: IntMonotonicCumulativeSum + - attributes: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: system.network.packets.total + type: IntMonotonicCumulativeSum + - attributes: + direction: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + type: + name: system.paging.operations + type: IntMonotonicCumulativeSum + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: vmpage_io.swap.in + type: IntMonotonicCumulativeSum + - attributes: + host.name: + k8s.cluster.name: test-cluster + k8s.node.name: + os.type: linux + name: vmpage_io.swap.out + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.available + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.capacity + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.filesystem.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container.memory.usage + type: IntGauge + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: coredns + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: etcd + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kindnet-cni + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-apiserver + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-controller-manager + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-proxy + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: kube-scheduler + k8s.namespace.name: kube-system + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: local-path-provisioner + k8s.namespace.name: local-path-storage + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: monitoring + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum + - attributes: + container.id: + host.name: + k8s.cluster.name: test-cluster + k8s.container.name: otel-collector + k8s.namespace.name: testing + k8s.node.name: + k8s.pod.name: + k8s.pod.uid: + os.type: linux + name: container_cpu_utilization + type: IntMonotonicCumulativeSum diff --git a/tests/testutils/kubeutils/helm.go b/tests/testutils/kubeutils/helm.go new file mode 100644 index 0000000000..e35f54a3e4 --- /dev/null +++ b/tests/testutils/kubeutils/helm.go @@ -0,0 +1,89 @@ +// Copyright Splunk, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubeutils + +import ( + "context" + "time" + + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v3" + "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v3/pkg/release" +) + +type TestConfig struct { + KindCluster *KindCluster + Configuration *action.Configuration + Settings *cli.EnvSettings +} + +type SettingsFunc func(settings *cli.EnvSettings) + +func Helm(kind *KindCluster, opts ...SettingsFunc) TestConfig { + settings := cli.New() + settings.KubeConfig = kind.Kubeconfig + for _, fn := range opts { + fn(settings) + } + cfg := new(action.Configuration) + err := cfg.Init( + settings.RESTClientGetter(), settings.Namespace(), "memory", + func(format string, v ...interface{}) { + kind.Testcase.Logf(format, v...) + }, + ) + require.NoError(kind.Testcase, err) + + tc := TestConfig{ + KindCluster: kind, + Configuration: cfg, + Settings: settings, + } + return tc +} + +type InstallFunc func(install *action.Install) + +func (tc TestConfig) Install(chartPath, values string, opts ...InstallFunc) (*release.Release, error) { + t := tc.KindCluster.Testcase + vals := map[string]any{} + require.NoError(t, yaml.Unmarshal([]byte(values), &vals)) + client := action.NewInstall(tc.Configuration) + client.GenerateName = true + + name, path, err := client.NameAndChart([]string{chartPath}) + require.NoError(t, err) + client.ReleaseName = name + + cp, err := client.ChartPathOptions.LocateChart(path, tc.Settings) + if err != nil { + return nil, err + } + + chart, err := loader.Load(cp) + require.NoError(t, err) + + c, cancel := context.WithTimeout(context.Background(), time.Minute) + defer cancel() + + for _, fn := range opts { + fn(client) + } + + return client.RunWithContext(c, chart, vals) +} diff --git a/tests/testutils/kubeutils/kind_cluster.go b/tests/testutils/kubeutils/kind_cluster.go index 4e157069ce..6f51cda970 100644 --- a/tests/testutils/kubeutils/kind_cluster.go +++ b/tests/testutils/kubeutils/kind_cluster.go @@ -1,5 +1,4 @@ // Copyright Splunk, Inc. -// Copyright The OpenTelemetry Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,6 +22,7 @@ import ( "io" "os" "regexp" + "runtime" "strings" "text/template" "time" @@ -61,12 +61,13 @@ nodes: ` type KindCluster struct { - Testcase *testutils.Testcase - Clientset *kubernetes.Clientset - ExposedPorts map[uint16]uint16 - Name string - Kubeconfig string - Config string + Testcase *testutils.Testcase + Clientset *kubernetes.Clientset + ExposedPorts map[uint16]uint16 + Name string + Kubeconfig string + Config string + hostFromContainer string } func NewKindCluster(t *testutils.Testcase) *KindCluster { @@ -143,6 +144,25 @@ func (k KindCluster) GetDefaultGatewayIP() string { return "" } +func (k *KindCluster) HostFromContainer() string { + if k.hostFromContainer != "" { + return k.hostFromContainer + } + if runtime.GOOS == "darwin" { + k.hostFromContainer = "host.docker.internal" + } else { + k.hostFromContainer = k.GetDefaultGatewayIP() + } + return k.hostFromContainer +} + +func (k KindCluster) OTLPEndointFromContainer() string { + hostFromContainer := k.HostFromContainer() + splat := strings.Split(k.Testcase.OTLPEndpoint, ":") + port := splat[len(splat)-1] + return fmt.Sprintf("%s:%s", hostFromContainer, port) +} + func (k KindCluster) Kubectl(args ...string) (stdOut, stdErr bytes.Buffer, err error) { return k.runKubectl(nil, args...) } diff --git a/tests/testutils/kubeutils/otlp_sink_deployment.go b/tests/testutils/kubeutils/otlp_sink_deployment.go new file mode 100644 index 0000000000..8db87a6156 --- /dev/null +++ b/tests/testutils/kubeutils/otlp_sink_deployment.go @@ -0,0 +1,285 @@ +// Copyright Splunk, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubeutils + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net" + "net/http" + "strings" + "time" + + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/util/intstr" + + "github.com/signalfx/splunk-otel-collector/tests/testutils" + "github.com/signalfx/splunk-otel-collector/tests/testutils/kubeutils/manifests" +) + +const sinkName = "otlp-sink" + +// OTLPSinkDeployment is a mock Splunk O11Y/Platform backend to capture all +// cluster telemetry for forwarding to a Testcase's OTLPReceiverSink. +type OTLPSinkDeployment struct { + tc *testutils.Testcase + cluster *KindCluster + sb *sbRest + otlpEndpoint string + apiEndpoint string +} + +func NewOTLPSinkDeployment(cluster *KindCluster) *OTLPSinkDeployment { + deployment := &OTLPSinkDeployment{ + tc: cluster.Testcase, + cluster: cluster, + } + var err error + deployment.sb, err = newSBRest(cluster.Testcase.Logf) + require.NoError(deployment.tc, err) + + _, port, err := net.SplitHostPort(deployment.sb.addr) + require.NoError(deployment.tc, err) + deployment.apiEndpoint = fmt.Sprintf("%s:%s", deployment.cluster.HostFromContainer(), port) + deployment.otlpEndpoint = deployment.cluster.OTLPEndointFromContainer() + + deployment.apply() + return deployment +} + +func (dep OTLPSinkDeployment) Teardown() { + dep.sb.shutdown() + so, se, err := dep.cluster.Delete(dep.manifests()) + require.NoError(dep.tc, err, "stdout: %s, stderr: %s", so.String(), se.String()) +} + +func (dep OTLPSinkDeployment) apply() { + so, se, err := dep.cluster.Apply(dep.manifests()) + require.NoError(dep.tc, err, "stdout: %s, stderr: %s", so.String(), se.String()) + dep.cluster.WaitForPods(sinkName, "testing", 2*time.Minute) +} + +func (dep OTLPSinkDeployment) manifests() string { + tenSecs := int64(10) + labels := map[string]string{"app": sinkName} + ns := manifests.Namespace{Name: "testing"} + dplymnt := manifests.Deployment{ + Name: sinkName, Namespace: ns.Name, Replicas: 1, + Labels: labels, + MatchLabels: labels, + Containers: []corev1.Container{ + {Name: "otel-collector", + Image: testutils.GetCollectorImage(), + ImagePullPolicy: corev1.PullIfNotPresent, + Command: []string{"/otelcol", "--config=/conf/relay.yaml"}, + Env: []corev1.EnvVar{{Name: "SPLUNK_MEMORY_TOTAL_MIB", Value: "128"}}, + Ports: containerPorts(), + LivenessProbe: &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: "/", Port: intstr.FromInt32(13133), + }, + }, + TerminationGracePeriodSeconds: &tenSecs, + }, + Resources: corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("200m"), + corev1.ResourceMemory: resource.MustParse("128Mi"), + }, + }, + VolumeMounts: []corev1.VolumeMount{ + { + MountPath: "/conf", + Name: "otlp-sink-configmap", + }, + }, + }, + }, + Volumes: []corev1.Volume{ + { + Name: "otlp-sink-configmap", + VolumeSource: corev1.VolumeSource{ + ConfigMap: &corev1.ConfigMapVolumeSource{ + LocalObjectReference: corev1.LocalObjectReference{Name: sinkName}, + Items: []corev1.KeyToPath{{Key: "relay", Path: "relay.yaml"}}, + }, + }, + }, + }, + } + + cm := manifests.ConfigMap{ + Name: sinkName, + Namespace: ns.Name, + Data: fmt.Sprintf(`relay: | + extensions: + health_check: + http_forwarder: + egress: + endpoint: http://%s + receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + sapm: + endpoint: 0.0.0.0:7276 + signalfx: + access_token_passthrough: true + endpoint: 0.0.0.0:9943 + splunk_hec: + endpoint: 0.0.0.0:8088 + exporters: + otlp: + endpoint: %s + tls: + insecure: true + service: + extensions: + - health_check + - http_forwarder + pipelines: + logs: + exporters: + - otlp + receivers: + - otlp + - splunk_hec + - signalfx + metrics: + exporters: + - otlp + receivers: + - otlp + - signalfx + - splunk_hec + traces: + exporters: + - otlp + receivers: + - otlp + - sapm`, dep.apiEndpoint, dep.otlpEndpoint), + } + + svc := manifests.Service{ + Name: sinkName, Namespace: ns.Name, Type: corev1.ServiceTypeClusterIP, + Selector: labels, Ports: servicePorts(), + } + + return manifests.RenderAll(dep.tc, ns, dplymnt, cm, svc) +} + +func containerPorts() []corev1.ContainerPort { + var ctrPorts []corev1.ContainerPort + for _, tup := range []struct { + string + int32 + }{ + {"http-forwarder", 6060}, + {"otlp", 4317}, + {"otlp-http", 4318}, + {"sapm", 7276}, + {"signalfx", 9943}, + {"splunk-hec", 8088}, + } { + ctrPorts = append(ctrPorts, corev1.ContainerPort{ + Name: tup.string, + ContainerPort: tup.int32, + Protocol: corev1.ProtocolTCP, + }) + } + return ctrPorts +} + +func servicePorts() []corev1.ServicePort { + var svcPorts []corev1.ServicePort + for _, tup := range []struct { + string + int32 + }{ + {"http-forwarder", 26060}, + {"otlp", 24317}, + {"otlp-http", 24318}, + {"sapm", 27276}, + {"signalfx", 29943}, + {"splunk-hec", 28088}, + } { + svcPorts = append(svcPorts, corev1.ServicePort{ + Name: tup.string, + Port: tup.int32, + TargetPort: intstr.FromString(tup.string), + Protocol: corev1.ProtocolTCP, + }) + } + return svcPorts +} + +var _ http.Handler = (*sbRest)(nil) + +type sbRest struct { + server *http.Server + logf func(format string, args ...any) + addr string +} + +func newSBRest(logf func(format string, args ...any)) (*sbRest, error) { + sbr := &sbRest{logf: logf} + listener, err := net.Listen("tcp", "0.0.0.0:0") // nolint:gosec // not a production server + if err != nil { + return nil, err + } + sbr.addr = listener.Addr().String() + sbr.server = &http.Server{Handler: sbr} // nolint:gosec // not a production server + go sbr.server.Serve(listener) + return sbr, nil +} + +func (sbr *sbRest) shutdown() { + sbr.server.Shutdown(context.Background()) +} + +// ServeHTTP currently just logs request content but metadata update test helper +// types should be added in the future for further validation. +func (sbr *sbRest) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + defer request.Body.Close() + msg := &strings.Builder{} + fmt.Fprintf(msg, "url: %s\n", request.URL) + fmt.Fprintf(msg, "method: %v\n", request.Method) + for k, v := range request.Header { + fmt.Fprintf(msg, "header: %v: %v\n", k, v) + } + c, err := io.ReadAll(request.Body) + if err != nil { + fmt.Printf("err: %v\n", err) + } + body := map[string]any{} + if err = json.Unmarshal(c, &body); err == nil { + if c, err = json.MarshalIndent(body, "", " "); err != nil { + fmt.Printf("jsonMarshalIndent: %v\n", err) + } + } else { + fmt.Printf("jsonUnmarshal: %v\n", err) + } + fmt.Fprintf(msg, "body: %v\n\n", string(c)) + sbr.logf("received api request: %s", msg.String()) + writer.WriteHeader(200) +} diff --git a/tests/testutils/kubeutils/otlp_sink_deployment_test.go b/tests/testutils/kubeutils/otlp_sink_deployment_test.go new file mode 100644 index 0000000000..21ac1485ca --- /dev/null +++ b/tests/testutils/kubeutils/otlp_sink_deployment_test.go @@ -0,0 +1,213 @@ +// Copyright Splunk, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build testutils + +package kubeutils + +import ( + "os" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/signalfx/splunk-otel-collector/tests/testutils" +) + +func TestOTLPSinkDeploymentManifest(t *testing.T) { + t.Cleanup(func() func() { + ciev := "SPLUNK_OTEL_COLLECTOR_IMAGE" + prev := os.Getenv(ciev) + os.Setenv(ciev, "some.otelcol.image:with.tag") + return func() { + os.Setenv(ciev, prev) + } + }(), + ) + + deployment := OTLPSinkDeployment{tc: testutils.NewTestcase(t)} + sb, err := newSBRest(t.Logf) + require.NoError(t, err) + deployment.sb = sb + deployment.apiEndpoint = "some.api.endpoint" + deployment.otlpEndpoint = "some.otlp.endpoint" + + expectedManifests := `--- +apiVersion: v1 +kind: Namespace +metadata: + name: testing +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: otlp-sink + namespace: testing + labels: + app: otlp-sink +spec: + replicas: 1 + selector: + matchLabels: + name: otlp-sink + app: otlp-sink + template: + metadata: + labels: + name: otlp-sink + app: otlp-sink + spec: + containers: + - command: + - /otelcol + - --config=/conf/relay.yaml + env: + - name: SPLUNK_MEMORY_TOTAL_MIB + value: "128" + image: some.otelcol.image:with.tag + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: / + port: 13133 + terminationGracePeriodSeconds: 10 + name: otel-collector + ports: + - containerPort: 6060 + name: http-forwarder + protocol: TCP + - containerPort: 4317 + name: otlp + protocol: TCP + - containerPort: 4318 + name: otlp-http + protocol: TCP + - containerPort: 7276 + name: sapm + protocol: TCP + - containerPort: 9943 + name: signalfx + protocol: TCP + - containerPort: 8088 + name: splunk-hec + protocol: TCP + resources: + limits: + cpu: 200m + memory: 128Mi + volumeMounts: + - mountPath: /conf + name: otlp-sink-configmap + volumes: + - configMap: + items: + - key: relay + path: relay.yaml + name: otlp-sink + name: otlp-sink-configmap +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: otlp-sink + namespace: testing +data: + relay: | + extensions: + health_check: + http_forwarder: + egress: + endpoint: http://some.api.endpoint + receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + sapm: + endpoint: 0.0.0.0:7276 + signalfx: + access_token_passthrough: true + endpoint: 0.0.0.0:9943 + splunk_hec: + endpoint: 0.0.0.0:8088 + exporters: + otlp: + endpoint: some.otlp.endpoint + tls: + insecure: true + service: + extensions: + - health_check + - http_forwarder + pipelines: + logs: + exporters: + - otlp + receivers: + - otlp + - splunk_hec + - signalfx + metrics: + exporters: + - otlp + receivers: + - otlp + - signalfx + - splunk_hec + traces: + exporters: + - otlp + receivers: + - otlp + - sapm +--- +apiVersion: v1 +kind: Service +metadata: + name: otlp-sink + namespace: testing +spec: + type: ClusterIP + selector: + app: otlp-sink + ports: + - name: http-forwarder + port: 26060 + protocol: TCP + targetPort: http-forwarder + - name: otlp + port: 24317 + protocol: TCP + targetPort: otlp + - name: otlp-http + port: 24318 + protocol: TCP + targetPort: otlp-http + - name: sapm + port: 27276 + protocol: TCP + targetPort: sapm + - name: signalfx + port: 29943 + protocol: TCP + targetPort: signalfx + - name: splunk-hec + port: 28088 + protocol: TCP + targetPort: splunk-hec +` + require.Equal(t, expectedManifests, deployment.manifests()) +}