You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by ri...@apache.org on 2023/09/27 12:12:01 UTC
[incubator-kie-kogito-serverless-operator] branch main updated: Revert "KOGITO-9691 Create SonataFlow operator BDD tests for devMode (#224)" (#265)
This is an automated email from the ASF dual-hosted git repository.
ricardozanini pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-serverless-operator.git
The following commit(s) were added to refs/heads/main by this push:
new 43832d09 Revert "KOGITO-9691 Create SonataFlow operator BDD tests for devMode (#224)" (#265)
43832d09 is described below
commit 43832d095cff534afb336602f63849f067ce0b50
Author: Ricardo Zanini <15...@users.noreply.github.com>
AuthorDate: Wed Sep 27 09:11:57 2023 -0300
Revert "KOGITO-9691 Create SonataFlow operator BDD tests for devMode (#224)" (#265)
This reverts commit 6d57d74642d8bac97b39eb02b84ad888ba2a39e3.
---
Makefile | 13 -
bddframework/Makefile | 17 -
bddframework/go.mod | 123 --
bddframework/go.sum | 1711 ----------------
.../pkg/api/app/v1beta1/groupversion_info.go | 42 -
bddframework/pkg/api/app/v1beta1/kogitoservices.go | 447 -----
.../app/v1beta1/kogitosupportingservice_types.go | 123 --
.../v1beta1/kogitosupportingservice_types_test.go | 56 -
bddframework/pkg/api/app/v1beta1/monitoring.go | 46 -
bddframework/pkg/api/app/v1beta1/probe.go | 65 -
bddframework/pkg/api/app/v1beta1/webhook.go | 37 -
.../pkg/api/app/v1beta1/zz_generated.deepcopy.go | 292 ---
.../api/hyperfoil/v1alpha2/groupversion_info.go | 36 -
.../pkg/api/hyperfoil/v1alpha2/hyperfoil_types.go | 110 --
.../hyperfoil/v1alpha2/zz_generated.deepcopy.go | 163 --
bddframework/pkg/api/image.go | 39 -
bddframework/pkg/api/kogitoservices_types.go | 117 --
.../pkg/api/kogitosupportingservice_types.go | 67 -
bddframework/pkg/api/monitoring.go | 35 -
bddframework/pkg/api/probe.go | 27 -
bddframework/pkg/api/runtimetype.go | 25 -
bddframework/pkg/api/webhook.go | 31 -
bddframework/pkg/config/config.go | 508 -----
bddframework/pkg/config/image_cache_mode.go | 36 -
bddframework/pkg/config/image_tags.go | 82 -
bddframework/pkg/framework/check_setup.go | 53 -
bddframework/pkg/framework/cli.go | 53 -
bddframework/pkg/framework/client/client.go | 241 ---
.../pkg/framework/client/client_builder.go | 183 --
bddframework/pkg/framework/client/doc.go | 16 -
.../pkg/framework/client/kubernetes/doc.go | 16 -
.../pkg/framework/client/kubernetes/event.go | 45 -
.../pkg/framework/client/kubernetes/kubernetes.go | 64 -
.../pkg/framework/client/kubernetes/namespace.go | 76 -
.../framework/client/kubernetes/namespace_test.go | 48 -
.../pkg/framework/client/kubernetes/pod.go | 68 -
.../pkg/framework/client/kubernetes/resource.go | 125 --
.../framework/client/kubernetes/resource_reader.go | 92 -
.../framework/client/kubernetes/resource_writer.go | 105 -
.../pkg/framework/client/test/kubeconfig.go | 61 -
bddframework/pkg/framework/command.go | 163 --
bddframework/pkg/framework/container_engine.go | 137 --
bddframework/pkg/framework/dockerfile_provider.go | 126 --
bddframework/pkg/framework/env/env.go | 43 -
bddframework/pkg/framework/grafana.go | 118 --
bddframework/pkg/framework/graphql.go | 145 --
bddframework/pkg/framework/http.go | 364 ----
bddframework/pkg/framework/infinispan.go | 164 --
.../pkg/framework/infrastructure/grafana/group.go | 20 -
.../infrastructure/grafana/v1alpha1/doc.go | 18 -
.../grafana/v1alpha1/grafana_types.go | 636 ------
.../grafana/v1alpha1/grafanadashboard_types.go | 87 -
.../grafana/v1alpha1/grafanadatasource_types.go | 204 --
.../grafana/v1alpha1/groupversion_info.go | 37 -
.../grafana/v1alpha1/zz_generated.deepcopy.go | 2072 --------------------
.../pkg/framework/infrastructure/infinispan.go | 164 --
.../framework/infrastructure/infinispan/group.go | 20 -
.../framework/infrastructure/infinispan/v1/doc.go | 18 -
.../infinispan/v1/infinispan_types.go | 444 -----
.../infrastructure/infinispan/v1/register.go | 42 -
.../infinispan/v1/zz_generated.deepcopy.go | 505 -----
bddframework/pkg/framework/infrastructure/kafka.go | 164 --
.../pkg/framework/infrastructure/kafka/group.go | 20 -
.../framework/infrastructure/kafka/v1beta2/doc.go | 19 -
.../infrastructure/kafka/v1beta2/kafka_types.go | 147 --
.../kafka/v1beta2/kafkatopic_types.go | 52 -
.../infrastructure/kafka/v1beta2/register.go | 34 -
.../kafka/v1beta2/zz_generated.deepcopy.go | 392 ----
.../pkg/framework/infrastructure/kafka_test.go | 170 --
.../pkg/framework/infrastructure/keycloak.go | 53 -
.../pkg/framework/infrastructure/keycloak/group.go | 20 -
.../infrastructure/keycloak/v1alpha1/doc.go | 18 -
.../keycloak/v1alpha1/keycloak_types.go | 315 ---
.../keycloak/v1alpha1/keycloakbackup_types.go | 143 --
.../keycloak/v1alpha1/keycloakclient_types.go | 405 ----
.../keycloak/v1alpha1/keycloakrealm_types.go | 633 ------
.../keycloak/v1alpha1/keycloakuser_types.go | 148 --
.../infrastructure/keycloak/v1alpha1/register.go | 41 -
.../keycloak/v1alpha1/zz_generated.deepcopy.go | 1965 -------------------
.../pkg/framework/infrastructure/mongodb.go | 116 --
.../pkg/framework/infrastructure/mongodb/group.go | 20 -
.../pkg/framework/infrastructure/mongodb/v1/doc.go | 19 -
.../infrastructure/mongodb/v1/groupversion_info.go | 33 -
.../mongodb/v1/mongodbcommunity_types.go | 314 ---
.../mongodb/v1/zz_generated.deepcopy.go | 428 ----
.../pkg/framework/infrastructure/testutil.go | 185 --
bddframework/pkg/framework/installer.go | 42 -
bddframework/pkg/framework/kafka.go | 169 --
bddframework/pkg/framework/keycloak.go | 175 --
bddframework/pkg/framework/knative.go | 144 --
bddframework/pkg/framework/kogitodataindex.go | 68 -
bddframework/pkg/framework/kogitojobsservice.go | 96 -
bddframework/pkg/framework/kogitomgmtconsole.go | 54 -
bddframework/pkg/framework/kogitoserviceutils.go | 188 --
bddframework/pkg/framework/kogitotaskconsole.go | 54 -
bddframework/pkg/framework/kubernetes.go | 674 -------
bddframework/pkg/framework/logger/logger.go | 128 --
bddframework/pkg/framework/logging.go | 483 -----
bddframework/pkg/framework/maven.go | 272 ---
bddframework/pkg/framework/mongodb.go | 160 --
bddframework/pkg/framework/namespace.go | 135 --
bddframework/pkg/framework/openshift.go | 243 ---
bddframework/pkg/framework/openshift_resources.go | 138 --
bddframework/pkg/framework/operator.go | 527 -----
bddframework/pkg/framework/operator/context.go | 32 -
bddframework/pkg/framework/operator/operator.go | 26 -
bddframework/pkg/framework/postgresql.go | 176 --
bddframework/pkg/framework/process.go | 29 -
bddframework/pkg/framework/prometheus.go | 68 -
bddframework/pkg/framework/subscription.go | 42 -
bddframework/pkg/framework/task.go | 69 -
bddframework/pkg/framework/util.go | 399 ----
bddframework/pkg/gherkin/feature.go | 187 --
bddframework/pkg/gherkin/matcher.go | 39 -
.../pkg/installers/amqstreams_installer.go | 66 -
bddframework/pkg/installers/grafana_installer.go | 55 -
bddframework/pkg/installers/hyperfoil_installer.go | 56 -
.../installers/hyperfoil_node_scraper_installer.go | 248 ---
.../pkg/installers/infinispan_installer.go | 209 --
bddframework/pkg/installers/kafka_installer.go | 64 -
bddframework/pkg/installers/keycloak_installer.go | 76 -
.../knative-eventing-kogito-installer.go | 77 -
bddframework/pkg/installers/knative_installer.go | 133 --
bddframework/pkg/installers/mongodb_installer.go | 151 --
.../pkg/installers/prometheus_installer.go | 55 -
bddframework/pkg/installers/service_installer.go | 465 -----
bddframework/pkg/meta/meta.go | 100 -
bddframework/pkg/steps/data.go | 194 --
bddframework/pkg/steps/git.go | 62 -
bddframework/pkg/steps/grafana.go | 39 -
bddframework/pkg/steps/graphql.go | 166 --
bddframework/pkg/steps/graphql_queries.go | 67 -
bddframework/pkg/steps/http.go | 245 ---
bddframework/pkg/steps/hyperfoil.go | 173 --
bddframework/pkg/steps/image_registry.go | 214 --
bddframework/pkg/steps/infinispan.go | 115 --
bddframework/pkg/steps/kafka.go | 118 --
bddframework/pkg/steps/keycloak.go | 81 -
bddframework/pkg/steps/knative-eventing-kogito.go | 62 -
bddframework/pkg/steps/knative.go | 104 -
bddframework/pkg/steps/kogitodataindex.go | 68 -
bddframework/pkg/steps/kogitojobsservice.go | 84 -
bddframework/pkg/steps/kogitomgmtconsole.go | 85 -
bddframework/pkg/steps/kogitotaskconsole.go | 85 -
bddframework/pkg/steps/kubernetes.go | 96 -
.../steps/mappers/check_resource_requirements.go | 100 -
.../steps/mappers/create_infinispan_instance.go | 54 -
.../pkg/steps/mappers/create_kogito_service.go | 108 -
.../pkg/steps/mappers/create_maven_options.go | 62 -
.../pkg/steps/mappers/create_mongodb_instance.go | 68 -
.../steps/mappers/create_postgresql_instance.go | 64 -
bddframework/pkg/steps/mappers/shared_functions.go | 56 -
bddframework/pkg/steps/maven.go | 78 -
bddframework/pkg/steps/mongodb.go | 80 -
bddframework/pkg/steps/openshift.go | 77 -
bddframework/pkg/steps/postgresql.go | 57 -
bddframework/pkg/steps/process.go | 129 --
bddframework/pkg/steps/prometheus.go | 39 -
bddframework/pkg/steps/task.go | 163 --
bddframework/pkg/types/holder.go | 34 -
controllers/workflowdef/image.go | 5 -
go.work | 2 -
go.work.sum | 864 ++++----
hack/addheaders.sh | 2 +-
hack/clean-cluster-operators.sh | 29 -
hack/clean-crds.sh | 19 -
hack/clean-stuck-namespaces.sh | 45 -
hack/env.sh | 56 -
hack/run-tests.sh | 408 ----
hack/run-tests.sh.bats | 1100 -----------
testbdd/Makefile | 26 -
testbdd/README.md | 20 -
testbdd/executor/bdd_executor.go | 374 ----
testbdd/features/e2e.feature | 24 -
testbdd/framework/operator.go | 103 -
testbdd/go.mod | 140 --
testbdd/go.sum | 1747 -----------------
testbdd/installers/sonataflow_installer.go | 188 --
testbdd/main_test.go | 32 -
testbdd/meta/meta.go | 103 -
testbdd/scripts/prune_namespaces.go | 25 -
testbdd/steps/data.go | 47 -
testbdd/steps/kubernetes.go | 30 -
testbdd/steps/operator.go | 61 -
testbdd/steps/sonataflow.go | 139 --
testbdd/steps/sonataflowplatform.go | 67 -
186 files changed, 522 insertions(+), 31808 deletions(-)
diff --git a/Makefile b/Makefile
index 17acf1ab..10dcd876 100644
--- a/Makefile
+++ b/Makefile
@@ -121,19 +121,6 @@ test: manifests generate envtest vet fmt test-api ## Run tests.
test-api:
cd api && make test
-######
-# Test proxy commands
-
-TEST_DIR=testbdd
-
-.PHONY: run-tests
-run-tests:
- @(cd $(TEST_DIR) && $(MAKE) $@)
-
-.PHONY: run-smoke-tests
-run-smoke-tests:
- @(cd $(TEST_DIR) && $(MAKE) $@)
-
.PHONY: test-container-builder
test-container-builder:
cd container-builder && make test
diff --git a/bddframework/Makefile b/bddframework/Makefile
deleted file mode 100644
index 1e37c1e4..00000000
--- a/bddframework/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-.PHONY: all
-all: test
-
-##@ Development
-
-.PHONY: fmt
-fmt: ## Run go fmt against code.
- go mod tidy
- go fmt ./...
-
-.PHONY: vet
-vet: ## Run go vet against code.
- go vet ./...
-
-.PHONY: test
-test: fmt vet ## Run tests.
- go test ./... -v
diff --git a/bddframework/go.mod b/bddframework/go.mod
deleted file mode 100644
index fb83b5a0..00000000
--- a/bddframework/go.mod
+++ /dev/null
@@ -1,123 +0,0 @@
-module github.com/kiegroup/kogito-serverless-operator/bddframework
-
-go 1.19
-
-require (
- github.com/cucumber/gherkin-go/v19 v19.0.3
- github.com/cucumber/godog v0.12.5
- github.com/cucumber/messages-go/v16 v16.0.1
- github.com/go-logr/logr v1.2.4
- github.com/go-logr/zapr v1.2.4
- github.com/machinebox/graphql v0.2.2
- github.com/matryer/is v1.4.0 // indirect
- github.com/openshift/api v0.0.0-20230522130544-0eef84f63102
- github.com/operator-framework/operator-lifecycle-manager v0.0.0-20200321030439-57b580e57e88
- github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.55.1
- github.com/spf13/pflag v1.0.5
- go.uber.org/zap v1.24.0
- gopkg.in/src-d/go-git.v4 v4.13.1
- gopkg.in/yaml.v2 v2.4.0
- k8s.io/api v0.27.2
- k8s.io/apiextensions-apiserver v0.27.2
- k8s.io/apimachinery v0.27.2
- k8s.io/client-go v0.27.2
- knative.dev/eventing v0.26.0
- knative.dev/pkg v0.0.0-20230525143525-9bda38b21643
- sigs.k8s.io/controller-runtime v0.15.0
-)
-
-require (
- github.com/RHsyseng/operator-utils v1.4.12
- github.com/google/uuid v1.3.0
- github.com/kiegroup/kogito-serverless-operator v1.43.1
- github.com/openshift/client-go v0.0.0-20230503144108-75015d2347cb
- github.com/stretchr/testify v1.8.2
-)
-
-require (
- contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect
- contrib.go.opencensus.io/exporter/prometheus v0.4.0 // indirect
- github.com/beorn7/perks v1.0.1 // indirect
- github.com/blang/semver v3.5.1+incompatible // indirect
- github.com/blendle/zapdriver v1.3.1 // indirect
- github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
- github.com/cloudevents/sdk-go/v2 v2.4.1 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.9.0 // indirect
- github.com/emirpasic/gods v1.12.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/evanphx/json-patch/v5 v5.6.0 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
- github.com/go-kit/log v0.2.1 // indirect
- github.com/go-logfmt/logfmt v0.5.1 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.1 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
- github.com/gofrs/uuid v4.0.0+incompatible // indirect
- github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/google/gnostic v0.6.9 // indirect
- github.com/google/go-cmp v0.5.9 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
- github.com/hashicorp/go-immutable-radix v1.3.0 // indirect
- github.com/hashicorp/go-memdb v1.3.0 // indirect
- github.com/hashicorp/golang-lru v0.5.4 // indirect
- github.com/imdario/mergo v0.3.13 // indirect
- github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
- github.com/josharian/intern v1.0.0 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/kelseyhightower/envconfig v1.4.0 // indirect
- github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
- github.com/mitchellh/go-homedir v1.1.0 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
- github.com/pkg/errors v0.9.1 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_golang v1.15.1 // indirect
- github.com/prometheus/client_model v0.4.0 // indirect
- github.com/prometheus/common v0.42.0 // indirect
- github.com/prometheus/procfs v0.9.0 // indirect
- github.com/prometheus/statsd_exporter v0.21.0 // indirect
- github.com/rickb777/date v1.13.0 // indirect
- github.com/rickb777/plural v1.2.1 // indirect
- github.com/robfig/cron/v3 v3.0.1 // indirect
- github.com/sergi/go-diff v1.1.0 // indirect
- github.com/sirupsen/logrus v1.9.0 // indirect
- github.com/src-d/gcfg v1.4.0 // indirect
- github.com/xanzy/ssh-agent v0.2.1 // indirect
- go.opencensus.io v0.23.0 // indirect
- go.uber.org/atomic v1.10.0 // indirect
- go.uber.org/multierr v1.9.0 // indirect
- golang.org/x/crypto v0.8.0 // indirect
- golang.org/x/mod v0.10.0 // indirect
- golang.org/x/net v0.10.0 // indirect
- golang.org/x/oauth2 v0.7.0 // indirect
- golang.org/x/sync v0.2.0 // indirect
- golang.org/x/sys v0.8.0 // indirect
- golang.org/x/term v0.8.0 // indirect
- golang.org/x/text v0.9.0 // indirect
- golang.org/x/time v0.3.0 // indirect
- gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect
- google.golang.org/api v0.62.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 // indirect
- google.golang.org/grpc v1.51.0 // indirect
- google.golang.org/protobuf v1.30.0 // indirect
- gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect
- gopkg.in/warnings.v0 v0.1.2 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/component-base v0.27.2 // indirect
- k8s.io/klog/v2 v2.100.1 // indirect
- k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
- k8s.io/utils v0.0.0-20230313181309-38a27ef9d749 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
-)
diff --git a/bddframework/go.sum b/bddframework/go.sum
deleted file mode 100644
index 98a96c22..00000000
--- a/bddframework/go.sum
+++ /dev/null
@@ -1,1711 +0,0 @@
-bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
-bou.ke/monkey v1.0.1/go.mod h1:FgHuK96Rv2Nlf+0u1OOVDpCMdsWyOFmeeketDHE7LIg=
-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.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
-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.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.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
-cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
-cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
-cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=
-cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=
-cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=
-cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
-cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
-cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
-cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
-cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=
-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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-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=
-contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d h1:LblfooH1lKOpp1hIhukktmSAxFkqMPFk9KR6iZ0MJNI=
-contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d/go.mod h1:IshRmMJBhDfFj5Y67nVhMYTTIze91RUeT73ipWKs/GY=
-contrib.go.opencensus.io/exporter/prometheus v0.4.0 h1:0QfIkj9z/iVZgK31D9H9ohjjIDApI2GOPScCKwxedbs=
-contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0=
-contrib.go.opencensus.io/exporter/zipkin v0.1.2/go.mod h1:mP5xM3rrgOjpn79MM8fZbj3gsxcuytSqtH0dxSWW1RE=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
-github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
-github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw=
-github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
-github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
-github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
-github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
-github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
-github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
-github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
-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/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
-github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
-github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
-github.com/Masterminds/sprig/v3 v3.0.2/go.mod h1:oesJ8kPONMONaZgtiHNzUShJbksypC5kWczhZAf6+aU=
-github.com/Masterminds/vcs v1.13.1/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA=
-github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
-github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
-github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ=
-github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
-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/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/RHsyseng/operator-utils v1.4.12 h1:q1mbX48Ljpz9x/ck00+Zq5py+Gsbbm6LqwU99Kjp4l8=
-github.com/RHsyseng/operator-utils v1.4.12/go.mod h1:DquDurcTo2Fuc/yxz35y3Y2U7Y28j8JTEnlYbQM+gvg=
-github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
-github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
-github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20210420163308-c1402a70e2f1/go.mod h1:TdjdkYhlOifCQWPs1UdTma97kQQMozf5h26hTuG70u8=
-github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=
-github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
-github.com/alecthomas/jsonschema v0.0.0-20180308105923-f2c93856175a/go.mod h1:qpebaTNSsyUn5rPSJMsfqEtDw71TTggXM6stUDI16HA=
-github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
-github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
-github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
-github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
-github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
-github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
-github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
-github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
-github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
-github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
-github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
-github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
-github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0=
-github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
-github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
-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/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
-github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
-github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
-github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
-github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
-github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
-github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
-github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
-github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
-github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE=
-github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc=
-github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
-github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q=
-github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
-github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
-github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
-github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50=
-github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
-github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk=
-github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM=
-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/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw=
-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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudevents/conformance v0.2.0/go.mod h1:rHKDwylBH89Rns6U3wL9ww8bg9/4GbwRCDNuyoC6bcc=
-github.com/cloudevents/sdk-go/observability/opencensus/v2 v2.4.1/go.mod h1:lhEpxMrIUkeu9rVRgoAbyqZ8GR8Hd3DUy+thHUxAHoI=
-github.com/cloudevents/sdk-go/v2 v2.4.1 h1:rZJoz9QVLbWQmnvLPDFEmv17Czu+CfSPwMO6lhJ72xQ=
-github.com/cloudevents/sdk-go/v2 v2.4.1/go.mod h1:MZiMwmAh5tGj+fPFvtHv9hKurKqXtdB9haJYMJ/7GJY=
-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-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
-github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
-github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko=
-github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw=
-github.com/containerd/containerd v1.2.7/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
-github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
-github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
-github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
-github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY=
-github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
-github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0=
-github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o=
-github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc=
-github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
-github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/cucumber/gherkin-go/v19 v19.0.3 h1:mMSKu1077ffLbTJULUfM5HPokgeBcIGboyeNUof1MdE=
-github.com/cucumber/gherkin-go/v19 v19.0.3/go.mod h1:jY/NP6jUtRSArQQJ5h1FXOUgk5fZK24qtE7vKi776Vw=
-github.com/cucumber/godog v0.12.5 h1:FZIy6VCfMbmGHts9qd6UjBMT9abctws/pQYO/ZcwOVs=
-github.com/cucumber/godog v0.12.5/go.mod h1:u6SD7IXC49dLpPN35kal0oYEjsXZWee4pW6Tm9t5pIc=
-github.com/cucumber/messages-go/v16 v16.0.0/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g=
-github.com/cucumber/messages-go/v16 v16.0.1 h1:fvkpwsLgnIm0qugftrw2YwNlio+ABe2Iu94Ap8GMYIY=
-github.com/cucumber/messages-go/v16 v16.0.1/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g=
-github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4=
-github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8=
-github.com/cznic/fileutil v0.0.0-20180108211300-6a051e75936f/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg=
-github.com/cznic/golex v0.0.0-20170803123110-4ab7c5e190e4/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc=
-github.com/cznic/internal v0.0.0-20180608152220-f44710a21d00/go.mod h1:olo7eAdKwJdXxb55TKGLiJ6xt1H0/tiiRCWKVLmtjY4=
-github.com/cznic/lldb v1.1.0/go.mod h1:FIZVUmYUVhPwRiPzL8nD/mpFcJ/G7SSXjjXYG4uRI3A=
-github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM=
-github.com/cznic/ql v1.2.0/go.mod h1:FbpzhyZrqr0PVlK6ury+PoW3T0ODUV22OeWIxcaOrSE=
-github.com/cznic/sortutil v0.0.0-20150617083342-4c7342852e65/go.mod h1:q2w6Bg5jeox1B+QkJ6Wp/+Vn0G/bo3f1uY7Fn3vivIQ=
-github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc=
-github.com/cznic/zappy v0.0.0-20160723133515-2533cb5b45cc/go.mod h1:Y1SNZ4dRUOKXshKUbwUapqNncRrho4mkjQebgEHZLj8=
-github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE=
-github.com/deislabs/oras v0.8.1/go.mod h1:Mx0rMSbBNaNfY9hjpccEnxkOqJL6KGjtxNHPLC4G4As=
-github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
-github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
-github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-gk v0.0.0-20140819190930-201884a44051/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E=
-github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E=
-github.com/dgryski/go-lttb v0.0.0-20180810165845-318fcdf10a77/go.mod h1:Va5MyIzkU0rAM92tn3hb3Anb7oz7KcnixF49+2wOMe4=
-github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/dhui/dktest v0.3.0/go.mod h1:cyzIUfGsBEbZ6BT7tnXqAShHSXCZhSNmFl70sZ7c1yc=
-github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/docker/cli v0.0.0-20200130152716-5d0cf8839492/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/distribution v0.0.0-20191216044856-a8371794149d/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY=
-github.com/docker/distribution v2.7.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v0.7.3-0.20190103212154-2b7e084dc98b/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker v0.7.3-0.20190817195342-4760db040282/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker v1.4.2-0.20200203170920-46ec8731fbce/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y=
-github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI=
-github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
-github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
-github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
-github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
-github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
-github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
-github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
-github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
-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.20210217033140-668b12f5399d/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.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ=
-github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
-github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
-github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
-github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
-github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
-github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0=
-github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
-github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
-github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk=
-github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
-github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
-github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
-github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
-github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
-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-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
-github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
-github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
-github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
-github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
-github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
-github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
-github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
-github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
-github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
-github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
-github.com/go-logr/logr v1.2.0/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/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
-github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
-github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
-github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
-github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
-github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
-github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU=
-github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
-github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
-github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
-github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
-github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
-github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
-github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
-github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
-github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
-github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
-github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
-github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
-github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
-github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg=
-github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8=
-github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs=
-github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk=
-github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA=
-github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64=
-github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4=
-github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
-github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
-github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
-github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY=
-github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
-github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
-github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
-github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
-github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
-github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
-github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY=
-github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU=
-github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
-github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
-github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
-github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
-github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
-github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4=
-github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80=
-github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc=
-github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0=
-github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
-github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
-github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
-github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
-github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
-github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-migrate/migrate/v4 v4.6.2/go.mod h1:JYi6reN3+Z734VZ0akNuyOJNcrg45ZL7LDBMW3WGJL0=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/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/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
-github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
-github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-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.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
-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.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho=
-github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8=
-github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk=
-github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc=
-github.com/gonum/diff v0.0.0-20181124234638-500114f11e71/go.mod h1:22dM4PLscQl+Nzf64qNBurVJvfyvZELT0iRW2l/NN70=
-github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg=
-github.com/gonum/integrate v0.0.0-20181209220457-a422b5c0fdf2/go.mod h1:pDgmNM6seYpwvPos3q+zxlXMsbve6mOIPucUnUOrI7Y=
-github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks=
-github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2EAE789SSiSJNqxPaC0aE9J8NTOI0Jo/A=
-github.com/gonum/mathext v0.0.0-20181121095525-8a4bf007ea55/go.mod h1:fmo8aiSEWkJeiGXUJf+sPvuDgEFgqIoZSs843ePKrGg=
-github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw=
-github.com/gonum/stat v0.0.0-20181125101827-41a0da705a5b/go.mod h1:Z4GIJBJO3Wa4gD4vbwQxXXZ+WHmW6E9ixmNrwvs0iZs=
-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/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0=
-github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E=
-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.3/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/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
-github.com/google/go-github/v27 v27.0.6/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0=
-github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
-github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
-github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3/go.mod h1:YzLcVlL+NqWnmUEPuhS1LxDDwGO9WNbVlEXaF4IH35g=
-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/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-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-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-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.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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
-github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
-github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
-github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
-github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
-github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
-github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-health-probe v0.2.1-0.20181220223928-2bf0a5b182db/go.mod h1:uBKkC2RbarFsvS5jMJHpVhTLvGlGQj9JJwkaePE3FWI=
-github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4=
-github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
-github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-immutable-radix v1.3.0 h1:8exGP7ego3OmkfksihtSouGMZ+hQrhxx+FVELeXpVPE=
-github.com/hashicorp/go-immutable-radix v1.3.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-memdb v1.3.0 h1:xdXq34gBOMEloa9rlGStLxmfX/dyIK8htOv36dQUwHU=
-github.com/hashicorp/go-memdb v1.3.0/go.mod h1:Mluclgwib3R93Hk5fxEfiRhB+6Dar64wWh71LpNSe3g=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
-github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=
-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.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
-github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/influxdata/tdigest v0.0.0-20180711151920-a7d76c6f093a/go.mod h1:9GkyshztGufsdPQWjH+ifgnIr3xNUL5syI70g2dzU1o=
-github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0=
-github.com/influxdata/tdigest v0.0.0-20191024211133-5d87a7585faa/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y=
-github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
-github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
-github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
-github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
-github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
-github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-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/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
-github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
-github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
-github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
-github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY=
-github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-github.com/kiegroup/kogito-serverless-operator v1.43.1 h1:g7QiAn25OMq5QvbwT38SUwDLJzVqVR+vubuTkTanaFQ=
-github.com/kiegroup/kogito-serverless-operator v1.43.1/go.mod h1:kURINn+RO2Jr4xpGxqAFNAFX6L71/aeUfftDWqVoB18=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
-github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
-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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-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.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-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/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
-github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE=
-github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
-github.com/lightstep/tracecontext.go v0.0.0-20181129014701-1757c391b1ac/go.mod h1:Frd2bnT3w5FB5q49ENTfVlztJES+1k/7lyWX2+9gq/M=
-github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/machinebox/graphql v0.2.2 h1:dWKpJligYKhYKO5A2gvNhkJdQMNZeChZYyBbrZkBZfo=
-github.com/machinebox/graphql v0.2.2/go.mod h1:F+kbVMHuwrQ5tYgU9JXlnskM8nOaFxCAEolaQybkjWA=
-github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
-github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
-github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
-github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
-github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-shellwords v1.0.9/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
-github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
-github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
-github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/miekg/dns v1.1.17/go.mod h1:WgzbA6oji13JREwiNsRDNfl7jYdPnmz+VEuLrA+/48M=
-github.com/mikefarah/yaml/v2 v2.4.0/go.mod h1:ahVqZF4n1W4NqwvVnZzC4es67xsW9uR/RRf2RRxieJU=
-github.com/mikefarah/yq/v2 v2.4.1/go.mod h1:i8SYf1XdgUvY2OFwSqGAtWOOgimD2McJ6iutoxRm4k0=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
-github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A=
-github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
-github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
-github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
-github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
-github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA=
-github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=
-github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
-github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.10.4/go.mod h1:g/HbgYopi++010VEqkFgJHKC09uJiW9UkXvMUuKHUCQ=
-github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU=
-github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
-github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
-github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
-github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
-github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
-github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
-github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
-github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
-github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs=
-github.com/openshift/api v0.0.0-20200205133042-34f0ec8dab87/go.mod h1:fT6U/JfG8uZzemTRwZA2kBDJP5nWz7v05UHnty/D+pk=
-github.com/openshift/api v0.0.0-20230522130544-0eef84f63102 h1:DvXc9rkFXM8Q4Gva6MYoenwnvgX1Ij1cLkewLb91D5Q=
-github.com/openshift/api v0.0.0-20230522130544-0eef84f63102/go.mod h1:4VWG+W22wrB4HfBL88P40DxLEpSOaiBVxUnfalfJo9k=
-github.com/openshift/client-go v0.0.0-20190923180330-3b6373338c9b/go.mod h1:6rzn+JTr7+WYS2E1TExP4gByoABxMznR6y2SnUIkmxk=
-github.com/openshift/client-go v0.0.0-20230503144108-75015d2347cb h1:Nij5OnaECrkmcRQMAE9LMbQXPo95aqFnf+12B7SyFVI=
-github.com/openshift/client-go v0.0.0-20230503144108-75015d2347cb/go.mod h1:Rhb3moCqeiTuGHAbXBOlwPubUMlOZEkrEWTRjIF3jzs=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE=
-github.com/operator-framework/api v0.1.1/go.mod h1:yzNYR7qyJqRGOOp+bT6Z/iYSbSPNxeh3Si93Gx/3OBY=
-github.com/operator-framework/operator-lifecycle-manager v0.0.0-20200321030439-57b580e57e88 h1:ByKBik0i2aTEr7iKdSCmUGULydHwr6hA0h4INv9LkSA=
-github.com/operator-framework/operator-lifecycle-manager v0.0.0-20200321030439-57b580e57e88/go.mod h1:7Ut8p9jJ8C6RZyyhZfZypmlibCIJwK5Wcc+WZDgLkOA=
-github.com/operator-framework/operator-registry v1.5.3/go.mod h1:agrQlkWOo1q8U1SAaLSS2WQ+Z9vswNT2M2HFib9iuLY=
-github.com/operator-framework/operator-registry v1.6.1/go.mod h1:sx4wWMiZtYhlUiaKscg3QQUPPM/c1bkrAs4n4KipDb4=
-github.com/otiai10/copy v1.0.1/go.mod h1:8bMCJrAqOtN/d9oyh5HR7HhLQMvcGMpGdwRDYsfOCHc=
-github.com/otiai10/copy v1.0.2/go.mod h1:c7RpqBkwMom4bYTSkLSym4VSJz/XtncWRAj/J4PEIMY=
-github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
-github.com/otiai10/curr v0.0.0-20190513014714-f5a3d24e5776/go.mod h1:3HNVkVOU7vZeFXocWuvtcS0XSFLcf2XUSDHkq9t1jU4=
-github.com/otiai10/mint v1.2.3/go.mod h1:YnfyPNhBvnY8bW4SGQHCs/aAFhkgySlMZbrF5U0bOVw=
-github.com/otiai10/mint v1.2.4/go.mod h1:d+b7n/0R3tdyUYYylALXpWQ/kTN+QobSq/4SRGBkR3M=
-github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.2/go.mod h1:+X+aW6gUj6Hda43TeYHVCIvYNG/jqY/8ZFXAeXXHl+Q=
-github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/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/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
-github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
-github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
-github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.55.1 h1:IIEF5Sp5jDnqRNoHH5fPLNOsScMhmfyWmFP7m04jokc=
-github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.55.1/go.mod h1:/xf16Bu3krDP6G5WhrJL9avDnLW/AN0g7hAIK63mbes=
-github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
-github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
-github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
-github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI=
-github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
-github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
-github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
-github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
-github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
-github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
-github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
-github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8=
-github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ=
-github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
-github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M=
-github.com/rickb777/date v1.13.0 h1:+8AmwLuY1d/rldzdqvqTEg7107bZ8clW37x4nsdG3Hs=
-github.com/rickb777/date v1.13.0/go.mod h1:GZf3LoGnxPWjX+/1TXOuzHefZFDovTyNLHDMd3qH70k=
-github.com/rickb777/plural v1.2.1 h1:UitRAgR70+yHFt26Tmj/F9dU9aV6UfjGXSbO1DcC9/U=
-github.com/rickb777/plural v1.2.1/go.mod h1:j058+3M5QQFgcZZ2oKIOekcygoZUL8gKW5yRO14BuAw=
-github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
-github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
-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.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
-github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
-github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
-github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
-github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
-github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
-github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
-github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
-github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
-github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
-github.com/sqs/goreturns v0.0.0-20181028201513-538ac6014518/go.mod h1:CKI4AZ4XmGV240rTHfO0hfE83S6/a3/Q1siZJ/vXf7A=
-github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4=
-github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI=
-github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25/go.mod h1:lbP8tGiBjZ5YWIc2fzuRpTaz0b/53vT6PEs3QuAWzuU=
-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.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-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 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
-github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
-github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tsenart/go-tsz v0.0.0-20180814232043-cdeb9e1e981e/go.mod h1:SWZznP1z5Ki7hDT2ioqiFKEse8K9tU2OUvaRI0NeGQo=
-github.com/tsenart/vegeta/v12 v12.8.4/go.mod h1:ZiJtwLn/9M4fTPdMY7bdbIeyNeFVE8/AHbWFqCsUuho=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
-github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
-github.com/wavesoftware/go-ensure v1.0.0/go.mod h1:K2UAFSwMTvpiRGay/M3aEYYuurcR8S4A6HkQlJPV8k4=
-github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVThkpGiXrs=
-github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=
-github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
-github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
-github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
-github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
-github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
-github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs=
-github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs=
-github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
-github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-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.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
-github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
-github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
-gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE=
-go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg=
-go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.mongodb.org/mongo-driver v1.1.0/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-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.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
-go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
-go.opentelemetry.io/otel v0.16.0/go.mod h1:e4GKElweB8W2gWUqbghw0B8t5MCTccc9212eNHnOHwA=
-go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-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/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q=
-go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
-go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
-go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
-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 v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
-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-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-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-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
-golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
-golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
-golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/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-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
-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/lint v0.0.0-20210508222113-6edffad5e616/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.3.1-0.20200828183125-ce943fd02449/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.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
-golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181108082009-03003ca0c849/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-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190125091013-d26f9f9a57f3/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-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/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-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-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-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/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-20200520004742-59133d7f0dd7/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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/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-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
-golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-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-20181106182150-f42d05182288/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-20190402181905-9f3314589c9a/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-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g=
-golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
-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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
-golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-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-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/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-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190426135247-a129542de9ae/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-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/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-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/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-20201112073958-5cba982894dd/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-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-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210426230700-d19ff857e887/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/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-20220908164124-27713097b956/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-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-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.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-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-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.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.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-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/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-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/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-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a/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-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190617190820-da514acc4774/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-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
-golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
-golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/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-20190920225731-5eefd052ad72/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-20191030203535-5e247c9ad0a0/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/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-20200115044656-831fdb1e1868/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-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512001501-aaeff5de670a/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.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo=
-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=
-gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY=
-gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc=
-gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
-gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
-gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
-gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
-gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ=
-google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
-google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
-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.25.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/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
-google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
-google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
-google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=
-google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
-google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=
-google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
-google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
-google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
-google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
-google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
-google.golang.org/api v0.62.0 h1:PhGymJMXfGBzc4lBRmrx9+1w4w2wEzURHNGF/sD/xGc=
-google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-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 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
-google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk=
-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-20190404172233-64821d5d2107/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-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-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-20201110150050-8816d57aaa9a/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-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
-google.golang.org/genproto v0.0.0-20210416161957-9910b6c460de/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
-google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
-google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
-google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
-google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
-google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
-google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 h1:hrbNEivu7Zn1pxvHk6MBrq9iE22woVILTHqexqBxe6I=
-google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
-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.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
-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.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
-google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
-google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U=
-google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
-google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
-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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-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/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
-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-20141024133853-64131543e789/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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
-gopkg.in/imdario/mergo.v0 v0.3.7/go.mod h1:9qPP6AGrlC1G2PTNXko614FwGZvorN7MiBU0Eppok+U=
-gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
-gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
-gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg=
-gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98=
-gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg=
-gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g=
-gopkg.in/src-d/go-git.v4 v4.13.1 h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE=
-gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
-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.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/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-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
-gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
-gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
-helm.sh/helm/v3 v3.1.2/go.mod h1:WYsFJuMASa/4XUqLyv54s0U/f3mlAaRErGmyy4z921g=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-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=
-k8s.io/api v0.0.0-20190918155943-95b840bb6a1f/go.mod h1:uWuOHnjmNrtQomJrvEBg0c0HRNyQ+8KTEERVsK0PW48=
-k8s.io/api v0.16.7/go.mod h1:oUAiGRgo4t+5yqcxjOu5LoHT3wJ8JSbgczkaFYS5L7I=
-k8s.io/api v0.17.1/go.mod h1:zxiAc5y8Ngn4fmhWUtSxuUlkfz1ixT7j9wESokELzOg=
-k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4=
-k8s.io/api v0.17.3/go.mod h1:YZ0OTkuw7ipbe305fMpIdf3GLXZKRigjtZaV5gzC2J0=
-k8s.io/api v0.21.4/go.mod h1:fTVGP+M4D8+00FN2cMnJqk/eb/GH53bvmNs2SVTmpFk=
-k8s.io/api v0.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo=
-k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4=
-k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY=
-k8s.io/apiextensions-apiserver v0.16.7/go.mod h1:6xYRp4trGp6eT5WZ6tPi/TB2nfWQCzwUvBlpg8iswe0=
-k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs=
-k8s.io/apiextensions-apiserver v0.17.3/go.mod h1:CJbCyMfkKftAd/X/V6OTHYhVn7zXnDdnkUjS1h0GTeY=
-k8s.io/apiextensions-apiserver v0.21.4/go.mod h1:OoC8LhI9LnV+wKjZkXIBbLUwtnOGJiTRE33qctH5CIk=
-k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo=
-k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ=
-k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4=
-k8s.io/apimachinery v0.16.7/go.mod h1:Xk2vD2TRRpuWYLQNM6lT9R7DSFZUYG03SarNkbGrnKE=
-k8s.io/apimachinery v0.17.1/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg=
-k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg=
-k8s.io/apimachinery v0.17.3/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g=
-k8s.io/apimachinery v0.19.7/go.mod h1:6sRbGRAVY5DOCuZwB5XkqguBqpqLU6q/kOaOdk29z6Q=
-k8s.io/apimachinery v0.21.4/go.mod h1:H/IM+5vH9kZRNJ4l3x/fXP/5bOPJaVP/guptnZPeCFI=
-k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg=
-k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
-k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg=
-k8s.io/apiserver v0.16.7/go.mod h1:/5zSatF30/L9zYfMTl55jzzOnx7r/gGv5a5wtRp8yAw=
-k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo=
-k8s.io/apiserver v0.17.3/go.mod h1:iJtsPpu1ZpEnHaNawpSV0nYTGBhhX2dUlnn7/QS7QiY=
-k8s.io/apiserver v0.21.4/go.mod h1:SErUuFBBPZUcD2nsUU8hItxoYheqyYr2o/pCINEPW8g=
-k8s.io/cli-runtime v0.17.2/go.mod h1:aa8t9ziyQdbkuizkNLAw3qe3srSyWh9zlSB7zTqRNPI=
-k8s.io/cli-runtime v0.17.3/go.mod h1:X7idckYphH4SZflgNpOOViSxetiMj6xI0viMAjM81TA=
-k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53q3Uz5OSfgsv4uxpScmmyYOOlk=
-k8s.io/client-go v0.16.7/go.mod h1:9kEMEeuy2LdsHHXoU2Skqh+SDso+Yhkxd/0tltvswDE=
-k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI=
-k8s.io/client-go v0.17.3/go.mod h1:cLXlTMtWHkuK4tD360KpWz2gG2KtdWEr/OT02i3emRQ=
-k8s.io/client-go v0.21.4/go.mod h1:t0/eMKyUAq/DoQ7vW8NVVA00/nomlwC+eInsS8PxSew=
-k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE=
-k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ=
-k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE=
-k8s.io/code-generator v0.16.7/go.mod h1:wFdrXdVi/UC+xIfLi+4l9elsTT/uEF61IfcN2wOLULQ=
-k8s.io/code-generator v0.17.1/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s=
-k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s=
-k8s.io/code-generator v0.17.3/go.mod h1:l8BLVwASXQZTo2xamW5mQNFCe1XPiAesVq7Y1t7PiQQ=
-k8s.io/code-generator v0.21.4/go.mod h1:K3y0Bv9Cz2cOW2vXUrNZlFbflhuPvuadW6JdnN6gGKo=
-k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA=
-k8s.io/component-base v0.16.7/go.mod h1:ikdyfezOFMu5O0qJjy/Y9eXwj+fV3pVwdmt0ulVcIR0=
-k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs=
-k8s.io/component-base v0.17.3/go.mod h1:GeQf4BrgelWm64PXkIXiPh/XS0hnO42d9gx9BtbZRp8=
-k8s.io/component-base v0.21.4/go.mod h1:ZKG0eHVX+tUDcaoIGpU3Vtk4TIjMddN9uhEWDmW6Nyg=
-k8s.io/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo=
-k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo=
-k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
-k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
-k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
-k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/gengo v0.0.0-20210203185629-de9496dff47b/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
-k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
-k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
-k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
-k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-aggregator v0.17.3/go.mod h1:1dMwMFQbmH76RKF0614L7dNenMl3dwnUJuOOyZ3GMXA=
-k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
-k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
-k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
-k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE=
-k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg=
-k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg=
-k8s.io/kubectl v0.17.2/go.mod h1:y4rfLV0n6aPmvbRCqZQjvOp3ezxsFgpqL+zF5jH/lxk=
-k8s.io/kubectl v0.17.3/go.mod h1:NUn4IBY7f7yCMwSop2HCXlw/MVYP4HJBiUmOR3n9w28=
-k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
-k8s.io/metrics v0.17.2/go.mod h1:3TkNHET4ROd+NfzNxkjoVfQ0Ob4iZnaHmSEA4vYpwLw=
-k8s.io/metrics v0.17.3/go.mod h1:HEJGy1fhHOjHggW9rMDBJBD3YuGroH3Y1pnIRw9FFaI=
-k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-k8s.io/utils v0.0.0-20230313181309-38a27ef9d749 h1:xMMXJlJbsU8w3V5N2FLDQ8YgU8s1EoULdbQBcAeNJkY=
-k8s.io/utils v0.0.0-20230313181309-38a27ef9d749/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-knative.dev/eventing v0.26.0 h1:osDUdav7S0FuChN0onfwL5cEcsdb54Kee2hjAPMpY7o=
-knative.dev/eventing v0.26.0/go.mod h1:6tTam0lsPtBSJHJ63/195obj2VAHlTZZB7TLiBSeqk0=
-knative.dev/hack v0.0.0-20210806075220-815cd312d65c/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
-knative.dev/hack/schema v0.0.0-20210806075220-815cd312d65c/go.mod h1:ffjwmdcrH5vN3mPhO8RrF2KfNnbHeCE2C60A+2cv3U0=
-knative.dev/pkg v0.0.0-20210914164111-4857ab6939e3/go.mod h1:jMSqkNMsrzuy+XR4Yr/BMy7SDVbUOl3KKB6+5MR+ZU8=
-knative.dev/pkg v0.0.0-20210919202233-5ae482141474/go.mod h1:jMSqkNMsrzuy+XR4Yr/BMy7SDVbUOl3KKB6+5MR+ZU8=
-knative.dev/pkg v0.0.0-20230525143525-9bda38b21643 h1:DoGHeW3ckr509v87NcYSSuRHEnxKIxyJxWrrDO/71CY=
-knative.dev/pkg v0.0.0-20230525143525-9bda38b21643/go.mod h1:dqC6IrvyBE7E+oZocs5PkVhq1G59pDTA7r8U17EAKMk=
-knative.dev/reconciler-test v0.0.0-20210915181908-49fac7555086/go.mod h1:6yDmb26SINSmgw6wVy9qQwgRMewiW8ddkkwGLR0ZvOY=
-modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
-modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
-modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
-modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs=
-modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
-pgregory.net/rapid v0.3.3/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
-sigs.k8s.io/controller-runtime v0.15.0 h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU=
-sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk=
-sigs.k8s.io/controller-tools v0.2.4/go.mod h1:m/ztfQNocGYBgTTCmFdnK94uVvgxeZeE3LtJvd/jIzA=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
-sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
-sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA=
-sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18=
-sigs.k8s.io/structured-merge-diff v1.0.2/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA=
-sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
-sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
-sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
-sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
-vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI=
diff --git a/bddframework/pkg/api/app/v1beta1/groupversion_info.go b/bddframework/pkg/api/app/v1beta1/groupversion_info.go
deleted file mode 100644
index b7b34ad5..00000000
--- a/bddframework/pkg/api/app/v1beta1/groupversion_info.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package v1beta1 contains API Schema definitions for the app v1beta1 API group
-// +kubebuilder:object:generate=true
-// +groupName=app.kiegroup.org
-package v1beta1
-
-import (
- "k8s.io/apimachinery/pkg/runtime/schema"
- "sigs.k8s.io/controller-runtime/pkg/scheme"
-)
-
-var (
- // GroupVersion is group version used to register these objects
- GroupVersion = schema.GroupVersion{Group: "app.kiegroup.org", Version: "v1beta1"}
-
- // SchemeBuilder is used to add go types to the GroupVersionKind scheme
- SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
-
- // AddToScheme adds the types in this group-version to the given scheme.
- AddToScheme = SchemeBuilder.AddToScheme
-
- // SchemeGroupVersion is a alias for the generated clientset
- SchemeGroupVersion = GroupVersion
-)
-
-// Resource takes an unqualified resource and returns a Group qualified GroupResource. Required for clientset
-func Resource(resource string) schema.GroupResource {
- return SchemeGroupVersion.WithResource(resource).GroupResource()
-}
diff --git a/bddframework/pkg/api/app/v1beta1/kogitoservices.go b/bddframework/pkg/api/app/v1beta1/kogitoservices.go
deleted file mode 100644
index a8e69151..00000000
--- a/bddframework/pkg/api/app/v1beta1/kogitoservices.go
+++ /dev/null
@@ -1,447 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1beta1
-
-import (
- appsv1 "k8s.io/api/apps/v1"
- corev1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/api/resource"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/api"
-)
-
-// KogitoServiceStatus is the basic structure for any Kogito Service status.
-type KogitoServiceStatus struct {
- // +listType=atomic
- // History of conditions for the resource
- // +operator-sdk:csv:customresourcedefinitions:type=status
- // +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:io.kubernetes.conditions"
- Conditions *[]metav1.Condition `json:"conditions"`
- // General conditions for the Kogito Service deployment.
- // +operator-sdk:csv:customresourcedefinitions:type=status
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Deployment Conditions"
- // +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:io.kubernetes.conditions"
- DeploymentConditions []appsv1.DeploymentCondition `json:"deploymentConditions,omitempty"`
- // General conditions for the Kogito Service route.
- // +operator-sdk:csv:customresourcedefinitions:type=status
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Route Conditions"
- // +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:io.kubernetes.conditions"
- RouteConditions *[]metav1.Condition `json:"routeConditions,omitempty"`
- // Image is the resolved image for this service.
- // +operator-sdk:csv:customresourcedefinitions:type=status
- Image string `json:"image,omitempty"`
- // URI is where the service is exposed.
- // +operator-sdk:csv:customresourcedefinitions:type=status
- // +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:org.w3:link"
- ExternalURI string `json:"externalURI,omitempty"`
- // Describes the CloudEvents that this instance can consume or produce
- // +operator-sdk:csv:customresourcedefinitions:type=status
- CloudEvents KogitoCloudEventsStatus `json:"cloudEvents,omitempty"`
-}
-
-// GetConditions ...
-func (k *KogitoServiceStatus) GetConditions() *[]metav1.Condition {
- return k.Conditions
-}
-
-// SetConditions ...
-func (k *KogitoServiceStatus) SetConditions(conditions *[]metav1.Condition) {
- k.Conditions = conditions
-}
-
-// GetDeploymentConditions gets the deployment conditions for the service.
-func (k *KogitoServiceStatus) GetDeploymentConditions() []appsv1.DeploymentCondition {
- return k.DeploymentConditions
-}
-
-// SetDeploymentConditions sets the deployment conditions for the service.
-func (k *KogitoServiceStatus) SetDeploymentConditions(deploymentConditions []appsv1.DeploymentCondition) {
- k.DeploymentConditions = deploymentConditions
-}
-
-// GetRouteConditions gets the deployment conditions for the service.
-func (k *KogitoServiceStatus) GetRouteConditions() *[]metav1.Condition {
- return k.RouteConditions
-}
-
-// SetRouteConditions sets the deployment conditions for the service.
-func (k *KogitoServiceStatus) SetRouteConditions(conditions *[]metav1.Condition) {
- k.RouteConditions = conditions
-}
-
-// GetImage ...
-func (k *KogitoServiceStatus) GetImage() string { return k.Image }
-
-// SetImage ...
-func (k *KogitoServiceStatus) SetImage(image string) { k.Image = image }
-
-// GetExternalURI ...
-func (k *KogitoServiceStatus) GetExternalURI() string { return k.ExternalURI }
-
-// SetExternalURI ...
-func (k *KogitoServiceStatus) SetExternalURI(uri string) { k.ExternalURI = uri }
-
-// GetCloudEvents ...
-func (k *KogitoServiceStatus) GetCloudEvents() api.KogitoCloudEventsStatusInterface {
- return &k.CloudEvents
-}
-
-// SetCloudEvents ...
-func (k *KogitoServiceStatus) SetCloudEvents(cloudEvents api.KogitoCloudEventsStatusInterface) {
- if newCloudEvents, ok := cloudEvents.(*KogitoCloudEventsStatus); ok {
- k.CloudEvents = *newCloudEvents
- }
-}
-
-// KogitoCloudEventsStatus describes the CloudEvents that can be produced or consumed by this Kogito Service instance
-type KogitoCloudEventsStatus struct {
- // +optional
- // +listType=atomic
- // +operator-sdk:csv:customresourcedefinitions:type=status
- Consumes []KogitoCloudEventInfo `json:"consumes,omitempty"`
- // +optional
- // +listType=atomic
- // +operator-sdk:csv:customresourcedefinitions:type=status
- Produces []KogitoCloudEventInfo `json:"produces,omitempty"`
-}
-
-// GetConsumes ...
-func (k *KogitoCloudEventsStatus) GetConsumes() []api.KogitoCloudEventInfoInterface {
- consumes := make([]api.KogitoCloudEventInfoInterface, len(k.Consumes))
- for i, v := range k.Consumes {
- consumes[i] = api.KogitoCloudEventInfoInterface(v)
- }
- return consumes
-}
-
-// SetConsumes ...
-func (k *KogitoCloudEventsStatus) SetConsumes(consumes []api.KogitoCloudEventInfoInterface) {
- var newConsumes []KogitoCloudEventInfo
- for _, consume := range consumes {
- if newConsume, ok := consume.(KogitoCloudEventInfo); ok {
- newConsumes = append(newConsumes, newConsume)
- }
- }
- k.Consumes = newConsumes
-}
-
-// GetProduces ...
-func (k *KogitoCloudEventsStatus) GetProduces() []api.KogitoCloudEventInfoInterface {
- produces := make([]api.KogitoCloudEventInfoInterface, len(k.Produces))
- for i, v := range k.Produces {
- produces[i] = api.KogitoCloudEventInfoInterface(v)
- }
- return produces
-}
-
-// SetProduces ...
-func (k *KogitoCloudEventsStatus) SetProduces(produces []api.KogitoCloudEventInfoInterface) {
- var newProduces []KogitoCloudEventInfo
- for _, produce := range produces {
- if newProduce, ok := produce.(KogitoCloudEventInfo); ok {
- newProduces = append(newProduces, newProduce)
- }
- }
- k.Produces = newProduces
-}
-
-// KogitoCloudEventInfo describes the CloudEvent information based on the specification
-type KogitoCloudEventInfo struct {
- // +operator-sdk:csv:customresourcedefinitions:type=status
- Type string `json:"type"`
- // +operator-sdk:csv:customresourcedefinitions:type=status
- Source string `json:"source,omitempty"`
-}
-
-// GetType ...
-func (k KogitoCloudEventInfo) GetType() string {
- return k.Type
-}
-
-// GetSource ...
-func (k KogitoCloudEventInfo) GetSource() string {
- return k.Source
-}
-
-// KogitoServiceSpec is the basic structure for the Kogito Service specification.
-type KogitoServiceSpec struct {
-
- // Number of replicas that the service will have deployed in the cluster.
- //
- // Default value: 1.
- // +optional
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Replicas"
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podCount"
- // +kubebuilder:validation:Minimum=0
- Replicas *int32 `json:"replicas,omitempty"`
-
- // +optional
- // +listType=atomic
- // Environment variables to be added to the runtime container. Keys must be a C_IDENTIFIER.
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- Env []corev1.EnvVar `json:"env,omitempty"`
-
- // +optional
- // Image definition for the service. Example: "quay.io/kiegroup/kogito-service:latest".
- //
- // On OpenShift an ImageStream will be created in the current namespace pointing to the given image.
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:text"
- Image string `json:"image,omitempty"`
-
- // +optional
- // A flag indicating that image streams created by Kogito Operator should be configured to allow pulling from insecure registries.
- // Usable just on OpenShift.
- //
- // Defaults to 'false'.
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Insecure Image Registry"
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:booleanSwitch"
- InsecureImageRegistry bool `json:"insecureImageRegistry,omitempty"`
-
- // Defined compute resource requirements for the deployed service.
- // +optional
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:resourceRequirements"
- Resources corev1.ResourceRequirements `json:"resources,omitempty"`
-
- // Additional labels to be added to the Deployment and Pods managed by the operator.
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Additional Deployment Labels"
- DeploymentLabels map[string]string `json:"deploymentLabels,omitempty"`
-
- // Additional labels to be added to the Service managed by the operator.
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Additional Service Labels"
- ServiceLabels map[string]string `json:"serviceLabels,omitempty"`
-
- // +optional
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="ConfigMap Properties"
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:io.kubernetes:ConfigMap"
- // Custom ConfigMap with application.properties file to be mounted for the Kogito service.
- //
- // The ConfigMap must be created in the same namespace.
- //
- // Use this property if you need custom properties to be mounted before the application deployment.
- //
- // If left empty, one will be created for you. Later it can be updated to add any custom properties to apply to the service.
- PropertiesConfigMap string `json:"propertiesConfigMap,omitempty"`
-
- // Infra provides list of dependent KogitoInfra objects.
- // +optional
- Infra []string `json:"infra,omitempty"`
-
- // Create Service monitor instance to connect with Monitoring service
- // +optional
- Monitoring Monitoring `json:"monitoring,omitempty"`
-
- // +optional
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Configs"
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:text"
- // Application properties that will be set to the service. For example 'MY_VAR: my_value'.
- Config map[string]string `json:"config,omitempty"`
-
- // Configure liveness, readiness and startup probes for containers
- // +optional
- Probes KogitoProbe `json:"probes,omitempty"`
-
- // Custom JKS TrustStore that will be used by this service to make calls to TLS endpoints.
- //
- // It's expected that the secret has two keys: `keyStorePassword` containing the password for the KeyStore
- // and `cacerts` containing the binary data of the given KeyStore.
- // +optional
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:io.kubernetes:Secret"
- TrustStoreSecret string `json:"trustStoreSecret,omitempty"`
-
- // A flag indicating that routes are disabled. Usable just on OpenShift.
- //
- // If not provided, defaults to 'false'.
- // +optional
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="DisableRoute"
- // +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:booleanSwitch"
- DisableRoute bool `json:"disableRoute,omitempty"`
-}
-
-// GetReplicas ...
-func (k *KogitoServiceSpec) GetReplicas() *int32 { return k.Replicas }
-
-// SetReplicas ...
-func (k *KogitoServiceSpec) SetReplicas(replicas int32) { k.Replicas = &replicas }
-
-// GetEnvs ...
-func (k *KogitoServiceSpec) GetEnvs() []corev1.EnvVar { return k.Env }
-
-// SetEnvs ...
-func (k *KogitoServiceSpec) SetEnvs(envs []corev1.EnvVar) { k.Env = envs }
-
-// GetImage ...
-func (k *KogitoServiceSpec) GetImage() string { return k.Image }
-
-// SetImage ...
-func (k *KogitoServiceSpec) SetImage(image string) { k.Image = image }
-
-// GetResources ...
-func (k *KogitoServiceSpec) GetResources() corev1.ResourceRequirements { return k.Resources }
-
-// SetResources ...
-func (k *KogitoServiceSpec) SetResources(resources corev1.ResourceRequirements) {
- k.Resources = resources
-}
-
-// AddEnvironmentVariable adds new environment variable to service environment variables.
-func (k *KogitoServiceSpec) AddEnvironmentVariable(name, value string) {
- env := corev1.EnvVar{
- Name: name,
- Value: value,
- }
- k.Env = append(k.Env, env)
-}
-
-// AddEnvironmentVariableFromSecret adds a new environment variable from the secret under the key.
-func (k *KogitoServiceSpec) AddEnvironmentVariableFromSecret(variableName, secretName, secretKey string) {
- env := corev1.EnvVar{
- Name: variableName,
- ValueFrom: &corev1.EnvVarSource{
- SecretKeyRef: &corev1.SecretKeySelector{
- LocalObjectReference: corev1.LocalObjectReference{
- Name: secretName,
- },
- Key: secretKey,
- },
- },
- }
- k.Env = append(k.Env, env)
-}
-
-// AddResourceRequest adds new resource request. Works also on uninitialized Requests field.
-func (k *KogitoServiceSpec) AddResourceRequest(name, value string) {
- if k.Resources.Requests == nil {
- k.Resources.Requests = corev1.ResourceList{}
- }
-
- k.Resources.Requests[corev1.ResourceName(name)] = resource.MustParse(value)
-}
-
-// AddResourceLimit adds new resource limit. Works also on uninitialized Limits field.
-func (k *KogitoServiceSpec) AddResourceLimit(name, value string) {
- if k.Resources.Limits == nil {
- k.Resources.Limits = corev1.ResourceList{}
- }
-
- k.Resources.Limits[corev1.ResourceName(name)] = resource.MustParse(value)
-}
-
-// GetDeploymentLabels ...
-func (k *KogitoServiceSpec) GetDeploymentLabels() map[string]string { return k.DeploymentLabels }
-
-// SetDeploymentLabels ...
-func (k *KogitoServiceSpec) SetDeploymentLabels(labels map[string]string) {
- k.DeploymentLabels = labels
-}
-
-// AddDeploymentLabel adds new deployment label. Works also on uninitialized DeploymentLabels field.
-func (k *KogitoServiceSpec) AddDeploymentLabel(name, value string) {
- if k.DeploymentLabels == nil {
- k.DeploymentLabels = make(map[string]string)
- }
-
- k.DeploymentLabels[name] = value
-}
-
-// GetServiceLabels ...
-func (k *KogitoServiceSpec) GetServiceLabels() map[string]string { return k.ServiceLabels }
-
-// SetServiceLabels ...
-func (k *KogitoServiceSpec) SetServiceLabels(labels map[string]string) { k.ServiceLabels = labels }
-
-// AddServiceLabel adds new service label. Works also on uninitialized ServiceLabels field.
-func (k *KogitoServiceSpec) AddServiceLabel(name, value string) {
- if k.ServiceLabels == nil {
- k.ServiceLabels = make(map[string]string)
- }
-
- k.ServiceLabels[name] = value
-}
-
-// IsInsecureImageRegistry ...
-func (k *KogitoServiceSpec) IsInsecureImageRegistry() bool { return k.InsecureImageRegistry }
-
-// GetPropertiesConfigMap ...
-func (k *KogitoServiceSpec) GetPropertiesConfigMap() string {
- return k.PropertiesConfigMap
-}
-
-// GetInfra ...
-func (k *KogitoServiceSpec) GetInfra() []string { return k.Infra }
-
-// AddInfra ...
-func (k *KogitoServiceSpec) AddInfra(name string) {
- k.Infra = append(k.Infra, name)
-}
-
-// GetMonitoring ...
-func (k *KogitoServiceSpec) GetMonitoring() api.MonitoringInterface {
- return &k.Monitoring
-}
-
-// SetMonitoring ...
-func (k *KogitoServiceSpec) SetMonitoring(monitoring api.MonitoringInterface) {
- if newMonitoring, ok := monitoring.(*Monitoring); ok {
- k.Monitoring = *newMonitoring
- }
-}
-
-// GetConfig ...
-func (k *KogitoServiceSpec) GetConfig() map[string]string {
- return k.Config
-}
-
-// GetProbes ...
-func (k *KogitoServiceSpec) GetProbes() api.KogitoProbeInterface {
- return &k.Probes
-}
-
-// SetProbes ...
-func (k *KogitoServiceSpec) SetProbes(probes api.KogitoProbeInterface) {
- if newProbes, ok := probes.(*KogitoProbe); ok {
- k.Probes = *newProbes
- }
-}
-
-// GetTrustStoreSecret ...
-func (k *KogitoServiceSpec) GetTrustStoreSecret() string {
- return k.TrustStoreSecret
-}
-
-// SetTrustStoreSecret ...
-func (k *KogitoServiceSpec) SetTrustStoreSecret(trustStoreSecret string) {
- k.TrustStoreSecret = trustStoreSecret
-}
-
-// IsRouteDisabled ...
-func (k *KogitoServiceSpec) IsRouteDisabled() bool {
- return k.DisableRoute
-}
-
-// SetDisableRoute ...
-func (k *KogitoServiceSpec) SetDisableRoute(disableRoute bool) {
- k.DisableRoute = disableRoute
-}
diff --git a/bddframework/pkg/api/app/v1beta1/kogitosupportingservice_types.go b/bddframework/pkg/api/app/v1beta1/kogitosupportingservice_types.go
deleted file mode 100644
index bb2ea259..00000000
--- a/bddframework/pkg/api/app/v1beta1/kogitosupportingservice_types.go
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1beta1
-
-import (
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/api"
-)
-
-// KogitoSupportingServiceSpec defines the desired state of KogitoSupportingService.
-// +k8s:openapi-gen=true
-type KogitoSupportingServiceSpec struct {
- KogitoServiceSpec `json:",inline"`
-
- // Defines the type for the supporting service, eg: DataIndex, JobsService
- // Default value: JobsService
- // +operator-sdk:csv:customresourcedefinitions:type=spec
- // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Service Type"
- // +kubebuilder:validation:Required
- // +kubebuilder:validation:Enum=DataIndex;Explainability;JobsService;MgmtConsole;TaskConsole;TrustyAI;TrustyUI
- ServiceType api.ServiceType `json:"serviceType"`
-}
-
-// GetRuntime ...
-func (k *KogitoSupportingServiceSpec) GetRuntime() api.RuntimeType {
- return api.QuarkusRuntimeType
-}
-
-// GetServiceType ...
-func (k *KogitoSupportingServiceSpec) GetServiceType() api.ServiceType {
- return k.ServiceType
-}
-
-// SetServiceType ...
-func (k *KogitoSupportingServiceSpec) SetServiceType(serviceType api.ServiceType) {
- k.ServiceType = serviceType
-}
-
-// KogitoSupportingServiceStatus defines the observed state of KogitoSupportingService.
-// +k8s:openapi-gen=true
-type KogitoSupportingServiceStatus struct {
- KogitoServiceStatus `json:",inline"`
-}
-
-// +kubebuilder:object:root=true
-// +k8s:openapi-gen=true
-// +genclient
-// +kubebuilder:resource:path=kogitosupportingservices,scope=Namespaced
-// +kubebuilder:subresource:status
-// +kubebuilder:printcolumn:name="Replicas",type="integer",JSONPath=".spec.replicas",description="Number of replicas set for this service"
-// +kubebuilder:printcolumn:name="Image",type="string",JSONPath=".status.image",description="Base image for this service"
-// +kubebuilder:printcolumn:name="Endpoint",type="string",JSONPath=".status.externalURI",description="External URI to access this service"
-// +kubebuilder:printcolumn:name="Service Type",type="string",JSONPath=".spec.serviceType",description="Supporting Service Type"
-// +operator-sdk:csv:customresourcedefinitions:displayName="Kogito Supporting Service"
-// +operator-sdk:csv:customresourcedefinitions:resources={{Deployment,apps/v1,"A Kubernetes Deployment"}}
-// +operator-sdk:csv:customresourcedefinitions:resources={{Service,v1,"A Kubernetes Service"}}
-// +operator-sdk:csv:customresourcedefinitions:resources={{ImageStream,image.openshift.io/v1,"A Openshift ImageStream"}}
-// +operator-sdk:csv:customresourcedefinitions:resources={{Route,route.openshift.io/v1,"A Openshift Route"}}
-
-// KogitoSupportingService deploys the Supporting service in the given namespace.
-type KogitoSupportingService struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ObjectMeta `json:"metadata,omitempty"`
-
- Spec KogitoSupportingServiceSpec `json:"spec,omitempty"`
- Status KogitoSupportingServiceStatus `json:"status,omitempty"`
-}
-
-// GetSpec ...
-func (k *KogitoSupportingService) GetSpec() api.KogitoServiceSpecInterface {
- return &k.Spec
-}
-
-// GetStatus ...
-func (k *KogitoSupportingService) GetStatus() api.KogitoServiceStatusInterface {
- return &k.Status
-}
-
-// GetSupportingServiceSpec ...
-func (k *KogitoSupportingService) GetSupportingServiceSpec() api.KogitoSupportingServiceSpecInterface {
- return &k.Spec
-}
-
-// GetSupportingServiceStatus ...
-func (k *KogitoSupportingService) GetSupportingServiceStatus() api.KogitoSupportingServiceStatusInterface {
- return &k.Status
-}
-
-// +kubebuilder:object:root=true
-
-// KogitoSupportingServiceList contains a list of KogitoSupportingService.
-type KogitoSupportingServiceList struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ListMeta `json:"metadata,omitempty"`
- Items []KogitoSupportingService `json:"items"`
-}
-
-// GetItems ...
-func (k *KogitoSupportingServiceList) GetItems() []api.KogitoSupportingServiceInterface {
- models := make([]api.KogitoSupportingServiceInterface, len(k.Items))
- for i, v := range k.Items {
- item := v
- models[i] = &item
- }
- return models
-}
-
-func init() {
- SchemeBuilder.Register(&KogitoSupportingService{}, &KogitoSupportingServiceList{})
-}
diff --git a/bddframework/pkg/api/app/v1beta1/kogitosupportingservice_types_test.go b/bddframework/pkg/api/app/v1beta1/kogitosupportingservice_types_test.go
deleted file mode 100644
index c3684139..00000000
--- a/bddframework/pkg/api/app/v1beta1/kogitosupportingservice_types_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1beta1
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/api"
-)
-
-func TestGetItems(t *testing.T) {
- kogitoSupportingServiceList := &KogitoSupportingServiceList{
- Items: []KogitoSupportingService{
- {
- ObjectMeta: v1.ObjectMeta{
- Name: "data-index",
- },
- Spec: KogitoSupportingServiceSpec{
- ServiceType: api.DataIndex,
- },
- },
- {
- ObjectMeta: v1.ObjectMeta{
- Name: "mgmt-console",
- },
- Spec: KogitoSupportingServiceSpec{
- ServiceType: api.MgmtConsole,
- },
- },
- },
- }
-
- kogitoSupportingServiceInterface := kogitoSupportingServiceList.GetItems()
- assert.Equal(t, 2, len(kogitoSupportingServiceInterface))
-
- assert.Equal(t, "data-index", kogitoSupportingServiceInterface[0].GetName())
- assert.Equal(t, api.DataIndex, kogitoSupportingServiceInterface[0].GetSupportingServiceSpec().GetServiceType())
-
- assert.Equal(t, "mgmt-console", kogitoSupportingServiceInterface[1].GetName())
- assert.Equal(t, api.MgmtConsole, kogitoSupportingServiceInterface[1].GetSupportingServiceSpec().GetServiceType())
-}
diff --git a/bddframework/pkg/api/app/v1beta1/monitoring.go b/bddframework/pkg/api/app/v1beta1/monitoring.go
deleted file mode 100644
index 506e55a0..00000000
--- a/bddframework/pkg/api/app/v1beta1/monitoring.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1beta1
-
-// Monitoring properties to connect with Monitoring service
-type Monitoring struct {
- // HTTP scheme to use for scraping.
- // +optional
- Scheme string `json:"scheme,omitempty"`
-
- // HTTP path to scrape for metrics.
- // +optional
- Path string `json:"path,omitempty"`
-}
-
-// GetScheme ...
-func (m *Monitoring) GetScheme() string {
- return m.Scheme
-}
-
-// SetScheme ...
-func (m *Monitoring) SetScheme(scheme string) {
- m.Scheme = scheme
-}
-
-// GetPath ...
-func (m *Monitoring) GetPath() string {
- return m.Path
-}
-
-// SetPath ...
-func (m *Monitoring) SetPath(path string) {
- m.Path = path
-}
diff --git a/bddframework/pkg/api/app/v1beta1/probe.go b/bddframework/pkg/api/app/v1beta1/probe.go
deleted file mode 100644
index d7e14a02..00000000
--- a/bddframework/pkg/api/app/v1beta1/probe.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1beta1
-
-import corev1 "k8s.io/api/core/v1"
-
-// KogitoProbe configure liveness, readiness and startup probes for containers
-type KogitoProbe struct {
- // LivenessProbe describes how the Kogito container liveness probe should work
- // +
- // +optional
- LivenessProbe corev1.Probe `json:"livenessProbe,omitempty"`
-
- // ReadinessProbe describes how the Kogito container readiness probe should work
- // +
- // +optional
- ReadinessProbe corev1.Probe `json:"readinessProbe,omitempty"`
-
- // StartupProbe describes how the Kogito container startup probe should work
- // +
- // +optional
- StartupProbe corev1.Probe `json:"startupProbe,omitempty"`
-}
-
-// GetLivenessProbe ...
-func (p *KogitoProbe) GetLivenessProbe() corev1.Probe {
- return p.LivenessProbe
-}
-
-// SetLivenessProbe ...
-func (p *KogitoProbe) SetLivenessProbe(livenessProbe corev1.Probe) {
- p.LivenessProbe = livenessProbe
-}
-
-// GetReadinessProbe ...
-func (p *KogitoProbe) GetReadinessProbe() corev1.Probe {
- return p.ReadinessProbe
-}
-
-// SetReadinessProbe ...
-func (p *KogitoProbe) SetReadinessProbe(readinessProbe corev1.Probe) {
- p.ReadinessProbe = readinessProbe
-}
-
-// GetStartupProbe ...
-func (p *KogitoProbe) GetStartupProbe() corev1.Probe {
- return p.StartupProbe
-}
-
-// SetStartupProbe ...
-func (p *KogitoProbe) SetStartupProbe(startupProbe corev1.Probe) {
- p.StartupProbe = startupProbe
-}
diff --git a/bddframework/pkg/api/app/v1beta1/webhook.go b/bddframework/pkg/api/app/v1beta1/webhook.go
deleted file mode 100644
index 99f184ef..00000000
--- a/bddframework/pkg/api/app/v1beta1/webhook.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1beta1
-
-import "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/api"
-
-// WebHookSecret Secret to use for a given webHook.
-// +k8s:openapi-gen=true
-type WebHookSecret struct {
- // WebHook type, either GitHub or Generic.
- // +kubebuilder:validation:Enum=GitHub;Generic
- Type api.WebHookType `json:"type,omitempty"`
- // Secret value for webHook
- Secret string `json:"secret,omitempty"`
-}
-
-// GetType ...
-func (w WebHookSecret) GetType() api.WebHookType {
- return w.Type
-}
-
-// GetSecret ...
-func (w WebHookSecret) GetSecret() string {
- return w.Secret
-}
diff --git a/bddframework/pkg/api/app/v1beta1/zz_generated.deepcopy.go b/bddframework/pkg/api/app/v1beta1/zz_generated.deepcopy.go
deleted file mode 100644
index 52be5722..00000000
--- a/bddframework/pkg/api/app/v1beta1/zz_generated.deepcopy.go
+++ /dev/null
@@ -1,292 +0,0 @@
-//go:build !ignore_autogenerated
-// +build !ignore_autogenerated
-
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by controller-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
- appsv1 "k8s.io/api/apps/v1"
- v1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- runtime "k8s.io/apimachinery/pkg/runtime"
-)
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoCloudEventInfo) DeepCopyInto(out *KogitoCloudEventInfo) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoCloudEventInfo.
-func (in *KogitoCloudEventInfo) DeepCopy() *KogitoCloudEventInfo {
- if in == nil {
- return nil
- }
- out := new(KogitoCloudEventInfo)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoCloudEventsStatus) DeepCopyInto(out *KogitoCloudEventsStatus) {
- *out = *in
- if in.Consumes != nil {
- in, out := &in.Consumes, &out.Consumes
- *out = make([]KogitoCloudEventInfo, len(*in))
- copy(*out, *in)
- }
- if in.Produces != nil {
- in, out := &in.Produces, &out.Produces
- *out = make([]KogitoCloudEventInfo, len(*in))
- copy(*out, *in)
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoCloudEventsStatus.
-func (in *KogitoCloudEventsStatus) DeepCopy() *KogitoCloudEventsStatus {
- if in == nil {
- return nil
- }
- out := new(KogitoCloudEventsStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoProbe) DeepCopyInto(out *KogitoProbe) {
- *out = *in
- in.LivenessProbe.DeepCopyInto(&out.LivenessProbe)
- in.ReadinessProbe.DeepCopyInto(&out.ReadinessProbe)
- in.StartupProbe.DeepCopyInto(&out.StartupProbe)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoProbe.
-func (in *KogitoProbe) DeepCopy() *KogitoProbe {
- if in == nil {
- return nil
- }
- out := new(KogitoProbe)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoServiceSpec) DeepCopyInto(out *KogitoServiceSpec) {
- *out = *in
- if in.Replicas != nil {
- in, out := &in.Replicas, &out.Replicas
- *out = new(int32)
- **out = **in
- }
- if in.Env != nil {
- in, out := &in.Env, &out.Env
- *out = make([]v1.EnvVar, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- in.Resources.DeepCopyInto(&out.Resources)
- if in.DeploymentLabels != nil {
- in, out := &in.DeploymentLabels, &out.DeploymentLabels
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.ServiceLabels != nil {
- in, out := &in.ServiceLabels, &out.ServiceLabels
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.Infra != nil {
- in, out := &in.Infra, &out.Infra
- *out = make([]string, len(*in))
- copy(*out, *in)
- }
- out.Monitoring = in.Monitoring
- if in.Config != nil {
- in, out := &in.Config, &out.Config
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- in.Probes.DeepCopyInto(&out.Probes)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoServiceSpec.
-func (in *KogitoServiceSpec) DeepCopy() *KogitoServiceSpec {
- if in == nil {
- return nil
- }
- out := new(KogitoServiceSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoServiceStatus) DeepCopyInto(out *KogitoServiceStatus) {
- *out = *in
- if in.Conditions != nil {
- in, out := &in.Conditions, &out.Conditions
- *out = new([]metav1.Condition)
- if **in != nil {
- in, out := *in, *out
- *out = make([]metav1.Condition, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- }
- if in.DeploymentConditions != nil {
- in, out := &in.DeploymentConditions, &out.DeploymentConditions
- *out = make([]appsv1.DeploymentCondition, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.RouteConditions != nil {
- in, out := &in.RouteConditions, &out.RouteConditions
- *out = new([]metav1.Condition)
- if **in != nil {
- in, out := *in, *out
- *out = make([]metav1.Condition, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- }
- in.CloudEvents.DeepCopyInto(&out.CloudEvents)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoServiceStatus.
-func (in *KogitoServiceStatus) DeepCopy() *KogitoServiceStatus {
- if in == nil {
- return nil
- }
- out := new(KogitoServiceStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoSupportingService) DeepCopyInto(out *KogitoSupportingService) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoSupportingService.
-func (in *KogitoSupportingService) DeepCopy() *KogitoSupportingService {
- if in == nil {
- return nil
- }
- out := new(KogitoSupportingService)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *KogitoSupportingService) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoSupportingServiceList) DeepCopyInto(out *KogitoSupportingServiceList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ListMeta.DeepCopyInto(&out.ListMeta)
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]KogitoSupportingService, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoSupportingServiceList.
-func (in *KogitoSupportingServiceList) DeepCopy() *KogitoSupportingServiceList {
- if in == nil {
- return nil
- }
- out := new(KogitoSupportingServiceList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *KogitoSupportingServiceList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoSupportingServiceSpec) DeepCopyInto(out *KogitoSupportingServiceSpec) {
- *out = *in
- in.KogitoServiceSpec.DeepCopyInto(&out.KogitoServiceSpec)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoSupportingServiceSpec.
-func (in *KogitoSupportingServiceSpec) DeepCopy() *KogitoSupportingServiceSpec {
- if in == nil {
- return nil
- }
- out := new(KogitoSupportingServiceSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KogitoSupportingServiceStatus) DeepCopyInto(out *KogitoSupportingServiceStatus) {
- *out = *in
- in.KogitoServiceStatus.DeepCopyInto(&out.KogitoServiceStatus)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KogitoSupportingServiceStatus.
-func (in *KogitoSupportingServiceStatus) DeepCopy() *KogitoSupportingServiceStatus {
- if in == nil {
- return nil
- }
- out := new(KogitoSupportingServiceStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Monitoring) DeepCopyInto(out *Monitoring) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Monitoring.
-func (in *Monitoring) DeepCopy() *Monitoring {
- if in == nil {
- return nil
- }
- out := new(Monitoring)
- in.DeepCopyInto(out)
- return out
-}
diff --git a/bddframework/pkg/api/hyperfoil/v1alpha2/groupversion_info.go b/bddframework/pkg/api/hyperfoil/v1alpha2/groupversion_info.go
deleted file mode 100644
index 3f379903..00000000
--- a/bddframework/pkg/api/hyperfoil/v1alpha2/groupversion_info.go
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2021.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Package v1alpha2 contains API Schema definitions for the v1alpha2 API group
-// +kubebuilder:object:generate=true
-// +groupName=hyperfoil.io
-package v1alpha2
-
-import (
- "k8s.io/apimachinery/pkg/runtime/schema"
- "sigs.k8s.io/controller-runtime/pkg/scheme"
-)
-
-var (
- // GroupVersion is group version used to register these objects
- GroupVersion = schema.GroupVersion{Group: "hyperfoil.io", Version: "v1alpha2"}
-
- // SchemeBuilder is used to add go types to the GroupVersionKind scheme
- SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
-
- // AddToScheme adds the types in this group-version to the given scheme.
- AddToScheme = SchemeBuilder.AddToScheme
-)
diff --git a/bddframework/pkg/api/hyperfoil/v1alpha2/hyperfoil_types.go b/bddframework/pkg/api/hyperfoil/v1alpha2/hyperfoil_types.go
deleted file mode 100644
index 87dc265e..00000000
--- a/bddframework/pkg/api/hyperfoil/v1alpha2/hyperfoil_types.go
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2021.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1alpha2
-
-import (
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// HyperfoilSpec Configures Hyperfoil Controller and related resources.
-type HyperfoilSpec struct {
- // Controller image. If 'version' is defined, too, the tag is replaced (or appended). Defaults to 'quay.io/hyperfoil/hyperfoil'
- Image string `json:"image,omitempty"`
- // Tag for controller image. Defaults to version matching the operator version.
- Version string `json:"version,omitempty"`
- // Specification of the exposed route.
- Route RouteSpec `json:"route,omitempty"`
- // Authentication/authorization settings.
- Auth AuthSpec `json:"auth,omitempty"`
- // Name of the config map and optionally its entry (separated by '/': e.g myconfigmap/log4j2-superverbose.xml) storing Log4j2 configuration file. By default the Controller uses its embedded configuration.
- Log string `json:"log,omitempty"`
- // Deploy timeout for agents, in milliseconds.
- AgentDeployTimeout int `json:"agentDeployTimeout,omitempty"`
- // If this is set the controller does not start benchmark run right away after hitting
- // /benchmark/my-benchmark/start ; instead it responds with status 301 and header Location
- // set to concatenation of this string and 'BENCHMARK=my-benchmark&RUN_ID=xxxx'.
- // CLI interprets that response as a request to hit CI instance on this URL, assuming that
- // CI will trigger a new job that will eventually call /benchmark/my-benchmark/start?runId=xxxx
- // with header 'x-trigger-job'. This is useful if the the CI has to synchronize Hyperfoil
- // to other benchmarks that don't use this controller instance.
- TriggerURL string `json:"triggerUrl,omitempty"`
- // Names of config maps and optionally keys (separated by '/') holding hooks that run before the run starts.
- PreHooks []string `json:"preHooks,omitempty"`
- // Names of config maps and optionally keys (separated by '/') holding hooks that run after the run finishes.
- PostHooks []string `json:"postHooks,omitempty"`
- // Name of the PVC hyperfoil should mount for its workdir.
- PersistentVolumeClaim string `json:"persistentVolumeClaim,omitempty"`
- // List of secrets in this namespace; each entry from those secrets will be mapped
- // as environment variable, using the key as variable name.
- SecretEnvVars []string `json:"secretEnvVars,omitempty"`
-}
-
-// RouteSpec defines the route for external access.
-type RouteSpec struct {
- // Host for the route leading to Controller REST endpoint. Example: hyperfoil.apps.cloud.example.com
- Host string `json:"host,omitempty"`
- // Either 'http' (for plain-text routes - not recommended), 'edge', 'reencrypt' or 'passthrough'
- Type string `json:"type,omitempty"`
- // Optional for edge and reencrypt routes, required for passthrough; Name of the secret hosting `tls.crt`, `tls.key` and optionally `ca.crt`
- TLS string `json:"tls,omitempty"`
-}
-
-// AuthSpec defines authentication/authorization settings.
-type AuthSpec struct {
- // Optional; Name of secret used for basic authentication. Must contain key 'password'.
- Secret string `json:"secret,omitempty"`
-}
-
-// HyperfoilStatus defines the observed state of Hyperfoil
-type HyperfoilStatus struct {
- // "One of: 'Ready', 'Pending' or 'Error'"
- Status string `json:"status,omitempty"`
- // RFC 3339 date and time of the last update.
- LastUpdate metav1.Time `json:"lastUpdate,omitempty"`
- // Human readable explanation for the status.
- Reason string `json:"reason,omitempty"`
-}
-
-//+kubebuilder:object:root=true
-//+kubebuilder:resource:categories=all;hyperfoil,shortName=hf
-//+kubebuilder:subresource:status
-//+kubebuilder:printcolumn:name="Version",type=string,JSONPath=`.spec.version`
-//+kubebuilder:printcolumn:name="Route",type=string,JSONPath=`.spec.route.host`
-//+kubebuilder:printcolumn:name="PVC",type=string,JSONPath=`.spec.persistentVolumeClaim`
-//+kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.status`
-
-// Hyperfoil is the Schema for the hyperfoils API
-type Hyperfoil struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ObjectMeta `json:"metadata,omitempty"`
-
- Spec HyperfoilSpec `json:"spec,omitempty"`
- Status HyperfoilStatus `json:"status,omitempty"`
-}
-
-//+kubebuilder:object:root=true
-
-// HyperfoilList contains a list of Hyperfoil
-type HyperfoilList struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ListMeta `json:"metadata,omitempty"`
- Items []Hyperfoil `json:"items"`
-}
-
-func init() {
- SchemeBuilder.Register(&Hyperfoil{}, &HyperfoilList{})
-}
diff --git a/bddframework/pkg/api/hyperfoil/v1alpha2/zz_generated.deepcopy.go b/bddframework/pkg/api/hyperfoil/v1alpha2/zz_generated.deepcopy.go
deleted file mode 100644
index 23680c57..00000000
--- a/bddframework/pkg/api/hyperfoil/v1alpha2/zz_generated.deepcopy.go
+++ /dev/null
@@ -1,163 +0,0 @@
-//go:build !ignore_autogenerated
-// +build !ignore_autogenerated
-
-/*
-Copyright 2021.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Code generated by controller-gen. DO NOT EDIT.
-
-package v1alpha2
-
-import (
- runtime "k8s.io/apimachinery/pkg/runtime"
-)
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *AuthSpec) DeepCopyInto(out *AuthSpec) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthSpec.
-func (in *AuthSpec) DeepCopy() *AuthSpec {
- if in == nil {
- return nil
- }
- out := new(AuthSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Hyperfoil) DeepCopyInto(out *Hyperfoil) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Hyperfoil.
-func (in *Hyperfoil) DeepCopy() *Hyperfoil {
- if in == nil {
- return nil
- }
- out := new(Hyperfoil)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *Hyperfoil) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *HyperfoilList) DeepCopyInto(out *HyperfoilList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ListMeta.DeepCopyInto(&out.ListMeta)
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]Hyperfoil, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HyperfoilList.
-func (in *HyperfoilList) DeepCopy() *HyperfoilList {
- if in == nil {
- return nil
- }
- out := new(HyperfoilList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *HyperfoilList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *HyperfoilSpec) DeepCopyInto(out *HyperfoilSpec) {
- *out = *in
- out.Route = in.Route
- out.Auth = in.Auth
- if in.PreHooks != nil {
- in, out := &in.PreHooks, &out.PreHooks
- *out = make([]string, len(*in))
- copy(*out, *in)
- }
- if in.PostHooks != nil {
- in, out := &in.PostHooks, &out.PostHooks
- *out = make([]string, len(*in))
- copy(*out, *in)
- }
- if in.SecretEnvVars != nil {
- in, out := &in.SecretEnvVars, &out.SecretEnvVars
- *out = make([]string, len(*in))
- copy(*out, *in)
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HyperfoilSpec.
-func (in *HyperfoilSpec) DeepCopy() *HyperfoilSpec {
- if in == nil {
- return nil
- }
- out := new(HyperfoilSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *HyperfoilStatus) DeepCopyInto(out *HyperfoilStatus) {
- *out = *in
- in.LastUpdate.DeepCopyInto(&out.LastUpdate)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HyperfoilStatus.
-func (in *HyperfoilStatus) DeepCopy() *HyperfoilStatus {
- if in == nil {
- return nil
- }
- out := new(HyperfoilStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *RouteSpec) DeepCopyInto(out *RouteSpec) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteSpec.
-func (in *RouteSpec) DeepCopy() *RouteSpec {
- if in == nil {
- return nil
- }
- out := new(RouteSpec)
- in.DeepCopyInto(out)
- return out
-}
diff --git a/bddframework/pkg/api/image.go b/bddframework/pkg/api/image.go
deleted file mode 100644
index bef83661..00000000
--- a/bddframework/pkg/api/image.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-import "fmt"
-
-// Image is a definition of a Docker image.
-type Image struct {
- Domain string `json:"domain,omitempty"`
- Name string `json:"name,omitempty"`
- Tag string `json:"tag,omitempty"`
-}
-
-// IsEmpty verifies if this Image instance is empty.
-func (i *Image) IsEmpty() bool {
- return len(i.Domain) == 0 &&
- len(i.Name) == 0 &&
- len(i.Tag) == 0
-}
-
-// String representation of this Image.
-func (i *Image) String() string {
- if i.IsEmpty() {
- return ""
- }
- return fmt.Sprintf("%s/%s:%s", i.Domain, i.Name, i.Tag)
-}
diff --git a/bddframework/pkg/api/kogitoservices_types.go b/bddframework/pkg/api/kogitoservices_types.go
deleted file mode 100644
index 696f2f9e..00000000
--- a/bddframework/pkg/api/kogitoservices_types.go
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-import (
- appsv1 "k8s.io/api/apps/v1"
- corev1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/runtime"
- "sigs.k8s.io/controller-runtime/pkg/client"
-)
-
-// KogitoServiceConditionType is the type of condition
-type KogitoServiceConditionType string
-
-const (
- // DeployedConditionType - The KogitoService is deployed
- DeployedConditionType KogitoServiceConditionType = "Deployed"
- // ProvisioningConditionType - The KogitoService is being provisioned
- ProvisioningConditionType KogitoServiceConditionType = "Provisioning"
- // FailedConditionType - The KogitoService is in a failed state
- FailedConditionType KogitoServiceConditionType = "Failed"
-)
-
-// KogitoService defines the interface for any Kogito service that the operator can handle, e.g. Data Index, Jobs Service, Runtimes, etc.
-type KogitoService interface {
- client.Object
- // GetSpec gets the Kogito Service specification structure.
- GetSpec() KogitoServiceSpecInterface
- // GetStatus gets the Kogito Service Status structure.
- GetStatus() KogitoServiceStatusInterface
-}
-
-// KogitoServiceList defines a base interface for Kogito Service list.
-type KogitoServiceList interface {
- runtime.Object
- // GetItems get all items
- GetItems() []KogitoService
-}
-
-// KogitoServiceSpecInterface defines the interface for the Kogito service specification, it's the basic structure for any Kogito service.
-type KogitoServiceSpecInterface interface {
- GetReplicas() *int32
- SetReplicas(replicas int32)
- GetEnvs() []corev1.EnvVar
- SetEnvs(envs []corev1.EnvVar)
- AddEnvironmentVariable(name, value string)
- AddEnvironmentVariableFromSecret(variableName, secretName, secretKey string)
- GetImage() string
- SetImage(image string)
- GetResources() corev1.ResourceRequirements
- SetResources(resources corev1.ResourceRequirements)
- AddResourceRequest(name, value string)
- AddResourceLimit(name, value string)
- GetDeploymentLabels() map[string]string
- SetDeploymentLabels(labels map[string]string)
- AddDeploymentLabel(name, value string)
- GetServiceLabels() map[string]string
- SetServiceLabels(labels map[string]string)
- AddServiceLabel(name, value string)
- GetRuntime() RuntimeType
- IsRouteDisabled() bool
- SetDisableRoute(disableRoute bool)
- IsInsecureImageRegistry() bool
- GetPropertiesConfigMap() string
- GetInfra() []string
- AddInfra(name string)
- GetMonitoring() MonitoringInterface
- SetMonitoring(monitoring MonitoringInterface)
- GetConfig() map[string]string
- GetProbes() KogitoProbeInterface
- SetProbes(probes KogitoProbeInterface)
- GetTrustStoreSecret() string
- SetTrustStoreSecret(trustStore string)
-}
-
-// KogitoServiceStatusInterface defines the basic interface for the Kogito Service status.
-type KogitoServiceStatusInterface interface {
- GetConditions() *[]metav1.Condition
- SetConditions(conditions *[]metav1.Condition)
- GetDeploymentConditions() []appsv1.DeploymentCondition
- SetDeploymentConditions(deploymentConditions []appsv1.DeploymentCondition)
- GetRouteConditions() *[]metav1.Condition
- SetRouteConditions(conditions *[]metav1.Condition)
- GetImage() string
- SetImage(image string)
- GetExternalURI() string
- SetExternalURI(uri string)
- GetCloudEvents() KogitoCloudEventsStatusInterface
- SetCloudEvents(cloudEvents KogitoCloudEventsStatusInterface)
-}
-
-// KogitoCloudEventsStatusInterface ...
-type KogitoCloudEventsStatusInterface interface {
- GetConsumes() []KogitoCloudEventInfoInterface
- SetConsumes(consumes []KogitoCloudEventInfoInterface)
- GetProduces() []KogitoCloudEventInfoInterface
- SetProduces(produces []KogitoCloudEventInfoInterface)
-}
-
-// KogitoCloudEventInfoInterface ...
-type KogitoCloudEventInfoInterface interface {
- GetType() string
- GetSource() string
-}
diff --git a/bddframework/pkg/api/kogitosupportingservice_types.go b/bddframework/pkg/api/kogitosupportingservice_types.go
deleted file mode 100644
index a12bb323..00000000
--- a/bddframework/pkg/api/kogitosupportingservice_types.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-import (
- "k8s.io/apimachinery/pkg/runtime"
-)
-
-// ServiceType define resource type of supporting service
-type ServiceType string
-
-const (
- // DataIndex supporting service resource type
- DataIndex ServiceType = "DataIndex"
- // Explainability supporting service resource type
- Explainability ServiceType = "Explainability"
- // JobsService supporting service resource type
- JobsService ServiceType = "JobsService"
- // MgmtConsole supporting service resource type
- MgmtConsole ServiceType = "MgmtConsole"
- // TaskConsole supporting service resource type
- TaskConsole ServiceType = "TaskConsole"
- // TrustyAI supporting service resource type
- TrustyAI ServiceType = "TrustyAI"
- // TrustyUI supporting service resource type
- TrustyUI ServiceType = "TrustyUI"
-)
-
-// KogitoSupportingServiceInterface ...
-type KogitoSupportingServiceInterface interface {
- KogitoService
- // GetSpec gets the Kogito Service specification structure.
- GetSupportingServiceSpec() KogitoSupportingServiceSpecInterface
- // GetStatus gets the Kogito Service Status structure.
- GetSupportingServiceStatus() KogitoSupportingServiceStatusInterface
-}
-
-// KogitoSupportingServiceSpecInterface ...
-type KogitoSupportingServiceSpecInterface interface {
- KogitoServiceSpecInterface
- GetServiceType() ServiceType
- SetServiceType(serviceType ServiceType)
-}
-
-// KogitoSupportingServiceStatusInterface ...
-type KogitoSupportingServiceStatusInterface interface {
- KogitoServiceStatusInterface
-}
-
-// KogitoSupportingServiceListInterface ...
-type KogitoSupportingServiceListInterface interface {
- runtime.Object
- // GetItems gets all items
- GetItems() []KogitoSupportingServiceInterface
-}
diff --git a/bddframework/pkg/api/monitoring.go b/bddframework/pkg/api/monitoring.go
deleted file mode 100644
index 19952825..00000000
--- a/bddframework/pkg/api/monitoring.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-const (
-
- // MonitoringDefaultPathQuarkus default path
- MonitoringDefaultPathQuarkus = "/q/metrics"
-
- // MonitoringDefaultPathSpringboot default path
- MonitoringDefaultPathSpringboot = "/actuator/prometheus"
-
- // MonitoringDefaultScheme default scheme
- MonitoringDefaultScheme = "http"
-)
-
-// MonitoringInterface ...
-type MonitoringInterface interface {
- GetScheme() string
- SetScheme(scheme string)
- GetPath() string
- SetPath(path string)
-}
diff --git a/bddframework/pkg/api/probe.go b/bddframework/pkg/api/probe.go
deleted file mode 100644
index 399c7e97..00000000
--- a/bddframework/pkg/api/probe.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-import corev1 "k8s.io/api/core/v1"
-
-// KogitoProbeInterface ...
-type KogitoProbeInterface interface {
- GetLivenessProbe() corev1.Probe
- SetLivenessProbe(livenessProbe corev1.Probe)
- GetReadinessProbe() corev1.Probe
- SetReadinessProbe(readinessProbe corev1.Probe)
- GetStartupProbe() corev1.Probe
- SetStartupProbe(startupProbe corev1.Probe)
-}
diff --git a/bddframework/pkg/api/runtimetype.go b/bddframework/pkg/api/runtimetype.go
deleted file mode 100644
index 3511e1b3..00000000
--- a/bddframework/pkg/api/runtimetype.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-// RuntimeType - type of condition.
-type RuntimeType string
-
-const (
- // QuarkusRuntimeType Runtime for quarkus application
- QuarkusRuntimeType RuntimeType = "quarkus"
- // SpringBootRuntimeType Runtime for springboot application
- SpringBootRuntimeType RuntimeType = "springboot"
-)
diff --git a/bddframework/pkg/api/webhook.go b/bddframework/pkg/api/webhook.go
deleted file mode 100644
index fed4bfba..00000000
--- a/bddframework/pkg/api/webhook.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package api
-
-// WebHookType literal type to distinguish between different types of webHooks.
-type WebHookType string
-
-const (
- // GitHubWebHook GitHub webHook.
- GitHubWebHook WebHookType = "GitHub"
- // GenericWebHook Generic webHook.
- GenericWebHook WebHookType = "Generic"
-)
-
-// WebHookSecretInterface ...
-type WebHookSecretInterface interface {
- GetType() WebHookType
- GetSecret() string
-}
diff --git a/bddframework/pkg/config/config.go b/bddframework/pkg/config/config.go
deleted file mode 100644
index 62c9669e..00000000
--- a/bddframework/pkg/config/config.go
+++ /dev/null
@@ -1,508 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package config
-
-import (
- "fmt"
- "path/filepath"
-
- flag "github.com/spf13/pflag"
-)
-
-// TestConfig contains the information about the tests environment
-type TestConfig struct {
- // tests configuration
- smoke bool
- performance bool
- loadFactor int
- ciName string
- crDeploymentOnly bool
- containerEngine string
- domainSuffix string
- imageCacheMode string
- httpRetryNumber int
- olmNamespace string
-
- // operator information
- operatorImageTag string
- operatorInstallationSource string
- operatorCatalogImage string
- useProductOperator bool
-
- // profiling
- operatorProfiling bool
- operatorProfilingDataAccessYamlURI string
- operatorProfilingOutputFileURI string
-
- // files/binaries
- operatorYamlURI string
- rhpamOperatorYamlURI string
- cliPath string
-
- // runtime
- servicesImageTags imageTags
- servicesImageRegistry string
- servicesImageNameSuffix string
- servicesImageVersion string
- runtimeApplicationImageRegistry string
- runtimeApplicationImageNamePrefix string
- runtimeApplicationImageNameSuffix string
- runtimeApplicationImageVersion string
-
- // build
- customMavenRepoURL string
- customMavenRepoReplaceDefault bool
- mavenMirrorURL string
- quarkusPlatformMavenMirrorURL string
- mavenIgnoreSelfSignedCertificate bool
- buildBuilderImageTag string
- buildRuntimeJVMImageTag string
- buildRuntimeNativeImageTag string
- disableMavenNativeBuildInContainer bool
- nativeBuilderImage string
-
- // examples repository
- examplesRepositoryURI string
- examplesRepositoryRef string
- examplesRepositoryIgnoreSSL bool
-
- // Infinispan
- infinispanInstallationSource string
- infinispanStorageClass string
-
- // Hyperfoil
- hyperfoilOutputDirectory string
- hyperfoilControllerImageVersion string
-
- // dev options
- showScenarios bool
- showSteps bool
- dryRun bool
- keepNamespace bool
- namespaceName string
- localCluster bool
- localTests bool
-}
-
-const (
- defaultOperatorYamlURI = "../operator.yaml"
- defaultRhpamOperatorYamlURI = "../rhpam-operator.yaml"
- defaultCliPath = "../build/_output/bin/kogito"
-
- defaultOperatorProfilingDataAccessYamlURI = "../profiling/kogito-operator-profiling-data-access.yaml"
- defaultOperatorProfilingOutputFileURI = "./bdd-cover.out"
-
- defaultKogitoExamplesURI = "https://github.com/kiegroup/kogito-examples"
-
- defaultLoadFactor = 1
- defaultHTTPRetryNumber = 3
-
- defaultContainerEngine = "podman"
-
- installationSourceOlm = "olm"
- installationSourceYaml = "yaml"
-)
-
-var (
- env = TestConfig{}
-)
-
-// BindFlags binds BDD tests env flags to given flag set
-func BindFlags(set *flag.FlagSet) {
- prefix := "tests."
- developmentOptionsPrefix := prefix + "dev."
-
- // tests configuration
- set.BoolVar(&env.smoke, prefix+"smoke", false, "Launch only smoke tests")
- set.BoolVar(&env.performance, prefix+"performance", false, "Launch performance tests")
- set.IntVar(&env.loadFactor, prefix+"load_factor", defaultLoadFactor, "Set the tests load factor. Useful for the tests to take into account that the cluster can be overloaded, for example for the calculation of timeouts. Default value is 1.")
- set.BoolVar(&env.localTests, prefix+"local_execution", false, "If tests are launch on local machine using either a local or remote cluster")
- set.StringVar(&env.ciName, prefix+"ci", "", "If tests are launch on ci machine, give the CI name")
- set.BoolVar(&env.crDeploymentOnly, prefix+"cr_deployment_only", false, "Use this option if you have no CLI to test against. It will use only direct CR deployments.")
- set.StringVar(&env.containerEngine, prefix+"container_engine", defaultContainerEngine, "Engine used to interact with images and local containers.")
- set.StringVar(&env.domainSuffix, prefix+"domain_suffix", "", "Set the domain suffix for exposed services. Ignored when running tests on Openshift.")
- set.StringVar(&env.imageCacheMode, prefix+"image_cache_mode", "if-available", "Use this option to specify whether you want to use image cache for runtime images. Available options are 'always', 'never' or 'if-available'(default).")
- set.IntVar(&env.httpRetryNumber, prefix+"http_retry_nb", defaultHTTPRetryNumber, "Set the retry number for all HTTP calls in case it fails (and response code != 500). Default value is 3.")
- set.StringVar(&env.olmNamespace, prefix+"olm_namespace", "", "Set the namespace which is used for cluster scope operators. Default is 'openshift-operators'.")
-
- // operator information
- set.StringVar(&env.operatorImageTag, prefix+"operator_image_tag", "", "Operator image full tag")
- set.StringVar(&env.operatorInstallationSource, prefix+"operator_installation_source", installationSourceYaml, "Operator installation source")
- set.StringVar(&env.operatorCatalogImage, prefix+"operator_catalog_image", "", "Operator catalog image")
- set.BoolVar(&env.useProductOperator, prefix+"use_product_operator", false, "Set to true to deploy RHPAM Kogito operator, false for using Kogito operator. Default is false.")
-
- // operator profiling
- set.BoolVar(&env.operatorProfiling, prefix+"operator_profiling_enabled", false, "Enable the profiling of the operator. If enabled, operator will be automatically deployed with yaml files.")
- set.StringVar(&env.operatorProfilingDataAccessYamlURI, prefix+"operator_profiling_data_access_yaml_uri", defaultOperatorProfilingDataAccessYamlURI, "Url or Path to kogito-operator-profiling-data-access.yaml file.")
- set.StringVar(&env.operatorProfilingOutputFileURI, prefix+"operator_profiling_output_file_uri", defaultOperatorProfilingOutputFileURI, "Url or Path where to store the profiling outputs.")
-
- // files/binaries
- set.StringVar(&env.operatorYamlURI, prefix+"operator_yaml_uri", defaultOperatorYamlURI, "Url or Path to kogito-operator.yaml file")
- set.StringVar(&env.rhpamOperatorYamlURI, prefix+"rhpam_operator_yaml_uri", defaultRhpamOperatorYamlURI, "Url or Path to kogito-operator.yaml file")
- set.StringVar(&env.cliPath, prefix+"cli_path", defaultCliPath, "Path to built CLI to test")
-
- // runtime
- addAllPersistenceTypesImageTagFlags(set, &env.servicesImageTags, prefix+"services")
- set.StringVar(&env.servicesImageRegistry, prefix+"services_image_registry", "", "Set the global services image registry")
- set.StringVar(&env.servicesImageNameSuffix, prefix+"services_image_name_suffix", "", "Set the global services image name suffix")
- set.StringVar(&env.servicesImageVersion, prefix+"services_image_version", "", "Set the global services image version")
- set.StringVar(&env.runtimeApplicationImageRegistry, prefix+"runtime_application_image_registry", "", "Set the runtime application (built Kogito application image) image registry")
- set.StringVar(&env.runtimeApplicationImageNamePrefix, prefix+"runtime_application_image_name_prefix", "", "Set the runtime application (built Kogito application image) image name prefix")
- set.StringVar(&env.runtimeApplicationImageNameSuffix, prefix+"runtime_application_image_name_suffix", "", "Set the runtime application (built Kogito application image) image name suffix")
- set.StringVar(&env.runtimeApplicationImageVersion, prefix+"runtime_application_image_version", "", "Set the runtime application (built Kogito application image) image version")
-
- // build
- set.StringVar(&env.customMavenRepoURL, prefix+"custom_maven_repo_url", "", "Set a custom Maven repository url for S2I builds, in case your artifacts are in a specific repository. See https://github.com/kiegroup/kogito-images/README.md for more information")
- set.BoolVar(&env.customMavenRepoReplaceDefault, prefix+"custom_maven_repo_replace_default", false, "If you specified the option 'tests.custom_maven_repo_url' and you want that one to replace the main JBoss repository (useful with snapshots).")
- set.StringVar(&env.mavenMirrorURL, prefix+"maven_mirror_url", "", "Maven mirror url to be used when building app in the tests")
- set.StringVar(&env.quarkusPlatformMavenMirrorURL, prefix+"quarkusPlatformMavenMirrorURL", "", "Maven mirror url to be used when building app from source files with Quarkus, using the quarkus maven plugin.")
- set.BoolVar(&env.mavenIgnoreSelfSignedCertificate, prefix+"maven_ignore_self_signed_certificate", false, "Set to true if maven build need to ignore self-signed certificate. This could happen when using internal maven mirror url.")
- set.StringVar(&env.buildBuilderImageTag, prefix+"build_builder_image_tag", "", "Set the S2I build image full tag")
- set.StringVar(&env.buildRuntimeJVMImageTag, prefix+"build_runtime_jvm_image_tag", "", "Set the Runtime build image full tag")
- set.StringVar(&env.buildRuntimeNativeImageTag, prefix+"build_runtime_native_image_tag", "", "Set the Runtime build image full tag")
- set.BoolVar(&env.disableMavenNativeBuildInContainer, prefix+"disable_maven_native_build_container", false, "By default, Maven native builds are done in container (via container engine). Possibility to disable it.")
- set.StringVar(&env.nativeBuilderImage, prefix+"native_builder_image", "", "Force the native builder image.")
-
- // examples repository
- set.StringVar(&env.examplesRepositoryURI, prefix+"examples_uri", defaultKogitoExamplesURI, "Set the URI for the kogito-examples repository")
- set.StringVar(&env.examplesRepositoryRef, prefix+"examples_ref", "", "Set the branch for the kogito-examples repository")
- set.BoolVar(&env.examplesRepositoryIgnoreSSL, prefix+"examples_ignore_ssl", false, "Set to true to ignore SSL check when checking out examples repository")
-
- // Infinispan
- set.StringVar(&env.infinispanInstallationSource, prefix+"infinispan_installation_source", installationSourceOlm, "Infinispan operator installation source")
- set.StringVar(&env.infinispanStorageClass, prefix+"infinispan_storage_class", "", "Defines storage class for Infinispan PVC to be used.")
-
- // Hyperfoil
- set.StringVar(&env.hyperfoilOutputDirectory, prefix+"hyperfoil_output_directory", "..", "Defines output directory to store Hyperfoil run statistics. Default is Kogito operator base folder.")
- set.StringVar(&env.hyperfoilControllerImageVersion, prefix+"hyperfoil_controller_image_version", "", "Set the Hyperfoil controller image version")
-
- // dev options
- set.BoolVar(&env.showScenarios, prefix+"show_scenarios", false, "Show all scenarios which will be executed.")
- set.BoolVar(&env.showSteps, prefix+"show_steps", false, "Show all scenarios and their steps which will be executed.")
- set.BoolVar(&env.dryRun, prefix+"dry_run", false, "Dry Run the tests.")
- set.BoolVar(&env.keepNamespace, prefix+"keep_namespace", false, "Do not delete namespace(s) after scenario run (WARNING: can be resources consuming ...)")
- set.StringVar(&env.namespaceName, developmentOptionsPrefix+"namespace_name", "", "Use the specified namespace for scenarios, don't generate random namespace.")
- set.BoolVar(&env.localCluster, developmentOptionsPrefix+"local_cluster", false, "If tests are launch using a local cluster")
-}
-
-func addAllPersistenceTypesImageTagFlags(set *flag.FlagSet, imageTags *imageTags, keyPrefix string) {
- for imageType, persistenceTypes := range imageTypePersistenceMapping {
- for _, persistenceType := range persistenceTypes {
- addPersistenceTypeImageTagFlags(set, imageTags, imageType, persistenceType, keyPrefix)
- }
- }
-}
-
-func addPersistenceTypeImageTagFlags(set *flag.FlagSet, imageTags *imageTags, imageType ImageType, persistenceType ImagePersistenceType, keyPrefix string) {
- key := fmt.Sprintf("%s_%s", keyPrefix, imageType)
- description := fmt.Sprintf("Set the %s image tag", imageType)
- if len(persistenceType) > 0 {
- key = fmt.Sprintf("%s_%s", key, persistenceType)
- description = fmt.Sprintf("%s with %s persistence type. This overrides the `services_image_*` parameters.", description, persistenceType)
- }
- key = fmt.Sprintf("%s_image_tag", key)
-
- set.StringVar(imageTags.GetImageTagPointerFromPersistenceType(imageType, persistenceType), key, "", description)
-}
-
-// tests configuration
-
-// IsSmokeTests return whether smoke tests should be executed
-func IsSmokeTests() bool {
- return env.smoke
-}
-
-// IsPerformanceTests return whether performance tests should be executed
-func IsPerformanceTests() bool {
- return env.performance
-}
-
-// GetLoadFactor return the load factor of the cluster
-func GetLoadFactor() int {
- return env.loadFactor
-}
-
-// IsLocalTests return whether tests are executed in local
-func IsLocalTests() bool {
- return env.localTests
-}
-
-// GetCiName return the CI name that executes the tests, if any
-func GetCiName() string {
- return env.ciName
-}
-
-// IsCrDeploymentOnly returns whether the deployment should be done only with CR
-func IsCrDeploymentOnly() bool {
- return env.crDeploymentOnly
-}
-
-// GetContainerEngine returns engine used to interact with images and local containers
-func GetContainerEngine() string {
- return env.containerEngine
-}
-
-// GetDomainSuffix returns the domain suffix for exposed services
-func GetDomainSuffix() string {
- return env.domainSuffix
-}
-
-// GetImageCacheMode returns image cache mode
-func GetImageCacheMode() ImageCacheMode {
- return ImageCacheMode(env.imageCacheMode)
-}
-
-// GetHTTPRetryNumber return the number of retries to be applied for http calls
-func GetHTTPRetryNumber() int {
- return env.httpRetryNumber
-}
-
-// GetOlmNamespace returns namespace which is used for cluster scope operators
-func GetOlmNamespace() string {
- return env.olmNamespace
-}
-
-// operator information
-
-// GetOperatorImageTag return the image tag for the operator
-func GetOperatorImageTag() string {
- return env.operatorImageTag
-}
-
-// IsOperatorInstalledByOlm return true if Kogito operator is installed using OLM
-func IsOperatorInstalledByOlm() bool {
- return env.operatorInstallationSource == installationSourceOlm
-}
-
-// IsOperatorInstalledByYaml return true if Kogito operator is installed using YAML files
-func IsOperatorInstalledByYaml() bool {
- return env.operatorInstallationSource == installationSourceYaml
-}
-
-// GetOperatorCatalogImage return the image tag for the Kogito operator catalog
-func GetOperatorCatalogImage() string {
- return env.operatorCatalogImage
-}
-
-// UseProductOperator return true if RHPAM Kogito operator should be used, false for Kogito operator
-func UseProductOperator() bool {
- return env.useProductOperator
-}
-
-// operator profiling
-
-// IsOperatorProfiling returns whether the operator profiling is activated
-func IsOperatorProfiling() bool {
- return env.operatorProfiling
-}
-
-// GetOperatorProfilingDataAccessYamlURI return the uri for kogito-operator-profiling-data-access.yaml file
-func GetOperatorProfilingDataAccessYamlURI() string {
- return env.operatorProfilingDataAccessYamlURI
-}
-
-// GetOperatorProfilingOutputFileURI return the uri for the profiling data output file
-func GetOperatorProfilingOutputFileURI() string {
- return env.operatorProfilingOutputFileURI
-}
-
-// files/binaries
-
-// GetOperatorYamlURI return the uri for kogito-operator.yaml file
-func GetOperatorYamlURI() string {
- return env.operatorYamlURI
-}
-
-// GetRhpamOperatorYamlURI return the uri for rhpam-kogito-operator.yaml file
-func GetRhpamOperatorYamlURI() string {
- return env.rhpamOperatorYamlURI
-}
-
-// GetOperatorCliPath return the path to the kogito CLI binary
-func GetOperatorCliPath() (string, error) {
- return filepath.Abs(env.cliPath)
-}
-
-// runtime
-
-// GetServiceImageTag returns the image tag based on the image type and the persistence type
-func GetServiceImageTag(ImageType ImageType, persistenceType ImagePersistenceType) string {
- return *env.servicesImageTags.GetImageTagPointerFromPersistenceType(ImageType, persistenceType)
-}
-
-// GetServicesImageRegistry return the registry for the services images
-func GetServicesImageRegistry() string {
- return env.servicesImageRegistry
-}
-
-// GetServicesImageNameSuffix return the name suffix for the services images
-func GetServicesImageNameSuffix() string {
- return env.servicesImageNameSuffix
-}
-
-// GetServicesImageVersion return the version for the services images
-func GetServicesImageVersion() string {
- return env.servicesImageVersion
-}
-
-// GetRuntimeApplicationImageRegistry return the registry for the runtime application images
-func GetRuntimeApplicationImageRegistry() string {
- return env.runtimeApplicationImageRegistry
-}
-
-// GetRuntimeApplicationImageNamePrefix return the name prefix for runtime application images
-func GetRuntimeApplicationImageNamePrefix() string {
- return env.runtimeApplicationImageNamePrefix
-}
-
-// GetRuntimeApplicationImageNameSuffix return the name suffix for runtime application images
-func GetRuntimeApplicationImageNameSuffix() string {
- return env.runtimeApplicationImageNameSuffix
-}
-
-// GetRuntimeApplicationImageVersion return the version for runtime application images
-func GetRuntimeApplicationImageVersion() string {
- return env.runtimeApplicationImageVersion
-}
-
-// build
-
-// GetCustomMavenRepoURL return the custom maven repository url used by S2I builds
-func GetCustomMavenRepoURL() string {
- return env.customMavenRepoURL
-}
-
-// IsCustomMavenRepoReplaceDefault return whether custom maven repo should replace the default JBoss repository
-func IsCustomMavenRepoReplaceDefault() bool {
- return env.customMavenRepoReplaceDefault
-}
-
-// GetMavenMirrorURL return the maven mirror url used for building applications
-func GetMavenMirrorURL() string {
- return env.mavenMirrorURL
-}
-
-// GetQuarkusPlatformMavenMirrorURL return the maven mirror url used for building applications from assets with quarkus platform
-func GetQuarkusPlatformMavenMirrorURL() string {
- return env.quarkusPlatformMavenMirrorURL
-}
-
-// IsMavenIgnoreSelfSignedCertificate return whether self-signed certficate should be ignored
-func IsMavenIgnoreSelfSignedCertificate() bool {
- return env.mavenIgnoreSelfSignedCertificate
-}
-
-// GetBuildBuilderImageStreamTag return the tag for the builder image
-func GetBuildBuilderImageStreamTag() string {
- return env.buildBuilderImageTag
-}
-
-// GetBuildRuntimeJVMImageStreamTag return the tag for the runtime JVM image
-func GetBuildRuntimeJVMImageStreamTag() string {
- return env.buildRuntimeJVMImageTag
-}
-
-// GetBuildRuntimeNativeImageStreamTag return the tag for the runtime native image
-func GetBuildRuntimeNativeImageStreamTag() string {
- return env.buildRuntimeNativeImageTag
-}
-
-// IsDisableMavenNativeBuildInContainer return whether Maven native build in container should be disabled
-func IsDisableMavenNativeBuildInContainer() bool {
- return env.disableMavenNativeBuildInContainer
-}
-
-// GetNativeBuilderImage return the native builder image for Maven native builds
-func GetNativeBuilderImage() string {
- return env.nativeBuilderImage
-}
-
-// examples repository
-
-// GetExamplesRepositoryURI return the uri for the examples repository
-func GetExamplesRepositoryURI() string {
- return env.examplesRepositoryURI
-}
-
-// GetExamplesRepositoryRef return the branch for the examples repository
-func GetExamplesRepositoryRef() string {
- return env.examplesRepositoryRef
-}
-
-// IsExamplesRepositoryIgnoreSSL return whether SSL should be ignored on Git checkout
-func IsExamplesRepositoryIgnoreSSL() bool {
- return env.examplesRepositoryIgnoreSSL
-}
-
-// Infinispan
-
-// IsInfinispanInstalledByOlm return true if Infinispan operator is installed using OLM
-func IsInfinispanInstalledByOlm() bool {
- return env.infinispanInstallationSource == installationSourceOlm
-}
-
-// IsInfinispanInstalledByYaml return true if Infinispan operator is installed using YAML files
-func IsInfinispanInstalledByYaml() bool {
- return env.infinispanInstallationSource == installationSourceYaml
-}
-
-// GetInfinispanStorageClass return the Infinispan storage class
-func GetInfinispanStorageClass() string {
- return env.infinispanStorageClass
-}
-
-// Hyperfoil
-
-// GetHyperfoilOutputDirectory returns directory to store Hyperfoil run results
-func GetHyperfoilOutputDirectory() string {
- return env.hyperfoilOutputDirectory
-}
-
-// GetHyperfoilControllerImageVersion returns the Hyperfoil controller image version
-func GetHyperfoilControllerImageVersion() string {
- return env.hyperfoilControllerImageVersion
-}
-
-// dev options
-
-// IsShowScenarios return whether we should display scenarios
-func IsShowScenarios() bool {
- return env.showScenarios
-}
-
-// IsShowSteps return whether we should display scenarios's steps
-func IsShowSteps() bool {
- return env.showSteps
-}
-
-// IsDryRun return whether we should do a dry run
-func IsDryRun() bool {
- return env.dryRun
-}
-
-// IsKeepNamespace return whether we should keep namespace after scenario run
-func IsKeepNamespace() bool {
- return env.keepNamespace
-}
-
-// GetNamespaceName return namespace name if it was defined
-func GetNamespaceName() string {
- return env.namespaceName
-}
-
-// IsLocalCluster return whether tests are executed using a local cluster
-func IsLocalCluster() bool {
- return env.localCluster
-}
diff --git a/bddframework/pkg/config/image_cache_mode.go b/bddframework/pkg/config/image_cache_mode.go
deleted file mode 100644
index 3b127839..00000000
--- a/bddframework/pkg/config/image_cache_mode.go
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package config
-
-// ImageCacheMode defines whether image cache should be used for runtime image or images should be rather built manually.
-type ImageCacheMode string
-
-var (
- // UseImageCacheAlways Always use image cache
- UseImageCacheAlways = ImageCacheMode("always")
- // UseImageCacheNever don't use image cache, build always manually
- UseImageCacheNever = ImageCacheMode("never")
- // UseImageCacheIfAvailable use image cache if image is available there, otherwise build locally
- UseImageCacheIfAvailable = ImageCacheMode("if-available")
-)
-
-// IsValid returns true if image cache mode value is one of valid expected modes
-func (imageCacheMode ImageCacheMode) IsValid() bool {
- switch imageCacheMode {
- case UseImageCacheAlways, UseImageCacheNever, UseImageCacheIfAvailable:
- return true
- }
- return false
-}
diff --git a/bddframework/pkg/config/image_tags.go b/bddframework/pkg/config/image_tags.go
deleted file mode 100644
index 8712b9e3..00000000
--- a/bddframework/pkg/config/image_tags.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package config
-
-// ImageType represents the image base image name
-type ImageType string
-
-const (
- // DataIndexImageType ...
- DataIndexImageType ImageType = "data-index"
- // ExplainabilityImageType ...
- ExplainabilityImageType ImageType = "explainability"
- // JobServiceImageType ...
- JobServiceImageType ImageType = "jobs-service"
- // ManagementConsoleImageType ...
- ManagementConsoleImageType ImageType = "mgmt-console"
- // TaskConsoleImageType ...
- TaskConsoleImageType ImageType = "task-console"
- // TrustyImageType ...
- TrustyImageType ImageType = "trusty"
- // TrustyUIImageType ...
- TrustyUIImageType ImageType = "trusty-ui"
-)
-
-// ImagePersistenceType represents the persistence type for the base image
-type ImagePersistenceType string
-
-const (
- // EphemeralPersistenceType ...
- EphemeralPersistenceType ImagePersistenceType = "ephemeral"
- // InfinispanPersistenceType ...
- InfinispanPersistenceType ImagePersistenceType = "infinispan"
- // MongoDBPersistenceType ...
- MongoDBPersistenceType ImagePersistenceType = "mongodb"
- // PosgresqlPersistenceType ...
- PosgresqlPersistenceType ImagePersistenceType = "posgresql"
- // RedisPersistenceType ...
- RedisPersistenceType ImagePersistenceType = "redis"
-)
-
-var (
- imageTypePersistenceMapping map[ImageType][]ImagePersistenceType = map[ImageType][]ImagePersistenceType{
- DataIndexImageType: {EphemeralPersistenceType, InfinispanPersistenceType, MongoDBPersistenceType, PosgresqlPersistenceType},
- ExplainabilityImageType: {EphemeralPersistenceType},
- JobServiceImageType: {EphemeralPersistenceType, InfinispanPersistenceType, MongoDBPersistenceType, PosgresqlPersistenceType},
- ManagementConsoleImageType: {EphemeralPersistenceType},
- TaskConsoleImageType: {EphemeralPersistenceType},
- TrustyImageType: {InfinispanPersistenceType, RedisPersistenceType},
- TrustyUIImageType: {EphemeralPersistenceType},
- }
-)
-
-type imageTags struct {
- tags map[ImageType]map[ImagePersistenceType]*string
-}
-
-func (imgTags *imageTags) GetImageTagPointerFromPersistenceType(imageType ImageType, persistenceType ImagePersistenceType) *string {
- if len(imgTags.tags) <= 0 {
- imgTags.tags = make(map[ImageType]map[ImagePersistenceType]*string)
- }
- if len(imgTags.tags[imageType]) <= 0 {
- imgTags.tags[imageType] = make(map[ImagePersistenceType]*string)
- }
- if imgTags.tags[imageType][persistenceType] == nil {
- tag := ""
- imgTags.tags[imageType][persistenceType] = &tag
- }
-
- return imgTags.tags[imageType][persistenceType]
-}
diff --git a/bddframework/pkg/framework/check_setup.go b/bddframework/pkg/framework/check_setup.go
deleted file mode 100644
index 365d2d70..00000000
--- a/bddframework/pkg/framework/check_setup.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "fmt"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/config"
-)
-
-var verifications = []func() error{
- checkKubernetesAndDomainSuffix,
- checkImageCacheMode,
-}
-
-// CheckSetup verifies the configuration is correct
-func CheckSetup() error {
- for _, verification := range verifications {
- if err := verification(); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func checkKubernetesAndDomainSuffix() error {
- if !IsOpenshift() && !config.IsLocalCluster() && len(config.GetDomainSuffix()) <= 0 {
- return fmt.Errorf("The 'domain_suffix' argument is required using Kubernetes cluster")
- }
-
- return nil
-}
-
-func checkImageCacheMode() error {
- imageCacheMode := config.GetImageCacheMode()
- if imageCacheMode.IsValid() {
- return nil
- }
- return (fmt.Errorf("Invalid image cache mode: %s", imageCacheMode))
-}
diff --git a/bddframework/pkg/framework/cli.go b/bddframework/pkg/framework/cli.go
deleted file mode 100644
index 68c512c1..00000000
--- a/bddframework/pkg/framework/cli.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "os"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/config"
-)
-
-// CheckCliBinaryExist checks if the CLI binary does exist
-func CheckCliBinaryExist() (bool, error) {
- path, err := config.GetOperatorCliPath()
- if err != nil {
- return false, err
- }
-
- if _, err := os.Stat(path); err != nil {
- if os.IsNotExist(err) {
- return false, nil
- }
- return false, err
- }
- return true, nil
-}
-
-// ExecuteCliCommand executes a kogito cli command for a given namespace
-func ExecuteCliCommand(namespace string, args ...string) (string, error) {
- path, err := config.GetOperatorCliPath()
- if err != nil {
- return "", err
- }
-
- return CreateCommand(path, args...).WithLoggerContext(namespace).Execute()
-}
-
-// ExecuteCliCommandInNamespace executes a kogito cli command in a specific namespace
-func ExecuteCliCommandInNamespace(namespace string, args ...string) (string, error) {
- args = append(args, "-p", namespace)
- return ExecuteCliCommand(namespace, args...)
-}
diff --git a/bddframework/pkg/framework/client/client.go b/bddframework/pkg/framework/client/client.go
deleted file mode 100644
index 0ca496ff..00000000
--- a/bddframework/pkg/framework/client/client.go
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package client
-
-import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
-
- rbac "k8s.io/api/rbac/v1"
- "k8s.io/apimachinery/pkg/runtime"
- controllerruntime "sigs.k8s.io/controller-runtime"
- logger "sigs.k8s.io/controller-runtime/pkg/log"
-
- frameworklogger "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/logger"
-
- appsv1 "github.com/openshift/client-go/apps/clientset/versioned/typed/apps/v1"
- corev1 "k8s.io/api/core/v1"
- apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
- apimeta "k8s.io/apimachinery/pkg/api/meta"
- "k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/client-go/discovery"
- "k8s.io/client-go/kubernetes"
- restclient "k8s.io/client-go/rest"
- "k8s.io/client-go/tools/clientcmd"
- "sigs.k8s.io/controller-runtime/pkg/client"
- controllercliconfig "sigs.k8s.io/controller-runtime/pkg/client/config"
-
- buildv1 "github.com/openshift/client-go/build/clientset/versioned/typed/build/v1"
- imagev1 "github.com/openshift/client-go/image/clientset/versioned/typed/image/v1"
-)
-
-var (
- log = frameworklogger.Logger{Logger: logger.Log.WithName("client_api")}
-)
-
-const (
- // OpenShiftGroupName name included in OpenShift APIs
- OpenShiftGroupName = "openshift.io"
-)
-
-// Client wraps clients functions from controller-runtime, Kube and OpenShift cli for generic API calls to the cluster
-type Client struct {
- // ControlCli is a reference for the controller-runtime client, normally built by a Manager inside the controller context.
- ControlCli client.Client
- BuildCli buildv1.BuildV1Interface
- ImageCli imagev1.ImageV1Interface
- Discovery discovery.DiscoveryInterface
- DeploymentCli appsv1.AppsV1Interface
- KubernetesExtensionCli kubernetes.Interface
-}
-
-// NewForConsole will create a brand new client using the local machine
-func NewForConsole(scheme *runtime.Scheme) *Client {
- client, err := NewClientBuilder(scheme).WithBuildClient().WithDiscoveryClient().Build()
- if err != nil {
- panic(err)
- }
- return client
-}
-
-// NewForController creates a new client based on the rest config and the controller client created by Operator SDK
-// Panic if something goes wrong
-func NewForController(manager controllerruntime.Manager) *Client {
- newClient, err := NewClientBuilder(manager.GetScheme()).
- WithAllClients().
- UseConfig(manager.GetConfig()).
- UseControllerClient(manager.GetClient()).
- Build()
- if err != nil {
- panic(err)
- }
- return newClient
-}
-
-// IsOpenshift detects if the application is running on OpenShift or not
-func (c *Client) IsOpenshift() bool {
- return c.HasServerGroup(OpenShiftGroupName)
-}
-
-// HasServerGroup detects if the given api group is supported by the server
-func (c *Client) HasServerGroup(groupName string) bool {
- if c.Discovery != nil {
- groups, err := c.Discovery.ServerGroups()
- if err != nil {
- log.Warn("Impossible to get server groups using discovery API", "error", err)
- return false
- }
- for _, group := range groups.Groups {
- if strings.Contains(group.Name, groupName) {
- return true
- }
- }
- return false
- }
- log.Warn("Tried to discover the platform, but no discovery API is available")
- return false
-}
-
-func newKubeClient(config *restclient.Config, scheme *runtime.Scheme, useDynamicRestMapper bool) (client.Client, error) {
- log.Debug("Creating a new core client for kube connection")
- var options client.Options
- if useDynamicRestMapper {
- options = newControllerCliOptionsWithDynamicMapper(scheme)
- } else {
- options = newControllerCliOptions(scheme)
- }
- controlCli, err := client.New(config, options)
- if err != nil {
- return nil, err
- }
- return controlCli, nil
-}
-
-func buildKubeConnectionConfig() (*restclient.Config, error) {
- return controllercliconfig.GetConfig()
-}
-
-// GetKubeConfigFile gets the .kubeconfig file.
-// Never returns an empty string, fallback to default path if not present in the known locations
-func GetKubeConfigFile() string {
- filename := clientcmd.NewDefaultPathOptions().GetDefaultFilename()
- // make sure the path to the file exists
- if _, err := os.Stat(filename); os.IsNotExist(err) {
- dirName := filepath.Dir(filename)
- if err := os.MkdirAll(dirName, os.ModePerm); err != nil {
- panic(fmt.Errorf("Error while trying to create kube config directories %s: %s ", filename, err))
- }
- } else if err != nil {
- panic(fmt.Errorf("Error while trying to access the kube config file %s: %s ", filename, err))
- }
- if file, err := os.OpenFile(filename, os.O_RDONLY|os.O_CREATE, 0600); err != nil {
- panic(fmt.Errorf("Error while trying to access the kube config file %s: %s ", filename, err))
- } else {
- defer func() {
- if file != nil {
- if err := file.Close(); err != nil {
- panic(fmt.Errorf("Error closing kube config file %s: %s ", filename, err))
- }
- }
- }()
- if fileInfo, err := file.Stat(); err != nil {
- panic(fmt.Errorf("Error while trying to access the kube config file %s: %s ", filename, err))
- } else if fileInfo.Size() == 0 {
- log.Warn("Kubernetes local configuration is empty.", "filename", filename)
- log.Warn("Make sure to login to your cluster with oc/kubectl before using this tool")
- }
- }
-
- return filename
-}
-
-// restScope implementation
-type restScope struct {
- name apimeta.RESTScopeName
-}
-
-func (r *restScope) Name() apimeta.RESTScopeName {
- return r.name
-}
-
-// newControllerCliOptions creates the mapper and schema options for the inner fallback cli. If set to defaults, the Controller Cli will try
-// to discover the mapper by itself by querying the API, which can take too much time. Here we're setting this mapper manually.
-// So it's need to keep adding them or find some kind of auto register in the kube api/apimachinery
-func newControllerCliOptions(scheme *runtime.Scheme) client.Options {
- options := client.Options{}
- gvks, err := getGVKsFromAddToScheme(scheme)
- if err != nil {
- log.Error(err, "Error while creating SchemeBuilder for Kubernetes client")
- panic(err)
- }
- mapper := apimeta.NewDefaultRESTMapper([]schema.GroupVersion{})
- for _, gvk := range gvks {
- // namespaced resources
- if (gvk.GroupVersion() == corev1.SchemeGroupVersion && gvk.Kind == "Namespace") ||
- (gvk.GroupVersion() == apiextensionsv1.SchemeGroupVersion && gvk.Kind == "CustomResourceDefinition") ||
- (gvk.GroupVersion() == rbac.SchemeGroupVersion && gvk.Kind == "ClusterRole") ||
- (gvk.GroupVersion() == rbac.SchemeGroupVersion && gvk.Kind == "ClusterRoleBinding") {
- mapper.Add(gvk, &restScope{name: apimeta.RESTScopeNameRoot})
- } else { // everything else
- mapper.Add(gvk, &restScope{name: apimeta.RESTScopeNameNamespace})
- }
- }
- options.Scheme = scheme
- options.Mapper = mapper
- return options
-}
-
-func newControllerCliOptionsWithDynamicMapper(scheme *runtime.Scheme) client.Options {
- return client.Options{
- Scheme: scheme,
- }
-}
-
-// getGVKsFromAddToScheme takes in the runtime scheme and filters out all generic apimachinery meta types.
-// It returns just the GVK specific to this scheme.
-func getGVKsFromAddToScheme(s *runtime.Scheme) ([]schema.GroupVersionKind, error) {
- schemeAllKnownTypes := s.AllKnownTypes()
- var ownGVKs []schema.GroupVersionKind
- for gvk := range schemeAllKnownTypes {
- if !isKubeMetaKind(gvk.Kind) {
- ownGVKs = append(ownGVKs, gvk)
- }
- }
-
- return ownGVKs, nil
-}
-
-func isKubeMetaKind(kind string) bool {
- if strings.HasSuffix(kind, "List") ||
- kind == "PatchOptions" ||
- kind == "GetOptions" ||
- kind == "DeleteOptions" ||
- kind == "ExportOptions" ||
- kind == "APIVersions" ||
- kind == "APIGroupList" ||
- kind == "APIResourceList" ||
- kind == "UpdateOptions" ||
- kind == "CreateOptions" ||
- kind == "Status" ||
- kind == "WatchEvent" ||
- kind == "ListOptions" ||
- kind == "APIGroup" {
- return true
- }
-
- return false
-}
diff --git a/bddframework/pkg/framework/client/client_builder.go b/bddframework/pkg/framework/client/client_builder.go
deleted file mode 100644
index 95093b38..00000000
--- a/bddframework/pkg/framework/client/client_builder.go
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package client
-
-import (
- "fmt"
-
- "k8s.io/apimachinery/pkg/runtime"
-
- appsv1 "github.com/openshift/client-go/apps/clientset/versioned/typed/apps/v1"
- buildv1 "github.com/openshift/client-go/build/clientset/versioned/typed/build/v1"
- imagev1 "github.com/openshift/client-go/image/clientset/versioned/typed/image/v1"
- "k8s.io/client-go/discovery"
- "k8s.io/client-go/kubernetes"
- restclient "k8s.io/client-go/rest"
- "sigs.k8s.io/controller-runtime/pkg/client"
-)
-
-// NewClientBuilder creates a builder to setup the client
-func NewClientBuilder(scheme *runtime.Scheme) Builder {
- return &builderStruct{
- scheme: scheme,
- }
-}
-
-// Builder wraps information about what to create for a client before building it
-type Builder interface {
- // UseConfig sets the restconfig to use for the different CLIs
- UseConfig(kubeconfig *restclient.Config) Builder
- // UseControllerClient sets a specific controllerclient
- UseControllerClient(controllerClient client.Client) Builder
- // UseControllerDynamicMapper will set a dynamic mapper to the constructed controller client. Cannot be used with `UseControllerClient`
- UseControllerDynamicMapper() Builder
- // WithDiscoveryClient tells the builder to create the discovery client
- WithDiscoveryClient() Builder
- // WithBuildClient tells the builder to create the build client
- WithBuildClient() Builder
- // WithImageClient tells the builder to create the image client
- WithImageClient() Builder
- // WithDeploymentClient tells the builder to create the deployment client
- WithDeploymentClient() Builder
- // WithKubernetesClient tells the builder to create the kubernetes extension client
- WithKubernetesExtensionClient() Builder
- // WithAllClients is a shortcut to tell the builder to create all clients
- WithAllClients() Builder
- // Build build the final client structure
- Build() (*Client, error)
-}
-
-// Builder wraps information about what to create for a client before building it
-type builderStruct struct {
- config *restclient.Config
- scheme *runtime.Scheme
- controllerCli client.Client
-
- useControllerDynamicMapper bool
-
- isDiscoveryClient bool
- isBuildClient bool
- isImageClient bool
- isDeploymentClient bool
- isKubernetesExtensionClient bool
-}
-
-func (builder *builderStruct) UseConfig(kubeconfig *restclient.Config) Builder {
- builder.config = kubeconfig
- return builder
-}
-
-func (builder *builderStruct) UseControllerClient(controllerClient client.Client) Builder {
- builder.controllerCli = controllerClient
- return builder
-}
-
-func (builder *builderStruct) UseControllerDynamicMapper() Builder {
- builder.useControllerDynamicMapper = true
- return builder
-}
-
-func (builder *builderStruct) WithDiscoveryClient() Builder {
- builder.isDiscoveryClient = true
- return builder
-}
-
-func (builder *builderStruct) WithBuildClient() Builder {
- builder.isBuildClient = true
- return builder
-}
-
-func (builder *builderStruct) WithImageClient() Builder {
- builder.isImageClient = true
- return builder
-}
-
-func (builder *builderStruct) WithDeploymentClient() Builder {
- builder.isDeploymentClient = true
- return builder
-}
-
-func (builder *builderStruct) WithKubernetesExtensionClient() Builder {
- builder.isKubernetesExtensionClient = true
- return builder
-}
-
-func (builder *builderStruct) WithAllClients() Builder {
- builder.WithBuildClient()
- builder.WithDiscoveryClient()
- builder.WithImageClient()
- builder.WithDeploymentClient()
- builder.WithKubernetesExtensionClient()
- return builder
-}
-
-func (builder *builderStruct) Build() (*Client, error) {
- client := &Client{}
-
- var err error
-
- config := builder.config
- if config == nil {
- config, err = buildKubeConnectionConfig()
- if err != nil {
- return nil, fmt.Errorf("Impossible to get Kubernetes local configuration: %v", err)
- }
- }
-
- client.ControlCli = builder.controllerCli
- if client.ControlCli == nil {
-
- scheme := builder.scheme
- if scheme == nil {
- return nil, fmt.Errorf("scheme not provided")
- }
- client.ControlCli, err = newKubeClient(config, scheme, builder.useControllerDynamicMapper)
- if err != nil {
- return nil, fmt.Errorf("Impossible to create new Kubernetes client: %v", err)
- }
- }
-
- if builder.isDiscoveryClient {
- client.Discovery, err = discovery.NewDiscoveryClientForConfig(config)
- if err != nil {
- return nil, fmt.Errorf("Impossible to create new Discovery client: %v", err)
- }
- }
- if builder.isBuildClient {
- client.BuildCli, err = buildv1.NewForConfig(config)
- if err != nil {
- return nil, fmt.Errorf("Error getting build client: %v", err)
- }
- }
- if builder.isImageClient {
- client.ImageCli, err = imagev1.NewForConfig(config)
- if err != nil {
- return nil, fmt.Errorf("Error getting image client: %v", err)
- }
- }
- if builder.isDeploymentClient {
- client.DeploymentCli, err = appsv1.NewForConfig(config)
- if err != nil {
- return nil, fmt.Errorf("Error getting deployment client: %v", err)
- }
- }
- if builder.isKubernetesExtensionClient {
- client.KubernetesExtensionCli, err = kubernetes.NewForConfig(config)
- if err != nil {
- return nil, fmt.Errorf("Error getting kubernetes client: %v", err)
- }
- }
- return client, nil
-}
diff --git a/bddframework/pkg/framework/client/doc.go b/bddframework/pkg/framework/client/doc.go
deleted file mode 100644
index 2d62fcaf..00000000
--- a/bddframework/pkg/framework/client/doc.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package client encapsulates all calls to Kubernetes/OpenShift API into meaningful functions
-package client
diff --git a/bddframework/pkg/framework/client/kubernetes/doc.go b/bddframework/pkg/framework/client/kubernetes/doc.go
deleted file mode 100644
index c21050a3..00000000
--- a/bddframework/pkg/framework/client/kubernetes/doc.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package kubernetes encapsulates all calls to the Kubernetes API into meaningful functions for use by the CLI and controllers
-package kubernetes
diff --git a/bddframework/pkg/framework/client/kubernetes/event.go b/bddframework/pkg/framework/client/kubernetes/event.go
deleted file mode 100644
index 205b0b0e..00000000
--- a/bddframework/pkg/framework/client/kubernetes/event.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "context"
-
- v1beta1 "k8s.io/api/events/v1beta1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-)
-
-// EventInterface has functions that interacts with pod object in the Kubernetes cluster
-type EventInterface interface {
- // Retrieve all events from a namespace
- GetEvents(namespace string) (*v1beta1.EventList, error)
-}
-
-type event struct {
- client *client.Client
-}
-
-func newEvent(c *client.Client) EventInterface {
- return &event{
- client: c,
- }
-}
-
-func (event *event) GetEvents(namespace string) (*v1beta1.EventList, error) {
- opts := metav1.ListOptions{}
- return event.client.KubernetesExtensionCli.EventsV1beta1().Events(namespace).List(context.TODO(), opts)
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/kubernetes.go b/bddframework/pkg/framework/client/kubernetes/kubernetes.go
deleted file mode 100644
index c238ee0a..00000000
--- a/bddframework/pkg/framework/client/kubernetes/kubernetes.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- logger "sigs.k8s.io/controller-runtime/pkg/log"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
- frameworklogger "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/logger"
-)
-
-var log = frameworklogger.Logger{Logger: logger.Log.WithName("kubernetes_client")}
-
-// Namespace will fetch the inner Kubernetes API with a default client
-func Namespace() NamespaceInterface {
- return newNamespace(&client.Client{})
-}
-
-// NamespaceC will use a defined client to fetch the Kubernetes API
-func NamespaceC(c *client.Client) NamespaceInterface {
- return newNamespace(c)
-}
-
-// Resource will fetch the inner API for any Kubernetes resource with a default client
-func Resource() ResourceInterface {
- return newResource(&client.Client{})
-}
-
-// ResourceC will use a defined client to fetch the Kubernetes API
-func ResourceC(c *client.Client) ResourceInterface {
- return newResource(c)
-}
-
-// Pod will fetch the inner API for Kubernetes pod resource with a default client
-func Pod() PodInterface {
- return newPod(&client.Client{})
-}
-
-// PodC will use a defined client to fetch the Kubernetes pod resources
-func PodC(c *client.Client) PodInterface {
- return newPod(c)
-}
-
-// Event will fetch the inner API for Kubernetes event resource with a default client
-func Event() EventInterface {
- return newEvent(&client.Client{})
-}
-
-// EventC will use a defined client to fetch the Kubernetes event resources
-func EventC(c *client.Client) EventInterface {
- return newEvent(c)
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/namespace.go b/bddframework/pkg/framework/client/kubernetes/namespace.go
deleted file mode 100644
index aad20740..00000000
--- a/bddframework/pkg/framework/client/kubernetes/namespace.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "context"
-
- corev1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/api/errors"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/types"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-)
-
-// NamespaceInterface has functions that interacts with namespace object in the Kubernetes cluster
-type NamespaceInterface interface {
- Fetch(name string) (*corev1.Namespace, error)
- Create(name string) (*corev1.Namespace, error)
- CreateIfNotExists(name string) (*corev1.Namespace, error)
-}
-
-type namespace struct {
- client *client.Client
-}
-
-func newNamespace(c *client.Client) *namespace {
- return &namespace{
- client: c,
- }
-}
-
-func (n *namespace) Fetch(name string) (*corev1.Namespace, error) {
- log.Debug("About to fetch namespace from cluster", "namespace", name)
- ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: name}}
- if err := n.client.ControlCli.Get(context.TODO(), types.NamespacedName{Name: name}, ns); err != nil && errors.IsNotFound(err) {
- log.Debug("Not found", "namespace", name)
- return nil, nil
- } else if err != nil {
- return nil, err
- }
- return ns, nil
-}
-
-func (n *namespace) Create(name string) (*corev1.Namespace, error) {
- ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: name}}
- if err := n.client.ControlCli.Create(context.TODO(), ns); err != nil {
- return nil, err
- }
- return ns, nil
-}
-
-func (n *namespace) CreateIfNotExists(name string) (*corev1.Namespace, error) {
- if ns, err := n.Fetch(name); err != nil {
- return nil, err
- } else if ns != nil {
- return ns, nil
- }
- ns, err := n.Create(name)
- if err != nil {
- return nil, err
- }
- return ns, nil
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/namespace_test.go b/bddframework/pkg/framework/client/kubernetes/namespace_test.go
deleted file mode 100644
index 99ab7270..00000000
--- a/bddframework/pkg/framework/client/kubernetes/namespace_test.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "testing"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-
- "github.com/stretchr/testify/assert"
- corev1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "sigs.k8s.io/controller-runtime/pkg/client/fake"
-)
-
-func Test_CreateNamespaceThatDoesNotExist(t *testing.T) {
- cli := fake.NewClientBuilder().Build()
- ns, err := NamespaceC(&client.Client{ControlCli: cli}).CreateIfNotExists("test")
- assert.Nil(t, err)
- assert.NotNil(t, ns)
-}
-
-func Test_FetchNamespaceThatDoesNotExist(t *testing.T) {
- cli := fake.NewClientBuilder().Build()
- ns, err := NamespaceC(&client.Client{ControlCli: cli}).Fetch("test")
- assert.Nil(t, err)
- assert.Nil(t, ns)
-}
-
-func Test_FetchNamespaceThatDExists(t *testing.T) {
- cli := fake.NewClientBuilder().WithRuntimeObjects(&corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "test", CreationTimestamp: metav1.Now()}}).Build()
- ns, err := NamespaceC(&client.Client{ControlCli: cli}).Fetch("test")
- assert.Nil(t, err)
- assert.NotNil(t, ns)
- assert.False(t, ns.CreationTimestamp.IsZero())
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/pod.go b/bddframework/pkg/framework/client/kubernetes/pod.go
deleted file mode 100644
index 2a58b50d..00000000
--- a/bddframework/pkg/framework/client/kubernetes/pod.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "context"
- "io/ioutil"
-
- corev1 "k8s.io/api/core/v1"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-)
-
-// PodInterface has functions that interacts with pod object in the Kubernetes cluster
-type PodInterface interface {
- // Immediately return pod log
- GetLogs(namespace, podName, containerName string) (string, error)
- // Wait until pod is terminated and then return pod log
- GetLogsWithFollow(namespace, podName, containerName string) (string, error)
-}
-
-type pod struct {
- client *client.Client
-}
-
-func newPod(c *client.Client) PodInterface {
- return &pod{
- client: c,
- }
-}
-
-func (pod *pod) GetLogs(namespace, podName, containerName string) (string, error) {
- return pod.getLogs(namespace, podName, containerName, false)
-}
-
-func (pod *pod) GetLogsWithFollow(namespace, podName, containerName string) (string, error) {
- return pod.getLogs(namespace, podName, containerName, true)
-}
-
-func (pod *pod) getLogs(namespace, podName, containerName string, follow bool) (string, error) {
- log.Debug("About to fetch log of pod from cluster", "pod name", podName, "namespace", namespace, "follow", follow)
- podLogOpts := corev1.PodLogOptions{
- Follow: follow,
- Container: containerName,
- }
- req := pod.client.KubernetesExtensionCli.CoreV1().Pods(namespace).GetLogs(podName, &podLogOpts)
- readCloser, err := req.Stream(context.TODO())
- if err != nil {
- return "", err
- }
- bytes, err := ioutil.ReadAll(readCloser)
- if err != nil {
- return "", err
- }
- return string(bytes), nil
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/resource.go b/bddframework/pkg/framework/client/kubernetes/resource.go
deleted file mode 100644
index 3b0fef6a..00000000
--- a/bddframework/pkg/framework/client/kubernetes/resource.go
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "fmt"
- "strings"
-
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/runtime"
- "sigs.k8s.io/controller-runtime/pkg/client"
- "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
-
- kogitocli "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-
- "k8s.io/apimachinery/pkg/util/yaml"
-)
-
-const (
- // Name is the name of the Kogito Operator deployed in a namespace
- KogitoOperatorName = "kogito-operator"
-)
-
-// ResourceInterface has functions that interacts with any resource object in the Kubernetes cluster
-type ResourceInterface interface {
- ResourceReader
- ResourceWriter
- // CreateIfNotExists will fetch for the object resource in the Kubernetes cluster, if not exists, will create it.
- CreateIfNotExists(resource client.Object) (err error)
- // CreateIfNotExistsForOwner sets the controller owner to the given resource and creates if it not exists.
- // If the given resource exists, won't update the object with the given owner.
- CreateIfNotExistsForOwner(resource client.Object, owner metav1.Object, scheme *runtime.Scheme) (err error)
- // CreateForOwner sets the controller owner to the given resource and creates the resource.
- CreateForOwner(resource client.Object, owner metav1.Object, scheme *runtime.Scheme) error
- // CreateFromYamlContent creates Kubernetes resources from a yaml string content
- CreateFromYamlContent(yamlContent, namespace string, resourceRef client.Object, beforeCreate func(object interface{})) error
-}
-
-type resource struct {
- ResourceReader
- ResourceWriter
-}
-
-func newResource(c *kogitocli.Client) *resource {
- return &resource{
- ResourceReader: ResourceReaderC(c),
- ResourceWriter: ResourceWriterC(c),
- }
-}
-
-func (r *resource) CreateIfNotExists(resource client.Object) error {
- log.Info("Create resource if not exists", "kind", resource.GetObjectKind().GroupVersionKind().Kind, "name", resource.GetName(), "namespace", resource.GetNamespace())
-
- if exists, err := r.ResourceReader.Fetch(resource); err == nil && !exists {
- return r.ResourceWriter.Create(resource)
- } else if err != nil {
- log.Error(err, "Failed to fetch object. ")
- return err
- }
- log.Info("Skip creating - object already exists")
- return nil
-}
-
-func (r *resource) CreateIfNotExistsForOwner(resource client.Object, owner metav1.Object, scheme *runtime.Scheme) error {
- err := controllerutil.SetControllerReference(owner, resource, scheme)
- if err != nil {
- return err
- }
- return r.CreateIfNotExists(resource)
-}
-
-func (r *resource) CreateForOwner(resource client.Object, owner metav1.Object, scheme *runtime.Scheme) error {
- err := controllerutil.SetControllerReference(owner, resource, scheme)
- if err != nil {
- return err
- }
- return r.ResourceWriter.Create(resource)
-}
-
-func (r *resource) CreateFromYamlContent(yamlFileContent, namespace string, resourceRef client.Object, beforeCreate func(object interface{})) error {
- docs := strings.Split(yamlFileContent, "---")
- for _, doc := range docs {
- if len(doc) <= 0 {
- log.Debug("Empty content ... Skipping it")
- continue
- }
-
- log.Debug("Create from yaml content", "content", doc)
- if err := yaml.NewYAMLOrJSONDecoder(strings.NewReader(doc), len([]byte(doc))).Decode(resourceRef); err != nil {
- return fmt.Errorf("Error while unmarshalling file: %v ", err)
- }
-
- if len(resourceRef.GetObjectKind().GroupVersionKind().Kind) <= 0 {
- log.Error(fmt.Errorf("Error while unmarshalling yaml content"), "Cannot parse yaml content into resources... Skipping it", "content", doc)
- continue
- }
-
- if namespace != "" {
- resourceRef.SetNamespace(namespace)
- }
- resourceRef.SetResourceVersion("")
- resourceRef.SetLabels(map[string]string{"app": KogitoOperatorName})
-
- log.Debug("Will create a new resource", "kind", resourceRef.GetObjectKind().GroupVersionKind().Kind, "name", resourceRef.GetName(), "namespace", resourceRef.GetNamespace())
- if beforeCreate != nil {
- beforeCreate(resourceRef)
- }
- if err := r.CreateIfNotExists(resourceRef); err != nil {
- return fmt.Errorf("Error creating object %s: %v ", resourceRef.GetName(), err)
- }
- }
- return nil
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/resource_reader.go b/bddframework/pkg/framework/client/kubernetes/resource_reader.go
deleted file mode 100644
index 92609dba..00000000
--- a/bddframework/pkg/framework/client/kubernetes/resource_reader.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "context"
- "reflect"
-
- "github.com/RHsyseng/operator-utils/pkg/resource/read"
- "k8s.io/apimachinery/pkg/api/errors"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/types"
- "sigs.k8s.io/controller-runtime/pkg/client"
-
- kogitocli "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-)
-
-// ResourceReader interface to read kubernetes object
-type ResourceReader interface {
- // FetchWithKey fetches and binds a resource from the Kubernetes cluster with the defined key. If not exists, returns false.
- FetchWithKey(key types.NamespacedName, resource client.Object) (exists bool, err error)
- // Fetch fetches and binds a resource with given name and namespace from the Kubernetes cluster. If not exists, returns false.
- Fetch(resource client.Object) (exists bool, err error)
- // ListWithNamespace fetches and binds a list resource from the Kubernetes cluster with the defined namespace.
- ListWithNamespace(namespace string, list client.ObjectList) error
- // ListWithNamespaceAndLabel same as ListWithNamespace, but also limit the query scope by the given labels
- ListWithNamespaceAndLabel(namespace string, list client.ObjectList, labels map[string]string) error
- // ListAll returns a map of Kubernetes resources organized by type, based on provided List objects
- ListAll(objectTypes []client.ObjectList, namespace string, ownerObject metav1.Object) (map[reflect.Type][]client.Object, error)
-}
-
-// ResourceReaderC provide ResourceReader reference
-func ResourceReaderC(cli *kogitocli.Client) ResourceReader {
- return &resourceReader{
- client: cli,
- }
-}
-
-type resourceReader struct {
- client *kogitocli.Client
-}
-
-func (r *resourceReader) Fetch(resource client.Object) (bool, error) {
- return r.FetchWithKey(types.NamespacedName{Name: resource.GetName(), Namespace: resource.GetNamespace()}, resource)
-}
-
-func (r *resourceReader) FetchWithKey(key types.NamespacedName, resource client.Object) (bool, error) {
- log.Debug("About to fetch object", "name", key.Name, "namespace", key.Namespace)
- err := r.client.ControlCli.Get(context.TODO(), key, resource)
- if err != nil && errors.IsNotFound(err) {
- return false, nil
- } else if err != nil {
- return false, err
- }
- log.Debug("Found object", "kind", resource.GetObjectKind().GroupVersionKind().Kind, "name", key.Name, "namespace", key.Namespace, "Creation time", resource.GetCreationTimestamp())
- return true, nil
-}
-
-func (r *resourceReader) ListWithNamespace(namespace string, list client.ObjectList) error {
- err := r.client.ControlCli.List(context.TODO(), list, client.InNamespace(namespace))
- if err != nil {
- log.Error(err, "Failed to list resource.")
- return err
- }
- return nil
-}
-
-func (r *resourceReader) ListWithNamespaceAndLabel(namespace string, list client.ObjectList, labels map[string]string) error {
- err := r.client.ControlCli.List(context.TODO(), list, client.InNamespace(namespace), client.MatchingLabels(labels))
- if err != nil {
- log.Error(err, "Failed to list resource. ")
- return err
- }
- return nil
-}
-
-func (r *resourceReader) ListAll(objectTypes []client.ObjectList, namespace string, ownerObject metav1.Object) (map[reflect.Type][]client.Object, error) {
- reader := read.New(r.client.ControlCli).WithNamespace(namespace).WithOwnerObject(ownerObject)
- return reader.ListAll(objectTypes...)
-}
diff --git a/bddframework/pkg/framework/client/kubernetes/resource_writer.go b/bddframework/pkg/framework/client/kubernetes/resource_writer.go
deleted file mode 100644
index e6202b1d..00000000
--- a/bddframework/pkg/framework/client/kubernetes/resource_writer.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package kubernetes
-
-import (
- "context"
-
- "github.com/RHsyseng/operator-utils/pkg/resource/write"
- "sigs.k8s.io/controller-runtime/pkg/client"
-
- kogitocli "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client"
-)
-
-// ResourceWriter interface to write kubernetes object
-type ResourceWriter interface {
- // Create creates a new Kubernetes object in the cluster.
- // Note that no checks will be performed in the cluster. If you're not sure, use CreateIfNotExists.
- Create(resource client.Object) error
- // Delete delete the given object
- Delete(resource client.Object) error
- // Update the given object
- Update(resource client.Object) error
- // UpdateStatus update the given object status
- UpdateStatus(resource client.Object) error
- // CreateResources create provided objects
- CreateResources(resources []client.Object) (bool, error)
- // UpdateResources update provided objects
- UpdateResources(existing []client.Object, resources []client.Object) (bool, error)
- // DeleteResources delete provided objects
- DeleteResources(resources []client.Object) (bool, error)
-}
-
-// ResourceWriterC provide ResourceWrite reference
-func ResourceWriterC(cli *kogitocli.Client) ResourceWriter {
- return &resourceWriter{
- client: cli,
- }
-}
-
-type resourceWriter struct {
- client *kogitocli.Client
-}
-
-func (r *resourceWriter) Create(resource client.Object) error {
- log.Debug("Creating resource", "kind", resource.GetObjectKind().GroupVersionKind().Kind, "name", resource.GetName(), "namespace", resource.GetNamespace())
- if err := r.client.ControlCli.Create(context.TODO(), resource); err != nil {
- log.Error(err, "Failed to create object. ")
- return err
- }
- return nil
-}
-
-func (r *resourceWriter) Update(resource client.Object) error {
- log.Debug("About to update resource", "name", resource.GetName(), "namespace", resource.GetNamespace())
- if err := r.client.ControlCli.Update(context.TODO(), resource); err != nil {
- return err
- }
- log.Debug("Resource updated.", "name", resource.GetName(), "Creation Timestamp", resource.GetCreationTimestamp(), "Resource", resource)
- return nil
-}
-
-func (r *resourceWriter) Delete(resource client.Object) error {
- if err := r.client.ControlCli.Delete(context.TODO(), resource); err != nil {
- log.Error(err, "Failed to delete resource.", "name", resource.GetName())
- return err
- }
- return nil
-}
-
-func (r *resourceWriter) UpdateStatus(resource client.Object) error {
- log.Debug("About to update status for object", "name", resource.GetName(), "namespace", resource.GetNamespace())
- if err := r.client.ControlCli.Status().Update(context.TODO(), resource); err != nil {
- return err
- }
-
- log.Debug("Object status updated.", "name", resource.GetName(), "Creation Timestamp", resource.GetCreationTimestamp())
- return nil
-}
-
-func (r *resourceWriter) CreateResources(resources []client.Object) (bool, error) {
- writer := write.New(r.client.ControlCli)
- return writer.AddResources(resources)
-}
-
-func (r *resourceWriter) UpdateResources(existing []client.Object, resources []client.Object) (bool, error) {
- writer := write.New(r.client.ControlCli)
- return writer.UpdateResources(existing, resources)
-}
-
-func (r *resourceWriter) DeleteResources(resources []client.Object) (bool, error) {
- writer := write.New(r.client.ControlCli)
- return writer.RemoveResources(resources)
-}
diff --git a/bddframework/pkg/framework/client/test/kubeconfig.go b/bddframework/pkg/framework/client/test/kubeconfig.go
deleted file mode 100644
index 13aca31c..00000000
--- a/bddframework/pkg/framework/client/test/kubeconfig.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package test
-
-import (
- "fmt"
- "os"
-
- "k8s.io/client-go/tools/clientcmd"
- clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
-)
-
-const (
- tempKubeEnvConfig = "/tmp/.kube/config"
-)
-
-// OverrideDefaultKubeConfigEmptyContext same as OverrideDefaultKubeConfigWithNamespace, but sets default namespace to "default"
-func OverrideDefaultKubeConfigEmptyContext() (kubeconfigfile string, rollbackEnvOverride func()) {
- return OverrideDefaultKubeConfigWithNamespace("default")
-}
-
-// OverrideDefaultKubeConfigWithNamespace overrides the env var variable meant to point to the kube config file with a temporary file to be used in tests
-// You must call defer with rollbackEnvOverride func to switch back to the original value and not jeopardize the local configuration
-func OverrideDefaultKubeConfigWithNamespace(namespace string) (kubeconfigfile string, rollbackEnvOverride func()) {
- defaultConfig := clientcmdapi.NewConfig()
- defaultConfig.CurrentContext = namespace + "/cluster:8080/user"
- defaultConfig.Contexts[defaultConfig.CurrentContext] = clientcmdapi.NewContext()
- defaultConfig.Contexts[defaultConfig.CurrentContext].Namespace = namespace
- defaultConfig.Contexts[defaultConfig.CurrentContext].Cluster = "cluster:8080"
- defaultConfig.Contexts[defaultConfig.CurrentContext].AuthInfo = "user"
- if err := clientcmd.WriteToFile(*defaultConfig, tempKubeEnvConfig); err != nil {
- panic(fmt.Errorf("Impossible to write default kubeclient config: %s ", err))
- }
- return OverrideDefaultKubeConfig()
-}
-
-// OverrideDefaultKubeConfig overrides the default KUBECONFIG env var to point to a temporary file, does not create any context.
-func OverrideDefaultKubeConfig() (kubeconfigfile string, rollbackEnvOverride func()) {
- oldEnvVar := os.Getenv(clientcmd.RecommendedConfigPathEnvVar)
- os.Setenv(clientcmd.RecommendedConfigPathEnvVar, tempKubeEnvConfig)
- return tempKubeEnvConfig, func() {
- if err := os.Remove(tempKubeEnvConfig); err != nil {
- if !os.IsNotExist(err) {
- panic(fmt.Errorf("Impossible to remove file %s: %s ", tempKubeEnvConfig, err))
- }
- }
- os.Setenv(clientcmd.RecommendedConfigPathEnvVar, oldEnvVar)
- }
-}
diff --git a/bddframework/pkg/framework/command.go b/bddframework/pkg/framework/command.go
deleted file mode 100644
index ec28401a..00000000
--- a/bddframework/pkg/framework/command.go
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "os/exec"
- "sync"
- "time"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/logger"
-)
-
-var (
- syncMutexMap sync.Map
-)
-
-// CreateCommand methods initializes the basic data to run commands.
-func CreateCommand(commandName string, args ...string) Command {
- return &commandStruct{name: commandName, args: args}
-}
-
-// Command wraps information about the command to execute.
-type Command interface {
- // WithLoggerContext method attaches a logger context to trace all the command logs when executing it.
- WithLoggerContext(loggerContext string) Command
- // InDirectory method sets the directory where the command will be executed.
- InDirectory(directory string) Command
- // WithRetry method defines retry options to be applied to the command.
- WithRetry(opts ...RetryOption) Command
- // Sync method allows to execute only one command at a time based on the syncID.
- Sync(syncID string) Command
- // Execute command and returns the outputs.
- Execute() (string, error)
-}
-
-// struct that represents a command.
-type commandStruct struct {
- name string
- args []string
- directory string
- loggerContext string
- retries int
- retryDelay time.Duration
- syncID string
-}
-
-func (cmd *commandStruct) WithLoggerContext(loggerContext string) Command {
- cmd.loggerContext = loggerContext
- return cmd
-}
-
-func (cmd *commandStruct) Sync(syncID string) Command {
- cmd.syncID = syncID
- return cmd
-}
-
-func (cmd *commandStruct) InDirectory(directory string) Command {
- cmd.directory = directory
- return cmd
-}
-
-func (cmd *commandStruct) WithRetry(opts ...RetryOption) Command {
- for _, opt := range opts {
- opt(cmd)
- }
- return cmd
-}
-
-func (cmd *commandStruct) Execute() (string, error) {
- if len(cmd.syncID) > 0 {
- mutex := getMutexOrCreate(cmd.syncID)
- mutex.Lock()
- defer mutex.Unlock()
- }
- return cmd.executeCommand()
-}
-
-func (cmd *commandStruct) executeCommand() (string, error) {
- var logger = cmd.getLogger()
-
- if len(cmd.directory) == 0 {
- logger.Info("Execute command", "command", cmd.name, "args", cmd.args)
- } else {
- logger.Info("Execute command ", "command", cmd.name, "args", cmd.args, "directory", cmd.directory)
- }
-
- var out []byte
- var err error
-
- // If retries are set then repeat until command succeed
- for i := 0; i <= cmd.retries; i++ {
- command := exec.Command(cmd.name, cmd.args...)
- command.Dir = cmd.directory
- out, err = command.Output()
-
- if err == nil {
- break
- }
-
- time.Sleep(cmd.retryDelay)
- }
-
- if err != nil {
- logger.Error(err, "output command", "output", string(out[:]))
- if ee, ok := err.(*exec.ExitError); ok {
- logger.Error(err, "error output command", "output", string(ee.Stderr))
- }
- } else {
- logger.Debug("output command", "output", string(out[:]))
- }
-
- return string(out[:]), err
-}
-func (cmd *commandStruct) getLogger() logger.Logger {
- var logger logger.Logger
- if len(cmd.loggerContext) > 0 {
- logger = GetLogger(cmd.loggerContext)
- } else {
- logger = GetMainLogger()
- }
-
- return logger
-}
-
-// Retry misc functions
-
-// RetryOption declares funtion to be applied on Retry
-type RetryOption func(*commandStruct)
-
-// RetryDelay declares funtion setting delay between retries
-func RetryDelay(delay time.Duration) RetryOption {
- return func(cmd *commandStruct) {
- cmd.retryDelay = delay
- }
-}
-
-// NumberOfRetries declares funtion setting number of retries
-func NumberOfRetries(retries int) RetryOption {
- return func(cmd *commandStruct) {
- cmd.retries = retries
- }
-}
-
-func getMutexOrCreate(syncID string) *sync.Mutex {
- mutex, exists := syncMutexMap.Load(syncID)
- if !exists {
- mutex = &sync.Mutex{}
- syncMutexMap.Store(syncID, mutex)
- }
- return mutex.(*sync.Mutex)
-}
diff --git a/bddframework/pkg/framework/container_engine.go b/bddframework/pkg/framework/container_engine.go
deleted file mode 100644
index dc4497c6..00000000
--- a/bddframework/pkg/framework/container_engine.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/config"
-
-const (
- defaultRetryNb = 3
-)
-
-// ContainerEngine is the engine providing container and registry functionality
-type ContainerEngine interface {
- // PullImage pull image from external registry to internal registry
- PullImage(imageTag string) ContainerEngine
-
- // PushImage push image from internal registry to external registry
- PushImage(imageTag string) ContainerEngine
-
- // BuildImage builds the container image from specified directory
- BuildImage(projectLocation, imageTag string) ContainerEngine
-
- // Setup the retry for the different commands
- WithRetry(retryNb int) ContainerEngine
-
- // GetError returns error in case any execution failed
- GetError() error
-}
-
-type containerEngineStruct struct {
- engine string
- buildCommand string
- namespace string
- supportTLSVerify bool
- err error
- retryNb int
-}
-
-var dockerContainerEngine = containerEngineStruct{
- engine: "docker",
- supportTLSVerify: false,
- buildCommand: "build",
-}
-
-var podmanContainerEngine = containerEngineStruct{
- engine: "podman",
- supportTLSVerify: true,
- buildCommand: "build",
-}
-
-var buildahContainerEngine = containerEngineStruct{
- engine: "buildah",
- supportTLSVerify: true,
- buildCommand: "build-using-dockerfile",
-}
-
-var containerEngines = map[string]containerEngineStruct{
- dockerContainerEngine.engine: dockerContainerEngine,
- podmanContainerEngine.engine: podmanContainerEngine,
- buildahContainerEngine.engine: buildahContainerEngine,
-}
-
-// GetContainerEngine returns container engine based on test configuration
-func GetContainerEngine(namespace string) ContainerEngine {
- containerEngine := containerEngines[config.GetContainerEngine()]
-
- containerEngine.namespace = namespace
- containerEngine.retryNb = defaultRetryNb
- return &containerEngine
-}
-
-func (containerEngine *containerEngineStruct) PullImage(imageTag string) ContainerEngine {
- pullImageArgs := []string{"pull"}
-
- if containerEngine.supportTLSVerify {
- pullImageArgs = append(pullImageArgs, "--tls-verify=false")
- }
-
- pullImageArgs = append(pullImageArgs, imageTag)
-
- if containerEngine.err == nil {
- _, containerEngine.err = CreateCommand(containerEngine.engine, pullImageArgs...).
- WithRetry(NumberOfRetries(containerEngine.retryNb)).
- WithLoggerContext(containerEngine.namespace).
- Execute()
- }
- return containerEngine
-}
-
-func (containerEngine *containerEngineStruct) PushImage(imageTag string) ContainerEngine {
- pushImageArgs := []string{"push"}
-
- if containerEngine.supportTLSVerify {
- pushImageArgs = append(pushImageArgs, "--tls-verify=false")
- }
-
- pushImageArgs = append(pushImageArgs, imageTag)
-
- if containerEngine.err == nil {
- _, containerEngine.err = CreateCommand(containerEngine.engine, pushImageArgs...).
- WithRetry(NumberOfRetries(containerEngine.retryNb)).
- WithLoggerContext(containerEngine.namespace).
- Execute()
- }
- return containerEngine
-}
-
-func (containerEngine *containerEngineStruct) BuildImage(projectLocation, imageTag string) ContainerEngine {
- if containerEngine.err == nil {
- _, containerEngine.err = CreateCommand(containerEngine.engine, containerEngine.buildCommand, "--tag", imageTag, ".").
- WithRetry(NumberOfRetries(containerEngine.retryNb)).
- InDirectory(projectLocation).
- WithLoggerContext(containerEngine.namespace).
- Execute()
- }
- return containerEngine
-}
-
-func (containerEngine *containerEngineStruct) WithRetry(retryNb int) ContainerEngine {
- containerEngine.retryNb = retryNb
- return containerEngine
-}
-
-func (containerEngine *containerEngineStruct) GetError() error {
- return containerEngine.err
-}
diff --git a/bddframework/pkg/framework/dockerfile_provider.go b/bddframework/pkg/framework/dockerfile_provider.go
deleted file mode 100644
index 4cade975..00000000
--- a/bddframework/pkg/framework/dockerfile_provider.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "fmt"
- "io/ioutil"
- "path/filepath"
- "strings"
-)
-
-const (
- quarkusFastJarFolder = "quarkus-app"
- quarkusFastJarName = "quarkus-run.jar"
-
- quarkusJVMLegacyApplicationBinarySuffix = "-runner.jar"
- quarkusJVMFastApplicationBinarySuffix = quarkusFastJarFolder
- quarkusNativeApplicationBinarySuffix = "-runner"
- springBootApplicationBinarySuffix = ".jar"
-)
-
-// KogitoApplicationDockerfileProvider is the API to provide Dockerfile content for image creation based on built project content
-type KogitoApplicationDockerfileProvider interface {
- // GetDockerfileContent returns Dockerfile content for image creation
- GetDockerfileContent() (string, error)
-}
-
-type kogitoApplicationDockerfileProviderStruct struct {
- projectLocation string
- native bool
- jarSubDirectory string
- executableFileName string
- applicationBinarySuffix string
- folderDependencies []string
-}
-
-var quarkusNonNativeLegacyJarKogitoApplicationDockerfileProvider = kogitoApplicationDockerfileProviderStruct{
- native: false,
- applicationBinarySuffix: quarkusJVMLegacyApplicationBinarySuffix,
- folderDependencies: []string{"lib"},
-}
-
-var quarkusNonNativeFastJarKogitoApplicationDockerfileProvider = kogitoApplicationDockerfileProviderStruct{
- native: false,
- jarSubDirectory: quarkusFastJarFolder,
- executableFileName: quarkusFastJarName,
- applicationBinarySuffix: quarkusJVMFastApplicationBinarySuffix,
- folderDependencies: []string{"lib", "quarkus", "app"},
-}
-
-var quarkusNativeKogitoApplicationDockerfileProvider = kogitoApplicationDockerfileProviderStruct{
- native: true,
- applicationBinarySuffix: quarkusNativeApplicationBinarySuffix,
-}
-
-var springbootKogitoApplicationDockerfileProvider = kogitoApplicationDockerfileProviderStruct{
- native: false,
- applicationBinarySuffix: springBootApplicationBinarySuffix,
-}
-
-// GetKogitoApplicationDockerfileProvider returns KogitoApplicationDockerfileProvider based on project location
-func GetKogitoApplicationDockerfileProvider(projectLocation string) KogitoApplicationDockerfileProvider {
- targetDir := projectLocation + "/target"
- dockerfileProvider := &springbootKogitoApplicationDockerfileProvider
-
- if fileWithSuffixExists(targetDir, quarkusNativeKogitoApplicationDockerfileProvider.applicationBinarySuffix) {
- dockerfileProvider = &quarkusNativeKogitoApplicationDockerfileProvider
- } else if fileWithSuffixExists(targetDir, quarkusNonNativeFastJarKogitoApplicationDockerfileProvider.applicationBinarySuffix) {
- dockerfileProvider = &quarkusNonNativeFastJarKogitoApplicationDockerfileProvider
- } else if fileWithSuffixExists(targetDir, quarkusNonNativeLegacyJarKogitoApplicationDockerfileProvider.applicationBinarySuffix) {
- dockerfileProvider = &quarkusNonNativeLegacyJarKogitoApplicationDockerfileProvider
- }
-
- dockerfileProvider.projectLocation = projectLocation
- return dockerfileProvider
-}
-
-func (dockerfileProvider *kogitoApplicationDockerfileProviderStruct) GetDockerfileContent() (string, error) {
- // Declare base image to build from
- dockerfileContent := fmt.Sprintf("FROM %s\n", GetKogitoBuildRuntimeImage(dockerfileProvider.native))
-
- subDir := ""
- if len(dockerfileProvider.jarSubDirectory) > 0 {
- subDir = dockerfileProvider.jarSubDirectory + "/"
- }
- executableFileName := fmt.Sprintf("%s%s", filepath.Base(dockerfileProvider.projectLocation), dockerfileProvider.applicationBinarySuffix)
- if len(dockerfileProvider.executableFileName) > 0 {
- executableFileName = dockerfileProvider.executableFileName
- }
-
- // Copy application binary into $KOGITO_HOME/bin
- dockerfileContent += fmt.Sprintf("COPY target/%s%s $KOGITO_HOME/bin\n", subDir, executableFileName)
-
- // Copy dependencies folder
- for _, depFolder := range dockerfileProvider.folderDependencies {
- dockerfileContent += fmt.Sprintf("COPY target/%s%s $KOGITO_HOME/bin/%s\n", subDir, depFolder, depFolder)
- }
-
- return dockerfileContent, nil
-}
-
-func fileWithSuffixExists(scannedDirectory, fileSuffix string) bool {
- files, err := ioutil.ReadDir(scannedDirectory)
- if err != nil {
- panic(fmt.Errorf("Error reading directory %s: %v", scannedDirectory, err))
- }
-
- for _, file := range files {
- if strings.HasSuffix(file.Name(), fileSuffix) {
- return true
- }
- }
- return false
-}
diff --git a/bddframework/pkg/framework/env/env.go b/bddframework/pkg/framework/env/env.go
deleted file mode 100644
index 617970c3..00000000
--- a/bddframework/pkg/framework/env/env.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2023 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package env
-
-import (
- "os"
- "strconv"
-)
-
-func GetEnvUsername() string {
- return GetOSEnv("USERNAME", "nouser")
-}
-
-// GetOSEnv gets a env variable
-func GetOSEnv(key, fallback string) string {
- value, exists := os.LookupEnv(key)
- if !exists {
- value = fallback
- }
- return value
-}
-
-// GetBoolOSEnv gets a env variable as a boolean
-func GetBoolOSEnv(key string) bool {
- val := GetOSEnv(key, "false")
- ret, err := strconv.ParseBool(val)
- if err != nil {
- return false
- }
- return ret
-}
diff --git a/bddframework/pkg/framework/grafana.go b/bddframework/pkg/framework/grafana.go
deleted file mode 100644
index c1070ccd..00000000
--- a/bddframework/pkg/framework/grafana.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "fmt"
-
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/types"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client/kubernetes"
- grafanav1 "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/infrastructure/grafana/v1alpha1"
-)
-
-const (
- // Default Grafana service name
- defaultGrafanaService = "grafana-service"
- // Default Grafana deployment name
- defaultGrafanaDeployment = "grafana-deployment"
-)
-
-var grafanaImages = map[string]string{
- "docker.io/grafana/grafana:7.5.17": "docker.io/grafana/grafana@sha256:15abb652aa82eeb9f45589278b34ae6ef0e96f74c389cadde31831eb0b1ce228",
-}
-
-// DeployGrafanaInstance deploys an instance of Grafana watching for label with specific name and value
-func DeployGrafanaInstance(namespace, labelName, labelValue string) error {
- GetLogger(namespace).Info("Creating Grafana CR to spin up instance.")
-
- grafanaCR := &grafanav1.Grafana{
- ObjectMeta: metav1.ObjectMeta{
- Name: "grafana",
- Namespace: namespace,
- },
- Spec: grafanav1.GrafanaSpec{
- Config: grafanav1.GrafanaConfig{
- AuthAnonymous: &grafanav1.GrafanaConfigAuthAnonymous{
- Enabled: getBool(true),
- },
- },
- DashboardLabelSelector: []*metav1.LabelSelector{
- {
- MatchLabels: map[string]string{labelName: labelValue},
- },
- },
- },
- }
- if err := kubernetes.ResourceC(kubeClient).Create(grafanaCR); err != nil {
- return fmt.Errorf("Error while creating Grafana CR: %v ", err)
- }
-
- // Patch Grafana CR with image based on digest to allow image mirroring. Can be removed when Garafana image is moved out of docker.io registry.
- if deployment, err := GetDeploymentWaiting(namespace, defaultGrafanaDeployment, 2); err != nil {
- return fmt.Errorf("Error while waiting for Grafana Deployment to become available: %v ", err)
- } else if imageShaTag, imageEntryPresent := grafanaImages[deployment.Spec.Template.Spec.Containers[0].Image]; imageEntryPresent {
- err := patchGrafanaCR(grafanaCR.GetNamespace(), grafanaCR.GetName(), func(grafana *grafanav1.Grafana) {
- grafana.Spec.BaseImage = imageShaTag
- })
- if err != nil {
- return err
- }
- } else {
- return fmt.Errorf("Grafana image %s wasn't found in the list of Grafana images with defined digest. In case this is new Grafana image please add it into the list with proper digest", deployment.Spec.Template.Spec.Containers[0].Image)
- }
-
- if IsOpenshift() {
- // Grafana creates HTTPS routes by default, need to create HTTP route manually
- if err := createHTTPRoute(namespace, defaultGrafanaService); err != nil {
- return fmt.Errorf("Error while creating Grafana route: %v ", err)
- }
- } else {
- // Need to expose Grafana
- if err := ExposeServiceOnKubernetes(namespace, defaultGrafanaService); err != nil {
- return fmt.Errorf("Error while exposing Grafana service: %v ", err)
- }
- }
-
- return nil
-}
-
-func getBool(b bool) *bool {
- return &b
-}
-
-func patchGrafanaCR(namespace, name string, patch func(grafana *grafanav1.Grafana)) error {
- var err error
- // Try patching for several times
- for i := 0; i < 3; i++ {
- // Fetch Grafana CR
- grafana := &grafanav1.Grafana{}
- if exists, err := GetObjectWithKey(types.NamespacedName{Namespace: namespace, Name: name}, grafana); err != nil {
- return fmt.Errorf("Error fetching Grafana %s in namespace %s: %v", name, namespace, err)
- } else if !exists {
- return fmt.Errorf("Grafana %s in namespace %s doesn't exist", name, namespace)
- }
-
- // Patch Grafana CR
- patch(grafana)
-
- // Update Grafana CR
- if err = UpdateObject(grafana); err == nil {
- return nil
- }
- }
- return fmt.Errorf("Error patching Grafana %s in namespace %s: %v", name, namespace, err)
-}
diff --git a/bddframework/pkg/framework/graphql.go b/bddframework/pkg/framework/graphql.go
deleted file mode 100644
index 6623c852..00000000
--- a/bddframework/pkg/framework/graphql.go
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "context"
- "fmt"
- "net/http"
- "strconv"
- "strings"
- "time"
-
- "github.com/machinebox/graphql"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/config"
-)
-
-const graphQLNoAuthToken = ""
-
-// WaitForSuccessfulGraphQLRequest waits for an GraphQL request to be successful
-func WaitForSuccessfulGraphQLRequest(namespace, uri, path, query string, timeoutInMin int, response interface{}, analyzeResponse func(response interface{}) (bool, error)) error {
- return WaitForSuccessfulGraphQLRequestUsingAccessToken(namespace, uri, path, query, graphQLNoAuthToken, timeoutInMin, response, analyzeResponse)
-}
-
-// WaitForSuccessfulGraphQLRequestUsingPagination waits for a GraphQL request with pagination to be successful.
-// You can provide 2 functions:
-//
-// 1. After each response. This is called after every page is queried. Useful for checking the content of each page
-// or appending results for final checks after all pages are retrieved.
-//
-// 2. After full request. This is called once after all pages are queried. Useful for final checks on all results.
-//
-// If more than one page is to be retrieved, include the `$offset` variable in the query which will be used for pagination.
-func WaitForSuccessfulGraphQLRequestUsingPagination(namespace, uri, path, query string, timeoutInMin, pageSize, totalSize int, response interface{}, afterEachResponse func(response interface{}) (bool, error), afterFullRequest func() (bool, error)) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("GraphQL query %s on path '%s' using '%s' access token to be successful", query, path, graphQLNoAuthToken), timeoutInMin,
- func() (bool, error) {
- totalPages := totalSize / pageSize
- if totalSize%pageSize != 0 {
- totalPages++
- }
- for queried := 0; queried < totalSize; {
- query := strings.ReplaceAll(query, "$offset", strconv.Itoa(queried))
- GetLogger(namespace).Info("Querying", "page no.", queried/pageSize+1, "of", totalPages, "query", query)
- err := ExecuteGraphQLRequestWithLoggingOption(namespace, uri, path, query, graphQLNoAuthToken, response, false)
- if err != nil {
- return false, err
- }
- if afterEachResponse != nil {
- if success, err := afterEachResponse(response); !success || err != nil {
- return success, err
- }
- }
- queried = queried + pageSize
- }
-
- if afterFullRequest != nil {
- return afterFullRequest()
- }
-
- return true, nil
- })
-}
-
-// WaitForSuccessfulGraphQLRequestUsingAccessToken waits for an GraphQL request using access token to be successful
-func WaitForSuccessfulGraphQLRequestUsingAccessToken(namespace, uri, path, query, accessToken string, timeoutInMin int, response interface{}, analyzeResponse func(response interface{}) (bool, error)) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("GraphQL query %s on path '%s' using '%s' access token to be successful", query, path, accessToken), timeoutInMin,
- func() (bool, error) {
- success, err := IsGraphQLRequestSuccessful(namespace, uri, path, query, accessToken, response)
- if err != nil {
- return false, err
- }
-
- if analyzeResponse != nil {
- return analyzeResponse(response)
- }
-
- return success, nil
- })
-}
-
-// WaitForFailingGraphQLRequest waits for an GraphQL request to be fail
-func WaitForFailingGraphQLRequest(namespace, uri, path, query string, timeoutInMin int) error {
- return WaitForFailingGraphQLRequestUsingAccessToken(namespace, uri, path, query, graphQLNoAuthToken, timeoutInMin)
-}
-
-// WaitForFailingGraphQLRequestUsingAccessToken waits for an GraphQL request using access token to be fail
-func WaitForFailingGraphQLRequestUsingAccessToken(namespace, uri, path, query, accessToken string, timeoutInMin int) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("GraphQL query %s on path '%s' using '%s' access token to be failing", query, path, accessToken), timeoutInMin,
- func() (bool, error) {
- success, err := IsGraphQLRequestSuccessful(namespace, uri, path, query, accessToken, nil)
- return !success || err != nil, nil
- })
-}
-
-// ExecuteGraphQLRequestWithLogging executes a GraphQL query
-func ExecuteGraphQLRequestWithLogging(namespace, uri, path, query, bearerToken string, response interface{}) error {
- return ExecuteGraphQLRequestWithLoggingOption(namespace, uri, path, query, bearerToken, response, true)
-}
-
-// ExecuteGraphQLRequestWithLoggingOption executes a GraphQL query with possibility of logging each request
-func ExecuteGraphQLRequestWithLoggingOption(namespace, uri, path, query, bearerToken string, response interface{}, logResponse bool) error {
- // create a client (safe to share across requests)
- client := graphql.NewClient(fmt.Sprintf("%s/%s", uri, path), graphql.WithHTTPClient(&http.Client{Timeout: (time.Duration(10*config.GetLoadFactor()) * time.Second)}))
- req := graphql.NewRequest(query)
- req.Header.Set("Cache-Control", "no-cache")
- addGraphqlAuthentication(req, bearerToken)
- ctx := context.Background()
- if err := client.Run(ctx, req, response); err != nil {
- return err
- }
- GetLogger(namespace).Info("GraphQL response received successfully")
- if logResponse {
- GetLogger(namespace).Info("GraphQL", "response", response)
-
- }
- return nil
-}
-
-// IsGraphQLRequestSuccessful makes and checks whether a GraphQL query is successful
-func IsGraphQLRequestSuccessful(namespace, uri, path, query, bearerToken string, response interface{}) (bool, error) {
- err := ExecuteGraphQLRequestWithLogging(namespace, uri, path, query, bearerToken, response)
- if err != nil {
- return false, err
- }
- return true, nil
-}
-
-func addGraphqlAuthentication(request *graphql.Request, bearerToken string) {
- if len(bearerToken) > 0 {
- // Bearer authentication
- request.Header.Add("Authorization", "Bearer "+bearerToken)
- }
-}
diff --git a/bddframework/pkg/framework/http.go b/bddframework/pkg/framework/http.go
deleted file mode 100644
index f13b2d8b..00000000
--- a/bddframework/pkg/framework/http.go
+++ /dev/null
@@ -1,364 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "bytes"
- "crypto/tls"
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
- "strings"
- "sync"
- "time"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/config"
-)
-
-type (
- // HTTPRequestResult represents the success or error of an HTTP request
- HTTPRequestResult string
-
- // HTTPRequestInfo structure encapsulates all information needed to execute an HTTP request
- HTTPRequestInfo struct {
- HTTPMethod, URI, Path, BodyFormat, BodyContent, Token string
- Unsecure bool
- Headers map[string]string
- }
-)
-
-const (
- // HTTPRequestResultSuccess in case of success
- HTTPRequestResultSuccess HTTPRequestResult = "success"
- // HTTPRequestResultError in case of error
- HTTPRequestResultError HTTPRequestResult = "error"
-)
-
-// WaitAndRetrieveEndpointURI waits for a route and returns its URI
-func WaitAndRetrieveEndpointURI(namespace, serviceName string) (string, error) {
- var uri string
- var err error
- if IsOpenshift() {
- uri, err = GetRouteURI(namespace, serviceName)
- } else {
- uri, err = GetIngressURI(namespace, serviceName)
- }
-
- if err != nil {
- return "", fmt.Errorf("Error retrieving URI for route %s in namespace %s: %v", serviceName, namespace, err)
- } else if len(uri) <= 0 {
- return "", fmt.Errorf("No URI found for route name %s in namespace %s: %v", serviceName, namespace, err)
- }
- GetLogger(namespace).Debug("Got", "route", uri)
- return uri, nil
-}
-
-// WaitForSuccessfulHTTPRequest waits for an HTTP request to be successful
-func WaitForSuccessfulHTTPRequest(namespace string, requestInfo HTTPRequestInfo, timeoutInMin int) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("HTTP %s request on path '%s' to be successful", requestInfo.HTTPMethod, requestInfo.Path), timeoutInMin,
- func() (bool, error) {
- return IsHTTPRequestSuccessful(namespace, requestInfo)
- })
-}
-
-// WaitForForbiddenHTTPRequest waits for an HTTP request to be unauthorized
-func WaitForForbiddenHTTPRequest(namespace string, requestInfo HTTPRequestInfo, timeoutInMin int) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("HTTP %s request on path '%s' to be forbidden", requestInfo.HTTPMethod, requestInfo.Path), timeoutInMin,
- func() (bool, error) {
- return IsHTTPRequestForbidden(namespace, requestInfo)
- })
-}
-
-// WaitForFailedHTTPRequest waits for an HTTP request to fail
-func WaitForFailedHTTPRequest(namespace string, requestInfo HTTPRequestInfo, timeoutInMin int) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("HTTP %s request on path '%s' to fail", requestInfo.HTTPMethod, requestInfo.Path), timeoutInMin,
- func() (bool, error) {
- return IsHTTPRequestFailed(namespace, requestInfo)
- })
-}
-
-// ExecuteHTTPRequest executes an HTTP request
-func ExecuteHTTPRequest(namespace string, requestInfo HTTPRequestInfo) (*http.Response, error) {
- // Setup a retry in case the first time it did not work
- retry := 0
- var resp *http.Response
- var err error
- for retry < config.GetHTTPRetryNumber() {
- resp, err = ExecuteHTTPRequestC(createDefaultClient(), namespace, requestInfo)
- if err == nil && checkHTTPResponseSuccessful(resp) {
- return resp, err
- } else if err != nil {
- GetLogger(namespace).Warn("http call was not successful", "error", err)
- } else if resp != nil {
- GetLogger(namespace).Warn("Http call was not successful.", "Response code", resp.StatusCode)
- if resp.StatusCode == 500 {
- // In case of 500, it is server error and we don't need to call again
- return resp, err
- }
- } else {
- GetLogger(namespace).Warn("Http call was not successful. No response available ...")
- }
- GetLogger(namespace).Warn("Retrying in 1 second ...")
- retry++
- time.Sleep(1 * time.Second)
- }
- return resp, err
-}
-
-// ExecuteHTTPRequestC executes an HTTP request using a given client
-func ExecuteHTTPRequestC(client *http.Client, namespace string, requestInfo HTTPRequestInfo) (*http.Response, error) {
- GetLogger(namespace).Debug("ExecuteHTTPRequest", "method", requestInfo.HTTPMethod, "uri", requestInfo.URI, "path", requestInfo.Path, "bodyFormat", requestInfo.BodyFormat, "bodyContent", requestInfo.BodyContent)
-
- request, err := http.NewRequest(requestInfo.HTTPMethod, requestInfo.URI+"/"+requestInfo.Path, strings.NewReader(requestInfo.BodyContent))
- if len(requestInfo.BodyContent) > 0 && len(requestInfo.BodyFormat) > 0 {
- switch requestInfo.BodyFormat {
- case "json":
- request.Header.Add("Content-Type", "application/json")
- case "xml":
- request.Header.Add("Content-Type", "application/xml")
- case "x-www-form-urlencoded":
- request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
- case "yaml":
- request.Header.Add("Content-Type", "text/vnd.yaml")
- default:
- return nil, fmt.Errorf("Unknown body format to set into request: %s", requestInfo.BodyFormat)
- }
- }
-
- if err != nil {
- return nil, err
- }
-
- addHTTPAuthentication(request, requestInfo)
- if requestInfo.Unsecure {
- client.Transport = &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
- }
- }
-
- for key, value := range requestInfo.Headers {
- request.Header.Add(key, value)
- }
-
- return client.Do(request)
-}
-
-// ExecuteHTTPRequestWithStringResponse executes an HTTP request and returns a string response in case there is no error
-func ExecuteHTTPRequestWithStringResponse(namespace string, requestInfo HTTPRequestInfo) (string, error) {
- httpResponse, err := ExecuteHTTPRequest(namespace, requestInfo)
- if err != nil {
- return "", err
- }
- if !checkHTTPResponseSuccessful(httpResponse) {
- return "", nil
- }
- // Check response
- defer httpResponse.Body.Close()
- buf := new(bytes.Buffer)
- if _, err = buf.ReadFrom(httpResponse.Body); err != nil {
- return "", err
- }
- resultBody := buf.String()
-
- GetLogger(namespace).Debug("Retrieved", "resdultBody", resultBody)
- return resultBody, nil
-}
-
-// ExecuteHTTPRequestWithUnmarshalledResponse executes an HTTP request and returns response unmarshalled into specific structure in case there is no error
-func ExecuteHTTPRequestWithUnmarshalledResponse(namespace string, requestInfo HTTPRequestInfo, response interface{}) error {
- resultBody, err := ExecuteHTTPRequestWithStringResponse(namespace, requestInfo)
- if err != nil {
- return err
- }
-
- if err := json.NewDecoder(strings.NewReader(resultBody)).Decode(response); err != nil {
- return err
- }
- return nil
-}
-
-// IsHTTPRequestSuccessful makes and checks whether an http request is successful
-func IsHTTPRequestSuccessful(namespace string, requestInfo HTTPRequestInfo) (bool, error) {
- return checkHTTPRequestConditionC(createDefaultClient(), namespace, requestInfo, checkHTTPResponseSuccessful)
-}
-
-// IsHTTPRequestForbidden makes and checks whether an http request is unauthorized
-func IsHTTPRequestForbidden(namespace string, requestInfo HTTPRequestInfo) (bool, error) {
- return checkHTTPRequestConditionC(createDefaultClient(), namespace, requestInfo, checkHTTPResponseForbidden)
-}
-
-// IsHTTPRequestFailed makes and checks whether an http request fails
-func IsHTTPRequestFailed(namespace string, requestInfo HTTPRequestInfo) (bool, error) {
- return checkHTTPRequestConditionC(createDefaultClient(), namespace, requestInfo, checkHTTPResponseFailed)
-}
-
-// checkHTTPRequestConditionC makes and checks whether an http request matches a condition using a given HTTP client
-func checkHTTPRequestConditionC(client *http.Client, namespace string, requestInfo HTTPRequestInfo, condition func(response *http.Response) bool) (bool, error) {
- response, err := ExecuteHTTPRequestC(client, namespace, requestInfo)
- if err != nil {
- return false, err
- }
- if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { // Just read the response to be able to close the connection properly
- return false, err
- }
- defer response.Body.Close()
- GetLogger(namespace).Debug("Got response", "status code", response.StatusCode)
- if !condition(response) {
- GetLogger(namespace).Warn("Request not expected", "status code", response.StatusCode)
- return false, nil
- }
-
- return true, nil
-}
-
-// checkHTTPResponseSuccessful checks the HTTP response is successful
-func checkHTTPResponseSuccessful(response *http.Response) bool {
- return response.StatusCode >= 200 && response.StatusCode < 300
-}
-
-// checkHTTPResponseForbidden checks the HTTP response is forbidden
-func checkHTTPResponseForbidden(response *http.Response) bool {
- return response.StatusCode == 401
-}
-
-// checkHTTPResponseFailed checks the HTTP response failed
-func checkHTTPResponseFailed(response *http.Response) bool {
- return response.StatusCode >= 404
-}
-
-// ExecuteHTTPRequestsInThreads executes given number of requests using given number of threads (Go routines).
-// Returns []HTTPRequestResult with the outcome of each thread (HTTPRequestResultSuccess or HTTPRequestResultError).
-// Returns error if the desired number of requests cannot be precisely divided to the threads.
-// Useful for performance testing.
-func ExecuteHTTPRequestsInThreads(namespace string, requestCount, threadCount int, requestInfo HTTPRequestInfo) ([]HTTPRequestResult, error) {
- if requestCount%threadCount != 0 {
- return nil, fmt.Errorf("Cannot precisely divide %d requests to %d threads. Use different numbers", requestCount, threadCount)
- }
- requestPerThread := requestCount / threadCount
- results := make([]HTTPRequestResult, threadCount)
- waitGroup := &sync.WaitGroup{}
- waitGroup.Add(threadCount)
-
- GetLogger(namespace).Info("Starting request threads")
- startTime := time.Now()
-
- for threadID := 0; threadID < threadCount; threadID++ {
- client := createDefaultClient()
- go runRequestRoutine(threadID, waitGroup, client, namespace, requestPerThread, requestInfo, results)
- }
-
- GetLogger(namespace).Info("Waiting for requests to finish")
- waitGroup.Wait()
-
- duration := time.Since(startTime)
- GetLogger(namespace).Info("requests finished", "requestCount", requestCount, "duration", duration)
- return results, nil
-}
-
-func createDefaultClient() *http.Client {
- defaultTransport, ok := http.DefaultTransport.(*http.Transport)
- if !ok {
- panic("DefaultTransport is not of type *http.Transport")
- }
- customTransport := defaultTransport.Clone()
- // Allow executing requests against HTTPS endpoints with insecure certificate
- customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
- return &http.Client{Transport: customTransport, Timeout: (time.Duration(10*config.GetLoadFactor()) * time.Second)}
-}
-
-func runRequestRoutine(threadID int, waitGroup *sync.WaitGroup, client *http.Client, namespace string, requestPerThread int, requestInfo HTTPRequestInfo, results []HTTPRequestResult) {
- defer waitGroup.Done()
- GetLogger(namespace).Info("Starting Go routine", "threadID", threadID)
- for i := 0; i < requestPerThread; i++ {
- if success, err := checkHTTPRequestConditionC(client, namespace, requestInfo, checkHTTPResponseSuccessful); err != nil {
- GetLogger(namespace).Error(err, "Go routine failed", "threadID", threadID)
- results[threadID] = HTTPRequestResultError
- return
- } else if !success {
- GetLogger(namespace).Error(fmt.Errorf("Go routine #%d - HTTP POST request to path %s was not successful", threadID, requestInfo.Path), "go routine failed")
- results[threadID] = HTTPRequestResultError
- return
- }
- }
- GetLogger(namespace).Info("Go routine finished", "threadID", threadID)
- results[threadID] = HTTPRequestResultSuccess
-}
-
-// IsHTTPResponseArraySize makes and checks whether an http request returns an array of a specific size
-func IsHTTPResponseArraySize(namespace string, requestInfo HTTPRequestInfo, arraySize int) (bool, error) {
- var httpResponseArray []map[string]interface{}
- err := ExecuteHTTPRequestWithUnmarshalledResponse(namespace, requestInfo, &httpResponseArray)
- if err != nil {
- return false, err
- }
-
- return len(httpResponseArray) == arraySize, nil
-}
-
-// DoesHTTPResponseContain checks whether the response of an http request contains a certain string
-func DoesHTTPResponseContain(namespace string, requestInfo HTTPRequestInfo, responseContent string) (bool, error) {
- resultBody, err := ExecuteHTTPRequestWithStringResponse(namespace, requestInfo)
- if err != nil {
- return false, err
- }
-
- return strings.Contains(resultBody, responseContent), nil
-}
-
-// DoesNotHTTPResponseContain checks whether the response of an http request does not contain a certain string
-func DoesNotHTTPResponseContain(namespace string, requestInfo HTTPRequestInfo, responseContent string) (bool, error) {
- resultBody, err := ExecuteHTTPRequestWithStringResponse(namespace, requestInfo)
- if err != nil {
- return false, err
- }
-
- return !strings.Contains(resultBody, responseContent), nil
-}
-
-// NewGETHTTPRequestInfo constructor creates a new HTTPRequestInfo struct with the GET HTTP method
-func NewGETHTTPRequestInfo(uri, path string) HTTPRequestInfo {
- return HTTPRequestInfo{
- HTTPMethod: "GET",
- URI: uri,
- Path: path,
- }
-}
-
-// NewPOSTHTTPRequestInfo constructor creates a new HTTPRequestInfo struct with the POST HTTP method
-func NewPOSTHTTPRequestInfo(uri, path, bodyFormat, bodyContent string) HTTPRequestInfo {
- return HTTPRequestInfo{
- HTTPMethod: "POST",
- URI: uri,
- Path: path,
- BodyFormat: bodyFormat,
- BodyContent: bodyContent,
- }
-}
-
-// NewPOSTHTTPRequestInfoWithHeaders constructor creates a new HTTPRequestInfo struct with the POST HTTP method and provided headers
-func NewPOSTHTTPRequestInfoWithHeaders(uri, path string, headers map[string]string, bodyFormat, bodyContent string) HTTPRequestInfo {
- request := NewPOSTHTTPRequestInfo(uri, path, bodyFormat, bodyContent)
- request.Headers = headers
- return request
-}
-
-func addHTTPAuthentication(request *http.Request, requestInfo HTTPRequestInfo) {
- if len(requestInfo.Token) > 0 {
- // Bearer authentication
- request.Header.Add("Authorization", "Bearer "+requestInfo.Token)
- }
-}
diff --git a/bddframework/pkg/framework/infinispan.go b/bddframework/pkg/framework/infinispan.go
deleted file mode 100644
index 0cb64645..00000000
--- a/bddframework/pkg/framework/infinispan.go
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright 2020 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package framework
-
-import (
- "fmt"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/config"
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/infrastructure"
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/operator"
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/meta"
-
- "gopkg.in/yaml.v2"
- "k8s.io/apimachinery/pkg/api/errors"
- "k8s.io/apimachinery/pkg/types"
-
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/client/kubernetes"
- infinispan "github.com/kiegroup/kogito-serverless-operator/bddframework/pkg/framework/infrastructure/infinispan/v1"
-)
-
-// DeployInfinispanInstance deploys an instance of Infinispan
-func DeployInfinispanInstance(namespace string, infinispan *infinispan.Infinispan) error {
- GetLogger(namespace).Info("Creating Infinispan instance", "name", infinispan.Name)
-
- if err := kubernetes.ResourceC(kubeClient).Create(infinispan); err != nil {
- return fmt.Errorf("Error while creating Infinispan: %v ", err)
- }
-
- return nil
-}
-
-// CreateInfinispanSecret creates a new secret for Infinispan instance
-func CreateInfinispanSecret(namespace, name string, credentialsMap map[string]string) error {
- GetLogger(namespace).Info("Create Infinispan Secret %s", "name", name)
-
- credentialsFileData, err := convertInfinispanCredentialsToYaml(credentialsMap)
- if err != nil {
- return err
- }
-
- return CreateSecret(namespace, name, map[string]string{infrastructure.InfinispanIdentityFileName: credentialsFileData})
-}
-
-// WaitForInfinispanPodsToBeRunningWithConfig waits for an Infinispan pod to be running with the expected configuration
-func WaitForInfinispanPodsToBeRunningWithConfig(namespace string, expectedConfig infinispan.InfinispanContainerSpec, numberOfPods, timeoutInMin int) error {
- return WaitForOnOpenshift(namespace, fmt.Sprintf("Infinispan pod to be running with expected configuration: %+v", expectedConfig), timeoutInMin,
- func() (bool, error) {
- pods, err := GetPodsWithLabels(namespace, map[string]string{"app": "infinispan-pod"})
- if err != nil || len(pods.Items) != numberOfPods {
- return false, err
- }
-
- for _, pod := range pods.Items {
- // First check that the pod is really running
- if !IsPodStatusConditionReady(&pod) {
- return false, nil
- }
- if !checkContainersResources(pod.Spec.Containers, getResourceRequirements(expectedConfig.CPU, expectedConfig.Memory)) {
- return false, nil
- }
- if !checkPodContainerHasEnvVariableWithValue(&pod, "infinispan", "EXTRA_JAVA_OPTIONS", expectedConfig.ExtraJvmOpts) {
- return false, nil
- }
- }
-
- return true, nil
- })
-
-}
-
-// SetInfinispanReplicas sets the number of replicas for an Infinispan instance
-func SetInfinispanReplicas(namespace, name string, nbPods int) error {
- GetLogger(namespace).Info("Set Infinispan props for", "name", name, "replica number", nbPods)
- infinispan, err := getInfinispan(namespace, name)
- if err != nil {
- return err
- } else if infinispan == nil {
- return fmt.Errorf("No Infinispan found with name %s in namespace %s", name, namespace)
- }
- replicas := int32(nbPods)
- infinispan.Spec.Replicas = replicas
- return kubernetes.ResourceC(kubeClient).Update(infinispan)
-}
-
-// GetInfinispanStub returns the preconfigured Infinispan stub with set namespace, name and secretName
-func GetInfinispanStub(namespace, name, secretName string) *infinispan.Infinispan {
- ispn := &infinispan.Infinispan{
- ObjectMeta: metav1.ObjectMeta{
- Namespace: namespace,
- Name: name,
- },
- Spec: infinispan.InfinispanSpec{
- Replicas: 1,
- Service: infinispan.InfinispanServiceSpec{
- Type: infinispan.ServiceTypeCache,
- },
- },
- }
- if storageClass := config.GetInfinispanStorageClass(); len(storageClass) > 0 {
- if ispn.Spec.Service.Container == nil {
- ispn.Spec.Service.Container = &infinispan.InfinispanServiceContainerSpec{}
- }
- ispn.Spec.Service.Container.StorageClassName = storageClass
- }
-
- return ispn
-}
-
-func convertInfinispanCredentialsToYaml(credentialsMap map[string]string) (string, error) {
- var credentials []infrastructure.InfinispanCredential
- for username, password := range credentialsMap {
- credentials = append(credentials, infrastructure.InfinispanCredential{Username: username, Password: password})
- }
-
- identity := infrastructure.InfinispanIdentity{Credentials: credentials}
-
- data, err := yaml.Marshal(&identity)
- if err != nil {
- return "", err
- }
- return string(data), nil
-}
-
-func getInfinispan(namespace, name string) (*infinispan.Infinispan, error) {
- infinispan := &infinispan.Infinispan{}
- if exists, err := kubernetes.ResourceC(kubeClient).FetchWithKey(types.NamespacedName{Name: name, Namespace: namespace}, infinispan); err != nil && !errors.IsNotFound(err) {
- return nil, fmt.Errorf("Error while trying to look for Infinispan %s: %v ", name, err)
- } else if errors.IsNotFound(err) || !exists {
- return nil, nil
- }
- return infinispan, nil
-}
-
-// IsInfinispanAvailable checks if Infinispan CRD is available in the cluster
-func IsInfinispanAvailable(namespace string) bool {
- context := operator.Context{
- Client: kubeClient,
- Log: GetLogger(namespace),
- Scheme: meta.GetRegisteredSchema(),
- }
- return infrastructure.NewInfinispanHandler(context).IsInfinispanAvailable()
-}
-
-// GetRunningInfinispanPodLabels returns the labels set to infinispan pod instances
-func GetRunningInfinispanPodLabels(crName string) map[string]string {
- return map[string]string{
- "app": "infinispan-pod",
- "infinispan_cr": crName,
- }
-}
diff --git a/bddframework/pkg/framework/infrastructure/grafana/group.go b/bddframework/pkg/framework/infrastructure/grafana/group.go
deleted file mode 100644
index 4c465562..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/group.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2019 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package grafana contains grafana API versions.
-//
-// This file ensures Go source parsers acknowledge the grafana package
-// and any child packages. It can be removed if any other Go source files are
-// added to this package.
-package grafana
diff --git a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/doc.go b/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/doc.go
deleted file mode 100644
index 958c378c..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/doc.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package v1alpha1 contains API Schema definitions for the integreatly v1alpha1 API group
-// +k8s:deepcopy-gen=package,register
-// +groupName=integreatly.org
-package v1alpha1
diff --git a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafana_types.go b/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafana_types.go
deleted file mode 100644
index 4a088b09..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafana_types.go
+++ /dev/null
@@ -1,636 +0,0 @@
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package v1alpha1
-
-import (
- v12 "github.com/openshift/api/route/v1"
- appsv1 "k8s.io/api/apps/v1"
- v1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/api/resource"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// StatusPhase ...
-type StatusPhase string
-
-var (
- // NoPhase ...
- NoPhase StatusPhase
- // PhaseReconciling ...
- PhaseReconciling StatusPhase = "reconciling"
- // PhaseFailing ...
- PhaseFailing StatusPhase = "failing"
-)
-
-// GrafanaSpec defines the desired state of Grafana
-type GrafanaSpec struct {
- Config GrafanaConfig `json:"config"`
- Containers []v1.Container `json:"containers,omitempty"`
- DashboardLabelSelector []*metav1.LabelSelector `json:"dashboardLabelSelector,omitempty"`
- Ingress *GrafanaIngress `json:"ingress,omitempty"`
- InitResources *v1.ResourceRequirements `json:"initResources,omitempty"`
- Secrets []string `json:"secrets,omitempty"`
- ConfigMaps []string `json:"configMaps,omitempty"`
- Service *GrafanaService `json:"service,omitempty"`
- Deployment *GrafanaDeployment `json:"deployment,omitempty"`
- Resources *v1.ResourceRequirements `json:"resources,omitempty"`
- ServiceAccount *GrafanaServiceAccount `json:"serviceAccount,omitempty"`
- Client *GrafanaClient `json:"client,omitempty"`
- DashboardNamespaceSelector *metav1.LabelSelector `json:"dashboardNamespaceSelector,omitempty"`
- DataStorage *GrafanaDataStorage `json:"dataStorage,omitempty"`
- Jsonnet *JsonnetConfig `json:"jsonnet,omitempty"`
- BaseImage string `json:"baseImage,omitempty"`
- InitImage string `json:"initImage,omitempty"`
- LivenessProbeSpec *LivenessProbeSpec `json:"livenessProbeSpec,omitempty"`
- ReadinessProbeSpec *ReadinessProbeSpec `json:"readinessProbeSpec,omitempty"`
-}
-
-// ReadinessProbeSpec ...
-type ReadinessProbeSpec struct {
- InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
- TimeOutSeconds int32 `json:"timeoutSeconds,omitempty"`
- PeriodSeconds int32 `json:"periodSeconds,omitempty"`
- SuccessThreshold int32 `json:"successThreshold,omitempty"`
- FailureThreshold int32 `json:"failureThreshold,omitempty"`
-}
-
-// LivenessProbeSpec ...
-type LivenessProbeSpec struct {
- InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
- TimeOutSeconds int32 `json:"timeoutSeconds,omitempty"`
- PeriodSeconds int32 `json:"periodSeconds,omitempty"`
- SuccessThreshold int32 `json:"successThreshold,omitempty"`
- FailureThreshold int32 `json:"failureThreshold,omitempty"`
-}
-
-// JsonnetConfig ...
-type JsonnetConfig struct {
- LibraryLabelSelector *metav1.LabelSelector `json:"libraryLabelSelector,omitempty"`
-}
-
-// GrafanaClient API client settings
-type GrafanaClient struct {
- TimeoutSeconds *int `json:"timeout,omitempty"`
- PreferService bool `json:"preferService"`
-}
-
-// GrafanaService provides a means to configure the service
-type GrafanaService struct {
- Name string `json:"name,omitempty"`
- Annotations map[string]string `json:"annotations,omitempty"`
- Labels map[string]string `json:"labels,omitempty"`
- Type v1.ServiceType `json:"type,omitempty"`
- Ports []v1.ServicePort `json:"ports,omitempty"`
- ClusterIP string `json:"clusterIP,omitempty"`
-}
-
-// GrafanaDataStorage provides a means to configure the grafana data storage
-type GrafanaDataStorage struct {
- Annotations map[string]string `json:"annotations,omitempty"`
- Labels map[string]string `json:"labels,omitempty"`
- AccessModes []v1.PersistentVolumeAccessMode `json:"accessModes,omitempty"`
- Size resource.Quantity `json:"size,omitempty"`
- Class string `json:"class,omitempty"`
-}
-
-// GrafanaServiceAccount ...
-type GrafanaServiceAccount struct {
- Skip *bool `json:"skip,omitempty"`
- Annotations map[string]string `json:"annotations,omitempty"`
- Labels map[string]string `json:"labels,omitempty"`
- ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
-}
-
-// GrafanaDeployment provides a means to configure the deployment
-type GrafanaDeployment struct {
- Annotations map[string]string `json:"annotations,omitempty"`
- Labels map[string]string `json:"labels,omitempty"`
- Replicas *int32 `json:"replicas,omitempty"`
- NodeSelector map[string]string `json:"nodeSelector,omitempty"`
- Tolerations []v1.Toleration `json:"tolerations,omitempty"`
- Affinity *v1.Affinity `json:"affinity,omitempty"`
- SecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"`
- ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"`
- TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
- EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"`
- Env []v1.EnvVar `json:"env,omitempty"`
- SkipCreateAdminAccount *bool `json:"skipCreateAdminAccount,omitempty"`
- PriorityClassName string `json:"priorityClassName,omitempty"`
- HostNetwork *bool `json:"hostNetwork,omitempty"`
- ExtraVolumes []v1.Volume `json:"extraVolumes,omitempty"`
- ExtraVolumeMounts []v1.VolumeMount `json:"extraVolumeMounts,omitempty"`
- Strategy *appsv1.DeploymentStrategy `json:"strategy,omitempty"`
- HTTPProxy *GrafanaHTTPProxy `json:"httpProxy,omitempty"`
-}
-
-// GrafanaHTTPProxy provides a means to configure the Grafana deployment
-// to use a HTTP(S) proxy when making requests and resolving plugins.
-type GrafanaHTTPProxy struct {
- Enabled bool `json:"enabled"`
- URL string `json:"url,omitempty"`
-}
-
-// GrafanaIngress provides a means to configure the ingress created
-type GrafanaIngress struct {
- Annotations map[string]string `json:"annotations,omitempty"`
- Hostname string `json:"hostname,omitempty"`
- Labels map[string]string `json:"labels,omitempty"`
- Path string `json:"path,omitempty"`
- Enabled bool `json:"enabled,omitempty"`
- TLSEnabled bool `json:"tlsEnabled,omitempty"`
- TLSSecretName string `json:"tlsSecretName,omitempty"`
- TargetPort string `json:"targetPort,omitempty"`
- Termination v12.TLSTerminationType `json:"termination,omitempty"`
- IngressClassName string `json:"ingressClassName,omitempty"`
- PathType string `json:"pathType,omitempty"`
-}
-
-// GrafanaConfig is the configuration for grafana
-type GrafanaConfig struct {
- Paths *GrafanaConfigPaths `json:"paths,omitempty" ini:"paths,omitempty"`
- Server *GrafanaConfigServer `json:"server,omitempty" ini:"server,omitempty"`
- Database *GrafanaConfigDatabase `json:"database,omitempty" ini:"database,omitempty"`
- RemoteCache *GrafanaConfigRemoteCache `json:"remote_cache,omitempty" ini:"remote_cache,omitempty"`
- Security *GrafanaConfigSecurity `json:"security,omitempty" ini:"security,omitempty"`
- Users *GrafanaConfigUsers `json:"users,omitempty" ini:"users,omitempty"`
- Auth *GrafanaConfigAuth `json:"auth,omitempty" ini:"auth,omitempty"`
- AuthBasic *GrafanaConfigAuthBasic `json:"auth.basic,omitempty" ini:"auth.basic,omitempty"`
- AuthAnonymous *GrafanaConfigAuthAnonymous `json:"auth.anonymous,omitempty" ini:"auth.anonymous,omitempty"`
- AuthAzureAD *GrafanaConfigAuthAzureAD `json:"auth.azuread,omitempty" ini:"auth.azuread,omitempty"`
- AuthGoogle *GrafanaConfigAuthGoogle `json:"auth.google,omitempty" ini:"auth.google,omitempty"`
- AuthGithub *GrafanaConfigAuthGithub `json:"auth.github,omitempty" ini:"auth.github,omitempty"`
- AuthGitlab *GrafanaConfigAuthGitlab `json:"auth.gitlab,omitempty" ini:"auth.gitlab,omitempty"`
- AuthGenericOauth *GrafanaConfigAuthGenericOauth `json:"auth.generic_oauth,omitempty" ini:"auth.generic_oauth,omitempty"`
- AuthOkta *GrafanaConfigAuthOkta `json:"auth.okta,omitempty" ini:"auth.okta,omitempty"`
- AuthLdap *GrafanaConfigAuthLdap `json:"auth.ldap,omitempty" ini:"auth.ldap,omitempty"`
- AuthProxy *GrafanaConfigAuthProxy `json:"auth.proxy,omitempty" ini:"auth.proxy,omitempty"`
- AuthSaml *GrafanaConfigAuthSaml `json:"auth.saml,omitempty" ini:"auth.saml,omitempty"`
- DataProxy *GrafanaConfigDataProxy `json:"dataproxy,omitempty" ini:"dataproxy,omitempty"`
- Analytics *GrafanaConfigAnalytics `json:"analytics,omitempty" ini:"analytics,omitempty"`
- Dashboards *GrafanaConfigDashboards `json:"dashboards,omitempty" ini:"dashboards,omitempty"`
- SMTP *GrafanaConfigSMTP `json:"smtp,omitempty" ini:"smtp,omitempty"`
- Log *GrafanaConfigLog `json:"log,omitempty" ini:"log,omitempty"`
- LogConsole *GrafanaConfigLogConsole `json:"log.console,omitempty" ini:"log.console,omitempty"`
- LogFrontend *GrafanaConfigLogFrontend `json:"log.frontend,omitempty" ini:"log.frontend,omitempty"`
- Metrics *GrafanaConfigMetrics `json:"metrics,omitempty" ini:"metrics,omitempty"`
- MetricsGraphite *GrafanaConfigMetricsGraphite `json:"metrics.graphite,omitempty" ini:"metrics.graphite,omitempty"`
- Snapshots *GrafanaConfigSnapshots `json:"snapshots,omitempty" ini:"snapshots,omitempty"`
- ExternalImageStorage *GrafanaConfigExternalImageStorage `json:"external_image_storage,omitempty" ini:"external_image_storage,omitempty"`
- ExternalImageStorageS3 *GrafanaConfigExternalImageStorageS3 `json:"external_image_storage.s3,omitempty" ini:"external_image_storage.s3,omitempty"`
- ExternalImageStorageWebdav *GrafanaConfigExternalImageStorageWebdav `json:"external_image_storage.webdav,omitempty" ini:"external_image_storage.webdav,omitempty"`
- ExternalImageStorageGcs *GrafanaConfigExternalImageStorageGcs `json:"external_image_storage.gcs,omitempty" ini:"external_image_storage.gcs,omitempty"`
- ExternalImageStorageAzureBlob *GrafanaConfigExternalImageStorageAzureBlob `json:"external_image_storage.azure_blob,omitempty" ini:"external_image_storage.azure_blob,omitempty"`
- Alerting *GrafanaConfigAlerting `json:"alerting,omitempty" ini:"alerting,omitempty"`
- Panels *GrafanaConfigPanels `json:"panels,omitempty" ini:"panels,omitempty"`
- Plugins *GrafanaConfigPlugins `json:"plugins,omitempty" ini:"plugins,omitempty"`
- Rendering *GrafanaConfigRendering `json:"rendering,omitempty" ini:"rendering,omitempty"`
- FeatureToggles *GrafanaConfigFeatureToggles `json:"feature_toggles,omitempty" ini:"feature_toggles,omitempty"`
-}
-
-// GrafanaConfigPaths ...
-type GrafanaConfigPaths struct {
- TempDataLifetime string `json:"temp_data_lifetime,omitempty" ini:"temp_data_lifetime,omitempty"`
-}
-
-// GrafanaConfigServer ...
-type GrafanaConfigServer struct {
- HTTPAddr string `json:"http_addr,omitempty" ini:"http_addr,omitempty"`
- HTTPPort string `json:"http_port,omitempty" ini:"http_port,omitempty"`
- Protocol string `json:"protocol,omitempty" ini:"protocol,omitempty"`
- Socket string `json:"socket,omitempty" ini:"socket,omitempty"`
- Domain string `json:"domain,omitempty" ini:"domain,omitempty"`
- EnforceDomain *bool `json:"enforce_domain,omitempty" ini:"enforce_domain"`
- RootURL string `json:"root_url,omitempty" ini:"root_url,omitempty"`
- ServeFromSubPath *bool `json:"serve_from_sub_path,omitempty" ini:"serve_from_sub_path"`
- StaticRootPath string `json:"static_root_path,omitempty" ini:"static_root_path,omitempty"`
- EnableGzip *bool `json:"enable_gzip,omitempty" ini:"enable_gzip"`
- CertFile string `json:"cert_file,omitempty" ini:"cert_file,omitempty"`
- CertKey string `json:"cert_key,omitempty" ini:"cert_key,omitempty"`
- RouterLogging *bool `json:"router_logging,omitempty" ini:"router_logging"`
-}
-
-// GrafanaConfigDatabase ...
-type GrafanaConfigDatabase struct {
- URL string `json:"url,omitempty" ini:"url,omitempty"`
- Type string `json:"type,omitempty" ini:"type,omitempty"`
- Path string `json:"path,omitempty" ini:"path,omitempty"`
- Host string `json:"host,omitempty" ini:"host,omitempty"`
- Name string `json:"name,omitempty" ini:"name,omitempty"`
- User string `json:"user,omitempty" ini:"user,omitempty"`
- Password string `json:"password,omitempty" ini:"password,omitempty"`
- SslMode string `json:"ssl_mode,omitempty" ini:"ssl_mode,omitempty"`
- CaCertPath string `json:"ca_cert_path,omitempty" ini:"ca_cert_path,omitempty"`
- ClientKeyPath string `json:"client_key_path,omitempty" ini:"client_key_path,omitempty"`
- ClientCertPath string `json:"client_cert_path,omitempty" ini:"client_cert_path,omitempty"`
- ServerCertName string `json:"server_cert_name,omitempty" ini:"server_cert_name,omitempty"`
- MaxIdleConn *int `json:"max_idle_conn,omitempty" ini:"max_idle_conn,omitempty"`
- MaxOpenConn *int `json:"max_open_conn,omitempty" ini:"max_open_conn,omitempty"`
- ConnMaxLifetime *int `json:"conn_max_lifetime,omitempty" ini:"conn_max_lifetime,omitempty"`
- LogQueries *bool `json:"log_queries,omitempty" ini:"log_queries"`
- CacheMode string `json:"cache_mode,omitempty" ini:"cache_mode,omitempty"`
-}
-
-// GrafanaConfigRemoteCache ...
-type GrafanaConfigRemoteCache struct {
- Type string `json:"type,omitempty" ini:"type,omitempty"`
- ConnStr string `json:"connstr,omitempty" ini:"connstr,omitempty"`
-}
-
-// GrafanaConfigSecurity ...
-type GrafanaConfigSecurity struct {
- AdminUser string `json:"admin_user,omitempty" ini:"admin_user,omitempty"`
- AdminPassword string `json:"admin_password,omitempty" ini:"admin_password,omitempty"`
- LoginRememberDays *int `json:"login_remember_days,omitempty" ini:"login_remember_days,omitempty"`
- SecretKey string `json:"secret_key,omitempty" ini:"secret_key,omitempty"`
- DisableGravatar *bool `json:"disable_gravatar,omitempty" ini:"disable_gravatar"`
- DataSourceProxyWhitelist string `json:"data_source_proxy_whitelist,omitempty" ini:"data_source_proxy_whitelist,omitempty"`
- CookieSecure *bool `json:"cookie_secure,omitempty" ini:"cookie_secure"`
- CookieSamesite string `json:"cookie_samesite,omitempty" ini:"cookie_samesite,omitempty"`
- AllowEmbedding *bool `json:"allow_embedding,omitempty" ini:"allow_embedding"`
- StrictTransportSecurity *bool `json:"strict_transport_security,omitempty" ini:"strict_transport_security"`
- StrictTransportSecurityMaxAgeSeconds *int `json:"strict_transport_security_max_age_seconds,omitempty" ini:"strict_transport_security_max_age_seconds,omitempty"`
- StrictTransportSecurityPreload *bool `json:"strict_transport_security_preload,omitempty" ini:"strict_transport_security_preload"`
- StrictTransportSecuritySubdomains *bool `json:"strict_transport_security_subdomains,omitempty" ini:"strict_transport_security_subdomains"`
- XContentTypeOptions *bool `json:"x_content_type_options,omitempty" ini:"x_content_type_options"`
- XXssProtection *bool `json:"x_xss_protection,omitempty" ini:"x_xss_protection"`
-}
-
-// GrafanaConfigUsers ...
-type GrafanaConfigUsers struct {
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- AllowOrgCreate *bool `json:"allow_org_create,omitempty" ini:"allow_org_create"`
- AutoAssignOrg *bool `json:"auto_assign_org,omitempty" ini:"auto_assign_org"`
- AutoAssignOrgID string `json:"auto_assign_org_id,omitempty" ini:"auto_assign_org_id,omitempty"`
- AutoAssignOrgRole string `json:"auto_assign_org_role,omitempty" ini:"auto_assign_org_role,omitempty"`
- ViewersCanEdit *bool `json:"viewers_can_edit,omitempty" ini:"viewers_can_edit"`
- EditorsCanAdmin *bool `json:"editors_can_admin,omitempty" ini:"editors_can_admin"`
- LoginHint string `json:"login_hint,omitempty" ini:"login_hint,omitempty"`
- PasswordHint string `json:"password_hint,omitempty" ini:"password_hint,omitempty"`
- DefaultTheme string `json:"default_theme,omitempty" ini:"default_theme,omitempty"`
-}
-
-// GrafanaConfigAuth ...
-type GrafanaConfigAuth struct {
- LoginCookieName string `json:"login_cookie_name,omitempty" ini:"login_cookie_name,omitempty"`
- LoginMaximumInactiveLifetimeDays *int `json:"login_maximum_inactive_lifetime_days,omitempty" ini:"login_maximum_inactive_lifetime_days,omitempty"`
- LoginMaximumInactiveLifetimeDuration string `json:"login_maximum_inactive_lifetime_duration,omitempty" ini:"login_maximum_inactive_lifetime_duration,omitempty"`
- LoginMaximumLifetimeDays *int `json:"login_maximum_lifetime_days,omitempty" ini:"login_maximum_lifetime_days,omitempty"`
- LoginMaximumLifetimeDuration string `json:"login_maximum_lifetime_duration,omitempty" ini:"login_maximum_lifetime_duration,omitempty"`
- TokenRotationIntervalMinutes *int `json:"token_rotation_interval_minutes,omitempty" ini:"token_rotation_interval_minutes,omitempty"`
- DisableLoginForm *bool `json:"disable_login_form,omitempty" ini:"disable_login_form"`
- DisableSignoutMenu *bool `json:"disable_signout_menu,omitempty" ini:"disable_signout_menu"`
- SigV4AuthEnabled *bool `json:"sigv4_auth_enabled,omitempty" ini:"sigv4_auth_enabled"`
- SignoutRedirectURL string `json:"signout_redirect_url,omitempty" ini:"signout_redirect_url,omitempty"`
- OauthAutoLogin *bool `json:"oauth_auto_login,omitempty" ini:"oauth_auto_login"`
-}
-
-// GrafanaConfigAuthBasic ...
-type GrafanaConfigAuthBasic struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
-}
-
-// GrafanaConfigAuthAnonymous ...
-type GrafanaConfigAuthAnonymous struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- OrgName string `json:"org_name,omitempty" ini:"org_name,omitempty"`
- OrgRole string `json:"org_role,omitempty" ini:"org_role,omitempty"`
-}
-
-// GrafanaConfigAuthSaml ...
-type GrafanaConfigAuthSaml struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- SingleLogout *bool `json:"single_logout,omitempty" ini:"single_logout,omitempty"`
- AllowIdpInitiated *bool `json:"allow_idp_initiated,omitempty" ini:"allow_idp_initiated,omitempty"`
- CertificatePath string `json:"certificate_path,omitempty" ini:"certificate_path"`
- KeyPath string `json:"private_key_path,omitempty" ini:"private_key_path"`
- SignatureAlgorithm string `json:"signature_algorithm,omitempty" ini:"signature_algorithm,omitempty"`
- IdpURL string `json:"idp_metadata_url,omitempty" ini:"idp_metadata_url"`
- MaxIssueDelay string `json:"max_issue_delay,omitempty" ini:"max_issue_delay,omitempty"`
- MetadataValidDuration string `json:"metadata_valid_duration,omitempty" ini:"metadata_valid_duration,omitempty"`
- RelayState string `json:"relay_state,omitempty" ini:"relay_state,omitempty"`
- AssertionAttributeName string `json:"assertion_attribute_name,omitempty" ini:"assertion_attribute_name,omitempty"`
- AssertionAttributeLogin string `json:"assertion_attribute_login,omitempty" ini:"assertion_attribute_login,omitempty"`
- AssertionAttributeEmail string `json:"assertion_attribute_email,omitempty" ini:"assertion_attribute_email,omitempty"`
- AssertionAttributeGroups string `json:"assertion_attribute_groups,omitempty" ini:"assertion_attribute_groups,omitempty"`
- AssertionAttributeRole string `json:"assertion_attribute_role,omitempty" ini:"assertion_attribute_role,omitempty"`
- AssertionAttributeOrg string `json:"assertion_attribute_org,omitempty" ini:"assertion_attribute_org,omitempty"`
- AllowedOrganizations string `json:"allowed_organizations,omitempty" ini:"allowed_organizations,omitempty"`
- OrgMapping string `json:"org_mapping,omitempty" ini:"org_mapping,omitempty"`
- RoleValuesEditor string `json:"role_values_editor,omitempty" ini:"role_values_editor,omitempty"`
- RoleValuesAdmin string `json:"role_values_admin,omitempty" ini:"role_values_admin,omitempty"`
- RoleValuesGrafanaAdmin string `json:"role_values_grafana_admin,omitempty" ini:"role_values_grafana_admin,omitempty"`
-}
-
-// GrafanaConfigAuthAzureAD ...
-type GrafanaConfigAuthAzureAD struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- ClientID string `json:"client_id,omitempty" ini:"client_id,omitempty"`
- ClientSecret string `json:"client_secret,omitempty" ini:"client_secret,omitempty"`
- Scopes string `json:"scopes,omitempty" ini:"scopes,omitempty"`
- AuthURL string `json:"auth_url,omitempty" ini:"auth_url,omitempty"`
- TokenURL string `json:"token_url,omitempty" ini:"token_url,omitempty"`
- AllowedDomains string `json:"allowed_domains,omitempty" ini:"allowed_domains,omitempty"`
- AllowedGroups string `json:"allowed_groups,omitempty" ini:"allowed_groups,omitempty"`
-}
-
-// GrafanaConfigAuthGoogle ...
-type GrafanaConfigAuthGoogle struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- ClientID string `json:"client_id,omitempty" ini:"client_id,omitempty"`
- ClientSecret string `json:"client_secret,omitempty" ini:"client_secret,omitempty"`
- Scopes string `json:"scopes,omitempty" ini:"scopes,omitempty"`
- AuthURL string `json:"auth_url,omitempty" ini:"auth_url,omitempty"`
- TokenURL string `json:"token_url,omitempty" ini:"token_url,omitempty"`
- AllowedDomains string `json:"allowed_domains,omitempty" ini:"allowed_domains,omitempty"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
-}
-
-// GrafanaConfigAuthGithub ...
-type GrafanaConfigAuthGithub struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- ClientID string `json:"client_id,omitempty" ini:"client_id,omitempty"`
- ClientSecret string `json:"client_secret,omitempty" ini:"client_secret,omitempty"`
- Scopes string `json:"scopes,omitempty" ini:"scopes,omitempty"`
- AuthURL string `json:"auth_url,omitempty" ini:"auth_url,omitempty"`
- TokenURL string `json:"token_url,omitempty" ini:"token_url,omitempty"`
- APIURL string `json:"api_url,omitempty" ini:"api_url,omitempty"`
- TeamIds string `json:"team_ids,omitempty" ini:"team_ids,omitempty"`
- AllowedOrganizations string `json:"allowed_organizations,omitempty" ini:"allowed_organizations,omitempty"`
-}
-
-// GrafanaConfigAuthGitlab ...
-type GrafanaConfigAuthGitlab struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- ClientID string `json:"client_id,omitempty" ini:"client_id,omitempty"`
- ClientSecret string `json:"client_secret,omitempty" ini:"client_secret,omitempty"`
- Scopes string `json:"scopes,omitempty" ini:"scopes,omitempty"`
- AuthURL string `json:"auth_url,omitempty" ini:"auth_url,omitempty"`
- TokenURL string `json:"token_url,omitempty" ini:"token_url,omitempty"`
- APIURL string `json:"api_url,omitempty" ini:"api_url,omitempty"`
- AllowedGroups string `json:"allowed_groups,omitempty" ini:"allowed_groups,omitempty"`
-}
-
-// GrafanaConfigAuthGenericOauth ...
-type GrafanaConfigAuthGenericOauth struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- ClientID string `json:"client_id,omitempty" ini:"client_id,omitempty"`
- ClientSecret string `json:"client_secret,omitempty" ini:"client_secret,omitempty"`
- Scopes string `json:"scopes,omitempty" ini:"scopes,omitempty"`
- AuthURL string `json:"auth_url,omitempty" ini:"auth_url,omitempty"`
- TokenURL string `json:"token_url,omitempty" ini:"token_url,omitempty"`
- APIURL string `json:"api_url,omitempty" ini:"api_url,omitempty"`
- AllowedDomains string `json:"allowed_domains,omitempty" ini:"allowed_domains,omitempty"`
- RoleAttributePath string `json:"role_attribute_path,omitempty" ini:"role_attribute_path,omitempty"`
- RoleAttributeStrict *bool `json:"role_attribute_strict,omitempty" ini:"role_attribute_strict,omitempty"`
- EmailAttributePath string `json:"email_attribute_path,omitempty" ini:"email_attribute_path,omitempty"`
- TLSSkipVerifyInsecure *bool `json:"tls_skip_verify_insecure,omitempty" ini:"tls_skip_verify_insecure,omitempty"`
- TLSClientCert string `json:"tls_client_cert,omitempty" ini:"tls_client_cert,omitempty"`
- TLSClientKey string `json:"tls_client_key,omitempty" ini:"tls_client_key,omitempty"`
- TLSClientCa string `json:"tls_client_ca,omitempty" ini:"tls_auth_ca,omitempty"`
-}
-
-// GrafanaConfigAuthOkta ...
-type GrafanaConfigAuthOkta struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- Name string `json:"name,omitempty" ini:"name,omitempty"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- ClientID string `json:"client_id,omitempty" ini:"client_id,omitempty"`
- ClientSecret string `json:"client_secret,omitempty" ini:"client_secret,omitempty"`
- Scopes string `json:"scopes,omitempty" ini:"scopes,omitempty"`
- AuthURL string `json:"auth_url,omitempty" ini:"auth_url,omitempty"`
- TokenURL string `json:"token_url,omitempty" ini:"token_url,omitempty"`
- APIURL string `json:"api_url,omitempty" ini:"api_url,omitempty"`
- AllowedDomains string `json:"allowed_domains,omitempty" ini:"allowed_domains,omitempty"`
- AllowedGroups string `json:"allowed_groups,omitempty" ini:"allowed_groups,omitempty"`
- RoleAttributePath string `json:"role_attribute_path,omitempty" ini:"role_attribute_path,omitempty"`
- RoleAttributeStrict *bool `json:"role_attribute_strict,omitempty" ini:"role_attribute_strict,omitempty"`
-}
-
-// GrafanaConfigAuthLdap ...
-type GrafanaConfigAuthLdap struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- AllowSignUp *bool `json:"allow_sign_up,omitempty" ini:"allow_sign_up"`
- ConfigFile string `json:"config_file,omitempty" ini:"config_file,omitempty"`
-}
-
-// GrafanaConfigAuthProxy ...
-type GrafanaConfigAuthProxy struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- HeaderName string `json:"header_name,omitempty" ini:"header_name,omitempty"`
- HeaderProperty string `json:"header_property,omitempty" ini:"header_property,omitempty"`
- AutoSignUp *bool `json:"auto_sign_up,omitempty" ini:"auto_sign_up"`
- LdapSyncTTL string `json:"ldap_sync_ttl,omitempty" ini:"ldap_sync_ttl,omitempty"`
- Whitelist string `json:"whitelist,omitempty" ini:"whitelist,omitempty"`
- Headers string `json:"headers,omitempty" ini:"headers,omitempty"`
- EnableLoginToken *bool `json:"enable_login_token,omitempty" ini:"enable_login_token"`
-}
-
-// GrafanaConfigDataProxy ...
-type GrafanaConfigDataProxy struct {
- Logging *bool `json:"logging,omitempty" ini:"logging"`
- Timeout *int `json:"timeout,omitempty" ini:"timeout,omitempty"`
- SendUserHeader *bool `json:"send_user_header,omitempty" ini:"send_user_header,omitempty"`
-}
-
-// GrafanaConfigAnalytics ...
-type GrafanaConfigAnalytics struct {
- ReportingEnabled *bool `json:"reporting_enabled,omitempty" ini:"reporting_enabled"`
- GoogleAnalyticsUaID string `json:"google_analytics_ua_id,omitempty" ini:"google_analytics_ua_id,omitempty"`
- CheckForUpdates *bool `json:"check_for_updates,omitempty" ini:"check_for_updates"`
-}
-
-// GrafanaConfigDashboards ...
-type GrafanaConfigDashboards struct {
- VersionsToKeep *int `json:"versions_to_keep,omitempty" ini:"versions_to_keep,omitempty"`
-}
-
-// GrafanaConfigSMTP ...
-type GrafanaConfigSMTP struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- Host string `json:"host,omitempty" ini:"host,omitempty"`
- User string `json:"user,omitempty" ini:"user,omitempty"`
- Password string `json:"password,omitempty" ini:"password,omitempty"`
- CertFile string `json:"cert_file,omitempty" ini:"cert_file,omitempty"`
- KeyFile string `json:"key_file,omitempty" ini:"key_file,omitempty"`
- SkipVerify *bool `json:"skip_verify,omitempty" ini:"skip_verify"`
- FromAddress string `json:"from_address,omitempty" ini:"from_address,omitempty"`
- FromName string `json:"from_name,omitempty" ini:"from_name,omitempty"`
- EhloIdentity string `json:"ehlo_identity,omitempty" ini:"ehlo_identity,omitempty"`
-}
-
-// GrafanaConfigLog ...
-type GrafanaConfigLog struct {
- Mode string `json:"mode,omitempty" ini:"mode,omitempty"`
- Level string `json:"level,omitempty" ini:"level,omitempty"`
- Filters string `json:"filters,omitempty" ini:"filters,omitempty"`
-}
-
-// GrafanaConfigLogFrontend ...
-type GrafanaConfigLogFrontend struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled,omitempty"`
- SentryDsn string `json:"sentry_dsn,omitempty" ini:"sentry_dsn,omitempty"`
- CustomEndpoint string `json:"custom_endpoint,omitempty" ini:"custom_endpoint,omitempty"`
- SampleRate string `json:"sample_rate,omitempty" ini:"sample_rate,omitempty"`
- LogEndpointRequestsPerSecondLimit *int `json:"log_endpoint_requests_per_second_limit,omitempty" ini:"log_endpoint_requests_per_second_limit,omitempty"`
- LogEndpointBurstLimit *int `json:"log_endpoint_burst_limit,omitempty" ini:"log_endpoint_burst_limit,omitempty"`
-}
-
-// GrafanaConfigLogConsole ...
-type GrafanaConfigLogConsole struct {
- Level string `json:"level,omitempty" ini:"level,omitempty"`
- Format string `json:"format,omitempty" ini:"format,omitempty"`
-}
-
-// GrafanaConfigMetrics ...
-type GrafanaConfigMetrics struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- BasicAuthUsername string `json:"basic_auth_username,omitempty" ini:"basic_auth_username,omitempty"`
- BasicAuthPassword string `json:"basic_auth_password,omitempty" ini:"basic_auth_password,omitempty"`
- IntervalSeconds *int `json:"interval_seconds,omitempty" ini:"interval_seconds,omitempty"`
-}
-
-// GrafanaConfigMetricsGraphite ...
-type GrafanaConfigMetricsGraphite struct {
- Address string `json:"address,omitempty" ini:"address,omitempty"`
- Prefix string `json:"prefix,omitempty" ini:"prefix,omitempty"`
-}
-
-// GrafanaConfigSnapshots ...
-type GrafanaConfigSnapshots struct {
- ExternalEnabled *bool `json:"external_enabled,omitempty" ini:"external_enabled"`
- ExternalSnapshotURL string `json:"external_snapshot_url,omitempty" ini:"external_snapshot_url,omitempty"`
- ExternalSnapshotName string `json:"external_snapshot_name,omitempty" ini:"external_snapshot_name,omitempty"`
- SnapshotRemoveExpired *bool `json:"snapshot_remove_expired,omitempty" ini:"snapshot_remove_expired"`
-}
-
-// GrafanaConfigExternalImageStorage ...
-type GrafanaConfigExternalImageStorage struct {
- Provider string `json:"provider,omitempty" ini:"provider,omitempty"`
-}
-
-// GrafanaConfigExternalImageStorageS3 ...
-type GrafanaConfigExternalImageStorageS3 struct {
- Bucket string `json:"bucket,omitempty" ini:"bucket,omitempty"`
- Region string `json:"region,omitempty" ini:"region,omitempty"`
- Path string `json:"path,omitempty" ini:"path,omitempty"`
- BucketURL string `json:"bucket_url,omitempty" ini:"bucket_url,omitempty"`
- AccessKey string `json:"access_key,omitempty" ini:"access_key,omitempty"`
- SecretKey string `json:"secret_key,omitempty" ini:"secret_key,omitempty"`
-}
-
-// GrafanaConfigExternalImageStorageWebdav ...
-type GrafanaConfigExternalImageStorageWebdav struct {
- URL string `json:"url,omitempty" ini:"url,omitempty"`
- PublicURL string `json:"public_url,omitempty" ini:"public_url,omitempty"`
- Username string `json:"username,omitempty" ini:"username,omitempty"`
- Password string `json:"password,omitempty" ini:"password,omitempty"`
-}
-
-// GrafanaConfigExternalImageStorageGcs ...
-type GrafanaConfigExternalImageStorageGcs struct {
- KeyFile string `json:"key_file,omitempty" ini:"key_file,omitempty"`
- Bucket string `json:"bucket,omitempty" ini:"bucket,omitempty"`
- Path string `json:"path,omitempty" ini:"path,omitempty"`
-}
-
-// GrafanaConfigExternalImageStorageAzureBlob ...
-type GrafanaConfigExternalImageStorageAzureBlob struct {
- AccountName string `json:"account_name,omitempty" ini:"account_name,omitempty"`
- AccountKey string `json:"account_key,omitempty" ini:"account_key,omitempty"`
- ContainerName string `json:"container_name,omitempty" ini:"container_name,omitempty"`
-}
-
-// GrafanaConfigAlerting ...
-type GrafanaConfigAlerting struct {
- Enabled *bool `json:"enabled,omitempty" ini:"enabled"`
- ExecuteAlerts *bool `json:"execute_alerts,omitempty" ini:"execute_alerts"`
- ErrorOrTimeout string `json:"error_or_timeout,omitempty" ini:"error_or_timeout,omitempty"`
- NodataOrNullvalues string `json:"nodata_or_nullvalues,omitempty" ini:"nodata_or_nullvalues,omitempty"`
- ConcurrentRenderLimit *int `json:"concurrent_render_limit,omitempty" ini:"concurrent_render_limit,omitempty"`
- EvaluationTimeoutSeconds *int `json:"evaluation_timeout_seconds,omitempty" ini:"evaluation_timeout_seconds,omitempty"`
- NotificationTimeoutSeconds *int `json:"notification_timeout_seconds,omitempty" ini:"notification_timeout_seconds,omitempty"`
- MaxAttempts *int `json:"max_attempts,omitempty" ini:"max_attempts,omitempty"`
-}
-
-// GrafanaConfigPanels ...
-type GrafanaConfigPanels struct {
- DisableSanitizeHTML *bool `json:"disable_sanitize_html,omitempty" ini:"disable_sanitize_html"`
-}
-
-// GrafanaConfigPlugins ...
-type GrafanaConfigPlugins struct {
- EnableAlpha *bool `json:"enable_alpha,omitempty" ini:"enable_alpha"`
-}
-
-// GrafanaConfigRendering ...
-type GrafanaConfigRendering struct {
- ServerURL string `json:"server_url,omitempty" ini:"server_url"`
- CallbackURL string `json:"callback_url,omitempty" ini:"callback_url"`
- ConcurrentRenderRequestLimit *int `json:"concurrent_render_request_limit,omitempty" ini:"concurrent_render_request_limit,omitempty"`
-}
-
-// GrafanaConfigFeatureToggles ...
-type GrafanaConfigFeatureToggles struct {
- Enable string `json:"enable,omitempty" ini:"enable,omitempty"`
-}
-
-// GrafanaStatus defines the observed state of Grafana
-type GrafanaStatus struct {
- Phase StatusPhase `json:"phase,omitempty"`
- PreviousServiceName string `json:"previousServiceName,omitempty"`
- Message string `json:"message,omitempty"`
- InstalledDashboards []*GrafanaDashboardRef `json:"dashboards,omitempty"`
- InstalledPlugins PluginList `json:"installedPlugins,omitempty"`
- FailedPlugins PluginList `json:"failedPlugins,omitempty"`
-}
-
-// PluginList ...
-type PluginList []GrafanaPlugin
-
-// GrafanaPlugin contains information about a single plugin
-// +k8s:openapi-gen=true
-type GrafanaPlugin struct {
- // +kubebuilder:validation:Required
- Name string `json:"name"`
- // +kubebuilder:validation:Required
- Version string `json:"version"`
-}
-
-// Grafana is the Schema for the grafanas API
-// +kubebuilder:object:root=true
-// +kubebuilder:subresource:status
-type Grafana struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ObjectMeta `json:"metadata,omitempty"`
-
- Spec GrafanaSpec `json:"spec,omitempty"`
- Status GrafanaStatus `json:"status,omitempty"`
-}
-
-// GrafanaList contains a list of Grafana
-// +kubebuilder:object:root=true
-type GrafanaList struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ListMeta `json:"metadata,omitempty"`
- Items []Grafana `json:"items"`
-}
-
-func init() {
- SchemeBuilder.Register(&Grafana{}, &GrafanaList{})
-}
diff --git a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafanadashboard_types.go b/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafanadashboard_types.go
deleted file mode 100644
index cdd1547c..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafanadashboard_types.go
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-Copyright 2021.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1alpha1
-
-import (
- corev1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
-// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
-
-// GrafanaDashboardSpec defines the desired state of GrafanaDashboard
-type GrafanaDashboardSpec struct {
- // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
- // Important: Run "make" to regenerate code after modifying this file
- JSON string `json:"json"`
- Jsonnet string `json:"jsonnet,omitempty"`
- Plugins PluginList `json:"plugins,omitempty"`
- URL string `json:"url,omitempty"`
- ConfigMapRef *corev1.ConfigMapKeySelector `json:"configMapRef,omitempty"`
- Datasources []GrafanaDashboardDatasource `json:"datasources,omitempty"`
- CustomFolderName string `json:"customFolderName,omitempty"`
-}
-
-// GrafanaDashboardDatasource ...
-type GrafanaDashboardDatasource struct {
- InputName string `json:"inputName"`
- DatasourceName string `json:"datasourceName"`
-}
-
-// GrafanaDashboardRef Used to keep a dashboard reference without having access to the dashboard
-// struct itself
-type GrafanaDashboardRef struct {
- Name string `json:"name"`
- Namespace string `json:"namespace"`
- UID string `json:"uid"`
- Hash string `json:"hash"`
- FolderID *int64 `json:"folderId"`
- FolderName string `json:"folderName"`
-}
-
-// GrafanaDashboardStatus ...
-type GrafanaDashboardStatus struct {
- // Empty
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:object:root=true
-// +kubebuilder:subresource:status
-
-// GrafanaDashboard is the Schema for the grafanadashboards API
-type GrafanaDashboard struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ObjectMeta `json:"metadata,omitempty"`
-
- Spec GrafanaDashboardSpec `json:"spec,omitempty"`
- Status GrafanaDashboardStatus `json:"status,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:object:root=true
-
-// GrafanaDashboardList contains a list of GrafanaDashboard
-type GrafanaDashboardList struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ListMeta `json:"metadata,omitempty"`
- Items []GrafanaDashboard `json:"items"`
-}
-
-func init() {
- SchemeBuilder.Register(&GrafanaDashboard{}, &GrafanaDashboardList{})
-}
diff --git a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafanadatasource_types.go b/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafanadatasource_types.go
deleted file mode 100644
index 4193c724..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/grafanadatasource_types.go
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-Copyright 2021.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1alpha1
-
-import (
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
-// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
-
-// GrafanaDataSourceSpec defines the desired state of GrafanaDataSource
-type GrafanaDataSourceSpec struct {
- // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
- // Important: Run "make" to regenerate code after modifying this file
-
- Datasources []GrafanaDataSourceFields `json:"datasources"`
- Name string `json:"name"`
-}
-
-// GrafanaDataSourceStatus defines the observed state of GrafanaDatasource
-type GrafanaDataSourceStatus struct {
- Phase StatusPhase `json:"phase"`
- Message string `json:"message"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// +kubebuilder:object:root=true
-// +kubebuilder:subresource:status
-
-// GrafanaDataSource is the Schema for the grafanadatasources API
-type GrafanaDataSource struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ObjectMeta `json:"metadata,omitempty"`
-
- Spec GrafanaDataSourceSpec `json:"spec,omitempty"`
- Status GrafanaDataSourceStatus `json:"status,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// GrafanaDataSourceList contains a list of GrafanaDataSource
-// +kubebuilder:object:root=true
-type GrafanaDataSourceList struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ListMeta `json:"metadata,omitempty"`
- Items []GrafanaDataSource `json:"items"`
-}
-
-// GrafanaDataSourceFields ...
-type GrafanaDataSourceFields struct {
- Name string `json:"name"`
- Type string `json:"type"`
- UID string `json:"uid,omitempty"`
- Access string `json:"access"`
- OrgID int `json:"orgId,omitempty"`
- URL string `json:"url"`
- Password string `json:"password,omitempty"`
- User string `json:"user,omitempty"`
- Database string `json:"database,omitempty"`
- BasicAuth bool `json:"basicAuth,omitempty"`
- BasicAuthUser string `json:"basicAuthUser,omitempty"`
- BasicAuthPassword string `json:"basicAuthPassword,omitempty"`
- WithCredentials bool `json:"withCredentials,omitempty"`
- IsDefault bool `json:"isDefault,omitempty"`
- JSONData GrafanaDataSourceJSONData `json:"jsonData,omitempty"`
- SecureJSONData GrafanaDataSourceSecureJSONData `json:"secureJsonData,omitempty"`
- Version int `json:"version,omitempty"`
- Editable bool `json:"editable,omitempty"`
-}
-
-// GrafanaDataSourceJSONData The most common json options
-// See https://grafana.com/docs/administration/provisioning/#datasources
-type GrafanaDataSourceJSONData struct {
- OauthPassThru bool `json:"oauthPassThru,omitempty"`
- TLSAuth bool `json:"tlsAuth,omitempty"`
- TLSAuthWithCACert bool `json:"tlsAuthWithCACert,omitempty"`
- TLSSkipVerify bool `json:"tlsSkipVerify,omitempty"`
- GraphiteVersion string `json:"graphiteVersion,omitempty"`
- TimeInterval string `json:"timeInterval,omitempty"`
- EsVersion int `json:"esVersion,omitempty"`
- TimeField string `json:"timeField,omitempty"`
- Interval string `json:"interval,omitempty"`
- LogMessageField string `json:"logMessageField,omitempty"`
- LogLevelField string `json:"logLevelField,omitempty"`
- AuthType string `json:"authType,omitempty"`
- AssumeRoleArn string `json:"assumeRoleArn,omitempty"`
- DefaultRegion string `json:"defaultRegion,omitempty"`
- CustomMetricsNamespaces string `json:"customMetricsNamespaces,omitempty"`
- TsdbVersion string `json:"tsdbVersion,omitempty"`
- TsdbResolution string `json:"tsdbResolution,omitempty"`
- Sslmode string `json:"sslmode,omitempty"`
- Encrypt string `json:"encrypt,omitempty"`
- PostgresVersion int `json:"postgresVersion,omitempty"`
- Timescaledb bool `json:"timescaledb,omitempty"`
- MaxOpenConns int `json:"maxOpenConns,omitempty"`
- MaxIdleConns int `json:"maxIdleConns,omitempty"`
- ConnMaxLifetime int `json:"connMaxLifetime,omitempty"`
- // Useful fields for clickhouse datasource
- // See https://github.com/Vertamedia/clickhouse-grafana/tree/master/dist/README.md#configure-the-datasource-with-provisioning
- // See https://github.com/Vertamedia/clickhouse-grafana/tree/master/src/datasource.ts#L44
- AddCorsHeader bool `json:"addCorsHeader,omitempty"`
- DefaultDatabase string `json:"defaultDatabase,omitempty"`
- UsePOST bool `json:"usePOST,omitempty"`
- UseYandexCloudAuthorization bool `json:"useYandexCloudAuthorization,omitempty"`
- XHeaderUser string `json:"xHeaderUser,omitempty"`
- XHeaderKey string `json:"xHeaderKey,omitempty"`
- // Custom HTTP headers for datasources
- // See https://grafana.com/docs/grafana/latest/administration/provisioning/#datasources
- HTTPHeaderName1 string `json:"httpHeaderName1,omitempty"`
- HTTPHeaderName2 string `json:"httpHeaderName2,omitempty"`
- HTTPHeaderName3 string `json:"httpHeaderName3,omitempty"`
- HTTPHeaderName4 string `json:"httpHeaderName4,omitempty"`
- HTTPHeaderName5 string `json:"httpHeaderName5,omitempty"`
- HTTPHeaderName6 string `json:"httpHeaderName6,omitempty"`
- HTTPHeaderName7 string `json:"httpHeaderName7,omitempty"`
- HTTPHeaderName8 string `json:"httpHeaderName8,omitempty"`
- HTTPHeaderName9 string `json:"httpHeaderName9,omitempty"`
- // Fields for Stackdriver data sources
- TokenURI string `json:"tokenUri,omitempty"`
- ClientEmail string `json:"clientEmail,omitempty"`
- AuthenticationType string `json:"authenticationType,omitempty"`
- DefaultProject string `json:"defaultProject,omitempty"`
- // Fields for Azure data sources
- AppInsightsAppID string `json:"appInsightsAppId,omitempty"`
- AzureLogAnalyticsSameAs string `json:"azureLogAnalyticsSameAs,omitempty"`
- ClientID string `json:"clientId,omitempty"`
- CloudName string `json:"cloudName,omitempty"`
- LogAnalyticsDefaultWorkspace string `json:"logAnalyticsDefaultWorkspace,omitempty"`
- LogAnalyticsClientID string `json:"logAnalyticsClientId,omitempty"`
- LogAnalyticsSubscriptionID string `json:"logAnalyticsSubscriptionId,omitempty"`
- LogAnalyticsTenantID string `json:"logAnalyticsTenantId,omitempty"`
- SubscriptionID string `json:"subscriptionId,omitempty"`
- TenantID string `json:"tenantId,omitempty"`
- // Fields for InfluxDB data sources
- HTTPMode string `json:"httpMode,omitempty"`
- Version string `json:"version,omitempty"`
- Organization string `json:"organization,omitempty"`
- DefaultBucket string `json:"defaultBucket,omitempty"`
- // Fields for Loki data sources
- MaxLines int `json:"maxLines,omitempty"`
- DerivedFields []GrafanaDataSourceJSONDerivedFields `json:"derivedFields,omitempty"`
- // Fields for Prometheus data sources
- CustomQueryParameters string `json:"customQueryParameters,omitempty"`
- HTTPMethod string `json:"httpMethod,omitempty"`
-}
-
-// GrafanaDataSourceJSONDerivedFields ...
-type GrafanaDataSourceJSONDerivedFields struct {
- DatasourceUID string `json:"datasourceUid,omitempty"`
- MatcherRegex string `json:"matcherRegex,omitempty"`
- Name string `json:"name,omitempty"`
- URL string `json:"url,omitempty"`
-}
-
-// GrafanaDataSourceSecureJSONData The most common secure json options
-// See https://grafana.com/docs/administration/provisioning/#datasources
-type GrafanaDataSourceSecureJSONData struct {
- TLSCaCert string `json:"tlsCACert,omitempty"`
- TLSClientCert string `json:"tlsClientCert,omitempty"`
- TLSClientKey string `json:"tlsClientKey,omitempty"`
- Password string `json:"password,omitempty"`
- BasicAuthPassword string `json:"basicAuthPassword,omitempty"`
- AccessKey string `json:"accessKey,omitempty"`
- SecretKey string `json:"secretKey,omitempty"`
- // Custom HTTP headers for datasources
- // See https://grafana.com/docs/grafana/latest/administration/provisioning/#datasources
- HTTPHeaderValue1 string `json:"httpHeaderValue1,omitempty"`
- HTTPHeaderValue2 string `json:"httpHeaderValue2,omitempty"`
- HTTPHeaderValue3 string `json:"httpHeaderValue3,omitempty"`
- HTTPHeaderValue4 string `json:"httpHeaderValue4,omitempty"`
- HTTPHeaderValue5 string `json:"httpHeaderValue5,omitempty"`
- HTTPHeaderValue6 string `json:"httpHeaderValue6,omitempty"`
- HTTPHeaderValue7 string `json:"httpHeaderValue7,omitempty"`
- HTTPHeaderValue8 string `json:"httpHeaderValue8,omitempty"`
- HTTPHeaderValue9 string `json:"httpHeaderValue9,omitempty"`
- // Fields for Stackdriver data sources
- PrivateKey string `json:"privateKey,omitempty"`
- // Fields for Azure data sources
- ClientSecret string `json:"clientSecret,omitempty"`
- AppInsightsAPIKey string `json:"appInsightsApiKey,omitempty"`
- LogAnalyticsClientSecret string `json:"logAnalyticsClientSecret,omitempty"`
- // Fields for InfluxDB data sources
- Token string `json:"token,omitempty"`
-}
-
-func init() {
- SchemeBuilder.Register(&GrafanaDataSource{}, &GrafanaDataSourceList{})
-}
diff --git a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/groupversion_info.go b/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/groupversion_info.go
deleted file mode 100644
index c632f8e6..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/groupversion_info.go
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Copyright 2021.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Package v1alpha1 contains API Schema definitions for the integreatly.org v1alpha1 API group
-// +kubebuilder:skip
-// +kubebuilder:object:generate=true
-// +groupName=integreatly.org
-package v1alpha1
-
-import (
- "k8s.io/apimachinery/pkg/runtime/schema"
- "sigs.k8s.io/controller-runtime/pkg/scheme"
-)
-
-var (
- // GroupVersion is group version used to register these objects
- GroupVersion = schema.GroupVersion{Group: "integreatly.org", Version: "v1alpha1"}
-
- // SchemeBuilder is used to add go types to the GroupVersionKind scheme
- SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
-
- // AddToScheme adds the types in this group-version to the given scheme.
- AddToScheme = SchemeBuilder.AddToScheme
-)
diff --git a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/zz_generated.deepcopy.go b/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/zz_generated.deepcopy.go
deleted file mode 100644
index 16ea1ec9..00000000
--- a/bddframework/pkg/framework/infrastructure/grafana/v1alpha1/zz_generated.deepcopy.go
+++ /dev/null
@@ -1,2072 +0,0 @@
-//go:build !ignore_autogenerated
-// +build !ignore_autogenerated
-
-// Copyright 2021 Red Hat, Inc. and/or its affiliates
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by controller-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
- appsv1 "k8s.io/api/apps/v1"
- v1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- runtime "k8s.io/apimachinery/pkg/runtime"
-)
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Grafana) DeepCopyInto(out *Grafana) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Grafana.
-func (in *Grafana) DeepCopy() *Grafana {
- if in == nil {
- return nil
- }
- out := new(Grafana)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *Grafana) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaClient) DeepCopyInto(out *GrafanaClient) {
- *out = *in
- if in.TimeoutSeconds != nil {
- in, out := &in.TimeoutSeconds, &out.TimeoutSeconds
- *out = new(int)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaClient.
-func (in *GrafanaClient) DeepCopy() *GrafanaClient {
- if in == nil {
- return nil
- }
- out := new(GrafanaClient)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfig) DeepCopyInto(out *GrafanaConfig) {
- *out = *in
- if in.Paths != nil {
- in, out := &in.Paths, &out.Paths
- *out = new(GrafanaConfigPaths)
- **out = **in
- }
- if in.Server != nil {
- in, out := &in.Server, &out.Server
- *out = new(GrafanaConfigServer)
- (*in).DeepCopyInto(*out)
- }
- if in.Database != nil {
- in, out := &in.Database, &out.Database
- *out = new(GrafanaConfigDatabase)
- (*in).DeepCopyInto(*out)
- }
- if in.RemoteCache != nil {
- in, out := &in.RemoteCache, &out.RemoteCache
- *out = new(GrafanaConfigRemoteCache)
- **out = **in
- }
- if in.Security != nil {
- in, out := &in.Security, &out.Security
- *out = new(GrafanaConfigSecurity)
- (*in).DeepCopyInto(*out)
- }
- if in.Users != nil {
- in, out := &in.Users, &out.Users
- *out = new(GrafanaConfigUsers)
- (*in).DeepCopyInto(*out)
- }
- if in.Auth != nil {
- in, out := &in.Auth, &out.Auth
- *out = new(GrafanaConfigAuth)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthBasic != nil {
- in, out := &in.AuthBasic, &out.AuthBasic
- *out = new(GrafanaConfigAuthBasic)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthAnonymous != nil {
- in, out := &in.AuthAnonymous, &out.AuthAnonymous
- *out = new(GrafanaConfigAuthAnonymous)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthAzureAD != nil {
- in, out := &in.AuthAzureAD, &out.AuthAzureAD
- *out = new(GrafanaConfigAuthAzureAD)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthGoogle != nil {
- in, out := &in.AuthGoogle, &out.AuthGoogle
- *out = new(GrafanaConfigAuthGoogle)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthGithub != nil {
- in, out := &in.AuthGithub, &out.AuthGithub
- *out = new(GrafanaConfigAuthGithub)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthGitlab != nil {
- in, out := &in.AuthGitlab, &out.AuthGitlab
- *out = new(GrafanaConfigAuthGitlab)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthGenericOauth != nil {
- in, out := &in.AuthGenericOauth, &out.AuthGenericOauth
- *out = new(GrafanaConfigAuthGenericOauth)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthOkta != nil {
- in, out := &in.AuthOkta, &out.AuthOkta
- *out = new(GrafanaConfigAuthOkta)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthLdap != nil {
- in, out := &in.AuthLdap, &out.AuthLdap
- *out = new(GrafanaConfigAuthLdap)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthProxy != nil {
- in, out := &in.AuthProxy, &out.AuthProxy
- *out = new(GrafanaConfigAuthProxy)
- (*in).DeepCopyInto(*out)
- }
- if in.AuthSaml != nil {
- in, out := &in.AuthSaml, &out.AuthSaml
- *out = new(GrafanaConfigAuthSaml)
- (*in).DeepCopyInto(*out)
- }
- if in.DataProxy != nil {
- in, out := &in.DataProxy, &out.DataProxy
- *out = new(GrafanaConfigDataProxy)
- (*in).DeepCopyInto(*out)
- }
- if in.Analytics != nil {
- in, out := &in.Analytics, &out.Analytics
- *out = new(GrafanaConfigAnalytics)
- (*in).DeepCopyInto(*out)
- }
- if in.Dashboards != nil {
- in, out := &in.Dashboards, &out.Dashboards
- *out = new(GrafanaConfigDashboards)
- (*in).DeepCopyInto(*out)
- }
- if in.SMTP != nil {
- in, out := &in.SMTP, &out.SMTP
- *out = new(GrafanaConfigSMTP)
- (*in).DeepCopyInto(*out)
- }
- if in.Log != nil {
- in, out := &in.Log, &out.Log
- *out = new(GrafanaConfigLog)
- **out = **in
- }
- if in.LogConsole != nil {
- in, out := &in.LogConsole, &out.LogConsole
- *out = new(GrafanaConfigLogConsole)
- **out = **in
- }
- if in.LogFrontend != nil {
- in, out := &in.LogFrontend, &out.LogFrontend
- *out = new(GrafanaConfigLogFrontend)
- (*in).DeepCopyInto(*out)
- }
- if in.Metrics != nil {
- in, out := &in.Metrics, &out.Metrics
- *out = new(GrafanaConfigMetrics)
- (*in).DeepCopyInto(*out)
- }
- if in.MetricsGraphite != nil {
- in, out := &in.MetricsGraphite, &out.MetricsGraphite
- *out = new(GrafanaConfigMetricsGraphite)
- **out = **in
- }
- if in.Snapshots != nil {
- in, out := &in.Snapshots, &out.Snapshots
- *out = new(GrafanaConfigSnapshots)
- (*in).DeepCopyInto(*out)
- }
- if in.ExternalImageStorage != nil {
- in, out := &in.ExternalImageStorage, &out.ExternalImageStorage
- *out = new(GrafanaConfigExternalImageStorage)
- **out = **in
- }
- if in.ExternalImageStorageS3 != nil {
- in, out := &in.ExternalImageStorageS3, &out.ExternalImageStorageS3
- *out = new(GrafanaConfigExternalImageStorageS3)
- **out = **in
- }
- if in.ExternalImageStorageWebdav != nil {
- in, out := &in.ExternalImageStorageWebdav, &out.ExternalImageStorageWebdav
- *out = new(GrafanaConfigExternalImageStorageWebdav)
- **out = **in
- }
- if in.ExternalImageStorageGcs != nil {
- in, out := &in.ExternalImageStorageGcs, &out.ExternalImageStorageGcs
- *out = new(GrafanaConfigExternalImageStorageGcs)
- **out = **in
- }
- if in.ExternalImageStorageAzureBlob != nil {
- in, out := &in.ExternalImageStorageAzureBlob, &out.ExternalImageStorageAzureBlob
- *out = new(GrafanaConfigExternalImageStorageAzureBlob)
- **out = **in
- }
- if in.Alerting != nil {
- in, out := &in.Alerting, &out.Alerting
- *out = new(GrafanaConfigAlerting)
- (*in).DeepCopyInto(*out)
- }
- if in.Panels != nil {
- in, out := &in.Panels, &out.Panels
- *out = new(GrafanaConfigPanels)
- (*in).DeepCopyInto(*out)
- }
- if in.Plugins != nil {
- in, out := &in.Plugins, &out.Plugins
- *out = new(GrafanaConfigPlugins)
- (*in).DeepCopyInto(*out)
- }
- if in.Rendering != nil {
- in, out := &in.Rendering, &out.Rendering
- *out = new(GrafanaConfigRendering)
- (*in).DeepCopyInto(*out)
- }
- if in.FeatureToggles != nil {
- in, out := &in.FeatureToggles, &out.FeatureToggles
- *out = new(GrafanaConfigFeatureToggles)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfig.
-func (in *GrafanaConfig) DeepCopy() *GrafanaConfig {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfig)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAlerting) DeepCopyInto(out *GrafanaConfigAlerting) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.ExecuteAlerts != nil {
- in, out := &in.ExecuteAlerts, &out.ExecuteAlerts
- *out = new(bool)
- **out = **in
- }
- if in.ConcurrentRenderLimit != nil {
- in, out := &in.ConcurrentRenderLimit, &out.ConcurrentRenderLimit
- *out = new(int)
- **out = **in
- }
- if in.EvaluationTimeoutSeconds != nil {
- in, out := &in.EvaluationTimeoutSeconds, &out.EvaluationTimeoutSeconds
- *out = new(int)
- **out = **in
- }
- if in.NotificationTimeoutSeconds != nil {
- in, out := &in.NotificationTimeoutSeconds, &out.NotificationTimeoutSeconds
- *out = new(int)
- **out = **in
- }
- if in.MaxAttempts != nil {
- in, out := &in.MaxAttempts, &out.MaxAttempts
- *out = new(int)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAlerting.
-func (in *GrafanaConfigAlerting) DeepCopy() *GrafanaConfigAlerting {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAlerting)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAnalytics) DeepCopyInto(out *GrafanaConfigAnalytics) {
- *out = *in
- if in.ReportingEnabled != nil {
- in, out := &in.ReportingEnabled, &out.ReportingEnabled
- *out = new(bool)
- **out = **in
- }
- if in.CheckForUpdates != nil {
- in, out := &in.CheckForUpdates, &out.CheckForUpdates
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAnalytics.
-func (in *GrafanaConfigAnalytics) DeepCopy() *GrafanaConfigAnalytics {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAnalytics)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuth) DeepCopyInto(out *GrafanaConfigAuth) {
- *out = *in
- if in.LoginMaximumInactiveLifetimeDays != nil {
- in, out := &in.LoginMaximumInactiveLifetimeDays, &out.LoginMaximumInactiveLifetimeDays
- *out = new(int)
- **out = **in
- }
- if in.LoginMaximumLifetimeDays != nil {
- in, out := &in.LoginMaximumLifetimeDays, &out.LoginMaximumLifetimeDays
- *out = new(int)
- **out = **in
- }
- if in.TokenRotationIntervalMinutes != nil {
- in, out := &in.TokenRotationIntervalMinutes, &out.TokenRotationIntervalMinutes
- *out = new(int)
- **out = **in
- }
- if in.DisableLoginForm != nil {
- in, out := &in.DisableLoginForm, &out.DisableLoginForm
- *out = new(bool)
- **out = **in
- }
- if in.DisableSignoutMenu != nil {
- in, out := &in.DisableSignoutMenu, &out.DisableSignoutMenu
- *out = new(bool)
- **out = **in
- }
- if in.SigV4AuthEnabled != nil {
- in, out := &in.SigV4AuthEnabled, &out.SigV4AuthEnabled
- *out = new(bool)
- **out = **in
- }
- if in.OauthAutoLogin != nil {
- in, out := &in.OauthAutoLogin, &out.OauthAutoLogin
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuth.
-func (in *GrafanaConfigAuth) DeepCopy() *GrafanaConfigAuth {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuth)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthAnonymous) DeepCopyInto(out *GrafanaConfigAuthAnonymous) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthAnonymous.
-func (in *GrafanaConfigAuthAnonymous) DeepCopy() *GrafanaConfigAuthAnonymous {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthAnonymous)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthAzureAD) DeepCopyInto(out *GrafanaConfigAuthAzureAD) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthAzureAD.
-func (in *GrafanaConfigAuthAzureAD) DeepCopy() *GrafanaConfigAuthAzureAD {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthAzureAD)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthBasic) DeepCopyInto(out *GrafanaConfigAuthBasic) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthBasic.
-func (in *GrafanaConfigAuthBasic) DeepCopy() *GrafanaConfigAuthBasic {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthBasic)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthGenericOauth) DeepCopyInto(out *GrafanaConfigAuthGenericOauth) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
- if in.RoleAttributeStrict != nil {
- in, out := &in.RoleAttributeStrict, &out.RoleAttributeStrict
- *out = new(bool)
- **out = **in
- }
- if in.TLSSkipVerifyInsecure != nil {
- in, out := &in.TLSSkipVerifyInsecure, &out.TLSSkipVerifyInsecure
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthGenericOauth.
-func (in *GrafanaConfigAuthGenericOauth) DeepCopy() *GrafanaConfigAuthGenericOauth {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthGenericOauth)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthGithub) DeepCopyInto(out *GrafanaConfigAuthGithub) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthGithub.
-func (in *GrafanaConfigAuthGithub) DeepCopy() *GrafanaConfigAuthGithub {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthGithub)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthGitlab) DeepCopyInto(out *GrafanaConfigAuthGitlab) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthGitlab.
-func (in *GrafanaConfigAuthGitlab) DeepCopy() *GrafanaConfigAuthGitlab {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthGitlab)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthGoogle) DeepCopyInto(out *GrafanaConfigAuthGoogle) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthGoogle.
-func (in *GrafanaConfigAuthGoogle) DeepCopy() *GrafanaConfigAuthGoogle {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthGoogle)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthLdap) DeepCopyInto(out *GrafanaConfigAuthLdap) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthLdap.
-func (in *GrafanaConfigAuthLdap) DeepCopy() *GrafanaConfigAuthLdap {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthLdap)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthOkta) DeepCopyInto(out *GrafanaConfigAuthOkta) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
- if in.RoleAttributeStrict != nil {
- in, out := &in.RoleAttributeStrict, &out.RoleAttributeStrict
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthOkta.
-func (in *GrafanaConfigAuthOkta) DeepCopy() *GrafanaConfigAuthOkta {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthOkta)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthProxy) DeepCopyInto(out *GrafanaConfigAuthProxy) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.AutoSignUp != nil {
- in, out := &in.AutoSignUp, &out.AutoSignUp
- *out = new(bool)
- **out = **in
- }
- if in.EnableLoginToken != nil {
- in, out := &in.EnableLoginToken, &out.EnableLoginToken
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthProxy.
-func (in *GrafanaConfigAuthProxy) DeepCopy() *GrafanaConfigAuthProxy {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthProxy)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigAuthSaml) DeepCopyInto(out *GrafanaConfigAuthSaml) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.SingleLogout != nil {
- in, out := &in.SingleLogout, &out.SingleLogout
- *out = new(bool)
- **out = **in
- }
- if in.AllowIdpInitiated != nil {
- in, out := &in.AllowIdpInitiated, &out.AllowIdpInitiated
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigAuthSaml.
-func (in *GrafanaConfigAuthSaml) DeepCopy() *GrafanaConfigAuthSaml {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigAuthSaml)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigDashboards) DeepCopyInto(out *GrafanaConfigDashboards) {
- *out = *in
- if in.VersionsToKeep != nil {
- in, out := &in.VersionsToKeep, &out.VersionsToKeep
- *out = new(int)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigDashboards.
-func (in *GrafanaConfigDashboards) DeepCopy() *GrafanaConfigDashboards {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigDashboards)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigDataProxy) DeepCopyInto(out *GrafanaConfigDataProxy) {
- *out = *in
- if in.Logging != nil {
- in, out := &in.Logging, &out.Logging
- *out = new(bool)
- **out = **in
- }
- if in.Timeout != nil {
- in, out := &in.Timeout, &out.Timeout
- *out = new(int)
- **out = **in
- }
- if in.SendUserHeader != nil {
- in, out := &in.SendUserHeader, &out.SendUserHeader
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigDataProxy.
-func (in *GrafanaConfigDataProxy) DeepCopy() *GrafanaConfigDataProxy {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigDataProxy)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigDatabase) DeepCopyInto(out *GrafanaConfigDatabase) {
- *out = *in
- if in.MaxIdleConn != nil {
- in, out := &in.MaxIdleConn, &out.MaxIdleConn
- *out = new(int)
- **out = **in
- }
- if in.MaxOpenConn != nil {
- in, out := &in.MaxOpenConn, &out.MaxOpenConn
- *out = new(int)
- **out = **in
- }
- if in.ConnMaxLifetime != nil {
- in, out := &in.ConnMaxLifetime, &out.ConnMaxLifetime
- *out = new(int)
- **out = **in
- }
- if in.LogQueries != nil {
- in, out := &in.LogQueries, &out.LogQueries
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigDatabase.
-func (in *GrafanaConfigDatabase) DeepCopy() *GrafanaConfigDatabase {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigDatabase)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigExternalImageStorage) DeepCopyInto(out *GrafanaConfigExternalImageStorage) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigExternalImageStorage.
-func (in *GrafanaConfigExternalImageStorage) DeepCopy() *GrafanaConfigExternalImageStorage {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigExternalImageStorage)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigExternalImageStorageAzureBlob) DeepCopyInto(out *GrafanaConfigExternalImageStorageAzureBlob) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigExternalImageStorageAzureBlob.
-func (in *GrafanaConfigExternalImageStorageAzureBlob) DeepCopy() *GrafanaConfigExternalImageStorageAzureBlob {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigExternalImageStorageAzureBlob)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigExternalImageStorageGcs) DeepCopyInto(out *GrafanaConfigExternalImageStorageGcs) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigExternalImageStorageGcs.
-func (in *GrafanaConfigExternalImageStorageGcs) DeepCopy() *GrafanaConfigExternalImageStorageGcs {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigExternalImageStorageGcs)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigExternalImageStorageS3) DeepCopyInto(out *GrafanaConfigExternalImageStorageS3) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigExternalImageStorageS3.
-func (in *GrafanaConfigExternalImageStorageS3) DeepCopy() *GrafanaConfigExternalImageStorageS3 {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigExternalImageStorageS3)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigExternalImageStorageWebdav) DeepCopyInto(out *GrafanaConfigExternalImageStorageWebdav) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigExternalImageStorageWebdav.
-func (in *GrafanaConfigExternalImageStorageWebdav) DeepCopy() *GrafanaConfigExternalImageStorageWebdav {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigExternalImageStorageWebdav)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigFeatureToggles) DeepCopyInto(out *GrafanaConfigFeatureToggles) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigFeatureToggles.
-func (in *GrafanaConfigFeatureToggles) DeepCopy() *GrafanaConfigFeatureToggles {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigFeatureToggles)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigLog) DeepCopyInto(out *GrafanaConfigLog) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigLog.
-func (in *GrafanaConfigLog) DeepCopy() *GrafanaConfigLog {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigLog)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigLogConsole) DeepCopyInto(out *GrafanaConfigLogConsole) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigLogConsole.
-func (in *GrafanaConfigLogConsole) DeepCopy() *GrafanaConfigLogConsole {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigLogConsole)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigLogFrontend) DeepCopyInto(out *GrafanaConfigLogFrontend) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.LogEndpointRequestsPerSecondLimit != nil {
- in, out := &in.LogEndpointRequestsPerSecondLimit, &out.LogEndpointRequestsPerSecondLimit
- *out = new(int)
- **out = **in
- }
- if in.LogEndpointBurstLimit != nil {
- in, out := &in.LogEndpointBurstLimit, &out.LogEndpointBurstLimit
- *out = new(int)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigLogFrontend.
-func (in *GrafanaConfigLogFrontend) DeepCopy() *GrafanaConfigLogFrontend {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigLogFrontend)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigMetrics) DeepCopyInto(out *GrafanaConfigMetrics) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.IntervalSeconds != nil {
- in, out := &in.IntervalSeconds, &out.IntervalSeconds
- *out = new(int)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigMetrics.
-func (in *GrafanaConfigMetrics) DeepCopy() *GrafanaConfigMetrics {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigMetrics)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigMetricsGraphite) DeepCopyInto(out *GrafanaConfigMetricsGraphite) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigMetricsGraphite.
-func (in *GrafanaConfigMetricsGraphite) DeepCopy() *GrafanaConfigMetricsGraphite {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigMetricsGraphite)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigPanels) DeepCopyInto(out *GrafanaConfigPanels) {
- *out = *in
- if in.DisableSanitizeHTML != nil {
- in, out := &in.DisableSanitizeHTML, &out.DisableSanitizeHTML
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigPanels.
-func (in *GrafanaConfigPanels) DeepCopy() *GrafanaConfigPanels {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigPanels)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigPaths) DeepCopyInto(out *GrafanaConfigPaths) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigPaths.
-func (in *GrafanaConfigPaths) DeepCopy() *GrafanaConfigPaths {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigPaths)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigPlugins) DeepCopyInto(out *GrafanaConfigPlugins) {
- *out = *in
- if in.EnableAlpha != nil {
- in, out := &in.EnableAlpha, &out.EnableAlpha
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigPlugins.
-func (in *GrafanaConfigPlugins) DeepCopy() *GrafanaConfigPlugins {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigPlugins)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigRemoteCache) DeepCopyInto(out *GrafanaConfigRemoteCache) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigRemoteCache.
-func (in *GrafanaConfigRemoteCache) DeepCopy() *GrafanaConfigRemoteCache {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigRemoteCache)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigRendering) DeepCopyInto(out *GrafanaConfigRendering) {
- *out = *in
- if in.ConcurrentRenderRequestLimit != nil {
- in, out := &in.ConcurrentRenderRequestLimit, &out.ConcurrentRenderRequestLimit
- *out = new(int)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigRendering.
-func (in *GrafanaConfigRendering) DeepCopy() *GrafanaConfigRendering {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigRendering)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigSMTP) DeepCopyInto(out *GrafanaConfigSMTP) {
- *out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
- **out = **in
- }
- if in.SkipVerify != nil {
- in, out := &in.SkipVerify, &out.SkipVerify
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigSMTP.
-func (in *GrafanaConfigSMTP) DeepCopy() *GrafanaConfigSMTP {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigSMTP)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigSecurity) DeepCopyInto(out *GrafanaConfigSecurity) {
- *out = *in
- if in.LoginRememberDays != nil {
- in, out := &in.LoginRememberDays, &out.LoginRememberDays
- *out = new(int)
- **out = **in
- }
- if in.DisableGravatar != nil {
- in, out := &in.DisableGravatar, &out.DisableGravatar
- *out = new(bool)
- **out = **in
- }
- if in.CookieSecure != nil {
- in, out := &in.CookieSecure, &out.CookieSecure
- *out = new(bool)
- **out = **in
- }
- if in.AllowEmbedding != nil {
- in, out := &in.AllowEmbedding, &out.AllowEmbedding
- *out = new(bool)
- **out = **in
- }
- if in.StrictTransportSecurity != nil {
- in, out := &in.StrictTransportSecurity, &out.StrictTransportSecurity
- *out = new(bool)
- **out = **in
- }
- if in.StrictTransportSecurityMaxAgeSeconds != nil {
- in, out := &in.StrictTransportSecurityMaxAgeSeconds, &out.StrictTransportSecurityMaxAgeSeconds
- *out = new(int)
- **out = **in
- }
- if in.StrictTransportSecurityPreload != nil {
- in, out := &in.StrictTransportSecurityPreload, &out.StrictTransportSecurityPreload
- *out = new(bool)
- **out = **in
- }
- if in.StrictTransportSecuritySubdomains != nil {
- in, out := &in.StrictTransportSecuritySubdomains, &out.StrictTransportSecuritySubdomains
- *out = new(bool)
- **out = **in
- }
- if in.XContentTypeOptions != nil {
- in, out := &in.XContentTypeOptions, &out.XContentTypeOptions
- *out = new(bool)
- **out = **in
- }
- if in.XXssProtection != nil {
- in, out := &in.XXssProtection, &out.XXssProtection
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigSecurity.
-func (in *GrafanaConfigSecurity) DeepCopy() *GrafanaConfigSecurity {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigSecurity)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigServer) DeepCopyInto(out *GrafanaConfigServer) {
- *out = *in
- if in.EnforceDomain != nil {
- in, out := &in.EnforceDomain, &out.EnforceDomain
- *out = new(bool)
- **out = **in
- }
- if in.ServeFromSubPath != nil {
- in, out := &in.ServeFromSubPath, &out.ServeFromSubPath
- *out = new(bool)
- **out = **in
- }
- if in.EnableGzip != nil {
- in, out := &in.EnableGzip, &out.EnableGzip
- *out = new(bool)
- **out = **in
- }
- if in.RouterLogging != nil {
- in, out := &in.RouterLogging, &out.RouterLogging
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigServer.
-func (in *GrafanaConfigServer) DeepCopy() *GrafanaConfigServer {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigServer)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigSnapshots) DeepCopyInto(out *GrafanaConfigSnapshots) {
- *out = *in
- if in.ExternalEnabled != nil {
- in, out := &in.ExternalEnabled, &out.ExternalEnabled
- *out = new(bool)
- **out = **in
- }
- if in.SnapshotRemoveExpired != nil {
- in, out := &in.SnapshotRemoveExpired, &out.SnapshotRemoveExpired
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigSnapshots.
-func (in *GrafanaConfigSnapshots) DeepCopy() *GrafanaConfigSnapshots {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigSnapshots)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaConfigUsers) DeepCopyInto(out *GrafanaConfigUsers) {
- *out = *in
- if in.AllowSignUp != nil {
- in, out := &in.AllowSignUp, &out.AllowSignUp
- *out = new(bool)
- **out = **in
- }
- if in.AllowOrgCreate != nil {
- in, out := &in.AllowOrgCreate, &out.AllowOrgCreate
- *out = new(bool)
- **out = **in
- }
- if in.AutoAssignOrg != nil {
- in, out := &in.AutoAssignOrg, &out.AutoAssignOrg
- *out = new(bool)
- **out = **in
- }
- if in.ViewersCanEdit != nil {
- in, out := &in.ViewersCanEdit, &out.ViewersCanEdit
- *out = new(bool)
- **out = **in
- }
- if in.EditorsCanAdmin != nil {
- in, out := &in.EditorsCanAdmin, &out.EditorsCanAdmin
- *out = new(bool)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaConfigUsers.
-func (in *GrafanaConfigUsers) DeepCopy() *GrafanaConfigUsers {
- if in == nil {
- return nil
- }
- out := new(GrafanaConfigUsers)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDashboard) DeepCopyInto(out *GrafanaDashboard) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- in.Spec.DeepCopyInto(&out.Spec)
- out.Status = in.Status
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDashboard.
-func (in *GrafanaDashboard) DeepCopy() *GrafanaDashboard {
- if in == nil {
- return nil
- }
- out := new(GrafanaDashboard)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *GrafanaDashboard) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDashboardDatasource) DeepCopyInto(out *GrafanaDashboardDatasource) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDashboardDatasource.
-func (in *GrafanaDashboardDatasource) DeepCopy() *GrafanaDashboardDatasource {
- if in == nil {
- return nil
- }
- out := new(GrafanaDashboardDatasource)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDashboardList) DeepCopyInto(out *GrafanaDashboardList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ListMeta.DeepCopyInto(&out.ListMeta)
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]GrafanaDashboard, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDashboardList.
-func (in *GrafanaDashboardList) DeepCopy() *GrafanaDashboardList {
- if in == nil {
- return nil
- }
- out := new(GrafanaDashboardList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *GrafanaDashboardList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDashboardRef) DeepCopyInto(out *GrafanaDashboardRef) {
- *out = *in
- if in.FolderID != nil {
- in, out := &in.FolderID, &out.FolderID
- *out = new(int64)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDashboardRef.
-func (in *GrafanaDashboardRef) DeepCopy() *GrafanaDashboardRef {
- if in == nil {
- return nil
- }
- out := new(GrafanaDashboardRef)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDashboardSpec) DeepCopyInto(out *GrafanaDashboardSpec) {
- *out = *in
- if in.Plugins != nil {
- in, out := &in.Plugins, &out.Plugins
- *out = make(PluginList, len(*in))
- copy(*out, *in)
- }
- if in.ConfigMapRef != nil {
- in, out := &in.ConfigMapRef, &out.ConfigMapRef
- *out = new(v1.ConfigMapKeySelector)
- (*in).DeepCopyInto(*out)
- }
- if in.Datasources != nil {
- in, out := &in.Datasources, &out.Datasources
- *out = make([]GrafanaDashboardDatasource, len(*in))
- copy(*out, *in)
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDashboardSpec.
-func (in *GrafanaDashboardSpec) DeepCopy() *GrafanaDashboardSpec {
- if in == nil {
- return nil
- }
- out := new(GrafanaDashboardSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDashboardStatus) DeepCopyInto(out *GrafanaDashboardStatus) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDashboardStatus.
-func (in *GrafanaDashboardStatus) DeepCopy() *GrafanaDashboardStatus {
- if in == nil {
- return nil
- }
- out := new(GrafanaDashboardStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSource) DeepCopyInto(out *GrafanaDataSource) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- in.Spec.DeepCopyInto(&out.Spec)
- out.Status = in.Status
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSource.
-func (in *GrafanaDataSource) DeepCopy() *GrafanaDataSource {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSource)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *GrafanaDataSource) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceFields) DeepCopyInto(out *GrafanaDataSourceFields) {
- *out = *in
- in.JSONData.DeepCopyInto(&out.JSONData)
- out.SecureJSONData = in.SecureJSONData
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceFields.
-func (in *GrafanaDataSourceFields) DeepCopy() *GrafanaDataSourceFields {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceFields)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceJSONData) DeepCopyInto(out *GrafanaDataSourceJSONData) {
- *out = *in
- if in.DerivedFields != nil {
- in, out := &in.DerivedFields, &out.DerivedFields
- *out = make([]GrafanaDataSourceJSONDerivedFields, len(*in))
- copy(*out, *in)
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceJSONData.
-func (in *GrafanaDataSourceJSONData) DeepCopy() *GrafanaDataSourceJSONData {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceJSONData)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceJSONDerivedFields) DeepCopyInto(out *GrafanaDataSourceJSONDerivedFields) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceJSONDerivedFields.
-func (in *GrafanaDataSourceJSONDerivedFields) DeepCopy() *GrafanaDataSourceJSONDerivedFields {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceJSONDerivedFields)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceList) DeepCopyInto(out *GrafanaDataSourceList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ListMeta.DeepCopyInto(&out.ListMeta)
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]GrafanaDataSource, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceList.
-func (in *GrafanaDataSourceList) DeepCopy() *GrafanaDataSourceList {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *GrafanaDataSourceList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceSecureJSONData) DeepCopyInto(out *GrafanaDataSourceSecureJSONData) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceSecureJSONData.
-func (in *GrafanaDataSourceSecureJSONData) DeepCopy() *GrafanaDataSourceSecureJSONData {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceSecureJSONData)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceSpec) DeepCopyInto(out *GrafanaDataSourceSpec) {
- *out = *in
- if in.Datasources != nil {
- in, out := &in.Datasources, &out.Datasources
- *out = make([]GrafanaDataSourceFields, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceSpec.
-func (in *GrafanaDataSourceSpec) DeepCopy() *GrafanaDataSourceSpec {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataSourceStatus) DeepCopyInto(out *GrafanaDataSourceStatus) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataSourceStatus.
-func (in *GrafanaDataSourceStatus) DeepCopy() *GrafanaDataSourceStatus {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataSourceStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDataStorage) DeepCopyInto(out *GrafanaDataStorage) {
- *out = *in
- if in.Annotations != nil {
- in, out := &in.Annotations, &out.Annotations
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.Labels != nil {
- in, out := &in.Labels, &out.Labels
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.AccessModes != nil {
- in, out := &in.AccessModes, &out.AccessModes
- *out = make([]v1.PersistentVolumeAccessMode, len(*in))
- copy(*out, *in)
- }
- out.Size = in.Size.DeepCopy()
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDataStorage.
-func (in *GrafanaDataStorage) DeepCopy() *GrafanaDataStorage {
- if in == nil {
- return nil
- }
- out := new(GrafanaDataStorage)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaDeployment) DeepCopyInto(out *GrafanaDeployment) {
- *out = *in
- if in.Annotations != nil {
- in, out := &in.Annotations, &out.Annotations
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.Labels != nil {
- in, out := &in.Labels, &out.Labels
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.Replicas != nil {
- in, out := &in.Replicas, &out.Replicas
- *out = new(int32)
- **out = **in
- }
- if in.NodeSelector != nil {
- in, out := &in.NodeSelector, &out.NodeSelector
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.Tolerations != nil {
- in, out := &in.Tolerations, &out.Tolerations
- *out = make([]v1.Toleration, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.Affinity != nil {
- in, out := &in.Affinity, &out.Affinity
- *out = new(v1.Affinity)
- (*in).DeepCopyInto(*out)
- }
- if in.SecurityContext != nil {
- in, out := &in.SecurityContext, &out.SecurityContext
- *out = new(v1.PodSecurityContext)
- (*in).DeepCopyInto(*out)
- }
- if in.ContainerSecurityContext != nil {
- in, out := &in.ContainerSecurityContext, &out.ContainerSecurityContext
- *out = new(v1.SecurityContext)
- (*in).DeepCopyInto(*out)
- }
- if in.TerminationGracePeriodSeconds != nil {
- in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds
- *out = new(int64)
- **out = **in
- }
- if in.EnvFrom != nil {
- in, out := &in.EnvFrom, &out.EnvFrom
- *out = make([]v1.EnvFromSource, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.Env != nil {
- in, out := &in.Env, &out.Env
- *out = make([]v1.EnvVar, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.SkipCreateAdminAccount != nil {
- in, out := &in.SkipCreateAdminAccount, &out.SkipCreateAdminAccount
- *out = new(bool)
- **out = **in
- }
- if in.HostNetwork != nil {
- in, out := &in.HostNetwork, &out.HostNetwork
- *out = new(bool)
- **out = **in
- }
- if in.ExtraVolumes != nil {
- in, out := &in.ExtraVolumes, &out.ExtraVolumes
- *out = make([]v1.Volume, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.ExtraVolumeMounts != nil {
- in, out := &in.ExtraVolumeMounts, &out.ExtraVolumeMounts
- *out = make([]v1.VolumeMount, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.Strategy != nil {
- in, out := &in.Strategy, &out.Strategy
- *out = new(appsv1.DeploymentStrategy)
- (*in).DeepCopyInto(*out)
- }
- if in.HTTPProxy != nil {
- in, out := &in.HTTPProxy, &out.HTTPProxy
- *out = new(GrafanaHTTPProxy)
- **out = **in
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaDeployment.
-func (in *GrafanaDeployment) DeepCopy() *GrafanaDeployment {
- if in == nil {
- return nil
- }
- out := new(GrafanaDeployment)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *GrafanaHTTPProxy) DeepCopyInto(out *GrafanaHTTPProxy) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaHTTPProxy.
-func (in *GrafanaHTTPProxy) DeepCopy() *GrafanaHTTPProxy {
- if in == nil {
- return nil
- }
- out := new(GrafanaHTTPProxy)
... 23967 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org