From 0aa1fb48770059401855a989b00ea717f42ef2d9 Mon Sep 17 00:00:00 2001 From: Ragot Geoffrey Date: Mon, 13 Nov 2023 15:58:02 +0100 Subject: [PATCH] feat: add configurable service at configuration level and add fallback for control (#844) --- components/ledger/libs/go.mod | 158 --- components/ledger/libs/go.sum | 919 ------------------ .../.earthly/configuration/.helmignore | 23 + .../.earthly/configuration/Chart.yaml | 6 + .../templates/configuration.yaml | 80 ++ .../templates/elasticsearch-secret.yaml | 12 + .../templates/postgres-secret.yaml | 11 + .../templates/temporal-secret.yaml | 61 ++ .../.earthly/configuration/values.yaml | 2 + .../operator/.earthly/k8s-configuration.yaml | 223 ----- components/operator/Earthfile | 5 +- .../apis/stack/v1beta1/configuration_types.go | 10 - .../operator/apis/stack/v1beta3/common.go | 7 +- .../apis/stack/v1beta3/configuration_types.go | 15 + .../apis/stack/v1beta3/control_types.go | 3 +- .../apis/stack/v1beta3/gateway_types.go | 2 + .../apis/stack/v1beta3/ledger_types.go | 7 +- .../apis/stack/v1beta3/orchestration_types.go | 5 +- .../apis/stack/v1beta3/payments_types.go | 7 +- .../apis/stack/v1beta3/search_types.go | 5 +- .../apis/stack/v1beta3/stack_types.go | 9 +- .../apis/stack/v1beta3/wallets_types.go | 3 +- .../apis/stack/v1beta3/webhooks_types.go | 3 +- .../stack/v1beta3/zz_generated.deepcopy.go | 47 +- .../stack.formance.com_configurations.yaml | 16 + .../bases/stack.formance.com_migrations.yaml | 3 + ...ion_configurations.stack.formance.com.yaml | 16 + ...inition_migrations.stack.formance.com.yaml | 3 + .../controllers/stack/stack_reconciler.go | 9 +- .../configmaps--v1/gateway-config.yaml | 1 + .../configmaps--v1/gateway-config.yaml | 1 + .../configmaps--v1/gateway-config.yaml | 1 + .../configmaps--v1/gateway-config.yaml | 1 + .../configmaps--v1/gateway-config.yaml | 1 + .../configmaps--v1/gateway-config.yaml | 1 + .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../configuration.yaml | 75 ++ .../results/configmaps--v1/auth-config.yaml | 28 + .../configmaps--v1/gateway-config.yaml | 266 +++++ .../configmaps--v1/search-benthos-global.yaml | 18 + .../search-benthos-resources.yaml | 35 + .../search-benthos-streams.yaml | 409 ++++++++ .../search-benthos-templates.yaml | 124 +++ .../cronjobs-batch-v1/reindex-ledger.yaml | 39 + .../results/deployments-apps-v1/auth.yaml | 132 +++ .../results/deployments-apps-v1/gateway.yaml | 106 ++ .../results/deployments-apps-v1/ledger.yaml | 121 +++ .../orchestration-worker.yaml | 107 ++ .../deployments-apps-v1/orchestration.yaml | 119 +++ .../deployments-apps-v1/payments-api.yaml | 123 +++ .../payments-connectors.yaml | 123 +++ .../deployments-apps-v1/search-benthos.yaml | 149 +++ .../results/deployments-apps-v1/search.yaml | 114 +++ .../results/deployments-apps-v1/stargate.yaml | 105 ++ .../results/deployments-apps-v1/wallets.yaml | 101 ++ .../deployments-apps-v1/webhooks-worker.yaml | 107 ++ .../results/deployments-apps-v1/webhooks.yaml | 117 +++ .../gateway.yaml | 22 + .../jobs-batch-v1/auth-create-database.yaml | 57 ++ .../jobs-batch-v1/ledger-create-database.yaml | 57 ++ .../ledger-latest-db-migration.yaml | 56 ++ .../orchestration-create-database.yaml | 57 ++ .../payments-create-database.yaml | 57 ++ .../payments-latest-db-migration.yaml | 54 + .../webhooks-create-database.yaml | 57 ++ .../payments-v0.6.5-post-upgrade.yaml | 17 + .../payments-v0.7.0-post-upgrade.yaml | 17 + .../payments-v0.8.0-post-upgrade.yaml | 17 + .../payments-v0.8.1-post-upgrade.yaml | 17 + .../search-v0.0.0-pre-upgrade.yaml | 17 + .../search-v0.7.0-post-upgrade.yaml | 17 + .../search-v0.7.0-pre-upgrade.yaml | 17 + .../wallets-v0.4.3-post-upgrade.yaml | 17 + .../wallets-v0.4.4-post-upgrade.yaml | 17 + .../results/secrets--v1/auth-secret.yaml | 10 + .../results/services--v1/auth.yaml | 24 + .../results/services--v1/gateway.yaml | 24 + .../results/services--v1/ledger.yaml | 24 + .../results/services--v1/orchestration.yaml | 24 + .../results/services--v1/payments-api.yaml | 24 + .../services--v1/payments-connectors.yaml | 24 + .../results/services--v1/search-benthos.yaml | 24 + .../results/services--v1/search.yaml | 24 + .../results/services--v1/wallets.yaml | 24 + .../results/services--v1/webhooks.yaml | 24 + .../stack.yaml | 11 + .../versions.yaml | 7 + .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../configmaps--v1/gateway-config.yaml | 1 + .../results/deployments-apps-v1/gateway.yaml | 2 +- .../internal/modules/gateway/handler.go | 30 +- .../operator/internal/modules/service.go | 46 +- components/operator/internal/modules/stack.go | 10 +- 103 files changed, 3737 insertions(+), 1402 deletions(-) create mode 100644 components/operator/.earthly/configuration/.helmignore create mode 100644 components/operator/.earthly/configuration/Chart.yaml create mode 100644 components/operator/.earthly/configuration/templates/configuration.yaml create mode 100644 components/operator/.earthly/configuration/templates/elasticsearch-secret.yaml create mode 100644 components/operator/.earthly/configuration/templates/postgres-secret.yaml create mode 100644 components/operator/.earthly/configuration/templates/temporal-secret.yaml create mode 100644 components/operator/.earthly/configuration/values.yaml delete mode 100644 components/operator/.earthly/k8s-configuration.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/configuration.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/auth-config.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/gateway-config.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-global.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-resources.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-streams.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-templates.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/cronjobs-batch-v1/reindex-ledger.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/auth.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/gateway.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/ledger.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration-worker.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-api.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-connectors.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search-benthos.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/stargate.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/wallets.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks-worker.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/ingresses-networking.k8s.io-v1/gateway.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/auth-create-database.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-create-database.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-latest-db-migration.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/orchestration-create-database.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-create-database.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-latest-db-migration.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/webhooks-create-database.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.6.5-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.7.0-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.0-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.1-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.0.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.3-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.4-post-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/secrets--v1/auth-secret.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/auth.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/gateway.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/ledger.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/orchestration.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-api.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-connectors.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search-benthos.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/wallets.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/webhooks.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/stack.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/versions.yaml diff --git a/components/ledger/libs/go.mod b/components/ledger/libs/go.mod index 980b020284..e7e9c9a1bb 100644 --- a/components/ledger/libs/go.mod +++ b/components/ledger/libs/go.mod @@ -1,161 +1,3 @@ module github.com/formancehq/stack/libs/go-libs go 1.19 - -require ( - github.com/Shopify/sarama v1.38.1 - github.com/ThreeDotsLabs/watermill v1.2.0 - github.com/ThreeDotsLabs/watermill-http v1.1.4 - github.com/ThreeDotsLabs/watermill-kafka/v2 v2.2.2 - github.com/ThreeDotsLabs/watermill-nats/v2 v2.0.0 - github.com/coreos/go-semver v0.3.0 - github.com/dgraph-io/ristretto v0.1.1 - github.com/google/uuid v1.3.0 - github.com/imdario/mergo v0.3.13 - github.com/jackc/pgx/v5 v5.3.0 - github.com/lib/pq v1.10.7 - github.com/nats-io/nats-server/v2 v2.9.8 - github.com/nats-io/nats.go v1.23.0 - github.com/ory/dockertest/v3 v3.9.1 - github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 - github.com/pkg/errors v0.9.1 - github.com/segmentio/analytics-go v3.1.0+incompatible - github.com/sirupsen/logrus v1.9.0 - github.com/spf13/cobra v1.6.1 - github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.15.0 - github.com/stretchr/testify v1.8.3 - github.com/uptrace/bun v1.1.14 - github.com/uptrace/bun/dialect/pgdialect v1.1.14 - github.com/uptrace/bun/extra/bundebug v1.1.14 - github.com/uptrace/opentelemetry-go-extra/otellogrus v0.1.21 - github.com/xdg-go/scram v1.1.2 - go.opentelemetry.io/contrib/instrumentation/host v0.42.0 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 - go.opentelemetry.io/contrib/instrumentation/runtime v0.42.0 - go.opentelemetry.io/contrib/propagators/b3 v1.13.0 - go.opentelemetry.io/otel v1.16.0 - go.opentelemetry.io/otel/exporters/jaeger v1.16.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.39.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.39.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.16.0 - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.39.0 - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.16.0 - go.opentelemetry.io/otel/metric v1.16.0 - go.opentelemetry.io/otel/sdk v1.16.0 - go.opentelemetry.io/otel/sdk/metric v0.39.0 - go.opentelemetry.io/otel/trace v1.16.0 - go.uber.org/fx v1.19.1 - go.uber.org/zap v1.24.0 -) - -require ( - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect - github.com/ajg/form v1.5.1 // indirect - github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/containerd/continuity v0.3.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/docker/cli v20.10.17+incompatible // indirect - github.com/docker/docker v20.10.17+incompatible // indirect - github.com/docker/go-connections v0.4.0 // indirect - github.com/docker/go-units v0.4.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/eapache/go-resiliency v1.3.0 // indirect - github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 // indirect - github.com/eapache/queue v1.1.0 // indirect - github.com/fatih/color v1.15.0 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-chi/chi v4.1.2+incompatible // indirect - github.com/go-chi/render v1.0.2 // 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/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect - github.com/jcmturner/aescts/v2 v2.0.0 // indirect - github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect - github.com/jcmturner/gofork v1.7.6 // indirect - github.com/jcmturner/gokrb5/v8 v8.4.3 // indirect - github.com/jcmturner/rpc/v2 v2.0.3 // indirect - github.com/jinzhu/inflection v1.0.0 // indirect - github.com/klauspost/compress v1.15.15 // indirect - github.com/lithammer/shortuuid/v3 v3.0.7 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/minio/highwayhash v1.0.2 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae // indirect - github.com/nats-io/jwt/v2 v2.3.0 // indirect - github.com/nats-io/nkeys v0.3.0 // indirect - github.com/nats-io/nuid v1.0.1 // indirect - github.com/oklog/ulid v1.3.1 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.2 // indirect - github.com/opencontainers/runc v1.1.3 // indirect - github.com/pelletier/go-toml/v2 v2.0.6 // indirect - github.com/pierrec/lz4/v4 v4.1.17 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/segmentio/backo-go v1.0.1 // indirect - github.com/shirou/gopsutil/v3 v3.23.4 // indirect - github.com/shoenig/go-m1cpu v0.1.5 // indirect - github.com/spf13/afero v1.9.3 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect - github.com/tklauser/go-sysconf v0.3.11 // indirect - github.com/tklauser/numcpus v0.6.0 // indirect - github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect - github.com/uptrace/opentelemetry-go-extra/otelutil v0.1.21 // indirect - github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect - github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/xdg-go/pbkdf2 v1.0.0 // indirect - github.com/xdg-go/stringprep v1.0.4 // 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/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect - github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.opentelemetry.io/contrib/instrumentation/github.com/Shopify/sarama/otelsarama v0.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.39.0 // indirect - go.opentelemetry.io/proto/otlp v0.19.0 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/dig v1.16.1 // indirect - go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect - golang.org/x/time v0.2.0 // indirect - golang.org/x/tools v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect - google.golang.org/grpc v1.55.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) diff --git a/components/ledger/libs/go.sum b/components/ledger/libs/go.sum index 7a1f662cd8..e69de29bb2 100644 --- a/components/ledger/libs/go.sum +++ b/components/ledger/libs/go.sum @@ -1,919 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -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/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.38.1 h1:lqqPUPQZ7zPqYlWpTh+LQ9bhYNu2xJL6k1SJN4WVe2A= -github.com/Shopify/sarama v1.38.1/go.mod h1:iwv9a67Ha8VNa+TifujYoWGxWnu2kNVAQdSdZ4X2o5g= -github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc= -github.com/ThreeDotsLabs/watermill v1.1.0/go.mod h1:Qd1xNFxolCAHCzcMrm6RnjW0manbvN+DJVWc1MWRFlI= -github.com/ThreeDotsLabs/watermill v1.2.0 h1:TU3TML1dnQ/ifK09F2+4JQk2EKhmhXe7Qv7eb5ZpTS8= -github.com/ThreeDotsLabs/watermill v1.2.0/go.mod h1:IuVxGk/kgCN0cex2S94BLglUiB0PwOm8hbUhm6g2Nx4= -github.com/ThreeDotsLabs/watermill-http v1.1.4 h1:wRM54z/BPnIWjGbXMrOnwOlrCAESzoSNxTAHiLysFA4= -github.com/ThreeDotsLabs/watermill-http v1.1.4/go.mod h1:mkQ9CC0pxTZerNwr281rBoOy355vYt/lePkmYSX/BRg= -github.com/ThreeDotsLabs/watermill-kafka/v2 v2.2.2 h1:COB5neqVL8jGwoz1Y9dawQ7Xhxid1XXX8+1CI/PebVU= -github.com/ThreeDotsLabs/watermill-kafka/v2 v2.2.2/go.mod h1:U001oyrHo+df3Q7hIXgKqxY2OW6woz64+GNuIxZokbM= -github.com/ThreeDotsLabs/watermill-nats/v2 v2.0.0 h1:ZbdQ+cHwOZmXByEoKUH8SS6qR/erNQfrsNpvH5z/gfk= -github.com/ThreeDotsLabs/watermill-nats/v2 v2.0.0/go.mod h1:X6pcl579pScj4mII3KM/WJ+bcOqORqiCToy92f4gqJ4= -github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= -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/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= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.3/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/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M= -github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= -github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -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-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/eapache/go-resiliency v1.3.0 h1:RRL0nge+cWGlxXbUzJ7yMcq6w2XBEr19dCN6HECGaT0= -github.com/eapache/go-resiliency v1.3.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho= -github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 h1:8yY/I9ndfrgrXUbOGObLHKBR4Fl3nZXwM2c7OYTT8hM= -github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0= -github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -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= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -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/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= -github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= -github.com/go-chi/render v1.0.2 h1:4ER/udB0+fMWB2Jlf15RV3F4A2FDuYi/9f+lFttR/Lg= -github.com/go-chi/render v1.0.2/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0 h1:1JYBfzqrWPcCclBwxFCPAou9n+q86mfnu7NAeHfte7A= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0/go.mod h1:YDZoGHuwE+ov0c8smSH49WLF3F2LaWnYYuDVd+EWrc0= -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-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -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-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -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.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.3.0 h1:/NQi8KHMpKWHInxXesC8yD4DhkXPrVhmnwYkjp9AmBA= -github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= -github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= -github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= -github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= -github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg= -github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= -github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= -github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= -github.com/jcmturner/gokrb5/v8 v8.4.3 h1:iTonLeSJOn7MVUtyMT+arAn5AKAPrkilzhGw8wE/Tq8= -github.com/jcmturner/gokrb5/v8 v8.4.3/go.mod h1:dqRwJGXznQrzw6cWmyo6kH+E7jksEQG/CyVWsJEsJO0= -github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= -github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= -github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -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/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lithammer/shortuuid/v3 v3.0.4/go.mod h1:RviRjexKqIzx/7r1peoAITm6m7gnif/h+0zmolKJjzw= -github.com/lithammer/shortuuid/v3 v3.0.7 h1:trX0KTHy4Pbwo/6ia8fscyHoGA+mf1jWbPJVuvyJQQ8= -github.com/lithammer/shortuuid/v3 v3.0.7/go.mod h1:vMk8ke37EmiewwolSO1NLW8vP4ZaKlRuDIi8tWWmAts= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -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.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt/v2 v2.3.0 h1:z2mA1a7tIf5ShggOFlR1oBPgd6hGqcDYsISxZByUzdI= -github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k= -github.com/nats-io/nats-server/v2 v2.9.8 h1:jgxZsv+A3Reb3MgwxaINcNq/za8xZInKhDg9Q0cGN1o= -github.com/nats-io/nats-server/v2 v2.9.8/go.mod h1:AB6hAnGZDlYfqb7CTAm66ZKMZy9DpfierY1/PbpvI2g= -github.com/nats-io/nats.go v1.23.0 h1:lR28r7IX44WjYgdiKz9GmUeW0uh/m33uD3yEjLZ2cOE= -github.com/nats-io/nats.go v1.23.0/go.mod h1:ki/Scsa23edbh8IRZbCuNXR9TDcbvfaSijKtaqQgw+Q= -github.com/nats-io/nkeys v0.3.0 h1:cgM5tL53EvYRU+2YLXIK0G2mJtK12Ft9oeooSZMA2G8= -github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= -github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -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.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/ory/dockertest/v3 v3.9.1 h1:v4dkG+dlu76goxMiTT2j8zV7s4oPPEppKT8K8p2f1kY= -github.com/ory/dockertest/v3 v3.9.1/go.mod h1:42Ir9hmvaAPm0Mgibk6mBPi7SFvTXxEcnztDYOJ//uM= -github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= -github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= -github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= -github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= -github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= -github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/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/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_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/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -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/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/segmentio/analytics-go v3.1.0+incompatible h1:IyiOfUgQFVHvsykKKbdI7ZsH374uv3/DfZUo9+G0Z80= -github.com/segmentio/analytics-go v3.1.0+incompatible/go.mod h1:C7CYBtQWk4vRk2RyLu0qOcbHJ18E3F1HV2C/8JvKN48= -github.com/segmentio/backo-go v1.0.1 h1:68RQccglxZeyURy93ASB/2kc9QudzgIDexJ927N++y4= -github.com/segmentio/backo-go v1.0.1/go.mod h1:9/Rh6yILuLysoQnZ2oNooD2g7aBnvM7r/fNVxRNWfBc= -github.com/shirou/gopsutil/v3 v3.23.4 h1:hZwmDxZs7Ewt75DV81r4pFMqbq+di2cbt9FsQBqLD2o= -github.com/shirou/gopsutil/v3 v3.23.4/go.mod h1:ZcGxyfzAMRevhUR2+cfhXDH6gQdFYE/t8j1nsU4mPI8= -github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLrQ= -github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= -github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= -github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.8.1/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/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= -github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= -github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= -github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= -github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= -github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= -github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= -github.com/uptrace/bun v1.1.14 h1:S5vvNnjEynJ0CvnrBOD7MIRW7q/WbtvFXrdfy0lddAM= -github.com/uptrace/bun v1.1.14/go.mod h1:RHk6DrIisO62dv10pUOJCz5MphXThuOTpVNYEYv7NI8= -github.com/uptrace/bun/dialect/pgdialect v1.1.14 h1:b7+V1KDJPQSFYgkG/6YLXCl2uvwEY3kf/GSM7hTHRDY= -github.com/uptrace/bun/dialect/pgdialect v1.1.14/go.mod h1:v6YiaXmnKQ2FlhRD2c0ZfKd+QXH09pYn4H8ojaavkKk= -github.com/uptrace/bun/extra/bundebug v1.1.14 h1:9OCGfP9ZDlh41u6OLerWdhBtJAVGXHr0xtxO4xWi6t0= -github.com/uptrace/bun/extra/bundebug v1.1.14/go.mod h1:lto3guzS2v6mnQp1+akyE+ecBLOltevDDe324NXEYdw= -github.com/uptrace/opentelemetry-go-extra/otellogrus v0.1.21 h1:OXsouNDvuET5o1A4uvoCnAXuuNke8JlfZWceciyUlC8= -github.com/uptrace/opentelemetry-go-extra/otellogrus v0.1.21/go.mod h1:Xm3wlRGm5xzdAGPOvqydXPiGj0Da1q0OlUNm7Utoda4= -github.com/uptrace/opentelemetry-go-extra/otelutil v0.1.21 h1:HCqo51kNF8wxDMDhxcN5S6DlfZXigMtptRpkvjBCeVc= -github.com/uptrace/opentelemetry-go-extra/otelutil v0.1.21/go.mod h1:2MNqrUmDrt5E0glMuoJI/9FyGVpBKo1FqjSH60UOZFg= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= -github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= -github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= -github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= -github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= -github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= -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/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c h1:3lbZUMbMiGUW/LMkfsEABsc5zNT9+b1CvsJx47JzJ8g= -github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/contrib/instrumentation/github.com/Shopify/sarama/otelsarama v0.42.0 h1:bdoQBGxf0fxHaJo/Ry+RCi8k2ug7T5pqD/NdrwnbyyE= -go.opentelemetry.io/contrib/instrumentation/github.com/Shopify/sarama/otelsarama v0.42.0/go.mod h1:TDCzwfNfOr8Of31UVortnNAvRrgMyMS0zAXw9I3hoSc= -go.opentelemetry.io/contrib/instrumentation/host v0.42.0 h1:/GMlvboQJd4LWxNX/oGYLv06J5a/M/flauLruM/3U2g= -go.opentelemetry.io/contrib/instrumentation/host v0.42.0/go.mod h1:w6v1mVemRjTTdfejACjf+LgVA6zKtHOWmdAIf3icx7A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8= -go.opentelemetry.io/contrib/instrumentation/runtime v0.42.0 h1:EbmAUG9hEAMXyfWEasIt2kmh/WmXUznUksChApTgBGc= -go.opentelemetry.io/contrib/instrumentation/runtime v0.42.0/go.mod h1:rD9feqRYP24P14t5kmhNMqsqm1jvKmpx2H2rKVw52V8= -go.opentelemetry.io/contrib/propagators/b3 v1.13.0 h1:f17PBmZK60RoHvOpJVqEka8oS2EXjpjHquESD/8zZ50= -go.opentelemetry.io/contrib/propagators/b3 v1.13.0/go.mod h1:zy2hz1TpGUoJzSwlBchVGvVAFQS8s2pglKLbrAFZ+Sc= -go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= -go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= -go.opentelemetry.io/otel/exporters/jaeger v1.16.0 h1:YhxxmXZ011C0aDZKoNw+juVWAmEfv/0W2XBOv9aHTaA= -go.opentelemetry.io/otel/exporters/jaeger v1.16.0/go.mod h1:grYbBo/5afWlPpdPZYhyn78Bk04hnvxn2+hvxQhKIQM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.39.0 h1:f6BwB2OACc3FCbYVznctQ9V6KK7Vq6CjmYXJ7DeSs4E= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.39.0/go.mod h1:UqL5mZ3qs6XYhDnZaW1Ps4upD+PX6LipH40AoeuIlwU= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.39.0 h1:rm+Fizi7lTM2UefJ1TO347fSRcwmIsUAaZmYmIGBRAo= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.39.0/go.mod h1:sWFbI3jJ+6JdjOVepA5blpv/TJ20Hw+26561iMbWcwU= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.39.0 h1:IZXpCEtI7BbX01DRQEWTGDkvjMB6hEhiEZXS+eg2YqY= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.39.0/go.mod h1:xY111jIZtWb+pUUgT4UiiSonAaY2cD2Ts5zvuKLki3o= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 h1:cbsD4cUcviQGXdw8+bo5x2wazq10SKz8hEbtCRPcU78= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0/go.mod h1:JgXSGah17croqhJfhByOLVY719k1emAXC8MVhCIJlRs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 h1:TVQp/bboR4mhZSav+MdgXB8FaRho1RC8UwVn3T0vjVc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0/go.mod h1:I33vtIe0sR96wfrUcilIzLoA3mLHhRmz9S9Te0S3gDo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.16.0 h1:iqjq9LAB8aK++sKVcELezzn655JnBNdsDhghU4G/So8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.16.0/go.mod h1:hGXzO5bhhSHZnKvrDaXB82Y9DRFour0Nz/KrBh7reWw= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.39.0 h1:fl2WmyenEf6LYYlfHAtCUEDyGcpwJNqD4dHGO7PVm4w= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.39.0/go.mod h1:csyQxQ0UHHKVA8KApS7eUO/klMO5sd/av5CNZNU4O6w= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.16.0 h1:+XWJd3jf75RXJq29mxbuXhCXFDG3S3R4vBUeSI2P7tE= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.16.0/go.mod h1:hqgzBPTf4yONMFgdZvL/bK42R/iinTyVQtiWihs3SZc= -go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= -go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= -go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= -go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= -go.opentelemetry.io/otel/sdk/metric v0.39.0 h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI= -go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= -go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= -go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/dig v1.16.1 h1:+alNIBsl0qfY0j6epRubp/9obgtrObRAc5aD+6jbWY8= -go.uber.org/dig v1.16.1/go.mod h1:557JTAUZT5bUK0SvCwikmLPPtdQhfvLYtO5tJgQSbnk= -go.uber.org/fx v1.19.1 h1:JwYIYAQzXBuBBwSZ1/tn/95pnQO/Sp3yE8lWj9eSAzI= -go.uber.org/fx v1.19.1/go.mod h1:bGK+AEy7XUwTBkqCsK/vDyFF0JJOA6X5KWpNC0e6qTA= -go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220725212005-46097bf591d3/go.mod h1:AaygXjzTFtRAg2ttMY5RMuhpJ3cNnI0XpyFJD1iQRSM= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.2.0 h1:52I/1L54xyEQAYdtcSuxtiT84KGYTBGXwayxmIpNJhE= -golang.org/x/time v0.2.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -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/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.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/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.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/components/operator/.earthly/configuration/.helmignore b/components/operator/.earthly/configuration/.helmignore new file mode 100644 index 0000000000..0e8a0eb36f --- /dev/null +++ b/components/operator/.earthly/configuration/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/components/operator/.earthly/configuration/Chart.yaml b/components/operator/.earthly/configuration/Chart.yaml new file mode 100644 index 0000000000..f6fdeae664 --- /dev/null +++ b/components/operator/.earthly/configuration/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +name: configuration +description: A Helm chart for Kubernetes +type: application +version: 0.1.0 +appVersion: "0.1.0" diff --git a/components/operator/.earthly/configuration/templates/configuration.yaml b/components/operator/.earthly/configuration/templates/configuration.yaml new file mode 100644 index 0000000000..0b70de72b6 --- /dev/null +++ b/components/operator/.earthly/configuration/templates/configuration.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: stack.formance.com/v1beta3 +kind: Configuration +metadata: + name: stacks +spec: +# registries: +# public.ecr.aws: +# endpoint: 192.168.1.54:32103 + ingress: + annotations: + traefik.ingress.kubernetes.io/router.tls: "true" + tls: + secretName: public-formance-production-certificate + light: false + monitoring: + traces: + otlp: + endpoint: otel-collector-opentelemetry-collector.formance.svc.cluster.local + insecure: true + mode: grpc + port: 4317 + resourceAttributes: "foo=bar" + temporal: + address: "local-operator.sihc8.tmprl.cloud:7233" + namespace: "local-operator.sihc8" + tls: + secretName: temporal + broker: + nats: + url: nats.default.svc.cluster.local:4222 + services: + gateway: + fallback: {{ .Values.gateway.fallback}} + control: + disabled: true + auth: + postgres: + credentialsFromSecret: postgres + host: postgres-postgresql.formance.svc.cluster.local + port: 5432 + staticClients: + - id: foo + public: true + secrets: + - bar + ledger: + #deploymentStrategy: single-writer + debug: true + postgres: + credentialsFromSecret: postgres + host: postgres-postgresql.formance.svc.cluster.local + port: 5432 + disableSSLMode: true + payments: + postgres: + credentialsFromSecret: postgres + host: postgres-postgresql.formance.svc.cluster.local + port: 5432 + disableSSLMode: true + encryptionKey: ClaptonIsGod + orchestration: + postgres: + credentialsFromSecret: postgres + host: postgres-postgresql.formance.svc.cluster.local + port: 5432 + disableSSLMode: true + search: + elasticSearch: + host: elasticsearch-master.formance.svc.cluster.local + port: 9200 + scheme: http + basicAuth: + fromSecret: elasticsearch + webhooks: + postgres: + credentialsFromSecret: postgres + host: postgres-postgresql.formance.svc.cluster.local + port: 5432 + disableSSLMode: true diff --git a/components/operator/.earthly/configuration/templates/elasticsearch-secret.yaml b/components/operator/.earthly/configuration/templates/elasticsearch-secret.yaml new file mode 100644 index 0000000000..78b7b0f63e --- /dev/null +++ b/components/operator/.earthly/configuration/templates/elasticsearch-secret.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Secret +type: kubernetes.io/basic-auth +metadata: + name: elasticsearch + namespace: formance-system + labels: + stacks.formance.cloud/partof-configuration: any +stringData: + username: "admin" + password: "Complexpass#123" \ No newline at end of file diff --git a/components/operator/.earthly/configuration/templates/postgres-secret.yaml b/components/operator/.earthly/configuration/templates/postgres-secret.yaml new file mode 100644 index 0000000000..0ab2365a8f --- /dev/null +++ b/components/operator/.earthly/configuration/templates/postgres-secret.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: postgres + namespace: formance-system + labels: + stacks.formance.cloud/partof-configuration: any +stringData: + username: "formance" + password: "formance" \ No newline at end of file diff --git a/components/operator/.earthly/configuration/templates/temporal-secret.yaml b/components/operator/.earthly/configuration/templates/temporal-secret.yaml new file mode 100644 index 0000000000..9f68b94f06 --- /dev/null +++ b/components/operator/.earthly/configuration/templates/temporal-secret.yaml @@ -0,0 +1,61 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: temporal + namespace: formance-system + labels: + stacks.formance.cloud/partof-configuration: any +type: kubernetes.io/tls +stringData: + tls.crt: | + -----BEGIN CERTIFICATE----- + MIIDvDCCAqSgAwIBAgIUTQMMmzxFv5yUcH6H3l3AI+o01CswDQYJKoZIhvcNAQEL + BQAwFzEVMBMGA1UEAxMMZm9ybWFuY2UuY29tMB4XDTIzMDEyMDEwMTExNVoXDTMz + MDExNzA5MTE0NVowGTEXMBUGA1UEAwwOKi5mb3JtYW5jZS5jb20wggEiMA0GCSqG + SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7NlrS6MuTXIEdUIs4FKaQY3krG4w7KKpr + /ztQXYJ/4kyit+xnP6uuIiEs5qwfWJnS3V5a5ZGHF6x2GdZAKRMlHt3xxL7K39xu + sY06kwCcNP7eNDKdz4fbaRQ109vM6ANY6h1VgZ7A/e49swV5gpJ+YfPqRykood6H + afGSL0jLzFqTujjbNV6ZwIRD7ZMIa/NOYlb6oxlfZZXtMKwPY7An5fpDyEVJCRrP + G2dShu0WHZlctzCjR3WFNfNPIN44yaPdF9q/WweWwcei8pcoz+d5m9sjUeviIhfb + dXODDWbwJu1i1COOGz0suWchPQJCYGc9xOigCDWrH5A2BSu3C2gzAgMBAAGjgf0w + gfowDgYDVR0PAQH/BAQDAgOoMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD + AjAdBgNVHQ4EFgQU564vj1K2ZEtgkcLtl5JurExg6AcwHwYDVR0jBBgwFoAU9JfZ + psQJOHGZ+vYuZzZLPQRLYmwwOwYIKwYBBQUHAQEELzAtMCsGCCsGAQUFBzAChh9o + dHRwOi8vMTI3LjAuMC4xOjgyMDAvdjEvcGtpL2NhMBkGA1UdEQQSMBCCDiouZm9y + bWFuY2UuY29tMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly8xMjcuMC4wLjE6ODIw + MC92MS9wa2kvY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQAW9ispaeU9UnoTUihFf+cx + RzNQ+JbxGoAihvri25YbxnXifjd/v9D9GnP50dkhfPcBQZnFtspsg9gAMla/Hhl8 + 3g4liINIIMYy1wHak9K22a3+k5yKspbFovtvsOoac5jt0fIl+2MiBY3G1V7lKiZL + LQiOlDdmBlzkldGD3ubunuh1NTMUbnBF8JTKquSqZv1i7Js6UbelJg89g9gh4N+R + gK3El3m5jc2sLFQbuWiDx8gZtNWAd5wihs9ban87Dc9YOZ6695Dd/woifhMRuIWG + YIezLQgPPPiyvTcTARipcA68eVu5GpFG8L3BKR9Mz5TThasRnsFwfa/ylbZkSWun + -----END CERTIFICATE----- + tls.key: | + -----BEGIN RSA PRIVATE KEY----- + MIIEowIBAAKCAQEAuzZa0ujLk1yBHVCLOBSmkGN5KxuMOyiqa/87UF2Cf+JMorfs + Zz+rriIhLOasH1iZ0t1eWuWRhxesdhnWQCkTJR7d8cS+yt/cbrGNOpMAnDT+3jQy + nc+H22kUNdPbzOgDWOodVYGewP3uPbMFeYKSfmHz6kcpKKHeh2nxki9Iy8xak7o4 + 2zVemcCEQ+2TCGvzTmJW+qMZX2WV7TCsD2OwJ+X6Q8hFSQkazxtnUobtFh2ZXLcw + o0d1hTXzTyDeOMmj3Rfav1sHlsHHovKXKM/neZvbI1Hr4iIX23Vzgw1m8CbtYtQj + jhs9LLlnIT0CQmBnPcTooAg1qx+QNgUrtwtoMwIDAQABAoIBADEmhhXVVI0tviAq + I0Ln+Qrzcr5kjx6BAK015yakRjy49xHJY+F/j905zKfzL8FTC5+WyszmdJyZFIg1 + JFDX99TJE9ADrWup9j+BkeiM654XM8q2vYs9DxgFsG6pXo2fZDGV1Xm7fCiDAmdk + ds1+AGP554XchOvMA5ZdtDSDAYOvgiTnhR+ic881U+L4DkHt+HRHv8ZFcuuUa5z/ + IVSoAR/yIUcQZeimp2l/SZoYk50pfzFNksAfnye6OS0PFhwNT/MX1+3u3ytm34Yj + fcXG/c1uKwfIR9GA/VseRDah0k+8fhsgECGeqtEJwUOqAzAmVWfyaCy6Ud/whAQP + qtl9aTECgYEA3/QJQO9MhlKCpxyOuTm/vAb/Tx0hO6Erd+jWwv8P2GMpM1n4kZd8 + O5/PPzPQKDlHu2gqNqwfqL77+RWw8xHQ25mUtfLVCiIPF4SVsNLD66E9KzU4yYpS + p40QckRHdaOO5gJmubkWV3UQczq2rPZyPs/Msy0r/8ilq4smMIjYpW8CgYEA1gBo + H2v14v7x4LhgpdJrMOg4gc80qJyFpxYxw2T/CdmyjVhsVCDGF/0d3j4Lo/SJB2y6 + YolJb6T3orCUnxOE8CHUktgHB7Auheh1Ls4xyA/HKExRvO8kh/YkBn+z3bIki0QB + w29yRx3d8hBu9hJT52f9veXN6wqzrp68H0Iw730CgYEA3nB/eHW25nuxtdZRlHxd + ip7Qm33tclLE4BbuqUO6M01asNyeXc2+4WH78WS/ThSGwQfXVfJkh7EaiO8YkHWT + o2rKIGaPX78wikVwgO73FmVSYkY8n0G6kx0zxqs25wuLdb3Q1ouWO0vVCP66TtWB + 6A1x3k3xs99RXi+ZwP9LYBUCgYAej3pPGmzH2N6T1+C9bXovRspjB0Me3RNdFBdR + LwgY0QTlmH4H2ZJQdK4iQbwJ0u8Kp2VKkw5wqh9PFWZz/Sab4EjqG32NhIRwTQ0G + /R0w08f+Ij/9+iy+WdE1OGFoRHthg/m4fh7Utxgt7FjcPSvMPRaIWtv4N9QHGNYG + pL42RQKBgCRDE6abLoeUN38GIfQ09YeWoaRgQ0WYzeNwzu1Yl2VwLifWjrbukKZX + p+3B/M7FaeXhjJ3qSVDXBXqI94B7NLjH32CxKsuil2ry7p+lLzdBDquUtMoL17lg + xpAA8tqK3W+E8gj01vKhbcGP28373jREU016/HCbEHRsNxW/BGDj + -----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/components/operator/.earthly/configuration/values.yaml b/components/operator/.earthly/configuration/values.yaml new file mode 100644 index 0000000000..7f99d382c9 --- /dev/null +++ b/components/operator/.earthly/configuration/values.yaml @@ -0,0 +1,2 @@ +gateway: + fallback: "" \ No newline at end of file diff --git a/components/operator/.earthly/k8s-configuration.yaml b/components/operator/.earthly/k8s-configuration.yaml deleted file mode 100644 index cdeb943fee..0000000000 --- a/components/operator/.earthly/k8s-configuration.yaml +++ /dev/null @@ -1,223 +0,0 @@ ---- -apiVersion: v1 -kind: Secret -metadata: - name: temporal - namespace: formance-system - labels: - stacks.formance.cloud/partof-configuration: any -type: kubernetes.io/tls -stringData: - tls.crt: | - -----BEGIN CERTIFICATE----- - MIIDvDCCAqSgAwIBAgIUTQMMmzxFv5yUcH6H3l3AI+o01CswDQYJKoZIhvcNAQEL - BQAwFzEVMBMGA1UEAxMMZm9ybWFuY2UuY29tMB4XDTIzMDEyMDEwMTExNVoXDTMz - MDExNzA5MTE0NVowGTEXMBUGA1UEAwwOKi5mb3JtYW5jZS5jb20wggEiMA0GCSqG - SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7NlrS6MuTXIEdUIs4FKaQY3krG4w7KKpr - /ztQXYJ/4kyit+xnP6uuIiEs5qwfWJnS3V5a5ZGHF6x2GdZAKRMlHt3xxL7K39xu - sY06kwCcNP7eNDKdz4fbaRQ109vM6ANY6h1VgZ7A/e49swV5gpJ+YfPqRykood6H - afGSL0jLzFqTujjbNV6ZwIRD7ZMIa/NOYlb6oxlfZZXtMKwPY7An5fpDyEVJCRrP - G2dShu0WHZlctzCjR3WFNfNPIN44yaPdF9q/WweWwcei8pcoz+d5m9sjUeviIhfb - dXODDWbwJu1i1COOGz0suWchPQJCYGc9xOigCDWrH5A2BSu3C2gzAgMBAAGjgf0w - gfowDgYDVR0PAQH/BAQDAgOoMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD - AjAdBgNVHQ4EFgQU564vj1K2ZEtgkcLtl5JurExg6AcwHwYDVR0jBBgwFoAU9JfZ - psQJOHGZ+vYuZzZLPQRLYmwwOwYIKwYBBQUHAQEELzAtMCsGCCsGAQUFBzAChh9o - dHRwOi8vMTI3LjAuMC4xOjgyMDAvdjEvcGtpL2NhMBkGA1UdEQQSMBCCDiouZm9y - bWFuY2UuY29tMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly8xMjcuMC4wLjE6ODIw - MC92MS9wa2kvY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQAW9ispaeU9UnoTUihFf+cx - RzNQ+JbxGoAihvri25YbxnXifjd/v9D9GnP50dkhfPcBQZnFtspsg9gAMla/Hhl8 - 3g4liINIIMYy1wHak9K22a3+k5yKspbFovtvsOoac5jt0fIl+2MiBY3G1V7lKiZL - LQiOlDdmBlzkldGD3ubunuh1NTMUbnBF8JTKquSqZv1i7Js6UbelJg89g9gh4N+R - gK3El3m5jc2sLFQbuWiDx8gZtNWAd5wihs9ban87Dc9YOZ6695Dd/woifhMRuIWG - YIezLQgPPPiyvTcTARipcA68eVu5GpFG8L3BKR9Mz5TThasRnsFwfa/ylbZkSWun - -----END CERTIFICATE----- - tls.key: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEAuzZa0ujLk1yBHVCLOBSmkGN5KxuMOyiqa/87UF2Cf+JMorfs - Zz+rriIhLOasH1iZ0t1eWuWRhxesdhnWQCkTJR7d8cS+yt/cbrGNOpMAnDT+3jQy - nc+H22kUNdPbzOgDWOodVYGewP3uPbMFeYKSfmHz6kcpKKHeh2nxki9Iy8xak7o4 - 2zVemcCEQ+2TCGvzTmJW+qMZX2WV7TCsD2OwJ+X6Q8hFSQkazxtnUobtFh2ZXLcw - o0d1hTXzTyDeOMmj3Rfav1sHlsHHovKXKM/neZvbI1Hr4iIX23Vzgw1m8CbtYtQj - jhs9LLlnIT0CQmBnPcTooAg1qx+QNgUrtwtoMwIDAQABAoIBADEmhhXVVI0tviAq - I0Ln+Qrzcr5kjx6BAK015yakRjy49xHJY+F/j905zKfzL8FTC5+WyszmdJyZFIg1 - JFDX99TJE9ADrWup9j+BkeiM654XM8q2vYs9DxgFsG6pXo2fZDGV1Xm7fCiDAmdk - ds1+AGP554XchOvMA5ZdtDSDAYOvgiTnhR+ic881U+L4DkHt+HRHv8ZFcuuUa5z/ - IVSoAR/yIUcQZeimp2l/SZoYk50pfzFNksAfnye6OS0PFhwNT/MX1+3u3ytm34Yj - fcXG/c1uKwfIR9GA/VseRDah0k+8fhsgECGeqtEJwUOqAzAmVWfyaCy6Ud/whAQP - qtl9aTECgYEA3/QJQO9MhlKCpxyOuTm/vAb/Tx0hO6Erd+jWwv8P2GMpM1n4kZd8 - O5/PPzPQKDlHu2gqNqwfqL77+RWw8xHQ25mUtfLVCiIPF4SVsNLD66E9KzU4yYpS - p40QckRHdaOO5gJmubkWV3UQczq2rPZyPs/Msy0r/8ilq4smMIjYpW8CgYEA1gBo - H2v14v7x4LhgpdJrMOg4gc80qJyFpxYxw2T/CdmyjVhsVCDGF/0d3j4Lo/SJB2y6 - YolJb6T3orCUnxOE8CHUktgHB7Auheh1Ls4xyA/HKExRvO8kh/YkBn+z3bIki0QB - w29yRx3d8hBu9hJT52f9veXN6wqzrp68H0Iw730CgYEA3nB/eHW25nuxtdZRlHxd - ip7Qm33tclLE4BbuqUO6M01asNyeXc2+4WH78WS/ThSGwQfXVfJkh7EaiO8YkHWT - o2rKIGaPX78wikVwgO73FmVSYkY8n0G6kx0zxqs25wuLdb3Q1ouWO0vVCP66TtWB - 6A1x3k3xs99RXi+ZwP9LYBUCgYAej3pPGmzH2N6T1+C9bXovRspjB0Me3RNdFBdR - LwgY0QTlmH4H2ZJQdK4iQbwJ0u8Kp2VKkw5wqh9PFWZz/Sab4EjqG32NhIRwTQ0G - /R0w08f+Ij/9+iy+WdE1OGFoRHthg/m4fh7Utxgt7FjcPSvMPRaIWtv4N9QHGNYG - pL42RQKBgCRDE6abLoeUN38GIfQ09YeWoaRgQ0WYzeNwzu1Yl2VwLifWjrbukKZX - p+3B/M7FaeXhjJ3qSVDXBXqI94B7NLjH32CxKsuil2ry7p+lLzdBDquUtMoL17lg - xpAA8tqK3W+E8gj01vKhbcGP28373jREU016/HCbEHRsNxW/BGDj - -----END RSA PRIVATE KEY----- ---- -apiVersion: v1 -kind: Secret -metadata: - name: postgres - namespace: formance-system - labels: - stacks.formance.cloud/partof-configuration: any -stringData: - username: "formance" - password: "formance" ---- -apiVersion: v1 -kind: Secret -type: kubernetes.io/basic-auth -metadata: - name: elasticsearch - namespace: formance-system - labels: - stacks.formance.cloud/partof-configuration: any -stringData: - username: "admin" - password: "Complexpass#123" ---- -apiVersion: stack.formance.com/v1beta3 -kind: Configuration -metadata: - name: stacks -spec: -# registries: -# public.ecr.aws: -# endpoint: 192.168.1.54:32103 - ingress: - annotations: - traefik.ingress.kubernetes.io/router.tls: "true" - tls: - secretName: public-formance-production-certificate - light: false - monitoring: - traces: - otlp: - endpoint: otel-collector-opentelemetry-collector.formance.svc.cluster.local - insecure: true - mode: grpc - port: 4317 - resourceAttributes: "foo=bar" - temporal: - address: "local-operator.sihc8.tmprl.cloud:7233" - namespace: "local-operator.sihc8" - tls: - #secretName: temporal - crt: | - -----BEGIN CERTIFICATE----- - MIIDvDCCAqSgAwIBAgIUTQMMmzxFv5yUcH6H3l3AI+o01CswDQYJKoZIhvcNAQEL - BQAwFzEVMBMGA1UEAxMMZm9ybWFuY2UuY29tMB4XDTIzMDEyMDEwMTExNVoXDTMz - MDExNzA5MTE0NVowGTEXMBUGA1UEAwwOKi5mb3JtYW5jZS5jb20wggEiMA0GCSqG - SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7NlrS6MuTXIEdUIs4FKaQY3krG4w7KKpr - /ztQXYJ/4kyit+xnP6uuIiEs5qwfWJnS3V5a5ZGHF6x2GdZAKRMlHt3xxL7K39xu - sY06kwCcNP7eNDKdz4fbaRQ109vM6ANY6h1VgZ7A/e49swV5gpJ+YfPqRykood6H - afGSL0jLzFqTujjbNV6ZwIRD7ZMIa/NOYlb6oxlfZZXtMKwPY7An5fpDyEVJCRrP - G2dShu0WHZlctzCjR3WFNfNPIN44yaPdF9q/WweWwcei8pcoz+d5m9sjUeviIhfb - dXODDWbwJu1i1COOGz0suWchPQJCYGc9xOigCDWrH5A2BSu3C2gzAgMBAAGjgf0w - gfowDgYDVR0PAQH/BAQDAgOoMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD - AjAdBgNVHQ4EFgQU564vj1K2ZEtgkcLtl5JurExg6AcwHwYDVR0jBBgwFoAU9JfZ - psQJOHGZ+vYuZzZLPQRLYmwwOwYIKwYBBQUHAQEELzAtMCsGCCsGAQUFBzAChh9o - dHRwOi8vMTI3LjAuMC4xOjgyMDAvdjEvcGtpL2NhMBkGA1UdEQQSMBCCDiouZm9y - bWFuY2UuY29tMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly8xMjcuMC4wLjE6ODIw - MC92MS9wa2kvY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQAW9ispaeU9UnoTUihFf+cx - RzNQ+JbxGoAihvri25YbxnXifjd/v9D9GnP50dkhfPcBQZnFtspsg9gAMla/Hhl8 - 3g4liINIIMYy1wHak9K22a3+k5yKspbFovtvsOoac5jt0fIl+2MiBY3G1V7lKiZL - LQiOlDdmBlzkldGD3ubunuh1NTMUbnBF8JTKquSqZv1i7Js6UbelJg89g9gh4N+R - gK3El3m5jc2sLFQbuWiDx8gZtNWAd5wihs9ban87Dc9YOZ6695Dd/woifhMRuIWG - YIezLQgPPPiyvTcTARipcA68eVu5GpFG8L3BKR9Mz5TThasRnsFwfa/ylbZkSWun - -----END CERTIFICATE----- - key: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEAuzZa0ujLk1yBHVCLOBSmkGN5KxuMOyiqa/87UF2Cf+JMorfs - Zz+rriIhLOasH1iZ0t1eWuWRhxesdhnWQCkTJR7d8cS+yt/cbrGNOpMAnDT+3jQy - nc+H22kUNdPbzOgDWOodVYGewP3uPbMFeYKSfmHz6kcpKKHeh2nxki9Iy8xak7o4 - 2zVemcCEQ+2TCGvzTmJW+qMZX2WV7TCsD2OwJ+X6Q8hFSQkazxtnUobtFh2ZXLcw - o0d1hTXzTyDeOMmj3Rfav1sHlsHHovKXKM/neZvbI1Hr4iIX23Vzgw1m8CbtYtQj - jhs9LLlnIT0CQmBnPcTooAg1qx+QNgUrtwtoMwIDAQABAoIBADEmhhXVVI0tviAq - I0Ln+Qrzcr5kjx6BAK015yakRjy49xHJY+F/j905zKfzL8FTC5+WyszmdJyZFIg1 - JFDX99TJE9ADrWup9j+BkeiM654XM8q2vYs9DxgFsG6pXo2fZDGV1Xm7fCiDAmdk - ds1+AGP554XchOvMA5ZdtDSDAYOvgiTnhR+ic881U+L4DkHt+HRHv8ZFcuuUa5z/ - IVSoAR/yIUcQZeimp2l/SZoYk50pfzFNksAfnye6OS0PFhwNT/MX1+3u3ytm34Yj - fcXG/c1uKwfIR9GA/VseRDah0k+8fhsgECGeqtEJwUOqAzAmVWfyaCy6Ud/whAQP - qtl9aTECgYEA3/QJQO9MhlKCpxyOuTm/vAb/Tx0hO6Erd+jWwv8P2GMpM1n4kZd8 - O5/PPzPQKDlHu2gqNqwfqL77+RWw8xHQ25mUtfLVCiIPF4SVsNLD66E9KzU4yYpS - p40QckRHdaOO5gJmubkWV3UQczq2rPZyPs/Msy0r/8ilq4smMIjYpW8CgYEA1gBo - H2v14v7x4LhgpdJrMOg4gc80qJyFpxYxw2T/CdmyjVhsVCDGF/0d3j4Lo/SJB2y6 - YolJb6T3orCUnxOE8CHUktgHB7Auheh1Ls4xyA/HKExRvO8kh/YkBn+z3bIki0QB - w29yRx3d8hBu9hJT52f9veXN6wqzrp68H0Iw730CgYEA3nB/eHW25nuxtdZRlHxd - ip7Qm33tclLE4BbuqUO6M01asNyeXc2+4WH78WS/ThSGwQfXVfJkh7EaiO8YkHWT - o2rKIGaPX78wikVwgO73FmVSYkY8n0G6kx0zxqs25wuLdb3Q1ouWO0vVCP66TtWB - 6A1x3k3xs99RXi+ZwP9LYBUCgYAej3pPGmzH2N6T1+C9bXovRspjB0Me3RNdFBdR - LwgY0QTlmH4H2ZJQdK4iQbwJ0u8Kp2VKkw5wqh9PFWZz/Sab4EjqG32NhIRwTQ0G - /R0w08f+Ij/9+iy+WdE1OGFoRHthg/m4fh7Utxgt7FjcPSvMPRaIWtv4N9QHGNYG - pL42RQKBgCRDE6abLoeUN38GIfQ09YeWoaRgQ0WYzeNwzu1Yl2VwLifWjrbukKZX - p+3B/M7FaeXhjJ3qSVDXBXqI94B7NLjH32CxKsuil2ry7p+lLzdBDquUtMoL17lg - xpAA8tqK3W+E8gj01vKhbcGP28373jREU016/HCbEHRsNxW/BGDj - -----END RSA PRIVATE KEY----- - broker: - nats: - url: nats.default.svc.cluster.local:4222 - services: - auth: - postgres: - #credentialsFromSecret: postgres - host: postgres-postgresql.formance.svc.cluster.local - port: 5432 - username: formance - password: formance - staticClients: - - id: foo - public: true - secrets: - - bar - ledger: - #deploymentStrategy: single-writer - debug: true - postgres: - #credentialsFromSecret: postgres - host: postgres-postgresql.formance.svc.cluster.local - port: 5432 - disableSSLMode: true - username: formance - password: formance - payments: - postgres: - #credentialsFromSecret: postgres - host: postgres-postgresql.formance.svc.cluster.local - port: 5432 - disableSSLMode: true - username: formance - password: formance - encryptionKey: ClaptonIsGod - orchestration: - postgres: - #credentialsFromSecret: postgres - host: postgres-postgresql.formance.svc.cluster.local - port: 5432 - disableSSLMode: true - username: formance - password: formance - search: - elasticSearch: - host: elasticsearch-master.formance.svc.cluster.local - port: 9200 - scheme: http - basicAuth: - #fromSecret: elasticsearch - username: admin - password: "Complexpass#123" - webhooks: - postgres: - #credentialsFromSecret: postgres - host: postgres-postgresql.formance.svc.cluster.local - port: 5432 - disableSSLMode: true - username: formance - password: formance diff --git a/components/operator/Earthfile b/components/operator/Earthfile index 00385a56c4..6bc4f362cb 100644 --- a/components/operator/Earthfile +++ b/components/operator/Earthfile @@ -100,7 +100,10 @@ deploy: COPY .earthly .earthly WORKDIR .earthly RUN kubectl get versions default || kubectl apply -f k8s-versions.yaml - RUN kubectl apply -f k8s-configuration.yaml + ARG user + RUN --secret tld helm upgrade --install operator-configuration ./configuration \ + --namespace formance-system \ + --set gateway.fallback=https://console.$user.$tld lint: FROM core+builder-image diff --git a/components/operator/apis/stack/v1beta1/configuration_types.go b/components/operator/apis/stack/v1beta1/configuration_types.go index a199a326a2..5e6504b2eb 100644 --- a/components/operator/apis/stack/v1beta1/configuration_types.go +++ b/components/operator/apis/stack/v1beta1/configuration_types.go @@ -18,8 +18,6 @@ package v1beta1 import ( "encoding/json" - "fmt" - "github.com/formancehq/operator/apis/stack/v1beta3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/conversion" @@ -99,14 +97,6 @@ func (config *Configuration) ConvertFrom(hubRaw conversion.Hub) error { func (config *Configuration) ConvertTo(hubRaw conversion.Hub) error { - fmt.Println("Convert to v1beta3 from v1beta1") - fmt.Println("Convert to v1beta3 from v1beta1") - fmt.Println("Convert to v1beta3 from v1beta1") - fmt.Println("Convert to v1beta3 from v1beta1") - fmt.Println("Convert to v1beta3 from v1beta1") - fmt.Println("Convert to v1beta3 from v1beta1") - fmt.Println("Convert to v1beta3 from v1beta1") - hub := hubRaw.(*v1beta3.Configuration) specAsRaw, err := json.Marshal(config.Spec) if err != nil { diff --git a/components/operator/apis/stack/v1beta3/common.go b/components/operator/apis/stack/v1beta3/common.go index 34688ea9b9..a6c2a8fe30 100644 --- a/components/operator/apis/stack/v1beta3/common.go +++ b/components/operator/apis/stack/v1beta3/common.go @@ -22,10 +22,5 @@ type ResourceProperties struct { type CommonServiceProperties struct { DevProperties `json:",inline"` // +optional - //+kubebuilder:default:="latest" - Version string `json:"version,omitempty"` -} - -func (p CommonServiceProperties) GetVersion() string { - return p.Version + Disabled *bool `json:"disabled,omitempty"` } diff --git a/components/operator/apis/stack/v1beta3/configuration_types.go b/components/operator/apis/stack/v1beta3/configuration_types.go index 0345aff589..5be9edbc5f 100644 --- a/components/operator/apis/stack/v1beta3/configuration_types.go +++ b/components/operator/apis/stack/v1beta3/configuration_types.go @@ -18,6 +18,7 @@ package v1beta3 import ( "fmt" + "github.com/iancoleman/strcase" "reflect" "strings" @@ -52,6 +53,20 @@ func (in *ConfigurationServicesSpec) List() []string { return ret } +func (in *ConfigurationServicesSpec) IsDisabled(service string) bool { + valueOf := reflect.ValueOf(in).Elem().FieldByName(strcase.ToCamel(service)) + if valueOf.IsValid() { + _, ok := valueOf.Type().FieldByName("CommonServiceProperties") + if !ok { + return false + } + commonServiceProperties := valueOf.FieldByName("CommonServiceProperties") + properties := commonServiceProperties.Interface().(CommonServiceProperties) + return properties.Disabled != nil && *properties.Disabled + } + return false +} + // TODO: Handle validation type TemporalTLSConfig struct { // +optional diff --git a/components/operator/apis/stack/v1beta3/control_types.go b/components/operator/apis/stack/v1beta3/control_types.go index 5f0feb92a0..3c40bdabaa 100644 --- a/components/operator/apis/stack/v1beta3/control_types.go +++ b/components/operator/apis/stack/v1beta3/control_types.go @@ -2,8 +2,7 @@ package v1beta3 // +kubebuilder:object:generate=true type ControlSpec struct { - // +optional - DevProperties `json:",inline"` + CommonServiceProperties `json:",inline"` // +optional ResourceProperties *ResourceProperties `json:"resourceProperties,omitempty"` Annotations AnnotationsServicesSpec `json:"annotations,omitempty"` diff --git a/components/operator/apis/stack/v1beta3/gateway_types.go b/components/operator/apis/stack/v1beta3/gateway_types.go index 61ddb5bc19..10c9312aa7 100644 --- a/components/operator/apis/stack/v1beta3/gateway_types.go +++ b/components/operator/apis/stack/v1beta3/gateway_types.go @@ -6,4 +6,6 @@ type GatewaySpec struct { ResourceProperties *ResourceProperties `json:"resourceProperties,omitempty"` // +optional Annotations AnnotationsServicesSpec `json:"annotations,omitempty"` + // +optional + Fallback *string `json:"fallback,omitempty"` } diff --git a/components/operator/apis/stack/v1beta3/ledger_types.go b/components/operator/apis/stack/v1beta3/ledger_types.go index 4cb4b9a81b..cdc3c67c12 100644 --- a/components/operator/apis/stack/v1beta3/ledger_types.go +++ b/components/operator/apis/stack/v1beta3/ledger_types.go @@ -35,18 +35,19 @@ const ( // +kubebuilder:object:generate=true type LedgerSpec struct { - Postgres PostgresConfig `json:"postgres"` + CommonServiceProperties `json:",inline"` + Postgres PostgresConfig `json:"postgres"` // +optional Locking LockingStrategy `json:"locking"` // +optional AllowPastTimestamps bool `json:"allowPastTimestamps"` // +optional - DevProperties `json:",inline"` - // +optional ResourceProperties *ResourceProperties `json:"resourceProperties,omitempty"` Annotations AnnotationsServicesSpec `json:"annotations,omitempty"` // +optional DeploymentStrategy DeploymentStrategy `json:"deploymentStrategy,omitempty"` + // +optional + Disabled *bool `json:"disabled,omitempty"` } type ServiceSpec struct { diff --git a/components/operator/apis/stack/v1beta3/orchestration_types.go b/components/operator/apis/stack/v1beta3/orchestration_types.go index 6e65bddfee..904e260e3f 100644 --- a/components/operator/apis/stack/v1beta3/orchestration_types.go +++ b/components/operator/apis/stack/v1beta3/orchestration_types.go @@ -2,9 +2,8 @@ package v1beta3 // +kubebuilder:object:generate=true type OrchestrationSpec struct { - Postgres PostgresConfig `json:"postgres"` - // +optional - DevProperties `json:",inline"` + CommonServiceProperties `json:",inline"` + Postgres PostgresConfig `json:"postgres"` // +optional ResourceProperties *ResourceProperties `json:"resourceProperties,omitempty"` Annotations AnnotationsServicesSpec `json:"annotations,omitempty"` diff --git a/components/operator/apis/stack/v1beta3/payments_types.go b/components/operator/apis/stack/v1beta3/payments_types.go index f50da4e748..0c0b621fd0 100644 --- a/components/operator/apis/stack/v1beta3/payments_types.go +++ b/components/operator/apis/stack/v1beta3/payments_types.go @@ -2,11 +2,10 @@ package v1beta3 // +kubebuilder:object:generate=true type PaymentsSpec struct { - EncryptionKey string `json:"encryptionKey"` - Postgres PostgresConfig `json:"postgres"` + CommonServiceProperties `json:",inline"` + EncryptionKey string `json:"encryptionKey"` + Postgres PostgresConfig `json:"postgres"` - // +optional - DevProperties `json:",inline"` // +optional ResourceProperties *ResourceProperties `json:"resourceProperties,omitempty"` Annotations AnnotationsServicesSpec `json:"annotations,omitempty"` diff --git a/components/operator/apis/stack/v1beta3/search_types.go b/components/operator/apis/stack/v1beta3/search_types.go index a8c52f8772..1743a15390 100644 --- a/components/operator/apis/stack/v1beta3/search_types.go +++ b/components/operator/apis/stack/v1beta3/search_types.go @@ -48,13 +48,12 @@ func (in *ElasticSearchConfig) Endpoint() string { // +kubebuilder:object:generate=true type SearchSpec struct { - ElasticSearchConfig ElasticSearchConfig `json:"elasticSearch"` + CommonServiceProperties `json:",inline"` + ElasticSearchConfig ElasticSearchConfig `json:"elasticSearch"` // +optional Batching Batching `json:"batching"` - // +optional - DevProperties `json:",inline"` // +optional SearchResourceProperties *ResourceProperties `json:"searchResourceProperties,omitempty"` // +optional diff --git a/components/operator/apis/stack/v1beta3/stack_types.go b/components/operator/apis/stack/v1beta3/stack_types.go index f1ebe0b7aa..4576833287 100644 --- a/components/operator/apis/stack/v1beta3/stack_types.go +++ b/components/operator/apis/stack/v1beta3/stack_types.go @@ -110,7 +110,7 @@ type StackServicesSpec struct { type StackServicePropertiesSpec struct { // +optional - Disabled bool `json:"disabled"` + Disabled *bool `json:"disabled,omitempty"` } // StackSpec defines the desired state of Stack @@ -141,7 +141,8 @@ type StackSpec struct { func (in *StackServicesSpec) IsDisabled(service string) bool { valueOf := reflect.ValueOf(in).Elem().FieldByName(strcase.ToCamel(service)) if valueOf.IsValid() { - return valueOf.Interface().(StackServicePropertiesSpec).Disabled + properties := valueOf.Interface().(StackServicePropertiesSpec) + return properties.Disabled != nil && *properties.Disabled } return false } @@ -262,10 +263,6 @@ func (s *Stack) ModeChanged(configuration *Configuration) bool { return s.Status.LightMode != configuration.Spec.LightMode } -func (s *Stack) IsDisabled(module string) bool { - return s.Spec.Services.IsDisabled(module) -} - //+kubebuilder:object:root=true // StackList contains a list of Stack diff --git a/components/operator/apis/stack/v1beta3/wallets_types.go b/components/operator/apis/stack/v1beta3/wallets_types.go index aa2e1d73e6..e011825425 100644 --- a/components/operator/apis/stack/v1beta3/wallets_types.go +++ b/components/operator/apis/stack/v1beta3/wallets_types.go @@ -2,8 +2,7 @@ package v1beta3 // +kubebuilder:object:generate=true type WalletsSpec struct { - // +optional - DevProperties `json:",inline"` + CommonServiceProperties `json:",inline"` // +optional ResourceProperties *ResourceProperties `json:"resourceProperties,omitempty"` Annotations AnnotationsServicesSpec `json:"annotations,omitempty"` diff --git a/components/operator/apis/stack/v1beta3/webhooks_types.go b/components/operator/apis/stack/v1beta3/webhooks_types.go index 558d779180..69a76d14aa 100644 --- a/components/operator/apis/stack/v1beta3/webhooks_types.go +++ b/components/operator/apis/stack/v1beta3/webhooks_types.go @@ -2,7 +2,8 @@ package v1beta3 // +kubebuilder:object:generate=true type WebhooksSpec struct { - Postgres PostgresConfig `json:"postgres"` + CommonServiceProperties `json:",inline"` + Postgres PostgresConfig `json:"postgres"` // +optional DevProperties `json:",inline"` // +optional diff --git a/components/operator/apis/stack/v1beta3/zz_generated.deepcopy.go b/components/operator/apis/stack/v1beta3/zz_generated.deepcopy.go index 09f37a2b64..f726b11a0f 100644 --- a/components/operator/apis/stack/v1beta3/zz_generated.deepcopy.go +++ b/components/operator/apis/stack/v1beta3/zz_generated.deepcopy.go @@ -172,6 +172,11 @@ func (in *CollectorConfig) DeepCopy() *CollectorConfig { func (in *CommonServiceProperties) DeepCopyInto(out *CommonServiceProperties) { *out = *in out.DevProperties = in.DevProperties + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonServiceProperties. @@ -354,7 +359,7 @@ func (in *ControlAuthentication) DeepCopy() *ControlAuthentication { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ControlSpec) DeepCopyInto(out *ControlSpec) { *out = *in - out.DevProperties = in.DevProperties + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) if in.ResourceProperties != nil { in, out := &in.ResourceProperties, &out.ResourceProperties *out = new(ResourceProperties) @@ -478,6 +483,11 @@ func (in *GatewaySpec) DeepCopyInto(out *GatewaySpec) { (*in).DeepCopyInto(*out) } in.Annotations.DeepCopyInto(&out.Annotations) + if in.Fallback != nil { + in, out := &in.Fallback, &out.Fallback + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewaySpec. @@ -591,15 +601,20 @@ func (in *KafkaSASLConfig) DeepCopy() *KafkaSASLConfig { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LedgerSpec) DeepCopyInto(out *LedgerSpec) { *out = *in + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) out.Postgres = in.Postgres out.Locking = in.Locking - out.DevProperties = in.DevProperties if in.ResourceProperties != nil { in, out := &in.ResourceProperties, &out.ResourceProperties *out = new(ResourceProperties) (*in).DeepCopyInto(*out) } in.Annotations.DeepCopyInto(&out.Annotations) + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LedgerSpec. @@ -795,8 +810,8 @@ func (in *NatsConfig) DeepCopy() *NatsConfig { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OrchestrationSpec) DeepCopyInto(out *OrchestrationSpec) { *out = *in + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) out.Postgres = in.Postgres - out.DevProperties = in.DevProperties if in.ResourceProperties != nil { in, out := &in.ResourceProperties, &out.ResourceProperties *out = new(ResourceProperties) @@ -833,8 +848,8 @@ func (in *OtlpSpec) DeepCopy() *OtlpSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PaymentsSpec) DeepCopyInto(out *PaymentsSpec) { *out = *in + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) out.Postgres = in.Postgres - out.DevProperties = in.DevProperties if in.ResourceProperties != nil { in, out := &in.ResourceProperties, &out.ResourceProperties *out = new(ResourceProperties) @@ -911,9 +926,9 @@ func (in *ResourceProperties) DeepCopy() *ResourceProperties { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SearchSpec) DeepCopyInto(out *SearchSpec) { *out = *in + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) in.ElasticSearchConfig.DeepCopyInto(&out.ElasticSearchConfig) out.Batching = in.Batching - out.DevProperties = in.DevProperties if in.SearchResourceProperties != nil { in, out := &in.SearchResourceProperties, &out.SearchResourceProperties *out = new(ResourceProperties) @@ -1044,6 +1059,11 @@ func (in *StackList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StackServicePropertiesSpec) DeepCopyInto(out *StackServicePropertiesSpec) { *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StackServicePropertiesSpec. @@ -1059,12 +1079,12 @@ func (in *StackServicePropertiesSpec) DeepCopy() *StackServicePropertiesSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StackServicesSpec) DeepCopyInto(out *StackServicesSpec) { *out = *in - out.Ledger = in.Ledger - out.Orchestration = in.Orchestration - out.Payments = in.Payments - out.Wallets = in.Wallets - out.Webhooks = in.Webhooks - out.Control = in.Control + in.Ledger.DeepCopyInto(&out.Ledger) + in.Orchestration.DeepCopyInto(&out.Orchestration) + in.Payments.DeepCopyInto(&out.Payments) + in.Wallets.DeepCopyInto(&out.Wallets) + in.Webhooks.DeepCopyInto(&out.Webhooks) + in.Control.DeepCopyInto(&out.Control) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StackServicesSpec. @@ -1087,7 +1107,7 @@ func (in *StackSpec) DeepCopyInto(out *StackSpec) { *out = new(StackStargateConfig) **out = **in } - out.Services = in.Services + in.Services.DeepCopyInto(&out.Services) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StackSpec. @@ -1363,7 +1383,7 @@ func (in *VersionsStatus) DeepCopy() *VersionsStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WalletsSpec) DeepCopyInto(out *WalletsSpec) { *out = *in - out.DevProperties = in.DevProperties + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) if in.ResourceProperties != nil { in, out := &in.ResourceProperties, &out.ResourceProperties *out = new(ResourceProperties) @@ -1385,6 +1405,7 @@ func (in *WalletsSpec) DeepCopy() *WalletsSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WebhooksSpec) DeepCopyInto(out *WebhooksSpec) { *out = *in + in.CommonServiceProperties.DeepCopyInto(&out.CommonServiceProperties) out.Postgres = in.Postgres out.DevProperties = in.DevProperties if in.ResourceProperties != nil { diff --git a/components/operator/config/crd/bases/stack.formance.com_configurations.yaml b/components/operator/config/crd/bases/stack.formance.com_configurations.yaml index 04129b2c93..d5e937424a 100644 --- a/components/operator/config/crd/bases/stack.formance.com_configurations.yaml +++ b/components/operator/config/crd/bases/stack.formance.com_configurations.yaml @@ -4318,6 +4318,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean resourceProperties: properties: limits: @@ -4345,6 +4347,8 @@ spec: type: string type: object type: object + fallback: + type: string resourceProperties: properties: limits: @@ -4380,6 +4384,8 @@ spec: type: string dev: type: boolean + disabled: + type: boolean locking: properties: redis: @@ -4462,6 +4468,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean postgres: properties: credentialsFromSecret: @@ -4515,6 +4523,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean encryptionKey: type: string postgres: @@ -4598,6 +4608,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean elasticSearch: properties: basicAuth: @@ -4694,6 +4706,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean resourceProperties: properties: limits: @@ -4725,6 +4739,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean postgres: properties: credentialsFromSecret: diff --git a/components/operator/config/crd/bases/stack.formance.com_migrations.yaml b/components/operator/config/crd/bases/stack.formance.com_migrations.yaml index c9dd5a9835..aae5526023 100644 --- a/components/operator/config/crd/bases/stack.formance.com_migrations.yaml +++ b/components/operator/config/crd/bases/stack.formance.com_migrations.yaml @@ -45,6 +45,8 @@ spec: properties: configuration: type: string + currentVersion: + type: string module: type: string postUpgrade: @@ -55,6 +57,7 @@ spec: type: string required: - configuration + - currentVersion - module - postUpgrade - targetedVersion diff --git a/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_configurations.stack.formance.com.yaml b/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_configurations.stack.formance.com.yaml index 81c9055c39..5f278678d0 100644 --- a/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_configurations.stack.formance.com.yaml +++ b/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_configurations.stack.formance.com.yaml @@ -4329,6 +4329,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean resourceProperties: properties: limits: @@ -4356,6 +4358,8 @@ spec: type: string type: object type: object + fallback: + type: string resourceProperties: properties: limits: @@ -4391,6 +4395,8 @@ spec: type: string dev: type: boolean + disabled: + type: boolean locking: properties: redis: @@ -4473,6 +4479,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean postgres: properties: credentialsFromSecret: @@ -4526,6 +4534,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean encryptionKey: type: string postgres: @@ -4609,6 +4619,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean elasticSearch: properties: basicAuth: @@ -4705,6 +4717,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean resourceProperties: properties: limits: @@ -4736,6 +4750,8 @@ spec: type: boolean dev: type: boolean + disabled: + type: boolean postgres: properties: credentialsFromSecret: diff --git a/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_migrations.stack.formance.com.yaml b/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_migrations.stack.formance.com.yaml index 10f3a8b637..50e18912af 100644 --- a/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_migrations.stack.formance.com.yaml +++ b/components/operator/helm/templates/gen/apiextensions.k8s.io_v1_customresourcedefinition_migrations.stack.formance.com.yaml @@ -56,6 +56,8 @@ spec: properties: configuration: type: string + currentVersion: + type: string module: type: string postUpgrade: @@ -66,6 +68,7 @@ spec: type: string required: - configuration + - currentVersion - module - postUpgrade - targetedVersion diff --git a/components/operator/internal/controllers/stack/stack_reconciler.go b/components/operator/internal/controllers/stack/stack_reconciler.go index 5ca949ad32..2c15609724 100644 --- a/components/operator/internal/controllers/stack/stack_reconciler.go +++ b/components/operator/internal/controllers/stack/stack_reconciler.go @@ -3,19 +3,18 @@ package stack import ( "context" "fmt" - "time" - appsv1 "k8s.io/api/apps/v1" - batchv1 "k8s.io/api/batch/v1" networkingv1 "k8s.io/api/networking/v1" - "sigs.k8s.io/controller-runtime/pkg/builder" - "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/source" + "time" "github.com/formancehq/operator/internal/collectionutils" "github.com/formancehq/operator/internal/controllerutils" "github.com/formancehq/operator/internal/modules" + batchv1 "k8s.io/api/batch/v1" + "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" stackv1beta3 "github.com/formancehq/operator/apis/stack/v1beta3" _ "github.com/formancehq/operator/internal/modules/auth" diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/configmaps--v1/gateway-config.yaml index 1ff7f17279..c42fa4c5d7 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/configmaps--v1/gateway-config.yaml @@ -232,6 +232,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/configmaps--v1/gateway-config.yaml index 46b9cc56fb..2e455b1365 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/configmaps--v1/gateway-config.yaml index 62c11ffa25..ed365bbd00 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/monopod-payments-after-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/monopod-payments-after-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml index 8c28595ac7..3da69a4a84 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-payments-after-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-payments-after-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/monopod-payments-before-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/monopod-payments-before-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml index 606eafc0e3..8681aaeb41 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-payments-before-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-payments-before-v1.0.0-alpha.6/results/configmaps--v1/gateway-config.yaml @@ -166,6 +166,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/configmaps--v1/gateway-config.yaml index 6475c01fad..2c32796460 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/configmaps--v1/gateway-config.yaml index 4716472305..651a6cc5fa 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/configmaps--v1/gateway-config.yaml @@ -257,6 +257,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml index b46af00fb2..3d0abe8144 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: ijAPW_uSdSI3eVzr8CfkMdRR9voMItIgMAafLMV3Lso= + stack.formance.cloud/volumes-hash: -IeD1AdD-BBZV3lqDwN3vXcBRyJEuzT0C5kvhYdGbBI= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/configmaps--v1/gateway-config.yaml index 91c7c42fe6..a7c15cb98b 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/configmaps--v1/gateway-config.yaml @@ -244,6 +244,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml index d96036df99..1839c4bd55 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: LwD3noWCzZIdiWdLwMnkETAW0vgFTuadFZHa4lENH6c= + stack.formance.cloud/volumes-hash: DKrHihp6sNaToZSt8z3slYJq0_7nJJKTSG-naaF6gFM= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/configmaps--v1/gateway-config.yaml index f8f925f17e..5a072dce89 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml index 5c1b1e62f9..e0292060e4 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: xBjwM0r9mPN5adnzlOOJoNuVPY2EnWyNe2mQdY9pvKY= + stack.formance.cloud/volumes-hash: lxiPBQwURQWVDJHVjRLnwm-hhCdQmPLTnFKX0ZnkdxI= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/configmaps--v1/gateway-config.yaml index 1abc0b95e5..721450004a 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/deployments-apps-v1/gateway.yaml index 68b4a03d86..e44be759b1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-custom-registry/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: xBjwM0r9mPN5adnzlOOJoNuVPY2EnWyNe2mQdY9pvKY= + stack.formance.cloud/volumes-hash: lxiPBQwURQWVDJHVjRLnwm-hhCdQmPLTnFKX0ZnkdxI= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/configuration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/configuration.yaml new file mode 100644 index 0000000000..0f0f269fc4 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/configuration.yaml @@ -0,0 +1,75 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Configuration +metadata: + name: default +spec: + broker: + kafka: + brokers: + - kafka1:1234 + - kafka2:1234 + monitoring: + traces: + otlp: + endpoint: localhost + insecure: true + mode: grpc + port: 4317 + services: + auth: + postgres: + disableSSLMode: true + host: localhost + password: root + port: 5432 + username: root + control: + disabled: true + ledger: + postgres: + disableSSLMode: true + host: localhost + password: root + port: 5432 + username: root + orchestration: + postgres: + disableSSLMode: true + host: localhost + password: root + port: 5432 + username: root + payments: + encryptionKey: + postgres: + disableSSLMode: true + host: localhost + password: root + port: 5432 + username: root + search: + batching: + count: + period: + elasticSearch: + host: elasticsearch + pathPrefix: '' + port: 9200 + scheme: http + stargate: + wallets: + webhooks: + postgres: + disableSSLMode: true + host: localhost + password: root + port: 5432 + username: root + gateway: + fallback: https://fallback.com + temporal: + address: + namespace: + tls: + crt: + key: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/auth-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/auth-config.yaml new file mode 100644 index 0000000000..e6396b43f2 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/auth-config.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +data: + config.yaml: | + clients: + - public: false + description: null + redirectUris: [] + PostLogoutRedirectUris: [] + scopes: + - openid + id: orchestration + secrets: + - mocked-secret + - public: false + description: null + redirectUris: [] + PostLogoutRedirectUris: [] + scopes: + - openid + id: wallets + secrets: + - mocked-secret +kind: ConfigMap +metadata: + labels: + stack: "true" + name: auth-config + namespace: multipod-latest-with-gateway-fallback diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/gateway-config.yaml new file mode 100644 index 0000000000..3badb13e3f --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/gateway-config.yaml @@ -0,0 +1,266 @@ +apiVersion: v1 +data: + Caddyfile: |- + (cors) { + header { + Access-Control-Allow-Methods "GET,OPTIONS,PUT,POST,DELETE,HEAD,PATCH" + Access-Control-Allow-Headers content-type + Access-Control-Max-Age 100 + Access-Control-Allow-Origin * + } + } + + (auth) { + auth { + issuer http://example.net/api/auth + + read_key_set_max_retries 10 + } + } + + (audit) { + audit { + # Kafka publisher + publisher_kafka_broker {$PUBLISHER_KAFKA_BROKER:redpanda:29092} + publisher_kafka_enabled {$PUBLISHER_KAFKA_ENABLED:false} + publisher_kafka_tls_enabled {$PUBLISHER_KAFKA_TLS_ENABLED:false} + publisher_kafka_sasl_enabled {$PUBLISHER_KAFKA_SASL_ENABLED:false} + publisher_kafka_sasl_username {$PUBLISHER_KAFKA_SASL_USERNAME} + publisher_kafka_sasl_password {$PUBLISHER_KAFKA_SASL_PASSWORD} + publisher_kafka_sasl_mechanism {$PUBLISHER_KAFKA_SASL_MECHANISM} + publisher_kafka_sasl_scram_sha_size {$PUBLISHER_KAFKA_SASL_SCRAM_SHA_SIZE} + } + } + + { + + # Many directives manipulate the HTTP handler chain and the order in which + # those directives are evaluated matters. So the jwtauth directive must be + # ordered. + # c.f. https://caddyserver.com/docs/caddyfile/directives#directive-order + order auth before basicauth + order versions after metrics + order audit after encode + } + + :8000 { + tracing { + span gateway + } + log { + output stdout + } + + import audit + + @authmatcher { + path /api/auth* + } + handle @authmatcher { + uri strip_prefix /api/auth + reverse_proxy auth:8080 + + import cors + } + + @ledgermatcher { + path /api/ledger* + } + handle @ledgermatcher { + uri strip_prefix /api/ledger + reverse_proxy ledger:8080 + + import cors + import auth + } + + @orchestrationmatcher { + path /api/orchestration* + } + handle @orchestrationmatcher { + uri strip_prefix /api/orchestration + reverse_proxy orchestration:8080 + + import cors + import auth + } + @paymentsmatcher { + path /api/payments/payments* + method GET PATCH + } + handle @paymentsmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-api:8080 + import cors + import auth + } + @accountsmatcher { + path /api/payments/accounts* + method GET + } + handle @accountsmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-api:8080 + import cors + import auth + } + @bank-accounts-readmatcher { + path /api/payments/bank-accounts* + method GET + } + handle @bank-accounts-readmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-api:8080 + import cors + import auth + } + @transfer-initiations-readmatcher { + path /api/paymentstransfer-initiations* + method GET + } + handle @transfer-initiations-readmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-api:8080 + import cors + import auth + } + + @payments-apimatcher { + path /api/payments* + } + handle @payments-apimatcher { + uri strip_prefix /api/payments + reverse_proxy payments-api:8080 + + import cors + import auth + } + @connectorsmatcher { + path /api/payments/connectors* + } + handle @connectorsmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-connectors:8080 + import cors + import auth + } + @configsmatcher { + path /api/payments/configs* + } + handle @configsmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-connectors:8080 + import cors + import auth + } + @transfer-initiations-writematcher { + path /api/paymentstransfer-initiations* + method POST DELETE + } + handle @transfer-initiations-writematcher { + uri strip_prefix /api/payments + reverse_proxy payments-connectors:8080 + import cors + import auth + } + @bank-accounts-writematcher { + path /api/payments/bank-accounts* + method POST + } + handle @bank-accounts-writematcher { + uri strip_prefix /api/payments + reverse_proxy payments-connectors:8080 + import cors + import auth + } + + @payments-connectorsmatcher { + path /api/payments* + } + handle @payments-connectorsmatcher { + uri strip_prefix /api/payments + reverse_proxy payments-connectors:8080 + + import cors + import auth + } + + @searchmatcher { + path /api/search* + } + handle @searchmatcher { + uri strip_prefix /api/search + reverse_proxy search:8080 + + import cors + import auth + } + + @search-benthosmatcher { + path /api/search-benthos* + } + handle @search-benthosmatcher { + uri strip_prefix /api/search-benthos + reverse_proxy search-benthos:4195 + + import cors + import auth + } + + @walletsmatcher { + path /api/wallets* + } + handle @walletsmatcher { + uri strip_prefix /api/wallets + reverse_proxy wallets:8080 + + import cors + import auth + } + + @webhooksmatcher { + path /api/webhooks* + } + handle @webhooksmatcher { + uri strip_prefix /api/webhooks + reverse_proxy webhooks:8080 + + import cors + import auth + } + + handle /versions { + versions { + region "us-west-1" + env "staging" + endpoints { + auth http://auth:8080/_info http://auth:8080/_healthcheck + ledger http://ledger:8080/_info http://ledger:8080/_healthcheck + orchestration http://orchestration:8080/_info http://orchestration:8080/_healthcheck + payments-api http://payments-api:8080/_info http://payments-api:8080/_health + payments-connectors http://payments-connectors:8080/_info http://payments-connectors:8080/_health + search http://search:8080/_info http://search:8080/_healthcheck + wallets http://wallets:8080/_info http://wallets:8080/_healthcheck + webhooks http://webhooks:8080/_info http://webhooks:8080/_healthcheck + } + } + } + + # Respond 502 if service does not exists + handle /api/* { + respond "Bad Gateway" 502 + } + + # handle all other requests + handle { + redir https://fallback.com + import cors + } + + } +kind: ConfigMap +metadata: + labels: + stack: "true" + name: gateway-config + namespace: multipod-latest-with-gateway-fallback diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-global.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-global.yaml new file mode 100644 index 0000000000..814cc5dbef --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-global.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +data: + config.yaml: | + --- + tracer: + open_telemetry_collector: + tags: + service.name: search-ingester + service.version: latest + grpc: + - url: ${OTEL_TRACES_EXPORTER_OTLP_ENDPOINT} + # a useless comment +kind: ConfigMap +metadata: + labels: + stack: "true" + name: search-benthos-global + namespace: multipod-latest-with-gateway-fallback diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-resources.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-resources.yaml new file mode 100644 index 0000000000..680bc75c64 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-resources.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +data: + output_elasticsearch.yaml: | + output_resources: + - label: elasticsearch + processors: + - mapping: | + root = this.merge({ + "stack": env("STACK") + }) + meta id = "%s-%s".format(env("STACK"), meta("id")) + elasticsearch: + urls: + - ${OPENSEARCH_URL} + id: ${!meta("id")} + sniff: false + healthcheck: false + index: ${OPENSEARCH_INDEX} + action: ${!meta("action")} + tls: + enabled: true + skip_cert_verify: true + basic_auth: + enabled: ${BASIC_AUTH_ENABLED} + username: ${BASIC_AUTH_USERNAME} + password: ${BASIC_AUTH_PASSWORD} + batching: + count: ${OPENSEARCH_BATCHING_COUNT} + period: ${OPENSEARCH_BATCHING_PERIOD} +kind: ConfigMap +metadata: + labels: + stack: "true" + name: search-benthos-resources + namespace: multipod-latest-with-gateway-fallback diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-streams.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-streams.yaml new file mode 100644 index 0000000000..9e8ac7e73f --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-streams.yaml @@ -0,0 +1,409 @@ +apiVersion: v1 +data: + gateway_audit.yaml: "input:\n event_bus:\n topic: audit\n consumer_group: search-audit\n\npipeline:\n processors:\n - log:\n message: \"receive message: ${! this }\"\n - switch_event_type:\n events:\n - label: AUDIT\n processors:\n - bloblang: |\n meta id = \"AUDIT-%s\".format(this.payload.id)\n meta action = \"index\"\n \n root = {\n \"data\": this.payload,\n \"indexed\": {\n \"path\": this.payload.request.path,\n },\n \"kind\": \"AUDIT\"\n }\n\n\noutput:\n resource: elasticsearch\n" + ledger_ingestion.yaml: | + --- + input: + event_bus: + topic: ledger + consumer_group: search + + pipeline: + processors: + - log: + message: "receive message: ${! this }" + - switch_event_type: + events: + - label: COMMITTED_TRANSACTIONS + processors: + - bloblang: | + map account { + root = this.map_each(v -> v.value.map_each(v2 -> { + "action": "upsert", + "id": v.key, + "document": { + "data": { + "address": v.key + }, + "indexed": { + "address": v.key + }, + "kind": "ACCOUNT" + } + }).values()).values().flatten() + } + + map tx { + root = { + "action": "index", + "id": if this.exists("txid") { "%s".format(this.txid) } else { "%s".format(this.id) }, + "document": { + "data": { + "postings": this.postings, + "reference": this.reference, + "txid": if this.exists("txid") { this.txid } else { this.id }, + "timestamp": this.timestamp, + "metadata": if this.metadata { this.metadata } else {{}} + }, + "indexed": { + "reference": this.reference, + "txid": if this.exists("txid") { this.txid } else { this.id }, + "timestamp": this.timestamp, + "asset": this.postings.map_each(p -> p.asset), + "source": this.postings.map_each(p -> p.source), + "destination": this.postings.map_each(p -> p.destination), + "amount": this.postings.map_each(p -> if p.asset.contains("/") { + [ + p.amount, + p.amount / if p.asset.split("/").index(1).number(){ range(0, p.asset.split("/").index(1).number()).fold(1, t -> t.tally * 10) } else { 1 } # amount / pow(10, decimal part of asset) + ] + } else { [ p.amount ] }).flatten().map_each(v -> "%v".format(v)) + }, + "kind": "TRANSACTION" + } + } + } + + map committedTransactions { + root = [ + this.payload.transactions.map_each(t -> t.apply("tx")).map_each(t -> t.assign({ + "id": "TRANSACTION-%s-%s".format(this.payload.ledger, t.id) + })), + this.payload.transactions.map_each(t -> t.postings.map_each(p -> [{ + "action": "upsert", + "id": "ACCOUNT-%s-%s".format(this.payload.ledger, p.source), + "document": { + "data": { + "address": p.source + }, + "indexed": { + "address": p.source + }, + "kind": "ACCOUNT" + } + }, { + "action": "upsert", + "id": "ACCOUNT-%s-%s".format(this.payload.ledger, p.destination), + "document": { + "data": { + "address": p.destination + }, + "indexed": { + "address": p.destination + }, + "kind": "ACCOUNT" + } + }])).flatten().flatten() + ].flatten().map_each(t -> t.merge({ + "document": { + "when": this.date, + "ledger": this.payload.ledger, + "data": { + "ledger": this.payload.ledger + }, + "indexed": { + "ledger": this.payload.ledger + } + }, + })) + } + + root = this.apply("committedTransactions") + - unarchive: + format: json_array + - bloblang: | + meta action = this.action + meta id = this.id + root = this.document + - label: SAVED_METADATA + processors: + - bloblang: | + meta targetType = this.payload.targetType + meta targetId = this.payload.targetId + meta ledger = this.payload.ledger + meta id = "%s-%s-%s".format(this.payload.targetType, this.payload.ledger, this.payload.targetId) + meta action = "upsert" + root = this + - get_doc: + id: ${!meta("id")} + - catch: + - log: + level: INFO + message: Document not found, assume it is an account + - bloblang: | + root = this.assign({ + "_doc": { + "data": { + "address": meta("targetId"), + "metadata": {} + }, + "indexed": { + "address": meta("targetId") + }, + "kind": "ACCOUNT", # If not found, so, this is an account + } + }) + - bloblang: | + root = this._doc.assign({ + "data": { + "metadata": this.payload.metadata, + "ledger": this.payload.ledger + }, + "indexed": { + "ledger": this.payload.ledger + }, + "ledger": this.payload.ledger, + "when": this.date + }) + - label: DELETED_METADATA + processors: + - bloblang: | + meta targetType = this.payload.targetType + meta targetId = this.payload.targetId + meta ledger = this.payload.ledger + meta id = "%s-%s-%s".format(this.payload.targetType, this.payload.ledger, this.payload.targetId) + meta action = "update" + root = { + "script": { + "source": "ctx._doc.metadata.remove('" + this.payload.key + "')", + "lang": "painless" + } + } + + output: + resource: elasticsearch + ledger_reindex.yaml: | + input: + http_server: + path: / + + output: + broker: + outputs: + - http_client: + verb: POST + url: http://localhost:4195/ledger_reindex_transactions + - http_client: + verb: POST + url: http://localhost:4195/ledger_reindex_accounts + ledger_reindex_accounts.yaml: | + input: + http_server: + path: / + + pipeline: + processors: + - bloblang: | + meta ledger = this.ledger + - postgres_query: + service: ledger + query: | + select address, metadata + from "${! meta("ledger") }".accounts + - unarchive: + format: json_array + - bloblang: | + root = this.assign({ + "metadata": this.metadata.parse_json() + }) + - bloblang: | + meta action = "upsert" + meta id = "ACCOUNT-%s-%s".format(meta("ledger"), this.address) + root = { + "data": { + "address": this.address, + "ledger": meta("ledger"), + "metadata": this.metadata + }, + "indexed": { + "address": this.address, + "ledger": meta("ledger") + }, + "kind": "ACCOUNT", + "ledger": meta("ledger") + } + + output: + resource: elasticsearch + ledger_reindex_all.yaml: | + input: + http_server: + path: / + + pipeline: + processors: + - postgres_query: + service: ledger + query: 'select * from "_system".ledgers' + - unarchive: + format: json_array + - log: + message: "Process ledger: ${! this.ledger }" + + output: + broker: + outputs: + - http_client: + verb: POST + url: http://localhost:4195/ledger_reindex + ledger_reindex_transactions.yaml: | + input: + http_server: + path: / + + pipeline: + processors: + - bloblang: | + meta ledger = this.ledger + - postgres_query: + service: ledger + query: | + select id::varchar as id, timestamp, reference, metadata, postings + from "${! meta("ledger") }".transactions; + - unarchive: + format: json_array + - bloblang: | + root = this.assign({ + "postings": this.postings.parse_json(), + "metadata": this.metadata.parse_json() + }) + - bloblang: | + meta action = "upsert" + meta id = "TRANSACTION-%s-%s".format(meta("ledger"), this.id) + root = { + "data": { + "postings": this.postings, + "reference": this.reference, + "txid": this.id, + "timestamp": this.timestamp, + "metadata": if this.metadata { this.metadata } else {{}}, + "ledger": meta("ledger") + }, + "indexed": { + "reference": this.reference, + "txid": this.id, + "timestamp": this.timestamp, + "asset": this.postings.map_each(p -> p.asset), + "source": this.postings.map_each(p -> p.source), + "destination": this.postings.map_each(p -> p.destination), + "amount": this.postings.map_each(p -> if p.asset.contains("/") { + [ + p.amount, + p.amount / range(0, p.asset.split("/").index(1).number()).fold(1, t -> t.tally * 10) # amount / pow(10, decimal part of asset) + ] + } else { [ p.amount ] }).flatten().map_each(v -> "%v".format(v)), + "ledger": meta("ledger") + }, + "kind": "TRANSACTION", + "ledger": meta("ledger") + } + + output: + resource: elasticsearch + payments_deletion.yaml: | + input: + event_bus: + topic: payments + consumer_group: search-payments-resets + + pipeline: + processors: + - switch_event_type: + events: + - label: CONNECTOR_RESET + processors: + - bloblang: | + root = { + "query": { + "bool": { + "must": [ + { + "bool": { + "should": [ + { + "match": { + "kind": "PAYMENT" + }, + }, + { + "match": { + "kind": "PAYMENT_ACCOUNT" + }, + }, + { + "match": { + "kind": "PAYMENT_BALANCE" + }, + }, + { + "match": { + "kind": "PAYMENT_BANK_ACCOUNT" + }, + }, + { + "match": { + "kind": "PAYMENT_TRANSFER_INITIATION" + }, + } + ] + } + }, + { + "match": { + "indexed.provider": this.payload.connector + } + }, + { + "match": { + "stack": env("STACK") + } + } + ] + } + } + } + + - label: DELETED_TRANSFER_INITIATION + processors: + - bloblang: | + root = { + "query": { + "bool": { + "must": [ + { + "match": { + "kind": "PAYMENT_TRANSFER_INITIATION" + } + }, + { + "match": { + "indexed.id": this.payload.id + } + }, + { + "match": { + "stack": env("STACK") + } + } + ] + } + } + } + + output: + http_client: + url: ${OPENSEARCH_URL}/${OPENSEARCH_INDEX}/_delete_by_query + verb: POST + headers: + Content-Type: application/json + basic_auth: + enabled: ${BASIC_AUTH_ENABLED} + username: ${BASIC_AUTH_USERNAME} + password: ${BASIC_AUTH_PASSWORD} + payments_ingestion.yaml: "input:\n event_bus:\n topic: payments\n consumer_group: search\n\npipeline:\n processors:\n - switch_event_type:\n events:\n - label: SAVED_PAYMENT\n processors:\n - bloblang: |\n root = {\n \"data\": this.payload,\n \"indexed\": {\n \"provider\": this.payload.provider,\n \"reference\": this.payload.reference,\n \"scheme\": this.payload.scheme,\n \"type\": this.payload.type,\n \"status\": this.payload.status,\n \"id\": this.payload.id,\n \"initialAmount\": this.payload.initialAmount,\n \"createdAt\": this.payload.createdAt\n },\n \"kind\": \"PAYMENT\",\n \"when\": this.date\n }\n meta action = \"index\"\n meta id = \"PAYMENT-%s\".format(this.payload.id)\n - label: SAVED_ACCOUNT\n processors:\n - bloblang: |\n root = {\n \"data\": this.payload,\n \"indexed\": {\n \"provider\": this.payload.provider,\n \"reference\": this.payload.reference,\n \"createdAt\": this.payload.createdAt,\n \"id\": this.payload.id,\n \"type\": this.payload.type,\n \"defaultAsset\": this.payload.defaultAsset,\n \"accountName\": this.payload.accountName\n },\n \"kind\": \"PAYMENT_ACCOUNT\",\n \"when\": this.date\n }\n meta action = \"index\"\n meta id = \"PAYMENT-ACCOUNT-%s\".format(this.payload.id)\n - label: SAVED_BALANCE\n processors:\n - bloblang: |\n root = {\n \"data\": this.payload,\n \"indexed\": {\n \"provider\": this.payload.provider,\n \"createdAt\": this.payload.createdAt,\n \"accountId\": this.payload.accountID,\n \"asset\": this.payload.asset,\n \"balance\": this.payload.balance\n },\n \"kind\": \"PAYMENT_BALANCE\",\n \"when\": this.date\n }\n meta action = \"index\"\n meta id = \"PAYMENT-BALANCE-%s-%s\".format(this.payload.accountId, this.payload.asset)\n - label: SAVED_BANK_ACCOUNT\n processors:\n - bloblang: |\n root = {\n \"data\": this.payload,\n \"indexed\": {\n \"id\": this.payload.id,\n \"createdAt\": this.payload.createdAt,\n \"provider\": this.payload.provider,\n \"name\": this.payload.name,\n \"accountNumber\": this.payload.accountNumber,\n \"iban\": this.payload.iban,\n \"swiftBicCode\": this.payload.swiftBicCode,\n \"country\": this.payload.country,\n \"accountId\": this.payload.accountID\n },\n \"kind\": \"PAYMENT_BANK_ACCOUNT\",\n \"when\": this.date\n }\n meta action = \"index\"\n meta id = \"PAYMENT-BANK-ACCOUNT-%s\".format(this.payload.id)\n - label: SAVED_TRANSFER_INITIATION\n processors:\n - bloblang: |\n root = {\n \"data\": this.payload,\n \"indexed\": {\n \"id\": this.payload.id,\n \"createdAt\": this.payload.createdAt,\n \"scheduledAt\": this.payload.scheduledAt,\n \"updatedAt\": this.payload.updatedAt,\n \"provider\": this.payload.provider,\n \"description\": this.payload.description,\n \"type\": this.payload.type,\n \"sourceAccountId\": this.payload.sourceAccountID,\n \"destinationAccountId\": this.payload.destinationAccountID,\n \"amount\": this.payload.amount,\n \"asset\": this.payload.asset,\n \"attempts\": this.payload.attempts,\n \"status\": this.payload.status,\n \"error\": this.payload.error,\n \"relatedPayment\": this.payload.relatedPayment\n },\n \"kind\": \"PAYMENT_TRANSFER_INITIATION\",\n \"when\": this.date\n }\n meta action = \"index\"\n meta id = \"PAYMENT-TRANSFER-INITIATION-%s\".format(this.payload.id)\n \n\noutput:\n resource: elasticsearch\n" +kind: ConfigMap +metadata: + labels: + stack: "true" + name: search-benthos-streams + namespace: multipod-latest-with-gateway-fallback diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-templates.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-templates.yaml new file mode 100644 index 0000000000..7499bb8646 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/configmaps--v1/search-benthos-templates.yaml @@ -0,0 +1,124 @@ +apiVersion: v1 +data: + event_bus.yaml: | + name: event_bus + type: input + + fields: + - name: topic + type: string + - name: consumer_group + type: string + + mapping: | + root = if env("BROKER") == "kafka" {{ + "kafka": { + "addresses": [ env("KAFKA_ADDRESS") ], + "topics": [ env("TOPIC_PREFIX") + this.topic ], + "target_version": env("KAFKA_VERSION"), + "consumer_group": this.consumer_group, + "checkpoint_limit": 1024, + "sasl": { + "mechanism": env("KAFKA_SASL_MECHANISM"), + "password": env("KAFKA_SASL_PASSWORD"), + "user": env("KAFKA_SASL_USERNAME") + }, + "tls": { + "enabled": env("KAFKA_TLS_ENABLED") == "true" + }, + "extract_tracing_map": "root = meta()" + } + }} else {{ + "nats_jetstream": { + "urls": [env("NATS_URL")], + "queue": this.consumer_group, + "subject": env("TOPIC_PREFIX") + this.topic, + "durable": this.consumer_group + } + }} + get_doc.yaml: | + name: get_doc + type: processor + + fields: + - name: id + type: string + + mapping: | + root = { + "branch": { + "request_map": "root = \"\"", + "result_map": "root._doc = this", + "processors": [ + { + "http": { + "url": "%s/%s/_doc/%s-%s".format(env("OPENSEARCH_URL"), env("OPENSEARCH_INDEX"), env("STACK"), this.id), + "verb": "GET", + "basic_auth": { + "enabled": env("BASIC_AUTH_ENABLED") == "true", + "username": env("BASIC_AUTH_USERNAME"), + "password": env("BASIC_AUTH_PASSWORD") + }, + "tls": { + "enabled": true, + "skip_cert_verify": true + } + } + }, { + "bloblang": "root = this._source" + } + ] + } + } + postgres_query.yaml: | + name: postgres_query + type: processor + + fields: + - name: query + type: string + - name: service + type: string + + mapping: | + root = { + "sql_raw": { + "dsn": env("%s_POSTGRES_URI".format(this.service.uppercase())), + "driver": "postgres", + "query": this.query, + "unsafe_dynamic_query": true + } + } + switch_event_type.yaml: | + name: switch_event_type + type: processor + + fields: + - kind: list + type: unknown + name: events + + mapping: | + root = { + "switch": this.events.map_each(eventDefinition -> { + "check": "this.type == \"%s\"".format(eventDefinition.label), + "processors": eventDefinition.processors + }).append({ + "processors": [ + { + "log": { + "message": "unable to handle message ${! content() }" + } + }, + { + "bloblang": "root = deleted()" + } + ] + }) + } +kind: ConfigMap +metadata: + labels: + stack: "true" + name: search-benthos-templates + namespace: multipod-latest-with-gateway-fallback diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/cronjobs-batch-v1/reindex-ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/cronjobs-batch-v1/reindex-ledger.yaml new file mode 100644 index 0000000000..ff66c4f10b --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/cronjobs-batch-v1/reindex-ledger.yaml @@ -0,0 +1,39 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + generation: 1 + labels: + stack: "true" + name: reindex-ledger + namespace: multipod-latest-with-gateway-fallback +spec: + concurrencyPolicy: Allow + failedJobsHistoryLimit: 1 + jobTemplate: + metadata: + creationTimestamp: null + spec: + template: + metadata: + creationTimestamp: null + spec: + containers: + - command: + - sh + - -c + - "/bin/sh <<'EOF'\n\n\t\t\n\t\t\t\t\tcurl http://search-benthos.multipod-latest-with-gateway-fallback.svc.cluster.local:4195/ledger_reindex_all -X POST -H 'Content-Type: application/json' -d '{}'\n \t\t\t\t\t\t \nEOF" + image: curlimages/curl:8.2.1 + imagePullPolicy: IfNotPresent + name: reindex-ledger + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Never + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + schedule: '* * * * *' + successfulJobsHistoryLimit: 3 + suspend: true +status: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/auth.yaml new file mode 100644 index 0000000000..413b25c171 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/auth.yaml @@ -0,0 +1,132 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: auth + formance.com/monopod: "false" + stack: "true" + name: auth + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: auth + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 2tUwrFxAITE2uG0mVecCeABV-gK80b_gIfgIWB4LxA0= + creationTimestamp: null + labels: + app.kubernetes.io/name: auth + spec: + containers: + - args: + - serve + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-auth + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: LISTEN + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: auth + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: CONFIG + value: /config/config/config.yaml + - name: DELEGATED_CLIENT_SECRET + - name: DELEGATED_CLIENT_ID + - name: DELEGATED_ISSUER + - name: BASE_URL + value: http://example.net/api/auth + - name: SIGNING_KEY + valueFrom: + secretKeyRef: + key: signingKey + name: auth-secret + image: ghcr.io/formancehq/auth:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: auth + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /config/config + name: config + readOnly: true + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: auth-config + name: config +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/gateway.yaml new file mode 100644 index 0000000000..52fd70f4ca --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/gateway.yaml @@ -0,0 +1,106 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: gateway + formance.com/monopod: "false" + stack: "true" + name: gateway + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: gateway + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 0UWm_BYQNU2SUgvKCnCp4N4iD4kOHHMTqNdUlXusScY= + creationTimestamp: null + labels: + app.kubernetes.io/name: gateway + spec: + containers: + - args: + - run + - --config + - /config/config/Caddyfile + - --adapter + - caddyfile + command: + - /usr/bin/caddy + env: + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: gateway + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: BROKER + value: kafka + - name: PUBLISHER_KAFKA_ENABLED + value: "true" + - name: PUBLISHER_KAFKA_BROKER + value: kafka1:1234 kafka2:1234 + image: ghcr.io/formancehq/gateway:latest + imagePullPolicy: Always + name: gateway + ports: + - containerPort: 8000 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /config/config + name: config + readOnly: true + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: gateway-config + name: config +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/ledger.yaml new file mode 100644 index 0000000000..bd5455ac68 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/ledger.yaml @@ -0,0 +1,121 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: ledger + formance.com/monopod: "false" + stack: "true" + name: ledger + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: ledger + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: ledger + spec: + containers: + - env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-ledger + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: BIND + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: ledger + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: STORAGE_DRIVER + value: postgres + - name: PUBLISHER_TOPIC_MAPPING + value: '*:multipod-latest-with-gateway-fallback-ledger' + - name: BROKER + value: kafka + - name: PUBLISHER_KAFKA_ENABLED + value: "true" + - name: PUBLISHER_KAFKA_BROKER + value: kafka1:1234 kafka2:1234 + - name: STORAGE_POSTGRES_CONN_STRING + value: $(POSTGRES_URI) + image: ghcr.io/formancehq/ledger:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: ledger + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration-worker.yaml new file mode 100644 index 0000000000..6d08deec75 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration-worker.yaml @@ -0,0 +1,107 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: orchestration + formance.com/monopod: "false" + stack: "true" + name: orchestration-worker + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: orchestration-worker + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: orchestration-worker + spec: + containers: + - args: + - worker + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-orchestration + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: orchestration-worker + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: POSTGRES_DSN + value: $(POSTGRES_URI) + - name: TEMPORAL_TASK_QUEUE + value: multipod-latest-with-gateway-fallback + - name: TEMPORAL_ADDRESS + - name: TEMPORAL_NAMESPACE + - name: STACK_CLIENT_ID + value: orchestration + - name: STACK_CLIENT_SECRET + value: mocked-secret + - name: TEMPORAL_SSL_CLIENT_KEY + - name: TEMPORAL_SSL_CLIENT_CERT + image: ghcr.io/formancehq/orchestration:latest + imagePullPolicy: Always + name: orchestration-worker + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration.yaml new file mode 100644 index 0000000000..bca4408928 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/orchestration.yaml @@ -0,0 +1,119 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: orchestration + formance.com/monopod: "false" + stack: "true" + name: orchestration + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: orchestration + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: orchestration + spec: + containers: + - env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-orchestration + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: orchestration + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: POSTGRES_DSN + value: $(POSTGRES_URI) + - name: TEMPORAL_TASK_QUEUE + value: multipod-latest-with-gateway-fallback + - name: TEMPORAL_ADDRESS + - name: TEMPORAL_NAMESPACE + - name: STACK_CLIENT_ID + value: orchestration + - name: STACK_CLIENT_SECRET + value: mocked-secret + - name: TEMPORAL_SSL_CLIENT_KEY + - name: TEMPORAL_SSL_CLIENT_CERT + image: ghcr.io/formancehq/orchestration:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: orchestration + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-api.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-api.yaml new file mode 100644 index 0000000000..d82e35fa03 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-api.yaml @@ -0,0 +1,123 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: payments + formance.com/monopod: "false" + stack: "true" + name: payments-api + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: payments-api + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: payments-api + spec: + containers: + - args: + - api + - serve + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-payments + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: LISTEN + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: payments-api + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: BROKER + value: kafka + - name: PUBLISHER_KAFKA_ENABLED + value: "true" + - name: PUBLISHER_KAFKA_BROKER + value: kafka1:1234 kafka2:1234 + - name: POSTGRES_DATABASE_NAME + value: $(POSTGRES_DATABASE) + - name: CONFIG_ENCRYPTION_KEY + - name: PUBLISHER_TOPIC_MAPPING + value: '*:multipod-latest-with-gateway-fallback-payments' + image: ghcr.io/formancehq/payments:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_health + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: payments-api + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-connectors.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-connectors.yaml new file mode 100644 index 0000000000..add53f72db --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/payments-connectors.yaml @@ -0,0 +1,123 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: payments + formance.com/monopod: "false" + stack: "true" + name: payments-connectors + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: payments-connectors + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: payments-connectors + spec: + containers: + - args: + - connectors + - serve + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-payments + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: LISTEN + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: payments-connectors + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: BROKER + value: kafka + - name: PUBLISHER_KAFKA_ENABLED + value: "true" + - name: PUBLISHER_KAFKA_BROKER + value: kafka1:1234 kafka2:1234 + - name: POSTGRES_DATABASE_NAME + value: $(POSTGRES_DATABASE) + - name: CONFIG_ENCRYPTION_KEY + - name: PUBLISHER_TOPIC_MAPPING + value: '*:multipod-latest-with-gateway-fallback-payments' + image: ghcr.io/formancehq/payments:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_health + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: payments-connectors + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search-benthos.yaml new file mode 100644 index 0000000000..5598aa6e62 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search-benthos.yaml @@ -0,0 +1,149 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: search + formance.com/monopod: "false" + stack: "true" + name: search-benthos + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: search-benthos + strategy: + type: Recreate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: UXfSw4__EAaJBZzasvjSEBQdMgu0fIS1hfvkTevjxEM= + creationTimestamp: null + labels: + app.kubernetes.io/name: search-benthos + spec: + containers: + - command: + - /benthos + - -r + - /config/resources/*.yaml + - -t + - /config/templates/*.yaml + - -c + - /config/global/config.yaml + - --log.level + - trace + - streams + - /config/streams/*.yaml + env: + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: search-benthos + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: OPENSEARCH_URL + value: http://elasticsearch:9200 + - name: OPENSEARCH_BATCHING_COUNT + value: "0" + - name: OPENSEARCH_BATCHING_PERIOD + - name: TOPIC_PREFIX + value: multipod-latest-with-gateway-fallback- + - name: OPENSEARCH_INDEX + value: stacks + - name: KAFKA_ADDRESS + value: kafka1:1234,kafka2:1234 + - name: LEDGER_POSTGRES_HOST + value: localhost + - name: LEDGER_POSTGRES_PORT + value: "5432" + - name: LEDGER_POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-ledger + - name: LEDGER_POSTGRES_USERNAME + value: root + - name: LEDGER_POSTGRES_PASSWORD + value: root + - name: LEDGER_POSTGRES_NO_DATABASE_URI + value: postgresql://$(LEDGER_POSTGRES_USERNAME):$(LEDGER_POSTGRES_PASSWORD)@$(LEDGER_POSTGRES_HOST):$(LEDGER_POSTGRES_PORT) + - name: LEDGER_POSTGRES_URI + value: $(LEDGER_POSTGRES_NO_DATABASE_URI)/$(LEDGER_POSTGRES_DATABASE)?sslmode=disable + - name: BROKER + value: kafka + image: public.ecr.aws/h9j1u6h3/jeffail/benthos:4.12.1 + imagePullPolicy: Always + name: search-benthos + ports: + - containerPort: 4195 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /config/global + name: global + readOnly: true + - mountPath: /config/resources + name: resources + readOnly: true + - mountPath: /config/streams + name: streams + readOnly: true + - mountPath: /config/templates + name: templates + readOnly: true + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: search-benthos-global + name: global + - configMap: + defaultMode: 420 + name: search-benthos-resources + name: resources + - configMap: + defaultMode: 420 + name: search-benthos-streams + name: streams + - configMap: + defaultMode: 420 + name: search-benthos-templates + name: templates +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search.yaml new file mode 100644 index 0000000000..a9984b5c11 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/search.yaml @@ -0,0 +1,114 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: search + formance.com/monopod: "false" + stack: "true" + name: search + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: search + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: search + spec: + containers: + - env: + - name: BIND + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: search + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: OPENSEARCH_URL + value: http://elasticsearch:9200 + - name: OPENSEARCH_BATCHING_COUNT + value: "0" + - name: OPENSEARCH_BATCHING_PERIOD + - name: TOPIC_PREFIX + value: multipod-latest-with-gateway-fallback- + - name: OPENSEARCH_INDEX + value: stacks + - name: KAFKA_ADDRESS + value: kafka1:1234,kafka2:1234 + - name: OPEN_SEARCH_SERVICE + value: elasticsearch:9200 + - name: OPEN_SEARCH_SCHEME + value: http + - name: MAPPING_INIT_DISABLED + value: "true" + - name: ES_INDICES + value: stacks + image: ghcr.io/formancehq/search:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: search + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/stargate.yaml new file mode 100644 index 0000000000..e784c624fa --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/stargate.yaml @@ -0,0 +1,105 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: stargate + formance.com/monopod: "false" + stack: "true" + name: stargate + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: stargate + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: stargate + spec: + containers: + - env: + - name: BIND + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: stargate + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: ORGANIZATION_ID + value: multipod + - name: STACK_ID + value: latest + - name: STARGATE_SERVER_URL + - name: GATEWAY_URL + value: http://gateway:8000 + - name: STARGATE_AUTH_CLIENT_ID + - name: STARGATE_AUTH_CLIENT_SECRET + - name: STARGATE_AUTH_ISSUER_URL + image: ghcr.io/formancehq/stargate:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: stargate + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/wallets.yaml new file mode 100644 index 0000000000..436a36c765 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/wallets.yaml @@ -0,0 +1,101 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: wallets + formance.com/monopod: "false" + stack: "true" + name: wallets + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: wallets + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: wallets + spec: + containers: + - env: + - name: LISTEN + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: wallets + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: STORAGE_POSTGRES_CONN_STRING + value: $(POSTGRES_URI) + - name: STACK_CLIENT_ID + value: wallets + - name: STACK_CLIENT_SECRET + value: mocked-secret + image: ghcr.io/formancehq/wallets:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: wallets + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks-worker.yaml new file mode 100644 index 0000000000..a869e48622 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks-worker.yaml @@ -0,0 +1,107 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: webhooks + formance.com/monopod: "false" + stack: "true" + name: webhooks-worker + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: webhooks-worker + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: webhooks-worker + spec: + containers: + - args: + - worker + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-webhooks + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: LISTEN + value: :0 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: webhooks-worker + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: BROKER + value: kafka + - name: PUBLISHER_KAFKA_ENABLED + value: "true" + - name: PUBLISHER_KAFKA_BROKER + value: kafka1:1234 kafka2:1234 + - name: STORAGE_POSTGRES_CONN_STRING + value: $(POSTGRES_URI) + - name: KAFKA_TOPICS + value: multipod-latest-with-gateway-fallback-ledger multipod-latest-with-gateway-fallback-payments + image: ghcr.io/formancehq/webhooks:latest + imagePullPolicy: Always + name: webhooks-worker + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks.yaml new file mode 100644 index 0000000000..e40ac80001 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/deployments-apps-v1/webhooks.yaml @@ -0,0 +1,117 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + generation: 1 + labels: + app.kubernetes.io/name: webhooks + formance.com/monopod: "false" + stack: "true" + name: webhooks + namespace: multipod-latest-with-gateway-fallback +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: webhooks + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + stack.formance.cloud/volumes-hash: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU= + creationTimestamp: null + labels: + app.kubernetes.io/name: webhooks + spec: + containers: + - env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-webhooks + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: LISTEN + value: :8080 + - name: OTEL_TRACES + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_TRACES_EXPORTER_OTLP_INSECURE + value: "true" + - name: OTEL_TRACES_EXPORTER_OTLP_MODE + value: grpc + - name: OTEL_TRACES_PORT + value: "4317" + - name: OTEL_TRACES_ENDPOINT + value: localhost + - name: OTEL_TRACES_EXPORTER_OTLP_ENDPOINT + value: $(OTEL_TRACES_ENDPOINT):$(OTEL_TRACES_PORT) + - name: OTEL_RESOURCE_ATTRIBUTES + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(OTEL_TRACES_EXPORTER_OTLP_ENDPOINT) + - name: DEBUG + value: "false" + - name: DEV + value: "false" + - name: STACK_URL + value: http://example.net + - name: OTEL_SERVICE_NAME + value: webhooks + - name: STACK + value: multipod-latest-with-gateway-fallback + - name: BROKER + value: kafka + - name: PUBLISHER_KAFKA_ENABLED + value: "true" + - name: PUBLISHER_KAFKA_BROKER + value: kafka1:1234 kafka2:1234 + - name: STORAGE_POSTGRES_CONN_STRING + value: $(POSTGRES_URI) + image: ghcr.io/formancehq/webhooks:latest + imagePullPolicy: Always + livenessProbe: + failureThreshold: 20 + httpGet: + path: /_healthcheck + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 2 + successThreshold: 1 + timeoutSeconds: 30 + name: webhooks + ports: + - containerPort: 8080 + name: http + protocol: TCP + resources: + requests: + cpu: 100m + memory: 50Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + availableReplicas: 1 + observedGeneration: 1 + readyReplicas: 1 + replicas: 1 + updatedReplicas: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/ingresses-networking.k8s.io-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/ingresses-networking.k8s.io-v1/gateway.yaml new file mode 100644 index 0000000000..5fb395c719 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/ingresses-networking.k8s.io-v1/gateway.yaml @@ -0,0 +1,22 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + generation: 1 + labels: + stack: "true" + name: gateway + namespace: multipod-latest-with-gateway-fallback +spec: + rules: + - host: example.net + http: + paths: + - backend: + service: + name: gateway + port: + name: http + path: / + pathType: Prefix +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/auth-create-database.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/auth-create-database.yaml new file mode 100644 index 0000000000..3fcd690240 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/auth-create-database.yaml @@ -0,0 +1,57 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: auth-create-database + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: auth-create-database + spec: + containers: + - args: + - sh + - -c + - echo SELECT \'CREATE DATABASE \"${POSTGRES_DATABASE}\"\' WHERE NOT EXISTS \(SELECT FROM pg_database WHERE datname = \'${POSTGRES_DATABASE}\'\)\\gexec | psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USERNAME} "sslmode=disable" + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-auth + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: PGPASSWORD + value: $(POSTGRES_PASSWORD) + image: postgres:15-alpine + imagePullPolicy: IfNotPresent + name: create-database + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-create-database.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-create-database.yaml new file mode 100644 index 0000000000..1e53820b9f --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-create-database.yaml @@ -0,0 +1,57 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: ledger-create-database + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: ledger-create-database + spec: + containers: + - args: + - sh + - -c + - echo SELECT \'CREATE DATABASE \"${POSTGRES_DATABASE}\"\' WHERE NOT EXISTS \(SELECT FROM pg_database WHERE datname = \'${POSTGRES_DATABASE}\'\)\\gexec | psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USERNAME} "sslmode=disable" + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-ledger + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: PGPASSWORD + value: $(POSTGRES_PASSWORD) + image: postgres:15-alpine + imagePullPolicy: IfNotPresent + name: create-database + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-latest-db-migration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-latest-db-migration.yaml new file mode 100644 index 0000000000..b32627c352 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/ledger-latest-db-migration.yaml @@ -0,0 +1,56 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: ledger-latest-db-migration + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: ledger-latest-db-migration + spec: + containers: + - args: + - storage + - upgrade-all + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-ledger + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: STORAGE_POSTGRES_CONN_STRING + value: $(POSTGRES_URI) + image: ghcr.io/formancehq/ledger:latest + imagePullPolicy: Always + name: migrate + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/orchestration-create-database.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/orchestration-create-database.yaml new file mode 100644 index 0000000000..32bba7e544 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/orchestration-create-database.yaml @@ -0,0 +1,57 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: orchestration-create-database + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: orchestration-create-database + spec: + containers: + - args: + - sh + - -c + - echo SELECT \'CREATE DATABASE \"${POSTGRES_DATABASE}\"\' WHERE NOT EXISTS \(SELECT FROM pg_database WHERE datname = \'${POSTGRES_DATABASE}\'\)\\gexec | psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USERNAME} "sslmode=disable" + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-orchestration + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: PGPASSWORD + value: $(POSTGRES_PASSWORD) + image: postgres:15-alpine + imagePullPolicy: IfNotPresent + name: create-database + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-create-database.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-create-database.yaml new file mode 100644 index 0000000000..a3eba620f7 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-create-database.yaml @@ -0,0 +1,57 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: payments-create-database + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: payments-create-database + spec: + containers: + - args: + - sh + - -c + - echo SELECT \'CREATE DATABASE \"${POSTGRES_DATABASE}\"\' WHERE NOT EXISTS \(SELECT FROM pg_database WHERE datname = \'${POSTGRES_DATABASE}\'\)\\gexec | psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USERNAME} "sslmode=disable" + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-payments + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: PGPASSWORD + value: $(POSTGRES_PASSWORD) + image: postgres:15-alpine + imagePullPolicy: IfNotPresent + name: create-database + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-latest-db-migration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-latest-db-migration.yaml new file mode 100644 index 0000000000..0d60052e5c --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/payments-latest-db-migration.yaml @@ -0,0 +1,54 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: payments-latest-db-migration + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: payments-latest-db-migration + spec: + containers: + - args: + - migrate + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-payments + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: CONFIG_ENCRYPTION_KEY + image: ghcr.io/formancehq/payments:latest + imagePullPolicy: Always + name: migrate + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/webhooks-create-database.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/webhooks-create-database.yaml new file mode 100644 index 0000000000..66d90f63b8 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/jobs-batch-v1/webhooks-create-database.yaml @@ -0,0 +1,57 @@ +apiVersion: batch/v1 +kind: Job +metadata: + generation: 1 + labels: + stack: "true" + name: webhooks-create-database + namespace: multipod-latest-with-gateway-fallback +spec: + backoffLimit: 6 + completionMode: NonIndexed + completions: 1 + parallelism: 1 + selector: + matchLabels: {} + suspend: false + template: + metadata: + creationTimestamp: null + labels: + job-name: webhooks-create-database + spec: + containers: + - args: + - sh + - -c + - echo SELECT \'CREATE DATABASE \"${POSTGRES_DATABASE}\"\' WHERE NOT EXISTS \(SELECT FROM pg_database WHERE datname = \'${POSTGRES_DATABASE}\'\)\\gexec | psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USERNAME} "sslmode=disable" + env: + - name: POSTGRES_HOST + value: localhost + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_DATABASE + value: multipod-latest-with-gateway-fallback-webhooks + - name: POSTGRES_USERNAME + value: root + - name: POSTGRES_PASSWORD + value: root + - name: POSTGRES_NO_DATABASE_URI + value: postgresql://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT) + - name: POSTGRES_URI + value: $(POSTGRES_NO_DATABASE_URI)/$(POSTGRES_DATABASE)?sslmode=disable + - name: PGPASSWORD + value: $(POSTGRES_PASSWORD) + image: postgres:15-alpine + imagePullPolicy: IfNotPresent + name: create-database + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: OnFailure + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: + succeeded: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.6.5-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.6.5-post-upgrade.yaml new file mode 100644 index 0000000000..32597404cf --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.6.5-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: payments-v0.6.5-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: latest + module: payments + postUpgrade: true + targetedVersion: v0.6.5 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.7.0-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.7.0-post-upgrade.yaml new file mode 100644 index 0000000000..4fbfc0d399 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.7.0-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: payments-v0.7.0-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: latest + module: payments + postUpgrade: true + targetedVersion: v0.7.0 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.0-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.0-post-upgrade.yaml new file mode 100644 index 0000000000..a1fa7bf1d9 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.0-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: payments-v0.8.0-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: latest + module: payments + postUpgrade: true + targetedVersion: v0.8.0 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.1-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.1-post-upgrade.yaml new file mode 100644 index 0000000000..e50af73292 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/payments-v0.8.1-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: payments-v0.8.1-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: latest + module: payments + postUpgrade: true + targetedVersion: v0.8.1 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.0.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.0.0-pre-upgrade.yaml new file mode 100644 index 0000000000..fde3590848 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.0.0-pre-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: search-v0.0.0-pre-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: "" + module: search + postUpgrade: false + targetedVersion: v0.0.0 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-post-upgrade.yaml new file mode 100644 index 0000000000..eef6b71e27 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: search-v0.7.0-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: "" + module: search + postUpgrade: true + targetedVersion: v0.7.0 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-pre-upgrade.yaml new file mode 100644 index 0000000000..c477ed2bcc --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/search-v0.7.0-pre-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: search-v0.7.0-pre-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: "" + module: search + postUpgrade: false + targetedVersion: v0.7.0 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.3-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.3-post-upgrade.yaml new file mode 100644 index 0000000000..9185309f46 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.3-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: wallets-v0.4.3-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: "" + module: wallets + postUpgrade: true + targetedVersion: v0.4.3 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.4-post-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.4-post-upgrade.yaml new file mode 100644 index 0000000000..1ab524e710 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/migrations-stack.formance.com-v1beta3/wallets-v0.4.4-post-upgrade.yaml @@ -0,0 +1,17 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + generation: 1 + labels: + stack: "true" + name: wallets-v0.4.4-post-upgrade + namespace: multipod-latest-with-gateway-fallback +spec: + configuration: multipod-latest-with-gateway-fallback + currentVersion: "" + module: wallets + postUpgrade: true + targetedVersion: v0.4.4 + version: multipod-latest-with-gateway-fallback +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/secrets--v1/auth-secret.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/secrets--v1/auth-secret.yaml new file mode 100644 index 0000000000..6cee5faac3 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/secrets--v1/auth-secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +data: + signingKey: ZmFrZS1yc2Eta2V5 +kind: Secret +metadata: + labels: + stack: "true" + name: auth-secret + namespace: multipod-latest-with-gateway-fallback +type: Opaque diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/auth.yaml new file mode 100644 index 0000000000..d14dfc153b --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/auth.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: auth + name: auth + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: auth + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/gateway.yaml new file mode 100644 index 0000000000..2ed816cf75 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/gateway.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: gateway + name: gateway + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8000 + protocol: TCP + targetPort: 8000 + selector: + app.kubernetes.io/name: gateway + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/ledger.yaml new file mode 100644 index 0000000000..79b0efe088 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/ledger.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: ledger + name: ledger + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: ledger + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/orchestration.yaml new file mode 100644 index 0000000000..7653b03633 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/orchestration.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: orchestration + name: orchestration + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: orchestration + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-api.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-api.yaml new file mode 100644 index 0000000000..9cbc666f24 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-api.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: payments-api + name: payments-api + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: payments-api + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-connectors.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-connectors.yaml new file mode 100644 index 0000000000..6a75ec0b1d --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/payments-connectors.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: payments-connectors + name: payments-connectors + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: payments-connectors + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search-benthos.yaml new file mode 100644 index 0000000000..bb16f9b37d --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search-benthos.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: search-benthos + name: search-benthos + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 4195 + protocol: TCP + targetPort: 4195 + selector: + app.kubernetes.io/name: search-benthos + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search.yaml new file mode 100644 index 0000000000..869edab9db --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/search.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: search + name: search + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: search + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/wallets.yaml new file mode 100644 index 0000000000..f33780644a --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/wallets.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: wallets + name: wallets + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: wallets + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/webhooks.yaml new file mode 100644 index 0000000000..8904f7b3f6 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/results/services--v1/webhooks.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/service-name: webhooks + name: webhooks + namespace: multipod-latest-with-gateway-fallback +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - appProtocol: http + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app.kubernetes.io/name: webhooks + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/stack.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/stack.yaml new file mode 100644 index 0000000000..cc9a37df15 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/stack.yaml @@ -0,0 +1,11 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Stack +metadata: + name: stack1 +spec: + debug: false + dev: false + scheme: http + host: example.net + seed: stacks + versions: default diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/versions.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/versions.yaml new file mode 100644 index 0000000000..a46663e3cb --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-gateway-fallback/versions.yaml @@ -0,0 +1,7 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Versions +metadata: + name: default +spec: + ledger: latest + payments: latest diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/configmaps--v1/gateway-config.yaml index f08fec9899..6de04b814d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/deployments-apps-v1/gateway.yaml index b1b3797fe4..581361e904 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-with-secrets/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: xBjwM0r9mPN5adnzlOOJoNuVPY2EnWyNe2mQdY9pvKY= + stack.formance.cloud/volumes-hash: lxiPBQwURQWVDJHVjRLnwm-hhCdQmPLTnFKX0ZnkdxI= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/configmaps--v1/gateway-config.yaml index 8bb2752c02..fb2fe44b01 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml index cb71cf57d8..4974136107 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: xBjwM0r9mPN5adnzlOOJoNuVPY2EnWyNe2mQdY9pvKY= + stack.formance.cloud/volumes-hash: lxiPBQwURQWVDJHVjRLnwm-hhCdQmPLTnFKX0ZnkdxI= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/configmaps--v1/gateway-config.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/configmaps--v1/gateway-config.yaml index 848503f76e..41e1a69e8d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/configmaps--v1/gateway-config.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/configmaps--v1/gateway-config.yaml @@ -256,6 +256,7 @@ data: reverse_proxy control:3000 import cors } + } kind: ConfigMap metadata: diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml index 014f92734a..94a02f434d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml @@ -23,7 +23,7 @@ spec: template: metadata: annotations: - stack.formance.cloud/volumes-hash: xBjwM0r9mPN5adnzlOOJoNuVPY2EnWyNe2mQdY9pvKY= + stack.formance.cloud/volumes-hash: lxiPBQwURQWVDJHVjRLnwm-hhCdQmPLTnFKX0ZnkdxI= creationTimestamp: null labels: app.kubernetes.io/name: gateway diff --git a/components/operator/internal/modules/gateway/handler.go b/components/operator/internal/modules/gateway/handler.go index 323019b4eb..fd41f869a7 100644 --- a/components/operator/internal/modules/gateway/handler.go +++ b/components/operator/internal/modules/gateway/handler.go @@ -163,7 +163,18 @@ func createCaddyfile(context modules.ServiceInstallConfiguration) string { services = append(services, servicesMap[key]) } - data := map[string]any{ + fallback := "" + redirect := false + if context.Configuration.Spec.Services.Gateway.Fallback != nil && *context.Configuration.Spec.Services.Gateway.Fallback != "" { + fallback = *context.Configuration.Spec.Services.Gateway.Fallback + redirect = true + } else { + if !context.IsDisabled("control") { + fallback = fmt.Sprintf("control:%d", servicesMap["control"].Port) + } + } + + if err := caddyfileTemplate.Execute(buf, map[string]any{ "Region": context.Platform.Region, "Env": context.Platform.Environment, "Issuer": fmt.Sprintf("%s/api/auth", context.Stack.URL()), @@ -178,15 +189,10 @@ func createCaddyfile(context modules.ServiceInstallConfiguration) string { } return "" }(), - "Fallback": fmt.Sprintf("control:%d", servicesMap["control"].Port), "Port": gatewayPort, - } - control, ok := context.RegisteredModules["control"] - if ok { - data["Fallback"] = fmt.Sprintf("control:%d", control.Services["control"].Port) - } - - if err := caddyfileTemplate.Execute(buf, data); err != nil { + "Fallback": fallback, + "Redirect": redirect, + }); err != nil { panic(err) } return buf.String() @@ -312,8 +318,14 @@ const caddyfile = `(cors) { } # handle all other requests + {{- if not (eq .Fallback "") }} handle { + {{- if .Redirect }} + redir {{ .Fallback }} + {{- else }} reverse_proxy {{ .Fallback }} + {{- end }} import cors } + {{ end }} }` diff --git a/components/operator/internal/modules/service.go b/components/operator/internal/modules/service.go index ba38bc1bce..6e27620232 100644 --- a/components/operator/internal/modules/service.go +++ b/components/operator/internal/modules/service.go @@ -640,30 +640,28 @@ func (r *serviceReconciler) createIngress(ctx context.Context) error { pathType := networkingv1.PathTypePrefix ingress.ObjectMeta.Annotations = annotations - ingress.Spec = networkingv1.IngressSpec{ - TLS: func() []networkingv1.IngressTLS { - if r.Configuration.Spec.Ingress.TLS == nil { - return nil - } - return []networkingv1.IngressTLS{{ - SecretName: r.Configuration.Spec.Ingress.TLS.SecretName, - }} - }(), - Rules: []networkingv1.IngressRule{ - { - Host: r.Stack.Spec.Host, - IngressRuleValue: networkingv1.IngressRuleValue{ - HTTP: &networkingv1.HTTPIngressRuleValue{ - Paths: []networkingv1.HTTPIngressPath{ - { - Path: r.service.ExposeHTTP.Path, - PathType: &pathType, - Backend: networkingv1.IngressBackend{ - Service: &networkingv1.IngressServiceBackend{ - Name: r.name, - Port: networkingv1.ServiceBackendPort{ - Name: "http", - }, + ingress.Spec.TLS = func() []networkingv1.IngressTLS { + if r.Configuration.Spec.Ingress.TLS == nil { + return nil + } + return []networkingv1.IngressTLS{{ + SecretName: r.Configuration.Spec.Ingress.TLS.SecretName, + }} + }() + ingress.Spec.Rules = []networkingv1.IngressRule{ + { + Host: r.Stack.Spec.Host, + IngressRuleValue: networkingv1.IngressRuleValue{ + HTTP: &networkingv1.HTTPIngressRuleValue{ + Paths: []networkingv1.HTTPIngressPath{ + { + Path: r.service.ExposeHTTP.Path, + PathType: &pathType, + Backend: networkingv1.IngressBackend{ + Service: &networkingv1.IngressServiceBackend{ + Name: r.name, + Port: networkingv1.ServiceBackendPort{ + Name: "http", }, }, }, diff --git a/components/operator/internal/modules/stack.go b/components/operator/internal/modules/stack.go index 94ae07121d..2d3e7f31d6 100644 --- a/components/operator/internal/modules/stack.go +++ b/components/operator/internal/modules/stack.go @@ -69,6 +69,10 @@ type ReconciliationConfig struct { Platform Platform } +func (s *ReconciliationConfig) IsDisabled(module string) bool { + return s.Stack.Spec.Services.IsDisabled(module) || s.Configuration.Spec.Services.IsDisabled(module) +} + type StackReconciler struct { ReconciliationConfig JobRunner @@ -139,7 +143,7 @@ func (r *StackReconciler) Reconcile(ctx context.Context) (bool, error) { if r.Configuration.Spec.LightMode { for _, module := range getSortedModules() { - if r.Stack.IsDisabled(module.Name()) { + if r.IsDisabled(module.Name()) { continue } if !r.ready.Contains(module) { @@ -165,7 +169,7 @@ func (r *StackReconciler) Reconcile(ctx context.Context) (bool, error) { logger.Info("Finalize modules") allReady := true for _, module := range getSortedModules() { - if r.Stack.IsDisabled(module.Name()) { + if r.IsDisabled(module.Name()) { continue } if !r.ready.Contains(module) { @@ -315,7 +319,7 @@ func (r *StackReconciler) prepareModule(ctx context.Context, module Module, return nil } - if r.Stack.IsDisabled(module.Name()) { + if r.IsDisabled(module.Name()) { return r.scaleDownStackModule(ctx, module) }