diff --git a/Dockerfile b/Dockerfile index 5870fcda..b20454a9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.20.10 as builder +FROM golang:1.20.13 as builder WORKDIR /workspace # Copy the Go Modules manifests diff --git a/Makefile b/Makefile index 8b2f8b03..4d23e9dc 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ endif IMG ?= $(IMAGE_TAG_BASE):v$(VERSION) # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.26 +ENVTEST_K8S_VERSION = 1.27 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN)) @@ -337,7 +337,7 @@ catalog-push: ## Push a catalog image. kind-create: export KUBECONFIG = $(PWD)/kubeconfig kind-create: tmp docker-build kind ## Runs a k8s kind cluster with a local registry in "localhost:5000" and ports 1080 and 1443 exposed to the host - $(KIND) create cluster --wait 5m --config test/kind.yaml --image kindest/node:v1.25.2 + $(KIND) create cluster --wait 5m --config test/kind.yaml --image kindest/node:v1.27.10 $(MAKE) deploy-cert-manager $(KIND) load docker-image quay.io/3scale/marin3r:test --name kind diff --git a/apis/marin3r/v1alpha1/envoyconfig_types.go b/apis/marin3r/v1alpha1/envoyconfig_types.go index fa548938..bbd906e0 100644 --- a/apis/marin3r/v1alpha1/envoyconfig_types.go +++ b/apis/marin3r/v1alpha1/envoyconfig_types.go @@ -20,6 +20,7 @@ import ( reconcilerutil "github.com/3scale-ops/basereconciler/util" "github.com/3scale-ops/marin3r/pkg/envoy" envoy_serializer "github.com/3scale-ops/marin3r/pkg/envoy/serializer" + "github.com/3scale-ops/marin3r/pkg/util/pointer" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -168,6 +169,13 @@ func (ec *EnvoyConfig) GetEnvoyResourcesVersion() string { return reconcilerutil.Hash(ec.Spec.Resources) } +// Default implements defaulting for the EnvoyConfig resource +func (ec *EnvoyConfig) Default() { + if ec.Spec.EnvoyAPI == nil { + ec.Spec.EnvoyAPI = pointer.New(ec.GetEnvoyAPIVersion()) + } +} + // +kubebuilder:object:root=true // EnvoyConfigList contains a list of EnvoyConfig diff --git a/apis/marin3r/v1alpha1/envoyconfigrevision_types.go b/apis/marin3r/v1alpha1/envoyconfigrevision_types.go index 0b86ab6d..59014009 100644 --- a/apis/marin3r/v1alpha1/envoyconfigrevision_types.go +++ b/apis/marin3r/v1alpha1/envoyconfigrevision_types.go @@ -19,6 +19,7 @@ package v1alpha1 import ( "github.com/3scale-ops/marin3r/pkg/envoy" envoy_serializer "github.com/3scale-ops/marin3r/pkg/envoy/serializer" + "github.com/3scale-ops/marin3r/pkg/util/pointer" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -170,6 +171,13 @@ func (ecr *EnvoyConfigRevision) GetSerialization() envoy_serializer.Serializatio return envoy_serializer.Serialization(*ecr.Spec.Serialization) } +// Default implements defaulting for the EnvoyConfigRevision resource +func (ecr *EnvoyConfigRevision) Default() { + if ecr.Spec.EnvoyAPI == nil { + ecr.Spec.EnvoyAPI = pointer.New(ecr.GetEnvoyAPIVersion()) + } +} + // +kubebuilder:object:root=true // EnvoyConfigRevisionList contains a list of EnvoyConfigRevision diff --git a/apis/operator.marin3r/v1alpha1/discoveryservice_types.go b/apis/operator.marin3r/v1alpha1/discoveryservice_types.go index 774c8b5b..388611ea 100644 --- a/apis/operator.marin3r/v1alpha1/discoveryservice_types.go +++ b/apis/operator.marin3r/v1alpha1/discoveryservice_types.go @@ -20,7 +20,7 @@ import ( "fmt" "time" - "github.com/3scale-ops/basereconciler/status" + "github.com/3scale-ops/basereconciler/reconciler" "github.com/3scale-ops/marin3r/pkg/image" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -122,7 +122,7 @@ type DiscoveryServiceStatus struct { // +optional *appsv1.DeploymentStatus `json:"deploymentStatus,omitempty"` // internal fields - status.UnimplementedStatefulSetStatus `json:"-"` + reconciler.UnimplementedStatefulSetStatus `json:"-"` } func (dss *DiscoveryServiceStatus) GetDeploymentStatus(key types.NamespacedName) *appsv1.DeploymentStatus { @@ -176,9 +176,9 @@ type DiscoveryService struct { Status DiscoveryServiceStatus `json:"status,omitempty"` } -var _ status.ObjectWithAppStatus = &DiscoveryService{} +var _ reconciler.ObjectWithAppStatus = &DiscoveryService{} -func (d *DiscoveryService) GetStatus() status.AppStatus { +func (d *DiscoveryService) GetStatus() reconciler.AppStatus { return &d.Status } diff --git a/apis/operator.marin3r/v1alpha1/discoveryservicecertificate_types.go b/apis/operator.marin3r/v1alpha1/discoveryservicecertificate_types.go index ffc24f24..e5fc046a 100644 --- a/apis/operator.marin3r/v1alpha1/discoveryservicecertificate_types.go +++ b/apis/operator.marin3r/v1alpha1/discoveryservicecertificate_types.go @@ -17,6 +17,7 @@ limitations under the License. package v1alpha1 import ( + "github.com/3scale-ops/marin3r/pkg/util/pointer" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -207,6 +208,22 @@ type DiscoveryServiceCertificate struct { Status DiscoveryServiceCertificateStatus `json:"status,omitempty"` } +func (dsc *DiscoveryServiceCertificate) Default() { + if dsc.Spec.IsServerCertificate == nil { + dsc.Spec.IsServerCertificate = pointer.New(dsc.IsServerCertificate()) + } + if dsc.Spec.IsCA == nil { + dsc.Spec.IsCA = pointer.New(dsc.IsCA()) + } + if dsc.Spec.Hosts == nil { + dsc.Spec.Hosts = dsc.GetHosts() + } + if dsc.Spec.CertificateRenewalConfig == nil { + crc := dsc.GetCertificateRenewalConfig() + dsc.Spec.CertificateRenewalConfig = &crc + } +} + // +kubebuilder:object:root=true // DiscoveryServiceCertificateList contains a list of DiscoveryServiceCertificate diff --git a/apis/operator.marin3r/v1alpha1/envoydeployment_types.go b/apis/operator.marin3r/v1alpha1/envoydeployment_types.go index 92a6a2fb..ef73042c 100644 --- a/apis/operator.marin3r/v1alpha1/envoydeployment_types.go +++ b/apis/operator.marin3r/v1alpha1/envoydeployment_types.go @@ -20,7 +20,7 @@ import ( "fmt" "time" - "github.com/3scale-ops/basereconciler/status" + "github.com/3scale-ops/basereconciler/reconciler" defaults "github.com/3scale-ops/marin3r/pkg/envoy/container/defaults" "github.com/3scale-ops/marin3r/pkg/util/pointer" appsv1 "k8s.io/api/apps/v1" @@ -390,7 +390,7 @@ func (im *InitManager) GetImage() string { } // ensure the status implements the AppStatus interface from "github.com/3scale-ops/basereconciler/status" -var _ status.AppStatus = &EnvoyDeploymentStatus{} +var _ reconciler.AppStatus = &EnvoyDeploymentStatus{} // EnvoyDeploymentStatus defines the observed state of EnvoyDeployment type EnvoyDeploymentStatus struct { @@ -401,7 +401,7 @@ type EnvoyDeploymentStatus struct { // +optional *appsv1.DeploymentStatus `json:"deploymentStatus,omitempty"` // internal fields - status.UnimplementedStatefulSetStatus `json:"-"` + reconciler.UnimplementedStatefulSetStatus `json:"-"` } func (eds *EnvoyDeploymentStatus) GetDeploymentStatus(key types.NamespacedName) *appsv1.DeploymentStatus { @@ -429,9 +429,9 @@ type EnvoyDeployment struct { Status EnvoyDeploymentStatus `json:"status,omitempty"` } -var _ status.ObjectWithAppStatus = &EnvoyDeployment{} +var _ reconciler.ObjectWithAppStatus = &EnvoyDeployment{} -func (ed *EnvoyDeployment) GetStatus() status.AppStatus { +func (ed *EnvoyDeployment) GetStatus() reconciler.AppStatus { return &ed.Status } diff --git a/cmd/discoveryservice.go b/cmd/discoveryservice.go index 26327813..828da368 100644 --- a/cmd/discoveryservice.go +++ b/cmd/discoveryservice.go @@ -26,6 +26,7 @@ import ( "sync" "time" + "github.com/3scale-ops/basereconciler/reconciler" marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" marin3rcontroller "github.com/3scale-ops/marin3r/controllers/marin3r" @@ -145,18 +146,16 @@ func runDiscoveryService(cmd *cobra.Command, args []string) { // Start controllers if err := (&marin3rcontroller.EnvoyConfigReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("envoyconfig"), - Scheme: mgr.GetScheme(), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("envoyconfig")), }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "envoyconfig") os.Exit(1) } if err := (&marin3rcontroller.EnvoyConfigRevisionReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName(fmt.Sprintf("envoyconfigrevision_%s", string(envoy.APIv3))), - Scheme: mgr.GetScheme(), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName(fmt.Sprintf("envoyconfigrevision_%s", string(envoy.APIv3)))), XdsCache: xdss.GetCache(envoy.APIv3), APIVersion: envoy.APIv3, DiscoveryStats: xdss.GetDiscoveryStats(envoy.APIv3), diff --git a/cmd/initmanager.go b/cmd/initmanager.go index a5601f73..ca8d4b1c 100644 --- a/cmd/initmanager.go +++ b/cmd/initmanager.go @@ -173,7 +173,7 @@ func parseBindAddress(address string) (string, uint32, error) { var err error var host string - var port int + var port int64 var parts []string if parts = strings.Split(address, ":"); len(parts) != 2 { @@ -186,7 +186,7 @@ func parseBindAddress(address string) (string, uint32, error) { return "", 0, err } - if port, err = strconv.Atoi(parts[1]); err != nil { + if port, err = strconv.ParseInt(parts[1], 10, 32); err != nil { return "", 0, fmt.Errorf("unable to parse port value in 'spec.envoyStaticConfig.adminBindAddress'") } diff --git a/cmd/operator.go b/cmd/operator.go index 88c5ef4b..c3f7a0df 100644 --- a/cmd/operator.go +++ b/cmd/operator.go @@ -107,25 +107,24 @@ func runOperator(cmd *cobra.Command, args []string) { } if err := (&operatorcontroller.DiscoveryServiceReconciler{ - Reconciler: reconciler.NewFromManager(mgr), - Log: ctrl.Log.WithName("controllers").WithName("discoveryservice"), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("discoveryservice")), }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "discoveryservice") os.Exit(1) } if err := (&operatorcontroller.DiscoveryServiceCertificateReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("discoveryservicecertificate"), - Scheme: mgr.GetScheme(), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("discoveryservicecertificate")), }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "discoveryservicecertificate") os.Exit(1) } if err = (&operatorcontroller.EnvoyDeploymentReconciler{ - Reconciler: reconciler.NewFromManager(mgr), - Log: ctrl.Log.WithName("controllers").WithName("envoydeployment"), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("envoydeployment")), }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "EnvoyDeployment") os.Exit(1) diff --git a/controllers/marin3r/envoyconfig_controller.go b/controllers/marin3r/envoyconfig_controller.go index 1d6e9521..3cabd54f 100644 --- a/controllers/marin3r/envoyconfig_controller.go +++ b/controllers/marin3r/envoyconfig_controller.go @@ -19,12 +19,10 @@ package controllers import ( "context" + "github.com/3scale-ops/basereconciler/reconciler" + reconciler_util "github.com/3scale-ops/basereconciler/util" marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" envoyconfig "github.com/3scale-ops/marin3r/pkg/reconcilers/marin3r/envoyconfig" - - "github.com/go-logr/logr" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/reconcile" @@ -32,9 +30,7 @@ import ( // EnvoyConfigReconciler reconciles a EnvoyConfig object type EnvoyConfigReconciler struct { - Client client.Client - Log logr.Logger - Scheme *runtime.Scheme + *reconciler.Reconciler } // Reconcile progresses EnvoyConfig resources to its desired state @@ -44,60 +40,47 @@ type EnvoyConfigReconciler struct { // +kubebuilder:rbac:groups=marin3r.3scale.net,namespace=placeholder,resources=envoyconfigrevisions/status,verbs=get;update;patch func (r *EnvoyConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - log := r.Log.WithValues("name", req.Name, "namespace", req.Namespace) - // Fetch the EnvoyConfig instance + ctx, logger := r.Logger(ctx, "name", req.Name, "namespace", req.Namespace) ec := &marin3rv1alpha1.EnvoyConfig{} - err := r.Client.Get(ctx, req.NamespacedName, ec) - if err != nil { - if errors.IsNotFound(err) { - // Request object not found, could have been deleted after reconcile request. - // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers. - // Return and don't requeue - return ctrl.Result{}, nil - } - // Error reading the object - requeue the request. - return ctrl.Result{}, err - } - - log = log.WithValues("nodeID", ec.Spec.NodeID, "envoyAPI", ec.GetEnvoyAPIVersion()) - - if ok := envoyconfig.IsInitialized(ec); !ok { - if err := r.Client.Update(ctx, ec); err != nil { - log.Error(err, "unable to update EnvoyConfig") - return ctrl.Result{}, err - } - log.Info("initialized EnvoyConfig resource") - return reconcile.Result{}, nil + result := r.ManageResourceLifecycle(ctx, req, ec, + // Apply defaults + reconciler.WithInitializationFunc(reconciler_util.ResourceDefaulter(ec)), + // convert spec.EnvoyResources to spec.Resources + reconciler.WithInMemoryInitializationFunc(func(ctx context.Context, c client.Client, o client.Object) error { + if ec.Spec.EnvoyResources != nil { + ec := o.(*marin3rv1alpha1.EnvoyConfig) + if resources, err := (ec.Spec.EnvoyResources).Resources(ec.GetSerialization()); err != nil { + return err + } else { + ec.Spec.Resources = resources + ec.Spec.EnvoyResources = nil + } + } + return nil + }), + ) + if result.ShouldReturn() { + return result.Values() } - // convert spec.EnvoyResources to spec.Resources - // all the code from this point on will make use solely - // of the spec.Resources field. - if ec.Spec.EnvoyResources != nil { - if resources, err := (ec.Spec.EnvoyResources).Resources(ec.GetSerialization()); err != nil { - return ctrl.Result{}, err - } else { - ec.Spec.Resources = resources - ec.Spec.EnvoyResources = nil - } - } + logger = logger.WithValues("nodeID", ec.Spec.NodeID, "envoyAPI", ec.GetEnvoyAPIVersion()) revisionReconciler := envoyconfig.NewRevisionReconciler( - ctx, log, r.Client, r.Scheme, ec, + ctx, logger, r.Client, r.Scheme, ec, ) - result, err := revisionReconciler.Reconcile() - if result.Requeue || err != nil { - return result, err + reconcilerResult, err := revisionReconciler.Reconcile() + if reconcilerResult.Requeue || err != nil { + return reconcilerResult, err } if ok := envoyconfig.IsStatusReconciled(ec, revisionReconciler.GetCacheState(), revisionReconciler.PublishedVersion(), revisionReconciler.GetRevisionList()); !ok { if err := r.Client.Status().Update(ctx, ec); err != nil { - log.Error(err, "unable to update EnvoyConfig status") + logger.Error(err, "unable to update EnvoyConfig status") return ctrl.Result{}, err } - log.Info("status updated for EnvoyConfig resource") + logger.Info("status updated for EnvoyConfig resource") return reconcile.Result{}, nil } diff --git a/controllers/marin3r/envoyconfigrevision_controller.go b/controllers/marin3r/envoyconfigrevision_controller.go index f650ca36..1b03edd6 100644 --- a/controllers/marin3r/envoyconfigrevision_controller.go +++ b/controllers/marin3r/envoyconfigrevision_controller.go @@ -21,7 +21,8 @@ import ( "fmt" "time" - "github.com/3scale-ops/basereconciler/util" + "github.com/3scale-ops/basereconciler/reconciler" + reconciler_util "github.com/3scale-ops/basereconciler/util" marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" xdss "github.com/3scale-ops/marin3r/pkg/discoveryservice/xdss" "github.com/3scale-ops/marin3r/pkg/discoveryservice/xdss/stats" @@ -41,7 +42,6 @@ import ( "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/predicate" @@ -51,9 +51,7 @@ import ( // EnvoyConfigRevisionReconciler reconciles a EnvoyConfigRevision object type EnvoyConfigRevisionReconciler struct { - Client client.Client - Log logr.Logger - Scheme *runtime.Scheme + *reconciler.Reconciler XdsCache xdss.Cache APIVersion envoy.APIVersion DiscoveryStats *stats.Stats @@ -65,55 +63,36 @@ type EnvoyConfigRevisionReconciler struct { // +kubebuilder:rbac:groups="core",namespace=placeholder,resources=secrets,verbs=get;list;watch // +kubebuilder:rbac:groups="discovery.k8s.io",namespace=placeholder,resources=endpointslices,verbs=get;list;watch func (r *EnvoyConfigRevisionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - log := r.Log.WithValues("name", req.Name, "namespace", req.Namespace) - // Fetch the EnvoyConfigRevision instance + ctx, logger := r.Logger(ctx, "name", req.Name, "namespace", req.Namespace) ecr := &marin3rv1alpha1.EnvoyConfigRevision{} - err := r.Client.Get(ctx, req.NamespacedName, ecr) - if err != nil { - if errors.IsNotFound(err) { - // Request object not found, could have been deleted after reconcile request. - // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers. - // Return and don't requeue - return ctrl.Result{}, nil - } - // Error reading the object - requeue the request. - return ctrl.Result{}, err - } - - if ok := envoyconfigrevision.IsInitialized(ecr); !ok { - if err := r.Client.Update(ctx, ecr); err != nil { - log.Error(err, "unable to update EnvoyConfigRevision") - return ctrl.Result{}, err - } - log.Info("initialized EnvoyConfigRevision resource") - return reconcile.Result{}, nil - } - - // convert spec.EnvoyResources to spec.Resources - // all the code from this point on will make use solely - // of the spec.Resources field. - if ecr.Spec.EnvoyResources != nil { - if resources, err := (ecr.Spec.EnvoyResources).Resources(ecr.GetSerialization()); err != nil { - return ctrl.Result{}, err - } else { - ecr.Spec.Resources = resources - ecr.Spec.EnvoyResources = nil - } - } - - if util.IsBeingDeleted(ecr) { - if !controllerutil.ContainsFinalizer(ecr, marin3rv1alpha1.EnvoyConfigRevisionFinalizer) { - return reconcile.Result{}, nil - } - envoyconfigrevision.CleanupLogic(ecr, r.XdsCache, r.DiscoveryStats, log) - controllerutil.RemoveFinalizer(ecr, marin3rv1alpha1.EnvoyConfigRevisionFinalizer) - if err = r.Client.Update(ctx, ecr); err != nil { - log.Error(err, "unable to update EnvoyConfigRevision") - return reconcile.Result{}, err - } - log.Info("finalized EnvoyConfigRevision resource") - return reconcile.Result{}, nil + result := r.ManageResourceLifecycle(ctx, req, ecr, + // Apply defaults + reconciler.WithInitializationFunc(reconciler_util.ResourceDefaulter(ecr)), + // convert spec.EnvoyResources to spec.Resources + reconciler.WithInMemoryInitializationFunc(func(ctx context.Context, c client.Client, o client.Object) error { + if ecr.Spec.EnvoyResources != nil { + ecr := o.(*marin3rv1alpha1.EnvoyConfigRevision) + if resources, err := (ecr.Spec.EnvoyResources).Resources(ecr.GetSerialization()); err != nil { + return err + } else { + ecr.Spec.Resources = resources + ecr.Spec.EnvoyResources = nil + } + } + return nil + }), + // set finalizer + reconciler.WithFinalizer(marin3rv1alpha1.EnvoyConfigRevisionFinalizer), + // cleanup logic + reconciler.WithFinalizationFunc(func(context.Context, client.Client) error { + envoyconfigrevision.CleanupLogic(ecr, r.XdsCache, r.DiscoveryStats, logger) + logger.Info("finalized EnvoyConfigRevision resource") + return nil + }), + ) + if result.ShouldReturn() { + return result.Values() } var vt *marin3rv1alpha1.VersionTracker = nil @@ -125,7 +104,7 @@ func (r *EnvoyConfigRevisionReconciler) Reconcile(ctx context.Context, req ctrl. decoder := envoy_serializer.NewResourceUnmarshaller(envoy_serializer.JSON, r.APIVersion) cacheReconciler := envoyconfigrevision.NewCacheReconciler( - ctx, log, r.Client, r.XdsCache, + ctx, logger, r.Client, r.XdsCache, decoder, envoy_resources.NewGenerator(r.APIVersion), ) @@ -139,8 +118,8 @@ func (r *EnvoyConfigRevisionReconciler) Reconcile(ctx context.Context, req ctrl. if err != nil { switch err.(type) { case *errors.StatusError: - log.Error(err, fmt.Sprintf("%v", err)) - if err := r.taintSelf(ctx, ecr, "FailedLoadingResources", err.Error(), log); err != nil { + logger.Error(err, fmt.Sprintf("%v", err)) + if err := r.taintSelf(ctx, ecr, "FailedLoadingResources", err.Error(), logger); err != nil { return ctrl.Result{}, err } default: @@ -151,9 +130,9 @@ func (r *EnvoyConfigRevisionReconciler) Reconcile(ctx context.Context, req ctrl. if ok := envoyconfigrevision.IsStatusReconciled(ecr, vt, r.XdsCache, r.DiscoveryStats); !ok { if err := r.Client.Status().Update(ctx, ecr); err != nil { - log.Error(err, "unable to update EnvoyConfigRevision status") + logger.Error(err, "unable to update EnvoyConfigRevision status") } - log.Info("status updated for EnvoyConfigRevision resource") + logger.Info("status updated for EnvoyConfigRevision resource") } if meta.IsStatusConditionTrue(ecr.Status.Conditions, marin3rv1alpha1.RevisionPublishedCondition) { @@ -165,7 +144,7 @@ func (r *EnvoyConfigRevisionReconciler) Reconcile(ctx context.Context, req ctrl. } func (r *EnvoyConfigRevisionReconciler) taintSelf(ctx context.Context, ecr *marin3rv1alpha1.EnvoyConfigRevision, - reason, msg string, log logr.Logger) error { + reason, msg string, logger logr.Logger) error { if !meta.IsStatusConditionTrue(ecr.Status.Conditions, marin3rv1alpha1.RevisionTaintedCondition) { patch := client.MergeFrom(ecr.DeepCopy()) @@ -181,7 +160,7 @@ func (r *EnvoyConfigRevisionReconciler) taintSelf(ctx context.Context, ecr *mari return err } - log.Info(fmt.Sprintf("Tainted revision: %q", msg)) + logger.Info(fmt.Sprintf("Tainted revision: %q", msg)) } return nil } diff --git a/controllers/marin3r/envoyconfigrevision_controller_test.go b/controllers/marin3r/envoyconfigrevision_controller_test.go index 8bbfe9ab..a2689c19 100644 --- a/controllers/marin3r/envoyconfigrevision_controller_test.go +++ b/controllers/marin3r/envoyconfigrevision_controller_test.go @@ -4,6 +4,7 @@ import ( "context" "testing" + "github.com/3scale-ops/basereconciler/reconciler" marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" xdss_v3 "github.com/3scale-ops/marin3r/pkg/discoveryservice/xdss/v3" "github.com/3scale-ops/marin3r/pkg/envoy" @@ -35,10 +36,12 @@ func TestEnvoyConfigRevisionReconciler_taintSelf(t *testing.T) { }, } r := &EnvoyConfigRevisionReconciler{ - Client: fake.NewFakeClient(ecr), - Scheme: scheme.Scheme, + Reconciler: &reconciler.Reconciler{ + Client: fake.NewClientBuilder().WithObjects(ecr).Build(), + Scheme: scheme.Scheme, + Log: ctrl.Log.WithName("test"), + }, XdsCache: xdss_v3.NewCache(), - Log: ctrl.Log.WithName("test"), } if err := r.taintSelf(context.TODO(), ecr, "test", "test", r.Log); err != nil { t.Errorf("EnvoyConfigRevisionReconciler.taintSelf() error = %v", err) diff --git a/controllers/marin3r/suite_test.go b/controllers/marin3r/suite_test.go index c2f406a7..49cea6b0 100644 --- a/controllers/marin3r/suite_test.go +++ b/controllers/marin3r/suite_test.go @@ -23,6 +23,7 @@ import ( "testing" "time" + "github.com/3scale-ops/basereconciler/reconciler" marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" "github.com/3scale-ops/marin3r/pkg/discoveryservice/xdss/stats" @@ -98,17 +99,21 @@ var _ = BeforeSuite(func() { // Add the EnvoyConfig controller err = (&EnvoyConfigReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("envoyconfig"), - Scheme: mgr.GetScheme(), + Reconciler: &reconciler.Reconciler{ + Client: mgr.GetClient(), + Log: ctrl.Log.WithName("controllers").WithName("envoyconfig"), + Scheme: mgr.GetScheme(), + }, }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) // Add the EnvoyConfigRevision v3 controller ecrV3Reconciler = &EnvoyConfigRevisionReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("envoyconfigrevision_v3"), - Scheme: mgr.GetScheme(), + Reconciler: &reconciler.Reconciler{ + Client: mgr.GetClient(), + Log: ctrl.Log.WithName("controllers").WithName("envoyconfigrevision_v3"), + Scheme: mgr.GetScheme(), + }, XdsCache: xdss_v3.NewCache(), APIVersion: envoy.APIv3, DiscoveryStats: stats.New(), diff --git a/controllers/operator.marin3r/discoveryservice_controller.go b/controllers/operator.marin3r/discoveryservice_controller.go index 9cba969d..c8a8a87e 100644 --- a/controllers/operator.marin3r/discoveryservice_controller.go +++ b/controllers/operator.marin3r/discoveryservice_controller.go @@ -20,27 +20,24 @@ import ( "context" "time" + "github.com/3scale-ops/basereconciler/mutators" "github.com/3scale-ops/basereconciler/reconciler" - "github.com/3scale-ops/basereconciler/resources" + "github.com/3scale-ops/basereconciler/resource" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" "github.com/3scale-ops/marin3r/pkg/reconcilers/operator/discoveryservice/generators" - "github.com/3scale-ops/marin3r/pkg/reconcilers/resource_extensions" "github.com/3scale-ops/marin3r/pkg/util/pointer" - "github.com/go-logr/logr" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/client" ) // DiscoveryServiceReconciler reconciles a DiscoveryService object type DiscoveryServiceReconciler struct { - reconciler.Reconciler - Log logr.Logger + *reconciler.Reconciler } // +kubebuilder:rbac:groups=operator.marin3r.3scale.net,namespace=placeholder,resources=*,verbs=* @@ -55,24 +52,13 @@ type DiscoveryServiceReconciler struct { // +kubebuilder:rbac:groups="core",namespace=placeholder,resources=secrets,verbs=get;list;watch;create;update;patch // +kubebuilder:rbac:groups="discovery.k8s.io",namespace=placeholder,resources=endpointslices,verbs=get;list;watch -func (r *DiscoveryServiceReconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl.Result, error) { - logger := r.Log.WithValues("name", request.Name, "namespace", request.Namespace) - ctx = log.IntoContext(ctx, logger) +func (r *DiscoveryServiceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + ctx, _ = r.Logger(ctx, "name", req.Name, "namespace", req.Namespace) ds := &operatorv1alpha1.DiscoveryService{} - key := types.NamespacedName{Name: request.Name, Namespace: request.Namespace} - result, err := r.GetInstance(ctx, key, ds, nil, nil) - if result != nil || err != nil { - return *result, err - } - - // Temporary code to remove finalizers from DiscoveryService resources - if controllerutil.ContainsFinalizer(ds, operatorv1alpha1.Finalizer) { - controllerutil.RemoveFinalizer(ds, operatorv1alpha1.Finalizer) - if err := r.Client.Update(ctx, ds); err != nil { - logger.Error(err, "unable to remove finalizer") - } - return ctrl.Result{}, nil + result := r.ManageResourceLifecycle(ctx, req, ds) + if result.ShouldReturn() { + return result.Values() } gen := generators.GeneratorOptions{ @@ -100,34 +86,28 @@ func (r *DiscoveryServiceReconciler) Reconcile(ctx context.Context, request ctrl return ctrl.Result{}, err } - res := []reconciler.Resource{ - resource_extensions.DiscoveryServiceCertificateTemplate{Template: gen.RootCertificationAuthority(), IsEnabled: true}, - resource_extensions.DiscoveryServiceCertificateTemplate{Template: gen.ServerCertificate(), IsEnabled: true}, - resource_extensions.DiscoveryServiceCertificateTemplate{Template: gen.ClientCertificate(), IsEnabled: true}, - resources.ServiceAccountTemplate{Template: gen.ServiceAccount(), IsEnabled: true}, - resources.RoleTemplate{Template: gen.Role(), IsEnabled: true}, - resources.RoleBindingTemplate{Template: gen.RoleBinding(), IsEnabled: true}, - resources.ServiceTemplate{Template: gen.Service(), IsEnabled: true}, - resources.DeploymentTemplate{ - Template: gen.Deployment(serverCertHash), - EnforceReplicas: true, - // wait until the server certificate is ready before Deployment creation - IsEnabled: serverCertHash != "", - }, + resources := []resource.TemplateInterface{ + resource.NewTemplateFromObjectFunction(gen.RootCertificationAuthority).Apply(dscDefaulter), + resource.NewTemplateFromObjectFunction(gen.ServerCertificate).Apply(dscDefaulter), + resource.NewTemplateFromObjectFunction(gen.ClientCertificate).Apply(dscDefaulter), + resource.NewTemplateFromObjectFunction(gen.ServiceAccount), + resource.NewTemplateFromObjectFunction(gen.Role), + resource.NewTemplateFromObjectFunction(gen.RoleBinding), + resource.NewTemplateFromObjectFunction(gen.Service).WithMutation(mutators.SetServiceLiveValues()), + resource.NewTemplateFromObjectFunction(gen.Deployment(serverCertHash)).WithEnabled(serverCertHash != ""), } - if err := r.ReconcileOwnedResources(ctx, ds, res); err != nil { - logger.Error(err, "unable to update owned resources") - return ctrl.Result{}, err + result = r.ReconcileOwnedResources(ctx, ds, resources) + if result.ShouldReturn() { + return result.Values() } - // requeue if the server certificate is not ready if serverCertHash == "" { return ctrl.Result{Requeue: true}, nil } // reconcile the status - err = r.ReconcileStatus(ctx, ds, []types.NamespacedName{{Name: gen.ResourceName(), Namespace: ds.GetNamespace()}}, nil, + result = r.ReconcileStatus(ctx, ds, []types.NamespacedName{{Name: gen.ResourceName(), Namespace: ds.GetNamespace()}}, nil, func() bool { if ds.Status.DeploymentName == nil || *ds.Status.DeploymentName != gen.ResourceName() { ds.Status.DeploymentName = pointer.New(gen.ResourceName()) @@ -135,8 +115,8 @@ func (r *DiscoveryServiceReconciler) Reconcile(ctx context.Context, request ctrl } return false }) - if err != nil { - return ctrl.Result{}, err + if result.ShouldReturn() { + return result.Values() } return ctrl.Result{}, nil @@ -158,6 +138,12 @@ func (r *DiscoveryServiceReconciler) calculateServerCertificateHash(ctx context. return serverDSC.Status.GetCertificateHash(), nil } +func dscDefaulter(o client.Object) (*operatorv1alpha1.DiscoveryServiceCertificate, error) { + dsc := o.(*operatorv1alpha1.DiscoveryServiceCertificate) + dsc.Default() + return dsc, nil +} + // SetupWithManager adds the controller to the manager func (r *DiscoveryServiceReconciler) SetupWithManager(mgr ctrl.Manager) error { diff --git a/controllers/operator.marin3r/discoveryservicecertificate_controller.go b/controllers/operator.marin3r/discoveryservicecertificate_controller.go index 98705005..c92d5c69 100644 --- a/controllers/operator.marin3r/discoveryservicecertificate_controller.go +++ b/controllers/operator.marin3r/discoveryservicecertificate_controller.go @@ -19,13 +19,12 @@ package controllers import ( "context" + "github.com/3scale-ops/basereconciler/reconciler" + reconciler_util "github.com/3scale-ops/basereconciler/util" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" discoveryservicecertificate "github.com/3scale-ops/marin3r/pkg/reconcilers/operator/discoveryservicecertificate" marin3r_provider "github.com/3scale-ops/marin3r/pkg/reconcilers/operator/discoveryservicecertificate/providers/marin3r" - "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -36,49 +35,31 @@ import ( // DiscoveryServiceCertificateReconciler reconciles a DiscoveryServiceCertificate object type DiscoveryServiceCertificateReconciler struct { - // This Client, initialized using mgr.Client() above, is a split Client - // that reads objects from the cache and writes to the apiserver - Client client.Client - Scheme *runtime.Scheme - Log logr.Logger + *reconciler.Reconciler } // +kubebuilder:rbac:groups=operator.marin3r.3scale.net,namespace=placeholder,resources=discoveryservicecertificates,verbs=get;list;watch;create;update;patch;delete // +kubebuilder:rbac:groups=operator.marin3r.3scale.net,namespace=placeholder,resources=discoveryservicecertificates/status,verbs=get;update;patch // +kubebuilder:rbac:groups="core",namespace=placeholder,resources=secrets,verbs=get;list;watch;create;update;patch -func (r *DiscoveryServiceCertificateReconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl.Result, error) { - log := r.Log.WithValues("name", request.Name, "namespace", request.Namespace) +func (r *DiscoveryServiceCertificateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - // Fetch the DiscoveryServiceCertificate instance + ctx, log := r.Logger(ctx, "name", req.Name, "namespace", req.Namespace) dsc := &operatorv1alpha1.DiscoveryServiceCertificate{} - err := r.Client.Get(ctx, request.NamespacedName, dsc) - if err != nil { - if errors.IsNotFound(err) { - // Request object not found, could have been deleted after reconcile request. - // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers. - // Return and don't requeue - return ctrl.Result{}, nil - } - return ctrl.Result{}, err - } - - if ok := discoveryservicecertificate.IsInitialized(dsc); !ok { - if err := r.Client.Update(ctx, dsc); err != nil { - log.Error(err, "unable to update DiscoveryServiceCertificate") - return ctrl.Result{}, err - } - log.Info("initialized DiscoveryServiceCertificate resource") - return reconcile.Result{}, nil + result := r.ManageResourceLifecycle(ctx, req, dsc, + reconciler.WithInitializationFunc(reconciler_util.ResourceDefaulter(dsc)), + ) + if result.ShouldReturn() { + return result.Values() } // Only the internal certificate provider is currently supported provider := marin3r_provider.NewCertificateProvider(ctx, log, r.Client, r.Scheme, dsc) certificateReconciler := discoveryservicecertificate.NewCertificateReconciler(ctx, log, r.Client, r.Scheme, dsc, provider) - result, err := certificateReconciler.Reconcile() - if result.Requeue || err != nil { - return result, err + reconcilerResult, err := certificateReconciler.Reconcile() + if reconcilerResult.Requeue || err != nil { + return reconcilerResult, err } if ok := discoveryservicecertificate.IsStatusReconciled(dsc, certificateReconciler.GetCertificateHash(), diff --git a/controllers/operator.marin3r/envoydeployment_controller.go b/controllers/operator.marin3r/envoydeployment_controller.go index 6f4cc2cb..1c14c8f5 100644 --- a/controllers/operator.marin3r/envoydeployment_controller.go +++ b/controllers/operator.marin3r/envoydeployment_controller.go @@ -22,15 +22,14 @@ import ( "reflect" "time" + "github.com/3scale-ops/basereconciler/mutators" "github.com/3scale-ops/basereconciler/reconciler" - "github.com/3scale-ops/basereconciler/resources" + "github.com/3scale-ops/basereconciler/resource" marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" "github.com/3scale-ops/marin3r/pkg/envoy/container/defaults" "github.com/3scale-ops/marin3r/pkg/reconcilers/operator/envoydeployment/generators" - "github.com/3scale-ops/marin3r/pkg/reconcilers/resource_extensions" "github.com/3scale-ops/marin3r/pkg/util/pointer" - "github.com/go-logr/logr" appsv1 "k8s.io/api/apps/v1" autoscalingv2 "k8s.io/api/autoscaling/v2" corev1 "k8s.io/api/core/v1" @@ -40,17 +39,14 @@ import ( "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/handler" - "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" ) // EnvoyDeploymentReconciler reconciles a EnvoyDeployment object type EnvoyDeploymentReconciler struct { - reconciler.Reconciler - Log logr.Logger + *reconciler.Reconciler } //+kubebuilder:rbac:groups=operator.marin3r.3scale.net,namespace=placeholder,resources=envoydeployments,verbs=get;list;watch;create;update;patch;delete @@ -66,23 +62,12 @@ type EnvoyDeploymentReconciler struct { // Reconcile is part of the main kubernetes reconciliation loop which aims to // move the current state of the cluster closer to the desired state. func (r *EnvoyDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - logger := r.Log.WithValues("envoydeployment", req.NamespacedName) - ctx = log.IntoContext(ctx, logger) + ctx, logger := r.Logger(ctx, "name", req.Name, "namespace", req.Namespace) ed := &operatorv1alpha1.EnvoyDeployment{} - key := types.NamespacedName{Name: req.Name, Namespace: req.Namespace} - result, err := r.GetInstance(ctx, key, ed, nil, nil) - if result != nil || err != nil { - return *result, err - } - - // Temporary code to remove finalizers from EnvoyDeployment resources - if controllerutil.ContainsFinalizer(ed, operatorv1alpha1.Finalizer) { - controllerutil.RemoveFinalizer(ed, operatorv1alpha1.Finalizer) - if err := r.Client.Update(ctx, ed); err != nil { - logger.Error(err, "unable to remove finalizer") - } - return ctrl.Result{}, nil + result := r.ManageResourceLifecycle(ctx, req, ed) + if result.ShouldReturn() { + return result.Values() } // Get the address of the DiscoveryService instance @@ -134,33 +119,23 @@ func (r *EnvoyDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Requ InitManager: ed.Spec.InitManager, } - res := []reconciler.Resource{ - resource_extensions.DiscoveryServiceCertificateTemplate{ - Template: gen.ClientCertificate(), - IsEnabled: true, - }, - resources.DeploymentTemplate{ - Template: gen.Deployment(), - EnforceReplicas: ed.Replicas().Dynamic == nil, - IsEnabled: true, - }, - resources.HorizontalPodAutoscalerTemplate{ - Template: gen.HPA(), - IsEnabled: ed.Replicas().Dynamic != nil, - }, - resources.PodDisruptionBudgetTemplate{ - Template: gen.PDB(), - IsEnabled: !reflect.DeepEqual(ed.PodDisruptionBudget(), operatorv1alpha1.PodDisruptionBudgetSpec{}), - }, + resources := []resource.TemplateInterface{ + resource.NewTemplateFromObjectFunction(gen.ClientCertificate).Apply(dscDefaulter), + resource.NewTemplateFromObjectFunction(gen.Deployment). + WithMutation(mutators.SetDeploymentReplicas(ed.Replicas().Dynamic == nil)), + resource.NewTemplateFromObjectFunction(gen.HPA). + WithEnabled(ed.Replicas().Dynamic != nil), + resource.NewTemplateFromObjectFunction(gen.PDB). + WithEnabled(!reflect.DeepEqual(ed.PodDisruptionBudget(), operatorv1alpha1.PodDisruptionBudgetSpec{})), } - if err := r.ReconcileOwnedResources(ctx, ed, res); err != nil { - logger.Error(err, "unable to update owned resources") - return ctrl.Result{}, err + result = r.ReconcileOwnedResources(ctx, ed, resources) + if result.ShouldReturn() { + return result.Values() } // reconcile the status - err = r.ReconcileStatus(ctx, ed, []types.NamespacedName{gen.OwnedResourceKey()}, nil, + result = r.ReconcileStatus(ctx, ed, []types.NamespacedName{gen.OwnedResourceKey()}, nil, func() bool { if ed.Status.DeploymentName == nil || *ed.Status.DeploymentName != gen.OwnedResourceKey().Name { ed.Status.DeploymentName = pointer.New(gen.OwnedResourceKey().Name) @@ -168,8 +143,8 @@ func (r *EnvoyDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Requ } return false }) - if err != nil { - return ctrl.Result{}, err + if result.ShouldReturn() { + return result.Values() } return ctrl.Result{}, nil diff --git a/controllers/operator.marin3r/reconciler_config.go b/controllers/operator.marin3r/reconciler_config.go index 6b525980..9767681a 100644 --- a/controllers/operator.marin3r/reconciler_config.go +++ b/controllers/operator.marin3r/reconciler_config.go @@ -1,25 +1,93 @@ package controllers import ( - "github.com/3scale-ops/basereconciler/reconciler" - operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" - appsv1 "k8s.io/api/apps/v1" - autoscalingv2 "k8s.io/api/autoscaling/v2" - corev1 "k8s.io/api/core/v1" - policyv1 "k8s.io/api/policy/v1" - rbacv1 "k8s.io/api/rbac/v1" + "github.com/3scale-ops/basereconciler/config" + "k8s.io/apimachinery/pkg/runtime/schema" ) func init() { - reconciler.Config.AnnotationsDomain = "marin3r.3scale.net" - reconciler.Config.ResourcePruner = false - reconciler.Config.ManagedTypes = reconciler.NewManagedTypes(). - Register(&appsv1.DeploymentList{}). - Register(&corev1.ServiceList{}). - Register(&rbacv1.RoleList{}). - Register(&rbacv1.RoleBindingList{}). - Register(&corev1.ServiceAccountList{}). - Register(&operatorv1alpha1.DiscoveryServiceCertificateList{}). - Register(&policyv1.PodDisruptionBudgetList{}). - Register(&autoscalingv2.HorizontalPodAutoscalerList{}) + config.SetAnnotationsDomain("marin3r.3scale.net") + config.DisableResourcePruner() + config.DisableDynamicWatches() + config.SetDefaultReconcileConfigForGVK( + schema.FromAPIVersionAndKind("v1", "Service"), + config.ReconcileConfigForGVK{ + EnsureProperties: []string{ + "metadata.annotations", + "metadata.labels", + "spec.type", + "spec.ports", + "spec.selector", + "spec.clusterIP", + "spec.clusterIPs", + }, + }) + config.SetDefaultReconcileConfigForGVK( + schema.FromAPIVersionAndKind("apps/v1", "Deployment"), + config.ReconcileConfigForGVK{ + EnsureProperties: []string{ + "metadata.annotations", + "metadata.labels", + "spec.minReadySeconds", + "spec.replicas", + "spec.selector", + "spec.strategy", + "spec.template.metadata.labels", + "spec.template.metadata.annotations", + "spec.template.spec", + }, + IgnoreProperties: []string{ + "metadata.annotations['deployment.kubernetes.io/revision']", + "spec.template.spec.dnsPolicy", + "spec.template.spec.schedulerName", + "spec.template.spec.restartPolicy", + "spec.template.spec.securityContext", + "spec.template.spec.containers[*].terminationMessagePath", + "spec.template.spec.containers[*].terminationMessagePolicy", + "spec.template.spec.initContainers[*].terminationMessagePath", + "spec.template.spec.initContainers[*].terminationMessagePolicy", + }, + }) + config.SetDefaultReconcileConfigForGVK( + schema.FromAPIVersionAndKind("autoscaling/v2", "HorizontalPodAutoscaler"), + config.ReconcileConfigForGVK{ + EnsureProperties: []string{ + "metadata.annotations", + "metadata.labels", + "spec.scaleTargetRef", + "spec.minReplicas", + "spec.maxReplicas", + "spec.metrics", + }, + }) + config.SetDefaultReconcileConfigForGVK( + schema.FromAPIVersionAndKind("policy/v1", "PodDisruptionBudget"), + config.ReconcileConfigForGVK{ + EnsureProperties: []string{ + "metadata.annotations", + "metadata.labels", + "spec.maxUnavailable", + "spec.minAvailable", + "spec.selector", + }, + }) + config.SetDefaultReconcileConfigForGVK( + schema.FromAPIVersionAndKind("rbac.authorization.k8s.io/v1", "Role"), + config.ReconcileConfigForGVK{ + EnsureProperties: []string{ + "metadata.annotations", + "metadata.labels", + "rules", + }, + }) + config.SetDefaultReconcileConfigForGVK( + schema.FromAPIVersionAndKind("rbac.authorization.k8s.io/v1", "RoleBinding"), + config.ReconcileConfigForGVK{ + EnsureProperties: []string{ + "metadata.annotations", + "metadata.labels", + "roleRef", + "subjects", + }, + }) } diff --git a/controllers/operator.marin3r/suite_test.go b/controllers/operator.marin3r/suite_test.go index a0f5309b..49ec5659 100644 --- a/controllers/operator.marin3r/suite_test.go +++ b/controllers/operator.marin3r/suite_test.go @@ -94,21 +94,20 @@ var _ = BeforeSuite(func() { Expect(err).ToNot(HaveOccurred()) err = (&DiscoveryServiceReconciler{ - Reconciler: reconciler.NewFromManager(mgr), - Log: ctrl.Log.WithName("controllers").WithName("discoveryservice"), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("discoveryservice")), }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) err = (&DiscoveryServiceCertificateReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("discoveryservicecertificate"), - Scheme: mgr.GetScheme(), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("discoveryservicecertificate")), }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) err = (&EnvoyDeploymentReconciler{ - Reconciler: reconciler.NewFromManager(mgr), - Log: ctrl.Log.WithName("controllers").WithName("envoydeployment"), + Reconciler: reconciler.NewFromManager(mgr). + WithLogger(ctrl.Log.WithName("controllers").WithName("envoydeployment")), }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) diff --git a/generators/pkg-envoy-proto/go.mod b/generators/pkg-envoy-proto/go.mod index 4e6d93b0..322f06a6 100644 --- a/generators/pkg-envoy-proto/go.mod +++ b/generators/pkg-envoy-proto/go.mod @@ -3,16 +3,16 @@ module github.com/3scale-ops/marin3r/generators/pkg-envoy-proto go 1.20 require ( - github.com/dave/jennifer v1.6.0 + github.com/dave/jennifer v1.7.0 github.com/go-git/go-git/v5 v5.11.0 - github.com/spf13/cobra v1.6.1 - golang.org/x/mod v0.12.0 + github.com/spf13/cobra v1.8.0 + golang.org/x/mod v0.14.0 ) require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect @@ -27,9 +27,9 @@ require ( github.com/skeema/knownhosts v1.2.1 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/tools v0.13.0 // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/tools v0.17.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/generators/pkg-envoy-proto/go.sum b/generators/pkg-envoy-proto/go.sum index 7d7f95d4..fb24e7cb 100644 --- a/generators/pkg-envoy-proto/go.sum +++ b/generators/pkg-envoy-proto/go.sum @@ -3,19 +3,19 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI= -github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk= +github.com/dave/jennifer v1.7.0 h1:uRbSBH9UTS64yXbh4FrMHfgfY762RD+C7bUPKODpSJE= +github.com/dave/jennifer v1.7.0/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= 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= @@ -33,7 +33,6 @@ github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lK 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/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -59,8 +58,8 @@ github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NF github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= 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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -75,12 +74,12 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -88,12 +87,12 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -107,14 +106,14 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -127,8 +126,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/generators/pkg-image/go.mod b/generators/pkg-image/go.mod index 2f88729d..828d91e1 100644 --- a/generators/pkg-image/go.mod +++ b/generators/pkg-image/go.mod @@ -3,8 +3,8 @@ module github.com/3scale-ops/marin3r/generators/pkg-image go 1.20 require ( - github.com/dave/jennifer v1.6.0 - github.com/spf13/cobra v1.6.1 + github.com/dave/jennifer v1.7.0 + github.com/spf13/cobra v1.8.0 ) require ( diff --git a/generators/pkg-image/go.sum b/generators/pkg-image/go.sum index d7f1f8ed..374a8273 100644 --- a/generators/pkg-image/go.sum +++ b/generators/pkg-image/go.sum @@ -1,12 +1,11 @@ -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI= -github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/dave/jennifer v1.7.0 h1:uRbSBH9UTS64yXbh4FrMHfgfY762RD+C7bUPKODpSJE= +github.com/dave/jennifer v1.7.0/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/generators/pkg-version/go.mod b/generators/pkg-version/go.mod index e365eee8..6b315ad7 100644 --- a/generators/pkg-version/go.mod +++ b/generators/pkg-version/go.mod @@ -3,8 +3,8 @@ module github.com/3scale-ops/marin3r/generators/pkg-version go 1.20 require ( - github.com/dave/jennifer v1.6.0 - github.com/spf13/cobra v1.6.1 + github.com/dave/jennifer v1.7.0 + github.com/spf13/cobra v1.8.0 ) require ( diff --git a/generators/pkg-version/go.sum b/generators/pkg-version/go.sum index d7f1f8ed..374a8273 100644 --- a/generators/pkg-version/go.sum +++ b/generators/pkg-version/go.sum @@ -1,12 +1,11 @@ -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI= -github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/dave/jennifer v1.7.0 h1:uRbSBH9UTS64yXbh4FrMHfgfY762RD+C7bUPKODpSJE= +github.com/dave/jennifer v1.7.0/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 6a158ad3..8377640d 100644 --- a/go.mod +++ b/go.mod @@ -3,49 +3,42 @@ module github.com/3scale-ops/marin3r go 1.20 require ( - github.com/3scale-ops/basereconciler v0.3.4 + github.com/3scale-ops/basereconciler v0.5.0 github.com/MakeNowJust/heredoc v1.0.0 github.com/davecgh/go-spew v1.1.1 - github.com/envoyproxy/go-control-plane v0.11.0 + github.com/envoyproxy/go-control-plane v0.12.0 github.com/ghodss/yaml v1.0.0 - github.com/go-logr/logr v1.2.4 + github.com/go-logr/logr v1.4.1 github.com/go-test/deep v1.1.0 - github.com/google/go-cmp v0.5.9 + github.com/google/go-cmp v0.6.0 github.com/goombaio/namegenerator v0.0.0-20181006234301-989e774b106e github.com/onsi/ginkgo/v2 v2.9.1 github.com/onsi/gomega v1.27.3 github.com/patrickmn/go-cache v2.1.0+incompatible - github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 + github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/prometheus/client_golang v1.14.0 github.com/prometheus/common v0.42.0 - github.com/spf13/cobra v1.7.0 - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 - google.golang.org/grpc v1.55.0 - google.golang.org/protobuf v1.30.0 + github.com/spf13/cobra v1.8.0 + google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 + google.golang.org/grpc v1.58.3 + google.golang.org/protobuf v1.32.0 k8s.io/api v0.26.2 k8s.io/apimachinery v0.26.5 k8s.io/client-go v0.26.2 sigs.k8s.io/controller-runtime v0.14.5 - sigs.k8s.io/yaml v1.3.0 + sigs.k8s.io/yaml v1.4.0 ) 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.4.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195 // indirect + github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 // indirect github.com/emicklei/go-restful/v3 v3.10.2 // indirect - github.com/envoyproxy/protoc-gen-validate v0.10.0 // indirect + github.com/envoyproxy/protoc-gen-validate v1.0.2 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect - github.com/external-secrets/external-secrets v0.8.1 // 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-logr/zapr v1.2.3 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect @@ -55,51 +48,41 @@ require ( 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-containerregistry v0.15.2 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20230309165930-d61513b1440d // indirect github.com/google/uuid v1.3.0 // indirect - github.com/grafana-operator/grafana-operator/v4 v4.10.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kr/pretty v0.3.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/moby/spdystream v0.2.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/opencontainers/go-digest v1.0.0 // indirect - github.com/openshift/api v0.0.0-20220715133027-dab5b363ebd1 // indirect + github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 // indirect + github.com/ohler55/ojg v1.20.3 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.42.1 // indirect - github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect - github.com/prometheus/statsd_exporter v0.21.0 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/tektoncd/pipeline v0.49.0 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/proto/otlp v0.19.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.10.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0 // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sync v0.2.0 // indirect + golang.org/x/oauth2 v0.10.0 // indirect golang.org/x/sys v0.13.0 // indirect golang.org/x/term v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.8.0 // indirect + golang.org/x/tools v0.10.0 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect - google.golang.org/api v0.121.0 // indirect google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -108,7 +91,6 @@ require ( k8s.io/klog/v2 v2.90.1 // indirect k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a // indirect k8s.io/utils v0.0.0-20230313181309-38a27ef9d749 // indirect - knative.dev/pkg v0.0.0-20230221145627-8efb3485adcf // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/go.sum b/go.sum index 88b5a2a5..08130e4f 100644 --- a/go.sum +++ b/go.sum @@ -1,109 +1,37 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.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/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -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= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/3scale-ops/basereconciler v0.3.4 h1:KRA535+TNR0HCdGpxp/MwI9H2hPkTsIf0F+bo9ZqOFI= -github.com/3scale-ops/basereconciler v0.3.4/go.mod h1:tPJ50gfzbDC52reWkDDaEHO1leuRx9JzqggwIRA+cL0= +github.com/3scale-ops/basereconciler v0.5.0 h1:bw3jrtaG7a9O7MnQJcfgDpJvxv2P8xNS9bKW7gwEgfU= +github.com/3scale-ops/basereconciler v0.5.0/go.mod h1:QuHsnYMbPQYKZjXjKX93efNI2VH2jVio4emJVJy7sRg= 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 v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= 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.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/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/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= 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-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= 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-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/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/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/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/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/sdk-go/v2 v2.14.0 h1:Nrob4FwVgi5L4tV9lhjzZcjYqFVyJzsA56CwPaPfv6s= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195 h1:58f1tJ1ra+zFINPlwLWvQsR9CzAKt2e+EWV2yX9oXQ4= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= -github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= -github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= 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/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/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= -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.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -111,99 +39,47 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.11.0 h1:jtLewhRR2vMRNnq2ZZUoCjUlgut+Y0+sDDWPOfwOi1o= -github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= +github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.10.0 h1:oIfnZFdC0YhpNNEX+SuIqko4cqqVZeN9IGTrhZje83Y= -github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= 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.12.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.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -github.com/external-secrets/external-secrets v0.8.1 h1:LI7lYmR04Zi2gMVdgifTtyGKfBtYrCA380ePgds2gsY= -github.com/external-secrets/external-secrets v0.8.1/go.mod h1:N5TxTxHLbCK2vVmcUAbUUorwuZiKxJqd/j8I65+44Zc= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -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/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-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 v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -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.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.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/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/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= @@ -216,72 +92,29 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS 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/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.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= 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.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-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE= -github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/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/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/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -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-20230309165930-d61513b1440d h1:um9/pc7tKMINFfP1eE7Wv6PRGXlcCSJkVajF7KJw3uQ= github.com/google/pprof v0.0.0-20230309165930-d61513b1440d/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -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/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/goombaio/namegenerator v0.0.0-20181006234301-989e774b106e h1:XmA6L9IPRdUr28a+SK/oMchGgQy159wvzXA5tJ7l+40= github.com/goombaio/namegenerator v0.0.0-20181006234301-989e774b106e/go.mod h1:AFIo+02s+12CEg8Gzz9kzhCbmbq6JcKNrhHffCGA9z4= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana-operator/grafana-operator/v4 v4.10.0 h1:+AVEPP/wflmx5ySdzt1mIw+q63ZYVInxQhF3XKNhJv4= -github.com/grafana-operator/grafana-operator/v4 v4.10.0/go.mod h1:k69wJcXVrqAcZBoGuh5LSqz0ak8LlVOxxqp0W3f/4V8= -github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -289,504 +122,198 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= 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 v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= -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.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.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/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.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/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/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-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/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/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/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.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.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 h1:dOYG7LS/WK00RWZc8XGgcUTlTxpp3mKhdR2Q9z9HbXM= +github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1/go.mod h1:mpRZBD8SJ55OIICQ3iWH0Yz3cjzA61JdqMLoWXeB2+8= +github.com/ohler55/ojg v1.20.3 h1:Z+fnElsA/GbI5oiT726qJaG4Ca9q5l7UO68Qd0PtkD4= +github.com/ohler55/ojg v1.20.3/go.mod h1:uHcD1ErbErC27Zhb5Df2jUjbseLLcmOCo6oxSr3jZxo= github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -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.27.3 h1:5VwIwnBY3vbBDOJrNtA4rVdiTZCsq9B5F12pvy1Drmk= github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/openshift/api v0.0.0-20220715133027-dab5b363ebd1 h1:FzCXZdnkGLus4hHu7/d/utr3ELPiwNt2ffAqSspi6U8= -github.com/openshift/api v0.0.0-20220715133027-dab5b363ebd1/go.mod h1:LEnw1IVscIxyDnltE3Wi7bQb/QzIM8BfPNKoGA1Qlxw= -github.com/openshift/build-machinery-go v0.0.0-20211213093930-7e33a7eb4ce3/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.42.1 h1:/CZyIylkTNOiVdzTtHwkTHTMOCGJXuLtu3ZLAQrH4u0= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.42.1/go.mod h1:iIz0gzBgsmUvH3POupwMevtm74XmRcEBx8w/tE3sl4k= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.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.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -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/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.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/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.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= 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/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/tektoncd/pipeline v0.49.0 h1:LxpgoPZvIDiOvPj6vtInnGG0uzuQ5CPA+h8FdJdklh4= -github.com/tektoncd/pipeline v0.49.0/go.mod h1:R3Qn/oTTf1SCLrj+rCg4sqUbpx7vE+6D8Z81+zKUdqQ= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= 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 v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -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/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.7.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/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -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.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -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/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0 h1:LGJsf5LRplCck6jUCH3dBL2dmycNruWNF5xugkSlfXw= -golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -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/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= 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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/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-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-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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -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-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/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.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= 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-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/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-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191022100944-742c48ecaeb7/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-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-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-20210510120138-977fb7262007/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -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.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= 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 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= -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.121.0 h1:8Oopoo8Vavxx6gt+sgs8s8/X60WBAtKQq6JqnkF+xow= -google.golang.org/api v0.121.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-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-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 h1:FmF5cCW94Ij59cfpoLiwTgodWmm60eEV0CjlsVg2fuw= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= 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= @@ -795,33 +322,22 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -831,62 +347,28 @@ 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= 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.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= -k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/apiextensions-apiserver v0.26.2 h1:/yTG2B9jGY2Q70iGskMf41qTLhL9XeNN2KhI0uDgwko= k8s.io/apiextensions-apiserver v0.26.2/go.mod h1:Y7UPgch8nph8mGCuVk0SK83LnS8Esf3n6fUBgew8SH8= -k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= -k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.26.5 h1:hTQVhJao2piX7vSgCn4Lwd6E0o/+TJIH4NqRf+q4EmE= k8s.io/apimachinery v0.26.5/go.mod h1:HUvk6wrOP4v22AIYqeCGSQ6xWCHo41J9d6psb3temAg= k8s.io/client-go v0.26.2 h1:s1WkVujHX3kTp4Zn4yGNFK+dlDXy1bAAkIl+cFAiuYI= k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= -k8s.io/code-generator v0.24.0/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= k8s.io/component-base v0.26.2 h1:IfWgCGUDzrD6wLLgXEstJKYZKAFS2kO+rBRi0p3LqcI= k8s.io/component-base v0.26.2/go.mod h1:DxbuIe9M3IZPRxPIzhch2m1eT7uFrSBJUBuVCQEBivs= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -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.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= -k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a h1:gmovKNur38vgoWfGtP5QOGNOA7ki4n6qNYoFAgMlNvg= k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/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/pkg v0.0.0-20230221145627-8efb3485adcf h1:TwvZFDpkyqpK2OCAwvNGV2Zjk14FzIh8X8Ci/du3jYI= -knative.dev/pkg v0.0.0-20230221145627-8efb3485adcf/go.mod h1:VO/fcEsq43seuONRQxZyftWHjpMabYzRHDtpSEQ/eoQ= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/controller-runtime v0.14.5 h1:6xaWFqzT5KuAQ9ufgUaj1G/+C4Y1GRkhrxl+BJ9i+5s= sigs.k8s.io/controller-runtime v0.14.5/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= 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/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/envoy/bootstrap/v3/bootstrap.go b/pkg/envoy/bootstrap/v3/bootstrap.go index a3cc8111..59b01f3d 100644 --- a/pkg/envoy/bootstrap/v3/bootstrap.go +++ b/pkg/envoy/bootstrap/v3/bootstrap.go @@ -46,8 +46,12 @@ func (c *Config) GenerateStatic() (string, error) { Name: "xds_client_certificate", SdsConfig: &envoy_config_core_v3.ConfigSource{ ResourceApiVersion: envoy_config_core_v3.ApiVersion_V3, - ConfigSourceSpecifier: &envoy_config_core_v3.ConfigSource_Path{ - Path: c.Options.SdsConfigSourcePath, + // Path: c.Options.SdsConfigSourcePath, + ConfigSourceSpecifier: &envoy_config_core_v3.ConfigSource_PathConfigSource{ + PathConfigSource: &envoy_config_core_v3.PathConfigSource{ + Path: c.Options.SdsConfigSourcePath, + // WatchedDirectory: &envoy_config_core_v3.WatchedDirectory{}, + }, }, }, }, diff --git a/pkg/envoy/bootstrap/v3/bootstrap_test.go b/pkg/envoy/bootstrap/v3/bootstrap_test.go index 2df07e3c..7b24f225 100644 --- a/pkg/envoy/bootstrap/v3/bootstrap_test.go +++ b/pkg/envoy/bootstrap/v3/bootstrap_test.go @@ -29,7 +29,7 @@ func TestConfig_GenerateStatic(t *testing.T) { Metadata: map[string]string{"key1": "value1", "key2": "value2"}, }, }, - want: `{"node":{"id":"some-id","cluster":"some-cluster","metadata":{"key1":"value1","key2":"value2"}},"static_resources":{"clusters":[{"name":"xds_cluster","type":"STRICT_DNS","connect_timeout":"1s","load_assignment":{"cluster_name":"xds_cluster","endpoints":[{"lb_endpoints":[{"endpoint":{"address":{"socket_address":{"address":"localhost","port_value":10000}}}}]}]},"typed_extension_protocol_options":{"envoy.extensions.upstreams.http.v3.HttpProtocolOptions":{"@type":"type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions","explicit_http_config":{"http2_protocol_options":{}}}},"transport_socket":{"name":"envoy.transport_sockets.tls","typed_config":{"@type":"type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext","common_tls_context":{"tls_certificate_sds_secret_configs":[{"name":"xds_client_certificate","sds_config":{"path":"/sds-config-source.json","resource_api_version":"V3"}}]}}}}]},"dynamic_resources":{"lds_config":{"ads":{},"resource_api_version":"V3"},"cds_config":{"ads":{},"resource_api_version":"V3"},"ads_config":{"api_type":"GRPC","transport_api_version":"V3","grpc_services":[{"envoy_grpc":{"cluster_name":"xds_cluster"}}]}},"layered_runtime":{"layers":[{"name":"runtime","rtds_layer":{"name":"runtime","rtds_config":{"ads":{},"resource_api_version":"V3"}}}]},"admin":{"access_log":[{"name":"envoy.access_loggers.file","typed_config":{"@type":"type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog","path":"/dev/null"}}],"address":{"socket_address":{"address":"0.0.0.0","port_value":9001}}}}`, + want: `{"node":{"id":"some-id","cluster":"some-cluster","metadata":{"key1":"value1","key2":"value2"}},"static_resources":{"clusters":[{"name":"xds_cluster","type":"STRICT_DNS","connect_timeout":"1s","load_assignment":{"cluster_name":"xds_cluster","endpoints":[{"lb_endpoints":[{"endpoint":{"address":{"socket_address":{"address":"localhost","port_value":10000}}}}]}]},"typed_extension_protocol_options":{"envoy.extensions.upstreams.http.v3.HttpProtocolOptions":{"@type":"type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions","explicit_http_config":{"http2_protocol_options":{}}}},"transport_socket":{"name":"envoy.transport_sockets.tls","typed_config":{"@type":"type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext","common_tls_context":{"tls_certificate_sds_secret_configs":[{"name":"xds_client_certificate","sds_config":{"path_config_source":{"path":"/sds-config-source.json"},"resource_api_version":"V3"}}]}}}}]},"dynamic_resources":{"lds_config":{"ads":{},"resource_api_version":"V3"},"cds_config":{"ads":{},"resource_api_version":"V3"},"ads_config":{"api_type":"GRPC","transport_api_version":"V3","grpc_services":[{"envoy_grpc":{"cluster_name":"xds_cluster"}}]}},"layered_runtime":{"layers":[{"name":"runtime","rtds_layer":{"name":"runtime","rtds_config":{"ads":{},"resource_api_version":"V3"}}}]},"admin":{"access_log":[{"name":"envoy.access_loggers.file","typed_config":{"@type":"type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog","path":"/dev/null"}}],"address":{"socket_address":{"address":"0.0.0.0","port_value":9001}}}}`, wantErr: false, }, } diff --git a/pkg/envoy/container/defaults/defaults.go b/pkg/envoy/container/defaults/defaults.go index 66e196fe..920db3c4 100644 --- a/pkg/envoy/container/defaults/defaults.go +++ b/pkg/envoy/container/defaults/defaults.go @@ -14,7 +14,7 @@ const ( const ( // common defaults - EnvoyRelease string = "v1.23.2" + EnvoyRelease string = "v1.29.0" ImageRepo string = "envoyproxy/envoy" Image string = ImageRepo + ":" + EnvoyRelease EnvoyConfigBasePath string = "/etc/envoy/bootstrap" diff --git a/pkg/envoy/protos/v3/zz_generated.go b/pkg/envoy/protos/v3/zz_generated.go index 82a0d549..41849480 100644 --- a/pkg/envoy/protos/v3/zz_generated.go +++ b/pkg/envoy/protos/v3/zz_generated.go @@ -6,6 +6,7 @@ import ( _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/client_ssl_auth/v3" _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/action/v3" _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3" + _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3" _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3" _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/router/v3" _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/v3" @@ -30,6 +31,7 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/config/route/v3" _ "github.com/envoyproxy/go-control-plane/envoy/config/tap/v3" _ "github.com/envoyproxy/go-control-plane/envoy/config/trace/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/config/upstream/local_address_selector/v3" _ "github.com/envoyproxy/go-control-plane/envoy/data/accesslog/v3" _ "github.com/envoyproxy/go-control-plane/envoy/data/cluster/v3" _ "github.com/envoyproxy/go-control-plane/envoy/data/core/v3" @@ -61,18 +63,22 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/dependency/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/fault/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/matcher/action/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/set_filter_state/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/adaptive_concurrency/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/admission_control/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/alternate_protocols_cache/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/aws_lambda/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/aws_request_signing/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/bandwidth_limit/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/basic_auth/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/buffer/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cache/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cdn_loop/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/composite/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/compressor/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/connect_grpc_bridge/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cors/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/credential_injector/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/csrf/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/custom_response/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/decompressor/v3" @@ -82,15 +88,19 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/fault/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/file_system_buffer/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/gcp_authn/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/geoip/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_field_extraction/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_http1_bridge/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_http1_reverse_bridge/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_json_transcoder/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_stats/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_web/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/gzip/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/header_mutation/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/header_to_metadata/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/health_check/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ip_tagging/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/json_to_metadata/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/jwt_authn/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/kill_request/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/local_ratelimit/v3" @@ -102,12 +112,14 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/rbac/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/router/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/set_filter_state/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/set_metadata/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/stateful_session/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/tap/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/upstream_codec/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/wasm/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/http_inspector/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/local_ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/original_dst/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/original_src/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/proxy_protocol/v3" @@ -124,6 +136,7 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/rbac/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/redis_proxy/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/set_filter_state/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_cluster/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/tcp_proxy/v3" @@ -135,9 +148,15 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/wasm/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/zookeeper_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/dns_filter/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/udp_proxy/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/formatter/cel/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/formatter/metadata/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/formatter/req_without_query/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/geoip_providers/common/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/geoip_providers/maxmind/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/health_check/event_sinks/file/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/health_checkers/redis/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/health_checkers/thrift/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/http/cache/file_system_http_cache/v3" @@ -151,23 +170,29 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/http/original_ip_detection/xff/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/http/stateful_session/cookie/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/http/stateful_session/header/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/injected_credentials/generic/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/injected_credentials/oauth2/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/allow_listed_routes/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/previous_routes/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/safe_cross_scheme/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/key_value/file_based/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/cluster_provided/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/common/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/least_request/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/maglev/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/pick_first/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/random/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/ring_hash/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/round_robin/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/subset/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/wrr_locality/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/common_inputs/environment_variable/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/common_inputs/network/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/common_inputs/ssl/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/input_matchers/consistent_hashing/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/input_matchers/ip/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/input_matchers/runtime_fraction/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/network/dns_resolver/apple/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/network/dns_resolver/cares/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/network/dns_resolver/getaddrinfo/v3" @@ -177,7 +202,9 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/quic/connection_id_generator/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/quic/crypto_stream/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/quic/proof_source/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/quic/server_preferred_address/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/rate_limit_descriptors/expr/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/rbac/audit_loggers/stream/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/rbac/matchers/upstream_ip_port/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/regex_engines/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/request_id/uuid/v3" @@ -188,8 +215,12 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/retry/host/omit_host_metadata/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/retry/host/previous_hosts/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/retry/priority/previous_priorities/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/router/cluster_specifiers/lua/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/stat_sinks/graphite_statsd/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/stat_sinks/open_telemetry/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/stat_sinks/wasm/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/tracers/opentelemetry/resource_detectors/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/tracers/opentelemetry/samplers/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/alts/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/http_11_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/internal_upstream/v3" @@ -205,6 +236,7 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/generic/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/http/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/tcp/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/udp/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/tcp/generic/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/tcp/v3" diff --git a/pkg/reconcilers/marin3r/envoyconfig/initialize.go b/pkg/reconcilers/marin3r/envoyconfig/initialize.go deleted file mode 100644 index 581f17ce..00000000 --- a/pkg/reconcilers/marin3r/envoyconfig/initialize.go +++ /dev/null @@ -1,26 +0,0 @@ -package reconcilers - -import ( - marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" - "github.com/3scale-ops/marin3r/pkg/util/pointer" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" -) - -// IsInitialized checks whether the EnvoyConfigRevision object is initialized -// or not. Returns true if it has modified the EnvoyConfigRevision. Returns false if -// it has not. -func IsInitialized(ec *marin3rv1alpha1.EnvoyConfig) bool { - ok := true - - if ec.Spec.EnvoyAPI == nil { - ec.Spec.EnvoyAPI = pointer.New(ec.GetEnvoyAPIVersion()) - ok = false - } - - if controllerutil.ContainsFinalizer(ec, marin3rv1alpha1.EnvoyConfigRevisionFinalizer) { - controllerutil.RemoveFinalizer(ec, marin3rv1alpha1.EnvoyConfigRevisionFinalizer) - ok = false - } - - return ok -} diff --git a/pkg/reconcilers/marin3r/envoyconfig/initialize_test.go b/pkg/reconcilers/marin3r/envoyconfig/initialize_test.go deleted file mode 100644 index ab41807d..00000000 --- a/pkg/reconcilers/marin3r/envoyconfig/initialize_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package reconcilers - -import ( - "testing" - - marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" - "github.com/3scale-ops/marin3r/pkg/envoy" - "github.com/3scale-ops/marin3r/pkg/util/pointer" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func TestIsInitialized(t *testing.T) { - tests := []struct { - name string - envoyConfigFactory func() *marin3rv1alpha1.EnvoyConfig - want bool - }{ - { - "Initializes the resource", - func() *marin3rv1alpha1.EnvoyConfig { - return &marin3rv1alpha1.EnvoyConfig{} - }, - false, - }, - { - "Returns true if already initialized", - func() *marin3rv1alpha1.EnvoyConfig { - return &marin3rv1alpha1.EnvoyConfig{ - Spec: marin3rv1alpha1.EnvoyConfigSpec{ - EnvoyAPI: pointer.New(envoy.APIv3), - }, - } - }, - true, - }, - { - "Returns false if finalizer detected", - func() *marin3rv1alpha1.EnvoyConfig { - return &marin3rv1alpha1.EnvoyConfig{ - ObjectMeta: metav1.ObjectMeta{ - Finalizers: []string{marin3rv1alpha1.EnvoyConfigRevisionFinalizer}, - }, - Spec: marin3rv1alpha1.EnvoyConfigSpec{ - EnvoyAPI: pointer.New(envoy.APIv3), - }, - } - }, - false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := IsInitialized(tt.envoyConfigFactory()); got != tt.want { - t.Errorf("IsInitialized() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/pkg/reconcilers/marin3r/envoyconfigrevision/initialize.go b/pkg/reconcilers/marin3r/envoyconfigrevision/initialize.go deleted file mode 100644 index fc058b52..00000000 --- a/pkg/reconcilers/marin3r/envoyconfigrevision/initialize.go +++ /dev/null @@ -1,26 +0,0 @@ -package reconcilers - -import ( - marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" - "github.com/3scale-ops/marin3r/pkg/util/pointer" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" -) - -// IsInitialized checks whether the EnvoyConfigRevision object is initialized -// or not. Returns true if it has modified the EnvoyConfigRevision. Returns false if -// it has not. -func IsInitialized(ecr *marin3rv1alpha1.EnvoyConfigRevision) bool { - ok := true - - if ecr.Spec.EnvoyAPI == nil { - ecr.Spec.EnvoyAPI = pointer.New(ecr.GetEnvoyAPIVersion()) - ok = false - } - - if !controllerutil.ContainsFinalizer(ecr, marin3rv1alpha1.EnvoyConfigRevisionFinalizer) { - controllerutil.AddFinalizer(ecr, marin3rv1alpha1.EnvoyConfigRevisionFinalizer) - ok = false - } - - return ok -} diff --git a/pkg/reconcilers/marin3r/envoyconfigrevision/initialize_test.go b/pkg/reconcilers/marin3r/envoyconfigrevision/initialize_test.go deleted file mode 100644 index 7a5bd312..00000000 --- a/pkg/reconcilers/marin3r/envoyconfigrevision/initialize_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package reconcilers - -import ( - "testing" - - marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" - "github.com/3scale-ops/marin3r/pkg/envoy" - "github.com/3scale-ops/marin3r/pkg/util/pointer" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func TestIsInitialized(t *testing.T) { - tests := []struct { - name string - envoyConfigRevisionFactory func() *marin3rv1alpha1.EnvoyConfigRevision - want bool - }{ - { - "Initializes the resource", - func() *marin3rv1alpha1.EnvoyConfigRevision { - return &marin3rv1alpha1.EnvoyConfigRevision{} - }, - false, - }, - { - "Returns true if already initialized", - func() *marin3rv1alpha1.EnvoyConfigRevision { - return &marin3rv1alpha1.EnvoyConfigRevision{ - ObjectMeta: metav1.ObjectMeta{ - Finalizers: []string{marin3rv1alpha1.EnvoyConfigRevisionFinalizer}, - }, - Spec: marin3rv1alpha1.EnvoyConfigRevisionSpec{ - EnvoyAPI: pointer.New(envoy.APIv3), - }, - } - }, - true, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := IsInitialized(tt.envoyConfigRevisionFactory()); got != tt.want { - t.Errorf("IsInitialized() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/pkg/reconcilers/operator/discoveryservice/generators/certificate_client.go b/pkg/reconcilers/operator/discoveryservice/generators/certificate_client.go index 34edd074..7349ef73 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/certificate_client.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/certificate_client.go @@ -6,34 +6,27 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) ClientCertificate() func() *operatorv1alpha1.DiscoveryServiceCertificate { +func (cfg *GeneratorOptions) ClientCertificate() *operatorv1alpha1.DiscoveryServiceCertificate { - return func() *operatorv1alpha1.DiscoveryServiceCertificate { - - return &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryServiceCertificate", - APIVersion: operatorv1alpha1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.ClientCertName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), + return &operatorv1alpha1.DiscoveryServiceCertificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ClientCertName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ + CommonName: cfg.ClientCertName(), + ValidFor: int64(cfg.ClientCertificateDuration.Seconds()), + Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ + CASigned: &operatorv1alpha1.CASignedConfig{ + SecretRef: corev1.SecretReference{ + Name: cfg.RootCertName(), + Namespace: cfg.Namespace, + }}, }, - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - CommonName: cfg.ClientCertName(), - ValidFor: int64(cfg.ClientCertificateDuration.Seconds()), - Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ - CASigned: &operatorv1alpha1.CASignedConfig{ - SecretRef: corev1.SecretReference{ - Name: cfg.RootCertName(), - Namespace: cfg.Namespace, - }}, - }, - SecretRef: corev1.SecretReference{ - Name: cfg.ClientCertName(), - }, + SecretRef: corev1.SecretReference{ + Name: cfg.ClientCertName(), }, - } + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/certificate_client_test.go b/pkg/reconcilers/operator/discoveryservice/generators/certificate_client_test.go index 15480827..d7dd248f 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/certificate_client_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/certificate_client_test.go @@ -5,8 +5,8 @@ import ( "time" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -25,10 +25,6 @@ func TestGeneratorOptions_ClientCertificate(t *testing.T) { ClientCertificateDuration: time.Duration(20 * time.Second), }, want: &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryServiceCertificate", - APIVersion: operatorv1alpha1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "envoy-sidecar-client-cert", Namespace: "default", @@ -58,8 +54,8 @@ func TestGeneratorOptions_ClientCertificate(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := tt.opts.ClientCertificate()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.Deployment() = %v, want %v", got.Spec.Signer.CASigned, tt.want.Spec.Signer.CASigned) + if diff := cmp.Diff(tt.opts.ClientCertificate(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.ClientCertificate() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/certificate_root.go b/pkg/reconcilers/operator/discoveryservice/generators/certificate_root.go index e2131cfe..1d634ab5 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/certificate_root.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/certificate_root.go @@ -9,35 +9,28 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) RootCertificationAuthority() func() *operatorv1alpha1.DiscoveryServiceCertificate { +func (cfg *GeneratorOptions) RootCertificationAuthority() *operatorv1alpha1.DiscoveryServiceCertificate { - return func() *operatorv1alpha1.DiscoveryServiceCertificate { - - return &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: operatorv1alpha1.DiscoveryServiceCertificateKind, - APIVersion: operatorv1alpha1.GroupVersion.String(), + return &operatorv1alpha1.DiscoveryServiceCertificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.RootCertName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ + CommonName: fmt.Sprintf("%s-%s", cfg.RootCertificateCommonNamePrefix, cfg.InstanceName), + IsCA: pointer.New(true), + ValidFor: int64(cfg.RootCertificateDuration.Seconds()), + Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ + SelfSigned: &operatorv1alpha1.SelfSignedConfig{}, }, - ObjectMeta: metav1.ObjectMeta{ + SecretRef: corev1.SecretReference{ Name: cfg.RootCertName(), Namespace: cfg.Namespace, - Labels: cfg.labels(), }, - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - CommonName: fmt.Sprintf("%s-%s", cfg.RootCertificateCommonNamePrefix, cfg.InstanceName), - IsCA: pointer.New(true), - ValidFor: int64(cfg.RootCertificateDuration.Seconds()), - Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ - SelfSigned: &operatorv1alpha1.SelfSignedConfig{}, - }, - SecretRef: corev1.SecretReference{ - Name: cfg.RootCertName(), - Namespace: cfg.Namespace, - }, - CertificateRenewalConfig: &operatorv1alpha1.CertificateRenewalConfig{ - Enabled: true, - }, + CertificateRenewalConfig: &operatorv1alpha1.CertificateRenewalConfig{ + Enabled: true, }, - } + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/certificate_root_test.go b/pkg/reconcilers/operator/discoveryservice/generators/certificate_root_test.go index e5513380..802b809b 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/certificate_root_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/certificate_root_test.go @@ -6,8 +6,8 @@ import ( operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" "github.com/3scale-ops/marin3r/pkg/util/pointer" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -41,10 +41,6 @@ func TestGeneratorOptions_RootCertificationAuthority(t *testing.T) { }, args{hash: "hash"}, &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: operatorv1alpha1.DiscoveryServiceCertificateKind, - APIVersion: operatorv1alpha1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "ca-cert-test", Namespace: "default", @@ -75,9 +71,8 @@ func TestGeneratorOptions_RootCertificationAuthority(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.RootCertificationAuthority()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.RootCertificationAuthority() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.RootCertificationAuthority(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.RootCertificationAuthority() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/certificate_server.go b/pkg/reconcilers/operator/discoveryservice/generators/certificate_server.go index bc51d3ce..20150ba8 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/certificate_server.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/certificate_server.go @@ -9,36 +9,29 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) ServerCertificate() func() *operatorv1alpha1.DiscoveryServiceCertificate { +func (cfg *GeneratorOptions) ServerCertificate() *operatorv1alpha1.DiscoveryServiceCertificate { - return func() *operatorv1alpha1.DiscoveryServiceCertificate { - - return &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: operatorv1alpha1.DiscoveryServiceCertificateKind, - APIVersion: operatorv1alpha1.GroupVersion.String(), + return &operatorv1alpha1.DiscoveryServiceCertificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ServerCertName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ + CommonName: fmt.Sprintf("%s-%s", cfg.ServerCertificateCommonNamePrefix, cfg.InstanceName), + IsServerCertificate: pointer.New(true), + ValidFor: int64(cfg.ServerCertificateDuration.Seconds()), + Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ + CASigned: &operatorv1alpha1.CASignedConfig{ + SecretRef: corev1.SecretReference{ + Name: cfg.RootCertName(), + Namespace: cfg.Namespace, + }}, }, - ObjectMeta: metav1.ObjectMeta{ + SecretRef: corev1.SecretReference{ Name: cfg.ServerCertName(), Namespace: cfg.Namespace, - Labels: cfg.labels(), - }, - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - CommonName: fmt.Sprintf("%s-%s", cfg.ServerCertificateCommonNamePrefix, cfg.InstanceName), - IsServerCertificate: pointer.New(true), - ValidFor: int64(cfg.ServerCertificateDuration.Seconds()), - Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ - CASigned: &operatorv1alpha1.CASignedConfig{ - SecretRef: corev1.SecretReference{ - Name: cfg.RootCertName(), - Namespace: cfg.Namespace, - }}, - }, - SecretRef: corev1.SecretReference{ - Name: cfg.ServerCertName(), - Namespace: cfg.Namespace, - }, }, - } + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/certificate_server_test.go b/pkg/reconcilers/operator/discoveryservice/generators/certificate_server_test.go index 6ec9ca42..7d9b869e 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/certificate_server_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/certificate_server_test.go @@ -6,8 +6,8 @@ import ( operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" "github.com/3scale-ops/marin3r/pkg/util/pointer" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -41,10 +41,6 @@ func TestGeneratorOptions_ServerCertificate(t *testing.T) { }, args{hash: "hash"}, &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: operatorv1alpha1.DiscoveryServiceCertificateKind, - APIVersion: operatorv1alpha1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "server-cert-test", Namespace: "default", @@ -75,9 +71,8 @@ func TestGeneratorOptions_ServerCertificate(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.ServerCertificate()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.ServerCertificate() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.ServerCertificate(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.ServerCertificate() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/deployment.go b/pkg/reconcilers/operator/discoveryservice/generators/deployment.go index 960cf5bb..27fba9a4 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/deployment.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/deployment.go @@ -16,10 +16,6 @@ func (cfg *GeneratorOptions) Deployment(hash string) func() *appsv1.Deployment { return func() *appsv1.Deployment { deployment := &appsv1.Deployment{ - TypeMeta: metav1.TypeMeta{ - Kind: "Deployment", - APIVersion: appsv1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: cfg.ResourceName(), Namespace: cfg.Namespace, @@ -117,6 +113,10 @@ func (cfg *GeneratorOptions) Deployment(hash string) func() *appsv1.Deployment { Scheme: corev1.URISchemeHTTP, }, }, + FailureThreshold: 3, + PeriodSeconds: 10, + SuccessThreshold: 1, + TimeoutSeconds: 1, }, ReadinessProbe: &corev1.Probe{ ProbeHandler: corev1.ProbeHandler{ @@ -126,6 +126,10 @@ func (cfg *GeneratorOptions) Deployment(hash string) func() *appsv1.Deployment { Scheme: corev1.URISchemeHTTP, }, }, + FailureThreshold: 3, + PeriodSeconds: 10, + SuccessThreshold: 1, + TimeoutSeconds: 1, }, Resources: cfg.DeploymentResources, VolumeMounts: []corev1.VolumeMount{ @@ -145,25 +149,17 @@ func (cfg *GeneratorOptions) Deployment(hash string) func() *appsv1.Deployment { MountPath: "/etc/marin3r/tls/client/", }, }, - TerminationMessagePath: corev1.TerminationMessagePathDefault, - TerminationMessagePolicy: corev1.TerminationMessageReadFile, - ImagePullPolicy: corev1.PullIfNotPresent, + ImagePullPolicy: corev1.PullIfNotPresent, }, }, - RestartPolicy: corev1.RestartPolicyAlways, TerminationGracePeriodSeconds: pointer.New(int64(corev1.DefaultTerminationGracePeriodSeconds)), - DNSPolicy: corev1.DNSClusterFirst, ServiceAccountName: cfg.ResourceName(), DeprecatedServiceAccount: cfg.ResourceName(), - SecurityContext: &corev1.PodSecurityContext{}, - SchedulerName: corev1.DefaultSchedulerName, }, }, Strategy: appsv1.DeploymentStrategy{ Type: appsv1.RecreateDeploymentStrategyType, }, - RevisionHistoryLimit: pointer.New(int32(10)), - ProgressDeadlineSeconds: pointer.New(int32(600)), }, } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/deployment_test.go b/pkg/reconcilers/operator/discoveryservice/generators/deployment_test.go index 459272ed..a18c3050 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/deployment_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/deployment_test.go @@ -45,10 +45,6 @@ func TestGeneratorOptions_Deployment(t *testing.T) { }, args{hash: "hash"}, &appsv1.Deployment{ - TypeMeta: metav1.TypeMeta{ - Kind: "Deployment", - APIVersion: appsv1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-test", Namespace: "default", @@ -152,6 +148,10 @@ func TestGeneratorOptions_Deployment(t *testing.T) { Scheme: corev1.URISchemeHTTP, }, }, + FailureThreshold: 3, + PeriodSeconds: 10, + SuccessThreshold: 1, + TimeoutSeconds: 1, }, ReadinessProbe: &corev1.Probe{ ProbeHandler: corev1.ProbeHandler{ @@ -161,6 +161,10 @@ func TestGeneratorOptions_Deployment(t *testing.T) { Scheme: corev1.URISchemeHTTP, }, }, + FailureThreshold: 3, + PeriodSeconds: 10, + SuccessThreshold: 1, + TimeoutSeconds: 1, }, Resources: corev1.ResourceRequirements{}, VolumeMounts: []corev1.VolumeMount{ @@ -180,36 +184,26 @@ func TestGeneratorOptions_Deployment(t *testing.T) { MountPath: "/etc/marin3r/tls/client/", }, }, - TerminationMessagePath: corev1.TerminationMessagePathDefault, - TerminationMessagePolicy: corev1.TerminationMessageReadFile, - ImagePullPolicy: corev1.PullIfNotPresent, + ImagePullPolicy: corev1.PullIfNotPresent, }, }, - RestartPolicy: corev1.RestartPolicyAlways, TerminationGracePeriodSeconds: pointer.New(int64(corev1.DefaultTerminationGracePeriodSeconds)), - DNSPolicy: corev1.DNSClusterFirst, ServiceAccountName: "marin3r-test", DeprecatedServiceAccount: "marin3r-test", - SecurityContext: &corev1.PodSecurityContext{}, - SchedulerName: corev1.DefaultSchedulerName, PriorityClassName: "highest", }, }, Strategy: appsv1.DeploymentStrategy{ Type: appsv1.RecreateDeploymentStrategyType, }, - RevisionHistoryLimit: pointer.New(int32(10)), - ProgressDeadlineSeconds: pointer.New(int32(600)), }, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - got := cfg.Deployment(tt.args.hash)() - if diff := cmp.Diff(got, tt.want); len(diff) > 0 { - t.Errorf("GeneratorOptions.Deployment() = got diff %v", diff) + if diff := cmp.Diff(tt.opts.Deployment(tt.args.hash)(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.Deployment() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/role.go b/pkg/reconcilers/operator/discoveryservice/generators/role.go index 3e48251e..162025d4 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/role.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/role.go @@ -8,37 +8,30 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) Role() func() *rbacv1.Role { +func (cfg *GeneratorOptions) Role() *rbacv1.Role { - return func() *rbacv1.Role { - - return &rbacv1.Role{ - TypeMeta: metav1.TypeMeta{ - Kind: "Role", - APIVersion: rbacv1.SchemeGroupVersion.String(), + return &rbacv1.Role{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ResourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Rules: []rbacv1.PolicyRule{ + { + APIGroups: []string{corev1.SchemeGroupVersion.Group}, + Resources: []string{"secrets", "pods"}, + Verbs: []string{"get", "list", "watch"}, }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.ResourceName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), + { + APIGroups: []string{marin3rv1alpha1.GroupVersion.Group}, + Resources: []string{rbacv1.ResourceAll}, + Verbs: []string{rbacv1.VerbAll}, }, - Rules: []rbacv1.PolicyRule{ - { - APIGroups: []string{corev1.SchemeGroupVersion.Group}, - Resources: []string{"secrets", "pods"}, - Verbs: []string{"get", "list", "watch"}, - }, - { - APIGroups: []string{marin3rv1alpha1.GroupVersion.Group}, - Resources: []string{rbacv1.ResourceAll}, - Verbs: []string{rbacv1.VerbAll}, - }, - { - APIGroups: []string{discoveryv1.SchemeGroupVersion.Group}, - Resources: []string{"endpointslices"}, - Verbs: []string{"get", "list", "watch"}, - }, + { + APIGroups: []string{discoveryv1.SchemeGroupVersion.Group}, + Resources: []string{"endpointslices"}, + Verbs: []string{"get", "list", "watch"}, }, - } + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/role_binding.go b/pkg/reconcilers/operator/discoveryservice/generators/role_binding.go index 3c0ea14c..7b4ee91b 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/role_binding.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/role_binding.go @@ -5,32 +5,25 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) RoleBinding() func() *rbacv1.RoleBinding { +func (cfg *GeneratorOptions) RoleBinding() *rbacv1.RoleBinding { - return func() *rbacv1.RoleBinding { - - return &rbacv1.RoleBinding{ - TypeMeta: metav1.TypeMeta{ - Kind: "RoleBinding", - APIVersion: rbacv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ + return &rbacv1.RoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ResourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + RoleRef: rbacv1.RoleRef{ + APIGroup: rbacv1.SchemeGroupVersion.Group, + Kind: "Role", + Name: cfg.ResourceName(), + }, + Subjects: []rbacv1.Subject{ + { + Kind: rbacv1.ServiceAccountKind, Name: cfg.ResourceName(), Namespace: cfg.Namespace, - Labels: cfg.labels(), - }, - RoleRef: rbacv1.RoleRef{ - APIGroup: rbacv1.SchemeGroupVersion.Group, - Kind: "Role", - Name: cfg.ResourceName(), - }, - Subjects: []rbacv1.Subject{ - { - Kind: rbacv1.ServiceAccountKind, - Name: cfg.ResourceName(), - Namespace: cfg.Namespace, - }, }, - } + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/role_binding_test.go b/pkg/reconcilers/operator/discoveryservice/generators/role_binding_test.go index 676dd9f8..c3e7084c 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/role_binding_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/role_binding_test.go @@ -5,9 +5,9 @@ import ( "time" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -41,10 +41,6 @@ func TestGeneratorOptions_RoleBinding(t *testing.T) { }, args{hash: "hash"}, &rbacv1.RoleBinding{ - TypeMeta: metav1.TypeMeta{ - Kind: "RoleBinding", - APIVersion: rbacv1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-test", Namespace: "default", @@ -72,9 +68,8 @@ func TestGeneratorOptions_RoleBinding(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.RoleBinding()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.RoleBinding() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.RoleBinding(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.RoleBinding() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/role_test.go b/pkg/reconcilers/operator/discoveryservice/generators/role_test.go index 94514804..4968a16a 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/role_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/role_test.go @@ -6,10 +6,10 @@ import ( marin3rv1alpha1 "github.com/3scale-ops/marin3r/apis/marin3r/v1alpha1" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" discoveryv1 "k8s.io/api/discovery/v1" rbacv1 "k8s.io/api/rbac/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -43,10 +43,6 @@ func TestGeneratorOptions_Role(t *testing.T) { }, args{hash: "hash"}, &rbacv1.Role{ - TypeMeta: metav1.TypeMeta{ - Kind: "Role", - APIVersion: rbacv1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-test", Namespace: "default", @@ -79,9 +75,8 @@ func TestGeneratorOptions_Role(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.Role()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.Role() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.Role(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.Role() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/service.go b/pkg/reconcilers/operator/discoveryservice/generators/service.go index 4bb39b83..68891c78 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/service.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/service.go @@ -7,50 +7,43 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" ) -func (cfg *GeneratorOptions) Service() func() *corev1.Service { +func (cfg *GeneratorOptions) Service() *corev1.Service { - return func() *corev1.Service { - - return &corev1.Service{ - TypeMeta: metav1.TypeMeta{ - Kind: "Service", - APIVersion: corev1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.ResourceName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), - }, - Spec: corev1.ServiceSpec{ - Type: func() corev1.ServiceType { - if cfg.ServiceType == operatorv1alpha1.LoadBalancerType { - return corev1.ServiceTypeLoadBalancer - } - return corev1.ServiceTypeClusterIP - }(), - ClusterIP: func() string { - if cfg.ServiceType == operatorv1alpha1.HeadlessType { - return "None" - } - return "" - }(), - Selector: cfg.labels(), - SessionAffinity: corev1.ServiceAffinityNone, - Ports: []corev1.ServicePort{ - { - Name: "discovery", - Port: cfg.XdsServerPort, - Protocol: corev1.ProtocolTCP, - TargetPort: intstr.FromString("discovery"), - }, - { - Name: "metrics", - Port: cfg.MetricsServerPort, - Protocol: corev1.ProtocolTCP, - TargetPort: intstr.FromString("metrics"), - }, + return &corev1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ResourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: corev1.ServiceSpec{ + Type: func() corev1.ServiceType { + if cfg.ServiceType == operatorv1alpha1.LoadBalancerType { + return corev1.ServiceTypeLoadBalancer + } + return corev1.ServiceTypeClusterIP + }(), + ClusterIP: func() string { + if cfg.ServiceType == operatorv1alpha1.HeadlessType { + return "None" + } + return "" + }(), + Selector: cfg.labels(), + SessionAffinity: corev1.ServiceAffinityNone, + Ports: []corev1.ServicePort{ + { + Name: "discovery", + Port: cfg.XdsServerPort, + Protocol: corev1.ProtocolTCP, + TargetPort: intstr.FromString("discovery"), + }, + { + Name: "metrics", + Port: cfg.MetricsServerPort, + Protocol: corev1.ProtocolTCP, + TargetPort: intstr.FromString("metrics"), }, }, - } + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/service_account.go b/pkg/reconcilers/operator/discoveryservice/generators/service_account.go index 366b6541..d8919a97 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/service_account.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/service_account.go @@ -5,20 +5,13 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) ServiceAccount() func() *corev1.ServiceAccount { +func (cfg *GeneratorOptions) ServiceAccount() *corev1.ServiceAccount { - return func() *corev1.ServiceAccount { - - return &corev1.ServiceAccount{ - TypeMeta: metav1.TypeMeta{ - Kind: "ServiceAccount", - APIVersion: corev1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.ResourceName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), - }, - } + return &corev1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ResourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, } } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/service_account_test.go b/pkg/reconcilers/operator/discoveryservice/generators/service_account_test.go index 4ef678b9..380d019c 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/service_account_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/service_account_test.go @@ -5,8 +5,8 @@ import ( "time" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -40,10 +40,6 @@ func TestGeneratorOptions_ServiceAccount(t *testing.T) { }, args{hash: "hash"}, &corev1.ServiceAccount{ - TypeMeta: metav1.TypeMeta{ - Kind: "ServiceAccount", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-test", Namespace: "default", @@ -58,9 +54,8 @@ func TestGeneratorOptions_ServiceAccount(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.ServiceAccount()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.ServiceAccount() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.ServiceAccount(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.ServiceAccount() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservice/generators/service_test.go b/pkg/reconcilers/operator/discoveryservice/generators/service_test.go index 5f6ec4b9..f24ba083 100644 --- a/pkg/reconcilers/operator/discoveryservice/generators/service_test.go +++ b/pkg/reconcilers/operator/discoveryservice/generators/service_test.go @@ -5,8 +5,8 @@ import ( "time" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -41,10 +41,6 @@ func TestGeneratorOptions_Service(t *testing.T) { }, args{hash: "hash"}, &corev1.Service{ - TypeMeta: metav1.TypeMeta{ - Kind: "Service", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-test", Namespace: "default", @@ -102,10 +98,6 @@ func TestGeneratorOptions_Service(t *testing.T) { }, args{hash: "hash"}, &corev1.Service{ - TypeMeta: metav1.TypeMeta{ - Kind: "Service", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-test", Namespace: "default", @@ -146,9 +138,8 @@ func TestGeneratorOptions_Service(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.Service()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.Service() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.Service(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.Service() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/discoveryservicecertificate/initialize.go b/pkg/reconcilers/operator/discoveryservicecertificate/initialize.go deleted file mode 100644 index 7d3c7645..00000000 --- a/pkg/reconcilers/operator/discoveryservicecertificate/initialize.go +++ /dev/null @@ -1,33 +0,0 @@ -package reconcilers - -import ( - operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" - "github.com/3scale-ops/marin3r/pkg/util/pointer" -) - -// IsInitialized checks whether the EnvoyConfigRevision object is initialized -// or not. Returns true if it has modified the EnvoyConfigRevision. Returns false if -// it has not. -func IsInitialized(dsc *operatorv1alpha1.DiscoveryServiceCertificate) bool { - ok := true - - if dsc.Spec.IsServerCertificate == nil { - dsc.Spec.IsServerCertificate = pointer.New(dsc.IsServerCertificate()) - ok = false - } - if dsc.Spec.IsCA == nil { - dsc.Spec.IsCA = pointer.New(dsc.IsCA()) - ok = false - } - if dsc.Spec.Hosts == nil { - dsc.Spec.Hosts = dsc.GetHosts() - ok = false - } - if dsc.Spec.CertificateRenewalConfig == nil { - crc := dsc.GetCertificateRenewalConfig() - dsc.Spec.CertificateRenewalConfig = &crc - ok = false - } - - return ok -} diff --git a/pkg/reconcilers/operator/discoveryservicecertificate/initialize_test.go b/pkg/reconcilers/operator/discoveryservicecertificate/initialize_test.go deleted file mode 100644 index 8100b754..00000000 --- a/pkg/reconcilers/operator/discoveryservicecertificate/initialize_test.go +++ /dev/null @@ -1,94 +0,0 @@ -package reconcilers - -import ( - "testing" - - operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" - "github.com/3scale-ops/marin3r/pkg/util/pointer" -) - -func TestIsInitialized(t *testing.T) { - type args struct { - dsc *operatorv1alpha1.DiscoveryServiceCertificate - } - tests := []struct { - name string - args args - want bool - }{ - { - name: "Returns true, no initialization required", - args: args{ - dsc: &operatorv1alpha1.DiscoveryServiceCertificate{ - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - IsServerCertificate: pointer.New(false), - IsCA: pointer.New(false), - Hosts: []string{"host"}, - CertificateRenewalConfig: &operatorv1alpha1.CertificateRenewalConfig{Enabled: true}, - }, - }, - }, - want: true, - }, - { - name: "Returns false, IsServerCertificate requires init", - args: args{ - dsc: &operatorv1alpha1.DiscoveryServiceCertificate{ - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - IsCA: pointer.New(false), - Hosts: []string{"host"}, - CertificateRenewalConfig: &operatorv1alpha1.CertificateRenewalConfig{Enabled: true}, - }, - }, - }, - want: false, - }, - { - name: "Returns false, IsCA requires init", - args: args{ - dsc: &operatorv1alpha1.DiscoveryServiceCertificate{ - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - IsServerCertificate: pointer.New(false), - Hosts: []string{"host"}, - CertificateRenewalConfig: &operatorv1alpha1.CertificateRenewalConfig{Enabled: true}, - }, - }, - }, - want: false, - }, - { - name: "Returns false, Hosts requires init", - args: args{ - dsc: &operatorv1alpha1.DiscoveryServiceCertificate{ - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - CommonName: "test", - IsServerCertificate: pointer.New(false), - IsCA: pointer.New(false), - CertificateRenewalConfig: &operatorv1alpha1.CertificateRenewalConfig{Enabled: true}, - }, - }, - }, - want: false, - }, - { - name: "Returns false, CertificateRenewalConfig requires init", - args: args{ - dsc: &operatorv1alpha1.DiscoveryServiceCertificate{ - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - IsServerCertificate: pointer.New(false), - IsCA: pointer.New(false), - Hosts: []string{"host"}, - }, - }, - }, - want: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := IsInitialized(tt.args.dsc); got != tt.want { - t.Errorf("IsInitialized() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/pkg/reconcilers/operator/envoydeployment/generators/client_certificate.go b/pkg/reconcilers/operator/envoydeployment/generators/client_certificate.go index d2155c44..aa1bb944 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/client_certificate.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/client_certificate.go @@ -6,34 +6,27 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) ClientCertificate() func() *operatorv1alpha1.DiscoveryServiceCertificate { +func (cfg *GeneratorOptions) ClientCertificate() *operatorv1alpha1.DiscoveryServiceCertificate { - return func() *operatorv1alpha1.DiscoveryServiceCertificate { - - return &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryServiceCertificate", - APIVersion: operatorv1alpha1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.ClientCertificateName, - Namespace: cfg.Namespace, - Labels: cfg.labels(), + return &operatorv1alpha1.DiscoveryServiceCertificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.ClientCertificateName, + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ + CommonName: cfg.ClientCertificateName, + ValidFor: int64(cfg.ClientCertificateDuration.Seconds()), + Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ + CASigned: &operatorv1alpha1.CASignedConfig{ + SecretRef: corev1.SecretReference{ + Name: cfg.SigningCertificateName, + Namespace: cfg.Namespace, + }}, }, - Spec: operatorv1alpha1.DiscoveryServiceCertificateSpec{ - CommonName: cfg.ClientCertificateName, - ValidFor: int64(cfg.ClientCertificateDuration.Seconds()), - Signer: operatorv1alpha1.DiscoveryServiceCertificateSigner{ - CASigned: &operatorv1alpha1.CASignedConfig{ - SecretRef: corev1.SecretReference{ - Name: cfg.SigningCertificateName, - Namespace: cfg.Namespace, - }}, - }, - SecretRef: corev1.SecretReference{ - Name: cfg.ClientCertificateName, - }, + SecretRef: corev1.SecretReference{ + Name: cfg.ClientCertificateName, }, - } + }, } } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/client_certificate_test.go b/pkg/reconcilers/operator/envoydeployment/generators/client_certificate_test.go index f24d41c9..76939ba5 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/client_certificate_test.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/client_certificate_test.go @@ -5,8 +5,8 @@ import ( "time" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -27,10 +27,6 @@ func TestGeneratorOptions_ClientCertificate(t *testing.T) { SigningCertificateName: "signing-cert", }, want: &operatorv1alpha1.DiscoveryServiceCertificate{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryServiceCertificate", - APIVersion: operatorv1alpha1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "cert", Namespace: "default", @@ -60,8 +56,8 @@ func TestGeneratorOptions_ClientCertificate(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := tt.opts.ClientCertificate()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.Deployment() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.ClientCertificate(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.ClientCertificate() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/deployment.go b/pkg/reconcilers/operator/envoydeployment/generators/deployment.go index 88db5a40..886d5896 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/deployment.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/deployment.go @@ -12,122 +12,109 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" ) -func (cfg *GeneratorOptions) Deployment() func() *appsv1.Deployment { +func (cfg *GeneratorOptions) Deployment() *appsv1.Deployment { - return func() *appsv1.Deployment { - - cc := envoy_container.ContainerConfig{ - Name: defaults.DeploymentContainerName, - Image: cfg.DeploymentImage, - Ports: func() []corev1.ContainerPort { - ports := make([]corev1.ContainerPort, len(cfg.ExposedPorts)) - for i := 0; i < len(cfg.ExposedPorts); i++ { - p := corev1.ContainerPort{ - Name: cfg.ExposedPorts[i].Name, - ContainerPort: cfg.ExposedPorts[i].Port, - } - if cfg.ExposedPorts[i].Protocol != nil { - p.Protocol = *cfg.ExposedPorts[i].Protocol - } - ports[i] = p + cc := envoy_container.ContainerConfig{ + Name: defaults.DeploymentContainerName, + Image: cfg.DeploymentImage, + Ports: func() []corev1.ContainerPort { + ports := make([]corev1.ContainerPort, len(cfg.ExposedPorts)) + for i := 0; i < len(cfg.ExposedPorts); i++ { + p := corev1.ContainerPort{ + Name: cfg.ExposedPorts[i].Name, + ContainerPort: cfg.ExposedPorts[i].Port, + } + if cfg.ExposedPorts[i].Protocol != nil { + p.Protocol = *cfg.ExposedPorts[i].Protocol } - return ports - }(), - ConfigBasePath: defaults.EnvoyConfigBasePath, - ConfigFileName: defaults.EnvoyConfigFileName, - ConfigVolume: defaults.DeploymentConfigVolume, - TLSBasePath: defaults.EnvoyTLSBasePath, - TLSVolume: defaults.DeploymentTLSVolume, - NodeID: cfg.EnvoyNodeID, - ClusterID: cfg.EnvoyClusterID, - ClientCertSecret: strings.Join([]string{defaults.DeploymentClientCertificate, cfg.InstanceName}, "-"), - ExtraArgs: cfg.ExtraArgs, - Resources: cfg.DeploymentResources, - AdminBindAddress: defaults.EnvoyAdminBindAddress, - AdminPort: cfg.AdminPort, - AdminAccessLogPath: cfg.AdminAccessLogPath, - LivenessProbe: cfg.LivenessProbe, - ReadinessProbe: cfg.ReadinessProbe, - InitManagerImage: defaults.InitMgrImage(), - XdssHost: cfg.XdssAdress, - XdssPort: cfg.XdssPort, - APIVersion: cfg.EnvoyAPIVersion.String(), - } + ports[i] = p + } + return ports + }(), + ConfigBasePath: defaults.EnvoyConfigBasePath, + ConfigFileName: defaults.EnvoyConfigFileName, + ConfigVolume: defaults.DeploymentConfigVolume, + TLSBasePath: defaults.EnvoyTLSBasePath, + TLSVolume: defaults.DeploymentTLSVolume, + NodeID: cfg.EnvoyNodeID, + ClusterID: cfg.EnvoyClusterID, + ClientCertSecret: strings.Join([]string{defaults.DeploymentClientCertificate, cfg.InstanceName}, "-"), + ExtraArgs: cfg.ExtraArgs, + Resources: cfg.DeploymentResources, + AdminBindAddress: defaults.EnvoyAdminBindAddress, + AdminPort: cfg.AdminPort, + AdminAccessLogPath: cfg.AdminAccessLogPath, + LivenessProbe: cfg.LivenessProbe, + ReadinessProbe: cfg.ReadinessProbe, + InitManagerImage: defaults.InitMgrImage(), + XdssHost: cfg.XdssAdress, + XdssPort: cfg.XdssPort, + APIVersion: cfg.EnvoyAPIVersion.String(), + } - if cfg.ShutdownManager != nil { - cc.ShutdownManagerImage = cfg.ShutdownManager.GetImage() - cc.ShutdownManagerEnabled = true - cc.ShutdownManagerPort = int32(defaults.ShtdnMgrDefaultServerPort) - cc.ShutdownManagerDrainSeconds = cfg.ShutdownManager.GetDrainTime() - cc.ShutdownManagerDrainStrategy = cfg.ShutdownManager.GetDrainStrategy() - } + if cfg.ShutdownManager != nil { + cc.ShutdownManagerImage = cfg.ShutdownManager.GetImage() + cc.ShutdownManagerEnabled = true + cc.ShutdownManagerPort = int32(defaults.ShtdnMgrDefaultServerPort) + cc.ShutdownManagerDrainSeconds = cfg.ShutdownManager.GetDrainTime() + cc.ShutdownManagerDrainStrategy = cfg.ShutdownManager.GetDrainStrategy() + } - if cfg.InitManager != nil { - cc.InitManagerImage = cfg.InitManager.GetImage() - } + if cfg.InitManager != nil { + cc.InitManagerImage = cfg.InitManager.GetImage() + } - dep := &appsv1.Deployment{ - TypeMeta: metav1.TypeMeta{ - Kind: "Deployment", - APIVersion: appsv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.resourceName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), + dep := &appsv1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.resourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: appsv1.DeploymentSpec{ + // this value will be overwritten by the basereconciler + // if HPA is enabled + Replicas: cfg.Replicas.Static, + Selector: &metav1.LabelSelector{ + MatchLabels: cfg.labels(), }, - Spec: appsv1.DeploymentSpec{ - // this value will be overwritten by the basereconciler - // if HPA is enabled - Replicas: cfg.Replicas.Static, - Selector: &metav1.LabelSelector{ - MatchLabels: cfg.labels(), + Template: corev1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + CreationTimestamp: metav1.Time{}, + Labels: cfg.labels(), }, - Template: corev1.PodTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{ - CreationTimestamp: metav1.Time{}, - Labels: cfg.labels(), - }, - Spec: corev1.PodSpec{ - Affinity: cfg.Affinity, - Volumes: cc.Volumes(), - InitContainers: cc.InitContainers(), - Containers: cc.Containers(), - RestartPolicy: corev1.RestartPolicyAlways, - DNSPolicy: corev1.DNSClusterFirst, - ServiceAccountName: "default", - DeprecatedServiceAccount: "default", - TerminationGracePeriodSeconds: func() *int64 { - // Match the Popd's TerminationGracePeriodSeconds to the - // configured Envoy DrainTime - if cfg.ShutdownManager != nil { - d := cfg.ShutdownManager.GetDrainTime() - return &d - } - return pointer.New(int64(corev1.DefaultTerminationGracePeriodSeconds)) - }(), - SecurityContext: &corev1.PodSecurityContext{}, - SchedulerName: corev1.DefaultSchedulerName, - }, + Spec: corev1.PodSpec{ + Affinity: cfg.Affinity, + Volumes: cc.Volumes(), + InitContainers: cc.InitContainers(), + Containers: cc.Containers(), + ServiceAccountName: "default", + DeprecatedServiceAccount: "default", + TerminationGracePeriodSeconds: func() *int64 { + // Match the Popd's TerminationGracePeriodSeconds to the + // configured Envoy DrainTime + if cfg.ShutdownManager != nil { + d := cfg.ShutdownManager.GetDrainTime() + return &d + } + return pointer.New(int64(corev1.DefaultTerminationGracePeriodSeconds)) + }(), }, - Strategy: appsv1.DeploymentStrategy{ - Type: appsv1.RollingUpdateDeploymentStrategyType, - RollingUpdate: &appsv1.RollingUpdateDeployment{ - MaxUnavailable: &intstr.IntOrString{ - Type: intstr.String, - StrVal: "25%", - }, - MaxSurge: &intstr.IntOrString{ - Type: intstr.String, - StrVal: "25%", - }, + }, + Strategy: appsv1.DeploymentStrategy{ + Type: appsv1.RollingUpdateDeploymentStrategyType, + RollingUpdate: &appsv1.RollingUpdateDeployment{ + MaxUnavailable: &intstr.IntOrString{ + Type: intstr.String, + StrVal: "25%", + }, + MaxSurge: &intstr.IntOrString{ + Type: intstr.String, + StrVal: "25%", }, }, - RevisionHistoryLimit: pointer.New(int32(10)), - ProgressDeadlineSeconds: pointer.New(int32(600)), }, - } - - return dep + }, } + + return dep } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/deployment_test.go b/pkg/reconcilers/operator/envoydeployment/generators/deployment_test.go index 8753dbaf..dd6077df 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/deployment_test.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/deployment_test.go @@ -8,7 +8,7 @@ import ( operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" defaults "github.com/3scale-ops/marin3r/pkg/envoy/container/defaults" "github.com/3scale-ops/marin3r/pkg/util/pointer" - "github.com/go-test/deep" + "github.com/google/go-cmp/cmp" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -43,10 +43,6 @@ func TestGeneratorOptions_Deployment(t *testing.T) { InitManager: &operatorv1alpha1.InitManager{Image: pointer.New("init-manager:latest")}, }, want: &appsv1.Deployment{ - TypeMeta: metav1.TypeMeta{ - Kind: "Deployment", - APIVersion: appsv1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-envoydeployment-instance", Namespace: "default", @@ -146,9 +142,9 @@ func TestGeneratorOptions_Deployment(t *testing.T) { MountPath: defaults.EnvoyConfigBasePath, }, }, - ImagePullPolicy: corev1.PullIfNotPresent, TerminationMessagePath: corev1.TerminationMessagePathDefault, TerminationMessagePolicy: corev1.TerminationMessageReadFile, + ImagePullPolicy: corev1.PullIfNotPresent, }}, Containers: []corev1.Container{ { @@ -220,13 +216,9 @@ func TestGeneratorOptions_Deployment(t *testing.T) { ImagePullPolicy: corev1.PullIfNotPresent, }, }, - RestartPolicy: corev1.RestartPolicyAlways, TerminationGracePeriodSeconds: pointer.New(int64(corev1.DefaultTerminationGracePeriodSeconds)), - DNSPolicy: corev1.DNSClusterFirst, ServiceAccountName: "default", DeprecatedServiceAccount: "default", - SecurityContext: &corev1.PodSecurityContext{}, - SchedulerName: corev1.DefaultSchedulerName, }, }, Strategy: appsv1.DeploymentStrategy{ @@ -242,17 +234,14 @@ func TestGeneratorOptions_Deployment(t *testing.T) { }, }, }, - RevisionHistoryLimit: pointer.New(int32(10)), - ProgressDeadlineSeconds: pointer.New(int32(600)), }, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if diff := deep.Equal(cfg.Deployment()(), tt.want); len(diff) > 0 { - t.Errorf("GeneratorOptions.Deployment() = diff %v", diff) + if diff := cmp.Diff(tt.opts.Deployment(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.Deployment() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/hpa.go b/pkg/reconcilers/operator/envoydeployment/generators/hpa.go index 89c1f0e0..e0b03ff1 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/hpa.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/hpa.go @@ -6,36 +6,29 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) HPA() func() *autoscalingv2.HorizontalPodAutoscaler { +func (cfg *GeneratorOptions) HPA() *autoscalingv2.HorizontalPodAutoscaler { - return func() *autoscalingv2.HorizontalPodAutoscaler { - - return &autoscalingv2.HorizontalPodAutoscaler{ - TypeMeta: metav1.TypeMeta{ - Kind: "HorizontalPodAutoscaler", - APIVersion: autoscalingv2.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.resourceName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), - }, - Spec: func() autoscalingv2.HorizontalPodAutoscalerSpec { - if cfg.Replicas.Dynamic == nil { - return autoscalingv2.HorizontalPodAutoscalerSpec{} - } - return autoscalingv2.HorizontalPodAutoscalerSpec{ - ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{ - APIVersion: appsv1.SchemeGroupVersion.String(), - Kind: "Deployment", - Name: cfg.resourceName(), - }, - MinReplicas: cfg.Replicas.Dynamic.MinReplicas, - MaxReplicas: cfg.Replicas.Dynamic.MaxReplicas, - Metrics: cfg.Replicas.Dynamic.Metrics, - Behavior: cfg.Replicas.Dynamic.Behavior, - } - }(), - } + return &autoscalingv2.HorizontalPodAutoscaler{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.resourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: func() autoscalingv2.HorizontalPodAutoscalerSpec { + if cfg.Replicas.Dynamic == nil { + return autoscalingv2.HorizontalPodAutoscalerSpec{} + } + return autoscalingv2.HorizontalPodAutoscalerSpec{ + ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{ + APIVersion: appsv1.SchemeGroupVersion.String(), + Kind: "Deployment", + Name: cfg.resourceName(), + }, + MinReplicas: cfg.Replicas.Dynamic.MinReplicas, + MaxReplicas: cfg.Replicas.Dynamic.MaxReplicas, + Metrics: cfg.Replicas.Dynamic.Metrics, + Behavior: cfg.Replicas.Dynamic.Behavior, + } + }(), } } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/hpa_test.go b/pkg/reconcilers/operator/envoydeployment/generators/hpa_test.go index 17f7b82e..c39062a7 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/hpa_test.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/hpa_test.go @@ -5,10 +5,10 @@ import ( operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" "github.com/3scale-ops/marin3r/pkg/util/pointer" + "github.com/google/go-cmp/cmp" appsv1 "k8s.io/api/apps/v1" autoscalingv2 "k8s.io/api/autoscaling/v2" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -43,10 +43,6 @@ func TestGeneratorOptions_HPA(t *testing.T) { }, }, want: &autoscalingv2.HorizontalPodAutoscaler{ - TypeMeta: metav1.TypeMeta{ - Kind: "HorizontalPodAutoscaler", - APIVersion: autoscalingv2.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-envoydeployment-instance", Namespace: "default", @@ -83,9 +79,8 @@ func TestGeneratorOptions_HPA(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.HPA()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.HPA() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.HPA(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.HPA() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/pdb.go b/pkg/reconcilers/operator/envoydeployment/generators/pdb.go index 4937059d..d982e924 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/pdb.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/pdb.go @@ -5,33 +5,26 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (cfg *GeneratorOptions) PDB() func() *policyv1.PodDisruptionBudget { +func (cfg *GeneratorOptions) PDB() *policyv1.PodDisruptionBudget { - return func() *policyv1.PodDisruptionBudget { - - return &policyv1.PodDisruptionBudget{ - TypeMeta: metav1.TypeMeta{ - Kind: "PodDisruptionBudget", - APIVersion: policyv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: cfg.resourceName(), - Namespace: cfg.Namespace, - Labels: cfg.labels(), - }, - Spec: func() policyv1.PodDisruptionBudgetSpec { - spec := policyv1.PodDisruptionBudgetSpec{ - Selector: &metav1.LabelSelector{ - MatchLabels: cfg.labels(), - }, - } - if cfg.PodDisruptionBudget.MinAvailable != nil { - spec.MinAvailable = cfg.PodDisruptionBudget.MinAvailable - } else { - spec.MaxUnavailable = cfg.PodDisruptionBudget.MaxUnavailable - } - return spec - }(), - } + return &policyv1.PodDisruptionBudget{ + ObjectMeta: metav1.ObjectMeta{ + Name: cfg.resourceName(), + Namespace: cfg.Namespace, + Labels: cfg.labels(), + }, + Spec: func() policyv1.PodDisruptionBudgetSpec { + spec := policyv1.PodDisruptionBudgetSpec{ + Selector: &metav1.LabelSelector{ + MatchLabels: cfg.labels(), + }, + } + if cfg.PodDisruptionBudget.MinAvailable != nil { + spec.MinAvailable = cfg.PodDisruptionBudget.MinAvailable + } else { + spec.MaxUnavailable = cfg.PodDisruptionBudget.MaxUnavailable + } + return spec + }(), } } diff --git a/pkg/reconcilers/operator/envoydeployment/generators/pdb_test.go b/pkg/reconcilers/operator/envoydeployment/generators/pdb_test.go index b759f5c3..8de18d11 100644 --- a/pkg/reconcilers/operator/envoydeployment/generators/pdb_test.go +++ b/pkg/reconcilers/operator/envoydeployment/generators/pdb_test.go @@ -4,8 +4,8 @@ import ( "testing" operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" + "github.com/google/go-cmp/cmp" policyv1 "k8s.io/api/policy/v1" - "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -26,10 +26,6 @@ func TestGeneratorOptions_PDB(t *testing.T) { }, }, want: &policyv1.PodDisruptionBudget{ - TypeMeta: metav1.TypeMeta{ - Kind: "PodDisruptionBudget", - APIVersion: policyv1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "marin3r-envoydeployment-instance", Namespace: "default", @@ -56,9 +52,8 @@ func TestGeneratorOptions_PDB(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - cfg := tt.opts - if got := cfg.PDB()(); !equality.Semantic.DeepEqual(got, tt.want) { - t.Errorf("GeneratorOptions.PDB() = %v, want %v", got, tt.want) + if diff := cmp.Diff(tt.opts.PDB(), tt.want); len(diff) > 0 { + t.Errorf("GeneratorOptions.PDB() DIFF:\n %v", diff) } }) } diff --git a/pkg/reconcilers/resource_extensions/discoveryservicecertificate.go b/pkg/reconcilers/resource_extensions/discoveryservicecertificate.go deleted file mode 100644 index e3611bbf..00000000 --- a/pkg/reconcilers/resource_extensions/discoveryservicecertificate.go +++ /dev/null @@ -1,96 +0,0 @@ -package resource_extensions - -import ( - "context" - "fmt" - - "github.com/3scale-ops/basereconciler/reconciler" - operatorv1alpha1 "github.com/3scale-ops/marin3r/apis/operator.marin3r/v1alpha1" - discoveryservicecertificate "github.com/3scale-ops/marin3r/pkg/reconcilers/operator/discoveryservicecertificate" - "k8s.io/apimachinery/pkg/api/equality" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/log" -) - -var _ reconciler.Resource = DiscoveryServiceCertificateTemplate{} - -// DiscoveryServiceCertificateTemplate has methods to generate and reconcile a DiscoveryServiceCertificate -type DiscoveryServiceCertificateTemplate struct { - Template func() *operatorv1alpha1.DiscoveryServiceCertificate - IsEnabled bool -} - -// Build returns a DiscoveryServiceCertificate resource -func (dsct DiscoveryServiceCertificateTemplate) Build(ctx context.Context, cl client.Client) (client.Object, error) { - return dsct.Template().DeepCopy(), nil -} - -// Enabled indicates if the resource should be present or not -func (dsct DiscoveryServiceCertificateTemplate) Enabled() bool { - return dsct.IsEnabled -} - -// ResourceReconciler implements a generic reconciler for DiscoveryServiceCertificate resources -func (dsct DiscoveryServiceCertificateTemplate) ResourceReconciler(ctx context.Context, cl client.Client, obj client.Object) error { - logger := log.FromContext(ctx, "kind", "DiscoveryServiceCertificate", "resource", obj.GetName()) - - needsUpdate := false - desired := obj.(*operatorv1alpha1.DiscoveryServiceCertificate) - - instance := &operatorv1alpha1.DiscoveryServiceCertificate{} - err := cl.Get(ctx, types.NamespacedName{Name: desired.GetName(), Namespace: desired.GetNamespace()}, instance) - if err != nil { - if errors.IsNotFound(err) { - - if dsct.Enabled() { - err = cl.Create(ctx, desired) - if err != nil { - return fmt.Errorf("unable to create object: " + err.Error()) - } - logger.Info("resource created") - return nil - - } else { - return nil - } - } - - return err - } - - /* Delete and return if not enabled */ - if !dsct.Enabled() { - err := cl.Delete(ctx, instance) - if err != nil { - return fmt.Errorf("unable to delete object: " + err.Error()) - } - logger.Info("resource deleted") - return nil - } - - /* Reconcile metadata */ - if !equality.Semantic.DeepEqual(instance.GetLabels(), desired.GetLabels()) { - instance.ObjectMeta.Labels = desired.GetLabels() - fmt.Println("LABELS NEED UPDATE") - needsUpdate = true - } - - /* Reconcile spec */ - discoveryservicecertificate.IsInitialized(desired) - if !equality.Semantic.DeepEqual(instance.Spec, desired.Spec) { - instance.Spec = desired.Spec - needsUpdate = true - } - - if needsUpdate { - err := cl.Update(ctx, instance) - if err != nil { - return err - } - logger.Info("Resource updated") - } - - return nil -}