From 260aa6c6b9ec8fe280d2dc5dbb2e6b197e073415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=A4umer?= Date: Wed, 26 Apr 2023 10:31:24 +0200 Subject: [PATCH 01/40] ROX-16546 - Add Central Fleet-Manager CLI commands (#961) --- cmd/fleet-manager/main.go | 3 +- internal/dinosaur/pkg/cmd/central/cmd.go | 29 ++++---- internal/dinosaur/pkg/cmd/central/create.go | 48 ++++++------- internal/dinosaur/pkg/cmd/central/delete.go | 35 ++++------ internal/dinosaur/pkg/cmd/central/get.go | 28 ++++---- internal/dinosaur/pkg/cmd/central/list.go | 69 ++++--------------- .../pkg/cmd/fleetmanagerclient/client.go | 62 +++++++++++++++++ 7 files changed, 142 insertions(+), 132 deletions(-) create mode 100644 internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go diff --git a/cmd/fleet-manager/main.go b/cmd/fleet-manager/main.go index aee46732d6..df959a8a09 100644 --- a/cmd/fleet-manager/main.go +++ b/cmd/fleet-manager/main.go @@ -4,6 +4,7 @@ package main import ( "flag" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/central" "github.com/stackrox/acs-fleet-manager/pkg/cmd/migrate" "github.com/stackrox/acs-fleet-manager/pkg/cmd/serve" @@ -46,8 +47,8 @@ func main() { rootCmd.AddCommand(migrate.NewMigrateCommand(env)) rootCmd.AddCommand(serve.NewServeCommand(env)) + rootCmd.AddCommand(central.NewCentralCommand()) // Unsupported CLI commands. Eventually some of them can be removed. - // rootCmd.AddCommand(central.NewCentralCommand(env)) // rootCmd.AddCommand(cluster.NewClusterCommand(env)) // rootCmd.AddCommand(cloudprovider.NewCloudProviderCommand(env)) // rootCmd.AddCommand(observatorium.NewRunObservatoriumCommand(env)) diff --git a/internal/dinosaur/pkg/cmd/central/cmd.go b/internal/dinosaur/pkg/cmd/central/cmd.go index 6ea72d7f0b..6ac96f517f 100644 --- a/internal/dinosaur/pkg/cmd/central/cmd.go +++ b/internal/dinosaur/pkg/cmd/central/cmd.go @@ -3,31 +3,28 @@ package central import ( - "github.com/golang/glog" "github.com/spf13/cobra" - "github.com/stackrox/acs-fleet-manager/pkg/environments" +) + +const ( + apiErrorMsg = "%s Central failed: To fix this check if you are authenticated and the correct endpoint configured and reachable. Status Code: %s." ) // NewCentralCommand ... -func NewCentralCommand(env *environments.Env) *cobra.Command { +func NewCentralCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "central", - Short: "Perform central CRUD actions directly", - Long: "Perform central CRUD actions directly.", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - err := env.CreateServices() - if err != nil { - glog.Fatalf("Unable to initialize environment: %s", err.Error()) - } - }, + Use: "central", + Short: "Perform central CRUD actions directly", + Long: "Perform central CRUD actions directly.", + PersistentPreRun: func(cmd *cobra.Command, args []string) {}, } // add sub-commands cmd.AddCommand( - NewCreateCommand(env), - NewGetCommand(env), - NewDeleteCommand(env), - NewListCommand(env), + NewCreateCommand(), + NewGetCommand(), + NewDeleteCommand(), + NewListCommand(), ) return cmd diff --git a/internal/dinosaur/pkg/cmd/central/create.go b/internal/dinosaur/pkg/cmd/central/create.go index 52f2d9c67d..d84a187298 100644 --- a/internal/dinosaur/pkg/cmd/central/create.go +++ b/internal/dinosaur/pkg/cmd/central/create.go @@ -2,23 +2,24 @@ package central import ( "encoding/json" + "fmt" "github.com/golang/glog" "github.com/spf13/cobra" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/api/dbapi" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/services" - "github.com/stackrox/acs-fleet-manager/pkg/environments" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/api/public" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/fleetmanagerclient" + "github.com/stackrox/acs-fleet-manager/pkg/client/fleetmanager" "github.com/stackrox/acs-fleet-manager/pkg/flags" ) // NewCreateCommand creates a new command for creating centrals. -func NewCreateCommand(env *environments.Env) *cobra.Command { +func NewCreateCommand() *cobra.Command { cmd := &cobra.Command{ Use: "create", Short: "Create a new central request", Long: "Create a new central request.", Run: func(cmd *cobra.Command, args []string) { - runCreate(env, cmd, args) + runCreate(fleetmanagerclient.AuthenticatedClientWithOCM(), cmd, args) }, } @@ -33,34 +34,29 @@ func NewCreateCommand(env *environments.Env) *cobra.Command { return cmd } -func runCreate(env *environments.Env, cmd *cobra.Command, _ []string) { +func runCreate(client *fleetmanager.Client, cmd *cobra.Command, _ []string) { name := flags.MustGetDefinedString(FlagName, cmd.Flags()) region := flags.MustGetDefinedString(FlagRegion, cmd.Flags()) provider := flags.MustGetDefinedString(FlagProvider, cmd.Flags()) - owner := flags.MustGetDefinedString(FlagOwner, cmd.Flags()) - multiAZ := flags.MustGetBool(FlagMultiAZ, cmd.Flags()) - clusterID := flags.MustGetDefinedString(FlagClusterID, cmd.Flags()) - orgID := flags.MustGetDefinedString(FlagOrgID, cmd.Flags()) - var centralService services.DinosaurService - env.MustResolveAll(¢ralService) - - centralRequest := &dbapi.CentralRequest{ - Region: region, - ClusterID: clusterID, - CloudProvider: provider, - MultiAZ: multiAZ, - Name: name, - Owner: owner, - OrganisationID: orgID, + request := public.CentralRequestPayload{ + Region: region, + CloudProvider: provider, + Name: name, + MultiAz: true, } - if err := centralService.RegisterDinosaurJob(centralRequest); err != nil { - glog.Fatalf("Unable to create central request: %s", err.Error()) + const async = true + centralRequest, _, err := client.PublicAPI().CreateCentral(cmd.Context(), async, request) + if err != nil { + glog.Errorf(apiErrorMsg, "create", err) + return } - indentedCentralRequest, err := json.MarshalIndent(centralRequest, "", " ") + + centralJSON, err := json.Marshal(centralRequest) if err != nil { - glog.Fatalf("Failed to format central request: %s", err.Error()) + glog.Errorf("Failed to marshal Central: %s", err) + return } - glog.V(10).Infof("%s", indentedCentralRequest) + fmt.Println(string(centralJSON)) } diff --git a/internal/dinosaur/pkg/cmd/central/delete.go b/internal/dinosaur/pkg/cmd/central/delete.go index eb576fac67..976702efc8 100644 --- a/internal/dinosaur/pkg/cmd/central/delete.go +++ b/internal/dinosaur/pkg/cmd/central/delete.go @@ -1,48 +1,39 @@ package central import ( - "context" + "fmt" - "github.com/golang-jwt/jwt/v4" "github.com/golang/glog" "github.com/spf13/cobra" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/services" - "github.com/stackrox/acs-fleet-manager/pkg/auth" - "github.com/stackrox/acs-fleet-manager/pkg/environments" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/fleetmanagerclient" + "github.com/stackrox/acs-fleet-manager/pkg/client/fleetmanager" "github.com/stackrox/acs-fleet-manager/pkg/flags" ) // NewDeleteCommand command for deleting centrals. -func NewDeleteCommand(env *environments.Env) *cobra.Command { +func NewDeleteCommand() *cobra.Command { cmd := &cobra.Command{ Use: "delete", Short: "Delete a central request", Long: "Delete a central request.", Run: func(cmd *cobra.Command, args []string) { - runDelete(env, cmd, args) + runDelete(fleetmanagerclient.AuthenticatedClientWithOCM(), cmd, args) }, } cmd.Flags().String(FlagID, "", "Central ID") - cmd.Flags().String(FlagOwner, "test-user", "Username") return cmd } -func runDelete(env *environments.Env, cmd *cobra.Command, _ []string) { +func runDelete(client *fleetmanager.Client, cmd *cobra.Command, _ []string) { id := flags.MustGetDefinedString(FlagID, cmd.Flags()) - owner := flags.MustGetDefinedString(FlagOwner, cmd.Flags()) - var centralService services.DinosaurService - env.MustResolveAll(¢ralService) - // create jwt with claims and set it in the context - jwt := jwt.NewWithClaims(jwt.SigningMethodRS256, jwt.MapClaims{ - "username": owner, - }) - ctx := auth.SetTokenInContext(context.TODO(), jwt) - - if err := centralService.RegisterDinosaurDeprovisionJob(ctx, id); err != nil { - glog.Fatalf("Unable to register the deprovisioning request: %s", err.Error()) - } else { - glog.V(10).Infof("Deprovisioning request accepted for central cluster with id %s", id) + const async = true + resp, err := client.PublicAPI().DeleteCentralById(cmd.Context(), id, async) + if err != nil { + glog.Errorf(apiErrorMsg, "delete", err) + return } + + fmt.Printf("{status_code: %d}", resp.StatusCode) } diff --git a/internal/dinosaur/pkg/cmd/central/get.go b/internal/dinosaur/pkg/cmd/central/get.go index a67e7878fe..30143b934d 100644 --- a/internal/dinosaur/pkg/cmd/central/get.go +++ b/internal/dinosaur/pkg/cmd/central/get.go @@ -2,22 +2,23 @@ package central import ( "encoding/json" + "fmt" "github.com/golang/glog" "github.com/spf13/cobra" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/services" - "github.com/stackrox/acs-fleet-manager/pkg/environments" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/fleetmanagerclient" + "github.com/stackrox/acs-fleet-manager/pkg/client/fleetmanager" "github.com/stackrox/acs-fleet-manager/pkg/flags" ) // NewGetCommand gets a new command for getting centrals. -func NewGetCommand(env *environments.Env) *cobra.Command { +func NewGetCommand() *cobra.Command { cmd := &cobra.Command{ Use: "get", Short: "Get a central request", Long: "Get a central request.", Run: func(cmd *cobra.Command, args []string) { - runGet(env, cmd, args) + runGet(fleetmanagerclient.AuthenticatedClientWithOCM(), cmd, args) }, } cmd.Flags().String(FlagID, "", "Central ID") @@ -25,18 +26,19 @@ func NewGetCommand(env *environments.Env) *cobra.Command { return cmd } -func runGet(env *environments.Env, cmd *cobra.Command, _ []string) { +func runGet(client *fleetmanager.Client, cmd *cobra.Command, _ []string) { id := flags.MustGetDefinedString(FlagID, cmd.Flags()) - var centralService services.DinosaurService - env.MustResolveAll(¢ralService) - centralRequest, err := centralService.GetByID(id) + centralRequest, _, err := client.PublicAPI().GetCentralById(cmd.Context(), id) if err != nil { - glog.Fatalf("Unable to get central request: %s", err.Error()) + glog.Errorf(apiErrorMsg, "get", err) + return } - indentedCentralRequest, marshalErr := json.MarshalIndent(centralRequest, "", " ") - if marshalErr != nil { - glog.Fatalf("Failed to format central request: %s", marshalErr.Error()) + + centralJSON, err := json.Marshal(centralRequest) + if err != nil { + glog.Errorf("Failed to marshal CentralRequests: %s", err) + return } - glog.V(10).Infof("%s", indentedCentralRequest) + fmt.Println(string(centralJSON)) } diff --git a/internal/dinosaur/pkg/cmd/central/list.go b/internal/dinosaur/pkg/cmd/central/list.go index 9dd3abec58..106f841f19 100644 --- a/internal/dinosaur/pkg/cmd/central/list.go +++ b/internal/dinosaur/pkg/cmd/central/list.go @@ -1,22 +1,14 @@ package central import ( - "context" "encoding/json" - "net/url" + "fmt" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/api/public" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/presenters" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/services" - "github.com/stackrox/acs-fleet-manager/pkg/flags" - - "github.com/stackrox/acs-fleet-manager/pkg/auth" - "github.com/stackrox/acs-fleet-manager/pkg/environments" - coreServices "github.com/stackrox/acs-fleet-manager/pkg/services" - - "github.com/golang-jwt/jwt/v4" "github.com/golang/glog" "github.com/spf13/cobra" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/api/public" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/fleetmanagerclient" + "github.com/stackrox/acs-fleet-manager/pkg/client/fleetmanager" ) // FlagPage ... @@ -26,13 +18,13 @@ const ( ) // NewListCommand creates a new command for listing centrals. -func NewListCommand(env *environments.Env) *cobra.Command { +func NewListCommand() *cobra.Command { cmd := &cobra.Command{ Use: "list", Short: "lists all managed central requests", Long: "lists all managed central requests", Run: func(cmd *cobra.Command, args []string) { - runList(env, cmd, args) + runList(fleetmanagerclient.AuthenticatedClientWithOCM(), cmd, args) }, } cmd.Flags().String(FlagOwner, "test-user", "Username") @@ -42,49 +34,18 @@ func NewListCommand(env *environments.Env) *cobra.Command { return cmd } -func runList(env *environments.Env, cmd *cobra.Command, _ []string) { - owner := flags.MustGetDefinedString(FlagOwner, cmd.Flags()) - page := flags.MustGetString(FlagPage, cmd.Flags()) - size := flags.MustGetString(FlagSize, cmd.Flags()) - var centralService services.DinosaurService - env.MustResolveAll(¢ralService) - - // create jwt with claims and set it in the context - jwt := jwt.NewWithClaims(jwt.SigningMethodRS256, jwt.MapClaims{ - "username": owner, - }) - ctx := auth.SetTokenInContext(context.TODO(), jwt) - - // build list arguments - url := url.URL{} - query := url.Query() - query.Add(FlagPage, page) - query.Add(FlagSize, size) - listArgs := coreServices.NewListArguments(query) - - centralList, paging, err := centralService.List(ctx, listArgs) +func runList(client *fleetmanager.Client, cmd *cobra.Command, _ []string) { + centrals, _, err := client.PublicAPI().GetCentrals(cmd.Context(), &public.GetCentralsOpts{}) if err != nil { - glog.Fatalf("Unable to list central request: %s", err.Error()) - } - - // format output - centralRequestList := public.CentralRequestList{ - Kind: "CentralRequestList", - Page: int32(paging.Page), - Size: int32(paging.Size), - Total: int32(paging.Total), - Items: []public.CentralRequest{}, + glog.Errorf(apiErrorMsg, "list", err) + return } - for _, centralRequest := range centralList { - converted := presenters.PresentCentralRequest(centralRequest) - centralRequestList.Items = append(centralRequestList.Items, converted) - } - - output, marshalErr := json.MarshalIndent(centralRequestList, "", " ") - if marshalErr != nil { - glog.Fatalf("Failed to format central request list: %s", err.Error()) + centralJSON, err := json.Marshal(centrals) + if err != nil { + glog.Errorf("Failed to marshal CentralRequests: %s", err) + return } - glog.V(10).Infof("%s", output) + fmt.Println(string(centralJSON)) } diff --git a/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go b/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go new file mode 100644 index 0000000000..9deafb9916 --- /dev/null +++ b/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go @@ -0,0 +1,62 @@ +// Package fleetmanagerclient is a client for the CLI to connect to the fleetmanager. +package fleetmanagerclient + +import ( + "fmt" + "os" + "sync" + "time" + + "github.com/golang/glog" + "github.com/stackrox/acs-fleet-manager/pkg/client/fleetmanager" +) + +var ( + singletonInstance sync.Once + client *fleetmanager.Client +) + +const ( + defaultFleetManagerEndpoint = "http://localhost:8000" + fleetManagerEndpointEnvVar = "FMCLI_FLEET_MANAGER_ENDPOINT" + ocmRefreshTokenEnvVar = "OCM_TOKEN" +) + +// AuthenticatedClientWithOCM returns a rest client to the fleet-manager and receives the OCM refresh token. +// This function will panic on an error, designed to be used by the fleet-manager CLI. +func AuthenticatedClientWithOCM() *fleetmanager.Client { + ocmRefreshToken := os.Getenv(ocmRefreshTokenEnvVar) + if ocmRefreshToken == "" { + panic(fmt.Sprintf("%s not set. Please set OCM token with 'export %s=$(ocm token --refresh)'", ocmRefreshTokenEnvVar, ocmRefreshTokenEnvVar)) + } + + fleetManagerEndpoint := os.Getenv(fleetManagerEndpointEnvVar) + if fleetManagerEndpoint == "" { + fleetManagerEndpoint = defaultFleetManagerEndpoint + } + + singletonInstance.Do(func() { + auth, err := fleetmanager.NewAuth("OCM", fleetmanager.Option{ + Ocm: fleetmanager.OCMOption{ + RefreshToken: ocmRefreshToken, + }, + }) + if err != nil { + glog.Fatalf("Failed to create connection: %s", err) + return + } + + client, err = fleetmanager.NewClient(fleetManagerEndpoint, auth) + if err != nil { + glog.Fatalf("Failed to create connection: %s", err) + return + } + }) + + // sleep timer necessary to avoid "token issued in future" errors for time lags between fleet-manager running on a + // local VM and the OCM server. + if fleetManagerEndpoint == defaultFleetManagerEndpoint { + time.Sleep(5 * time.Second) + } + return client +} From 70c099e79b014692be8bc09cb262593cd8ed337a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=A4umer?= Date: Wed, 26 Apr 2023 11:30:04 +0200 Subject: [PATCH 02/40] Error message fix, take 100 (#988) Error, take 100 --- internal/dinosaur/pkg/cmd/central/cmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/dinosaur/pkg/cmd/central/cmd.go b/internal/dinosaur/pkg/cmd/central/cmd.go index 6ac96f517f..2201fbb20a 100644 --- a/internal/dinosaur/pkg/cmd/central/cmd.go +++ b/internal/dinosaur/pkg/cmd/central/cmd.go @@ -7,7 +7,7 @@ import ( ) const ( - apiErrorMsg = "%s Central failed: To fix this check if you are authenticated and the correct endpoint configured and reachable. Status Code: %s." + apiErrorMsg = "%s Central failed: To fix this ensure you are authenticated, fleet-manager endpoint is configured and reachable. Status Code: %s." ) // NewCentralCommand ... From 7034c3aab157e825623db7f22aa9918e307cf0de Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Thu, 27 Apr 2023 11:53:37 +0200 Subject: [PATCH 03/40] ROX-15981: add force reconcile flag to central requests (#972) --- .../pkg/central/reconciler/reconciler.go | 9 +++- .../pkg/central/reconciler/reconciler_test.go | 26 ++++++++++++ .../pkg/api/admin/private/api/openapi.yaml | 5 +++ .../pkg/api/admin/private/model_central.go | 1 + .../private/model_central_update_request.go | 1 + .../pkg/api/dbapi/central_request_types.go | 6 +++ .../dinosaur/pkg/api/private/api/openapi.yaml | 2 + .../pkg/api/private/model_managed_central.go | 11 ++--- .../dinosaur/pkg/handlers/admin_dinosaur.go | 1 + ..._add_force_reconcile_to_central_request.go | 41 +++++++++++++++++++ .../dinosaur/pkg/migrations/migrations.go | 1 + .../dinosaur/pkg/presenters/admin_dinosaur.go | 1 + .../dinosaur/pkg/presenters/managedcentral.go | 3 +- openapi/fleet-manager-private-admin.yaml | 4 ++ openapi/fleet-manager-private.yaml | 2 + 15 files changed, 106 insertions(+), 8 deletions(-) create mode 100644 internal/dinosaur/pkg/migrations/202304200000_add_force_reconcile_to_central_request.go diff --git a/fleetshard/pkg/central/reconciler/reconciler.go b/fleetshard/pkg/central/reconciler/reconciler.go index 89bd8d9e73..e50acc7925 100644 --- a/fleetshard/pkg/central/reconciler/reconciler.go +++ b/fleetshard/pkg/central/reconciler/reconciler.go @@ -110,8 +110,9 @@ func (r *CentralReconciler) Reconcile(ctx context.Context, remoteCentral private if err != nil { return nil, errors.Wrapf(err, "checking if central changed") } + needsReconcile := r.needsReconcile(changed, remoteCentral.ForceReconcile) - if !changed && r.shouldSkipReadyCentral(remoteCentral) { + if !needsReconcile && r.shouldSkipReadyCentral(remoteCentral) { return nil, ErrCentralNotChanged } @@ -341,7 +342,7 @@ func (r *CentralReconciler) Reconcile(ctx context.Context, remoteCentral private return nil, err } if !centralDeploymentReady || !centralTLSSecretFound { - if isRemoteCentralProvisioning(remoteCentral) && !changed { // no changes detected, wait until central become ready + if isRemoteCentralProvisioning(remoteCentral) && !needsReconcile { // no changes detected, wait until central become ready return nil, ErrCentralNotChanged } return installingStatus(), nil @@ -955,6 +956,10 @@ func (r *CentralReconciler) shouldSkipReadyCentral(remoteCentral private.Managed remoteCentral.Spec.Versions.ActualVersion == remoteCentral.Spec.Versions.DesiredVersion } +func (r *CentralReconciler) needsReconcile(changed bool, forceReconcile string) bool { + return changed || forceReconcile == "always" +} + var resourcesChart = charts.MustGetChart("tenant-resources") // NewCentralReconciler ... diff --git a/fleetshard/pkg/central/reconciler/reconciler_test.go b/fleetshard/pkg/central/reconciler/reconciler_test.go index a699f861c7..0023a0be1b 100644 --- a/fleetshard/pkg/central/reconciler/reconciler_test.go +++ b/fleetshard/pkg/central/reconciler/reconciler_test.go @@ -323,6 +323,32 @@ func TestIgnoreCacheForCentralNotReady(t *testing.T) { require.NoError(t, err) } +func TestIgnoreCacheForCentralForceReconcileAlways(t *testing.T) { + fakeClient := testutils.NewFakeClientBuilder(t, &v1alpha1.Central{ + ObjectMeta: metav1.ObjectMeta{ + Name: centralName, + Namespace: centralNamespace, + Annotations: map[string]string{util.RevisionAnnotationKey: "3"}, + }, + }, centralDeploymentObject()).Build() + + r := NewCentralReconciler(fakeClient, private.ManagedCentral{}, nil, centralDBInitFunc, CentralReconcilerOptions{}) + + managedCentral := simpleManagedCentral + managedCentral.RequestStatus = centralConstants.CentralRequestStatusReady.String() + managedCentral.ForceReconcile = "always" + + expectedHash, err := util.MD5SumFromJSONStruct(&managedCentral) + require.NoError(t, err) + + _, err = r.Reconcile(context.TODO(), managedCentral) + require.NoError(t, err) + assert.Equal(t, expectedHash, r.lastCentralHash) + + _, err = r.Reconcile(context.TODO(), managedCentral) + require.NoError(t, err) +} + func TestReconcileDelete(t *testing.T) { fakeClient := testutils.NewFakeClientBuilder(t).Build() r := NewCentralReconciler(fakeClient, private.ManagedCentral{}, nil, centralDBInitFunc, CentralReconcilerOptions{UseRoutes: true}) diff --git a/internal/dinosaur/pkg/api/admin/private/api/openapi.yaml b/internal/dinosaur/pkg/api/admin/private/api/openapi.yaml index ca45152501..abcfda3701 100644 --- a/internal/dinosaur/pkg/api/admin/private/api/openapi.yaml +++ b/internal/dinosaur/pkg/api/admin/private/api/openapi.yaml @@ -503,6 +503,7 @@ components: key: requests limits: key: limits + force_reconcile: force_reconcile scanner: analyzer: scaling: @@ -531,6 +532,8 @@ components: $ref: '#/components/schemas/CentralSpec' scanner: $ref: '#/components/schemas/ScannerSpec' + force_reconcile: + type: string type: object CentralDefaultVersion: example: @@ -762,6 +765,8 @@ components: $ref: '#/components/schemas/CentralSpec' scanner: $ref: '#/components/schemas/ScannerSpec' + force_reconcile: + type: string CentralList_allOf: properties: items: diff --git a/internal/dinosaur/pkg/api/admin/private/model_central.go b/internal/dinosaur/pkg/api/admin/private/model_central.go index 44d46f35b5..dd9c0a5f6c 100644 --- a/internal/dinosaur/pkg/api/admin/private/model_central.go +++ b/internal/dinosaur/pkg/api/admin/private/model_central.go @@ -50,4 +50,5 @@ type Central struct { Namespace string `json:"namespace,omitempty"` Central CentralSpec `json:"central,omitempty"` Scanner ScannerSpec `json:"scanner,omitempty"` + ForceReconcile string `json:"force_reconcile,omitempty"` } diff --git a/internal/dinosaur/pkg/api/admin/private/model_central_update_request.go b/internal/dinosaur/pkg/api/admin/private/model_central_update_request.go index c325c1c22e..364a044565 100644 --- a/internal/dinosaur/pkg/api/admin/private/model_central_update_request.go +++ b/internal/dinosaur/pkg/api/admin/private/model_central_update_request.go @@ -16,4 +16,5 @@ type CentralUpdateRequest struct { CentralVersion string `json:"central_version,omitempty"` Central CentralSpec `json:"central,omitempty"` Scanner ScannerSpec `json:"scanner,omitempty"` + ForceReconcile string `json:"force_reconcile,omitempty"` } diff --git a/internal/dinosaur/pkg/api/dbapi/central_request_types.go b/internal/dinosaur/pkg/api/dbapi/central_request_types.go index 4a8de0a9c7..2e8c1e47e6 100644 --- a/internal/dinosaur/pkg/api/dbapi/central_request_types.go +++ b/internal/dinosaur/pkg/api/dbapi/central_request_types.go @@ -91,6 +91,12 @@ type CentralRequest struct { // All we need to integrate Central with an IdP. AuthConfig + + // ForceReconcile will be set by the admin API to indicate to fleetshard-sync that this instance needs + // to be reconciled even if it has not changed and is in a state were reconciliation should be skipped. + // Set this to "always" to force reconcilation. Set it to any other string to force a + // one time reconcilation or to stop from reconciling always. + ForceReconcile string `json:"force_reconcile"` } // CentralList ... diff --git a/internal/dinosaur/pkg/api/private/api/openapi.yaml b/internal/dinosaur/pkg/api/private/api/openapi.yaml index ff0d2bee74..9910a78774 100644 --- a/internal/dinosaur/pkg/api/private/api/openapi.yaml +++ b/internal/dinosaur/pkg/api/private/api/openapi.yaml @@ -530,6 +530,8 @@ components: $ref: '#/components/schemas/ManagedCentral_allOf_spec' requestStatus: type: string + forceReconcile: + type: string ManagedCentralList_allOf: example: '{"kind":"ManagedCentralList","items":{"$ref":"#/components/examples/ManagedCentralExample"}}' properties: diff --git a/internal/dinosaur/pkg/api/private/model_managed_central.go b/internal/dinosaur/pkg/api/private/model_managed_central.go index bedbedf8a6..010f0f18c8 100644 --- a/internal/dinosaur/pkg/api/private/model_managed_central.go +++ b/internal/dinosaur/pkg/api/private/model_managed_central.go @@ -12,9 +12,10 @@ package private // ManagedCentral struct for ManagedCentral type ManagedCentral struct { - Id string `json:"id,omitempty"` - Kind string `json:"kind,omitempty"` - Metadata ManagedCentralAllOfMetadata `json:"metadata,omitempty"` - Spec ManagedCentralAllOfSpec `json:"spec,omitempty"` - RequestStatus string `json:"requestStatus,omitempty"` + Id string `json:"id,omitempty"` + Kind string `json:"kind,omitempty"` + Metadata ManagedCentralAllOfMetadata `json:"metadata,omitempty"` + Spec ManagedCentralAllOfSpec `json:"spec,omitempty"` + RequestStatus string `json:"requestStatus,omitempty"` + ForceReconcile string `json:"forceReconcile,omitempty"` } diff --git a/internal/dinosaur/pkg/handlers/admin_dinosaur.go b/internal/dinosaur/pkg/handlers/admin_dinosaur.go index 358a9126cf..c0bd9eddfd 100644 --- a/internal/dinosaur/pkg/handlers/admin_dinosaur.go +++ b/internal/dinosaur/pkg/handlers/admin_dinosaur.go @@ -321,6 +321,7 @@ func updateCentralRequest(request *dbapi.CentralRequest, updateRequest *private. } new.DesiredCentralVersion = updateRequest.CentralVersion + new.ForceReconcile = updateRequest.ForceReconcile *request = new return nil diff --git a/internal/dinosaur/pkg/migrations/202304200000_add_force_reconcile_to_central_request.go b/internal/dinosaur/pkg/migrations/202304200000_add_force_reconcile_to_central_request.go new file mode 100644 index 0000000000..afbef34979 --- /dev/null +++ b/internal/dinosaur/pkg/migrations/202304200000_add_force_reconcile_to_central_request.go @@ -0,0 +1,41 @@ +package migrations + +import ( + "github.com/golang/glog" + + "github.com/go-gormigrate/gormigrate/v2" + "github.com/pkg/errors" + "github.com/stackrox/acs-fleet-manager/pkg/api" + "gorm.io/gorm" +) + +func addForceReconcileToCentralRequest() *gormigrate.Migration { + type CentralRequest struct { + api.Meta + ForceReconcile string `json:"force_reconcile"` + } + + id := "202304200000" + colName := "ForceReconcile" + return &gormigrate.Migration{ + ID: id, + Migrate: func(tx *gorm.DB) error { + if !tx.Migrator().HasColumn(&CentralRequest{}, colName) { + if err := tx.Migrator().AddColumn(&CentralRequest{}, colName); err != nil { + return errors.Wrapf(err, "adding column %s in migration %s", colName, id) + } + glog.Infof("Successfully added the %s column", colName) + } + return nil + }, + Rollback: func(tx *gorm.DB) error { + if tx.Migrator().HasColumn(&CentralRequest{}, colName) { + if err := tx.Migrator().DropColumn(&CentralRequest{}, colName); err != nil { + return errors.Wrapf(err, "rolling back from column %s in migration %s", colName, id) + } + glog.Infof("Successfully removed the %s column", colName) + } + return nil + }, + } +} diff --git a/internal/dinosaur/pkg/migrations/migrations.go b/internal/dinosaur/pkg/migrations/migrations.go index 924911b87b..828a688527 100644 --- a/internal/dinosaur/pkg/migrations/migrations.go +++ b/internal/dinosaur/pkg/migrations/migrations.go @@ -43,6 +43,7 @@ func getMigrations() []*gormigrate.Migration { addCentralDefaultVersion(), dropSkipSchedulingFromClusters(), addSchedulableToClusters(), + addForceReconcileToCentralRequest(), } } diff --git a/internal/dinosaur/pkg/presenters/admin_dinosaur.go b/internal/dinosaur/pkg/presenters/admin_dinosaur.go index ada61243a9..fc1733a5ec 100644 --- a/internal/dinosaur/pkg/presenters/admin_dinosaur.go +++ b/internal/dinosaur/pkg/presenters/admin_dinosaur.go @@ -64,5 +64,6 @@ func PresentDinosaurRequestAdminEndpoint(request *dbapi.CentralRequest, _ accoun InstanceType: request.InstanceType, Central: adminCentral, Scanner: adminScanner, + ForceReconcile: request.ForceReconcile, }, nil } diff --git a/internal/dinosaur/pkg/presenters/managedcentral.go b/internal/dinosaur/pkg/presenters/managedcentral.go index 985d2cc97c..0932480d62 100644 --- a/internal/dinosaur/pkg/presenters/managedcentral.go +++ b/internal/dinosaur/pkg/presenters/managedcentral.go @@ -135,7 +135,8 @@ func (c *ManagedCentralPresenter) PresentManagedCentral(from *dbapi.CentralReque }, }, }, - RequestStatus: from.Status, + RequestStatus: from.Status, + ForceReconcile: from.ForceReconcile, } if from.DeletionTimestamp != nil { diff --git a/openapi/fleet-manager-private-admin.yaml b/openapi/fleet-manager-private-admin.yaml index 56da105995..739752e6b5 100644 --- a/openapi/fleet-manager-private-admin.yaml +++ b/openapi/fleet-manager-private-admin.yaml @@ -438,6 +438,8 @@ components: $ref: "fleet-manager.yaml#/components/schemas/CentralSpec" scanner: $ref: "fleet-manager.yaml#/components/schemas/ScannerSpec" + force_reconcile: + type: string CentralList: allOf: - $ref: "fleet-manager.yaml#/components/schemas/List" @@ -461,6 +463,8 @@ components: $ref: "fleet-manager.yaml#/components/schemas/CentralSpec" scanner: $ref: "fleet-manager.yaml#/components/schemas/ScannerSpec" + force_reconcile: + type: string CentralDefaultVersion: type: object diff --git a/openapi/fleet-manager-private.yaml b/openapi/fleet-manager-private.yaml index 90fad4cd98..7cce4ee149 100644 --- a/openapi/fleet-manager-private.yaml +++ b/openapi/fleet-manager-private.yaml @@ -329,6 +329,8 @@ components: $ref: "#/components/schemas/ResourceRequirements" requestStatus: type: string + forceReconcile: + type: string ManagedCentralList: description: >- From 1583286778577a026c6426d8ec2c0ae76f110819 Mon Sep 17 00:00:00 2001 From: Stephan Hesselmann Date: Thu, 27 Apr 2023 16:11:26 +0200 Subject: [PATCH 04/40] update prod observability operator to v4.2.1 (#985) --- .../helm/rhacs-terraform/charts/observability/values.yaml | 2 +- dp-terraform/helm/rhacs-terraform/terraform_cluster.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml index 857cd7d6f3..2f280977e0 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml @@ -4,7 +4,7 @@ # Version of observability operator # https://github.com/redhat-developer/observability-operator/releases -observabilityOperatorVersion: "v4.0.4" +observabilityOperatorVersion: "v4.2.1" github: # You can generate a new one at https://github.com/settings/tokens/new, for a user diff --git a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh index 94b127499c..6d49d73091 100755 --- a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh +++ b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh @@ -53,7 +53,7 @@ case $ENVIRONMENT in FM_ENDPOINT="https://api.openshift.com" OBSERVABILITY_GITHUB_TAG="production" OBSERVABILITY_OBSERVATORIUM_GATEWAY="https://observatorium-mst.api.openshift.com" - OBSERVABILITY_OPERATOR_VERSION="v4.0.4" + OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="true" OPERATOR_VERSION="v4.0.0" ;; From 091e9a2d98633d215cf928419b55f58e57698c4d Mon Sep 17 00:00:00 2001 From: Aleksandr Kurlov Date: Fri, 28 Apr 2023 23:57:20 +0200 Subject: [PATCH 05/40] ROX-15941: Run multiple operators from FSS (#951) * Run multiple operators from FSS * Refactor installation * Refactor chart isntallation * Add TODO * Review comments * Review comments * Add rollback doc * Fix deployment * Update fleetshard/README.md Co-authored-by: Ludovic Cleroux * Fix typo * Ignore long tag version for operator deployment * Update fleetshard/pkg/central/operator/upgrade.go Co-authored-by: Marcin Owsiany * Update fleetshard/pkg/runtime/runtime.go Co-authored-by: Marcin Owsiany * Fail fast on parsing images * Add TODO to disable installing operator subscription * Extend rollback in README.md * Set TODOs for dropping acs operator template * Add re-terraform in case of rollback * Log namespace * Drop CRD check * Apply suggestions from code review Co-authored-by: Marcin Owsiany * Review coments * Update fleetshard/pkg/central/operator/upgrade_test.go Co-authored-by: Ludovic Cleroux * Update fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-deployment.yaml Co-authored-by: Ludovic Cleroux * Fix formatting * Add note about deleting OperatorGroup * Rename unique set for unique images * Update fleetshard/pkg/central/operator/upgrade.go Co-authored-by: Marcin Owsiany * Rename deployment prefix and pass it completely --------- Co-authored-by: Ludovic Cleroux Co-authored-by: Marcin Owsiany --- .../templates/acs-operator.yaml | 1 + .../helm/rhacs-terraform/terraform_cluster.sh | 1 + dp-terraform/helm/rhacs-terraform/test.sh | 1 + fleetshard/README.md | 98 +++++++++++ .../templates/rhacs-operator-deployment.yaml | 16 +- ...r-manager-metrics-service_v1_service.yaml} | 2 +- .../rhacs-operator-service-account.yaml | 2 +- .../charts/data/rhacs-operator/values.yaml | 15 +- fleetshard/pkg/central/operator/upgrade.go | 79 ++++++--- .../pkg/central/operator/upgrade_test.go | 160 +++++++++++++++--- fleetshard/pkg/runtime/runtime.go | 12 +- 11 files changed, 333 insertions(+), 54 deletions(-) rename fleetshard/pkg/central/charts/data/rhacs-operator/templates/{rhacs-operator-controller-manager-metrics-service_v1_service.yaml => rhacs-operator-manager-metrics-service_v1_service.yaml} (85%) diff --git a/dp-terraform/helm/rhacs-terraform/templates/acs-operator.yaml b/dp-terraform/helm/rhacs-terraform/templates/acs-operator.yaml index 9fa8a1d48e..13d10c60f5 100644 --- a/dp-terraform/helm/rhacs-terraform/templates/acs-operator.yaml +++ b/dp-terraform/helm/rhacs-terraform/templates/acs-operator.yaml @@ -1,3 +1,4 @@ +## TODO(ROX-16646): drop acs-operator.yaml template {{- if .Values.acsOperator.enabled }} apiVersion: operators.coreos.com/v1 kind: OperatorGroup diff --git a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh index 6d49d73091..dc0f149bee 100755 --- a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh +++ b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh @@ -100,6 +100,7 @@ if [[ "${OPERATOR_USE_UPSTREAM}" == "true" ]]; then OPERATOR_SOURCE="rhacs-operators" fi +# TODO(ROX-16645): set acsOperator.enabled to false invoke_helm "${SCRIPT_DIR}" rhacs-terraform \ --namespace rhacs \ --set acsOperator.enabled=true \ diff --git a/dp-terraform/helm/rhacs-terraform/test.sh b/dp-terraform/helm/rhacs-terraform/test.sh index 6b4445446d..f442ea21f5 100755 --- a/dp-terraform/helm/rhacs-terraform/test.sh +++ b/dp-terraform/helm/rhacs-terraform/test.sh @@ -5,6 +5,7 @@ CLUSTER_ID="test-clusterId" FM_ENDPOINT="127.0.0.1:443" OCM_TOKEN="example-token" +# TODO(ROX-16645): set acsOperator.enabled to false helm template rhacs-terraform \ --debug \ --namespace rhacs \ diff --git a/fleetshard/README.md b/fleetshard/README.md index f14a0e5738..14ce3dc181 100644 --- a/fleetshard/README.md +++ b/fleetshard/README.md @@ -81,3 +81,101 @@ STATIC_TOKEN= \ AUTH_TYPE=STATIC_TOKEN \ ./dev/env/scripts/exec_fleetshard_sync.sh ``` + +### Manage ACS Operator(s) + +Fleetshard-sync service is able to manage installation/update +of ACS Operator based on running and desired ACS Instances versions. +Fleetshard-sync operator ACS Operator management should replace OLM based approach. + +#### Rollout installation/update of ACS Operator: + +1. Make sure that OLM ACS Operator subscription is deleted. +OLM uses the subscription resource to subscribe to the latest version of an operator. +OLM reinstalls a new version of the operator even if the operator’s CSV was deleted earlier. +In effect, you must tell OLM that you do not want new versions of the operator to be installed by deleting the ACS Operator subscription +``` +kubectl get subscription -n +kubectl delete subscription -n +``` + +2. Delete the Operator’s ClusterServiceVersion. +The ClusterServiceVersion contains all the information that OLM needs to manage an operator, +and it effectively represents an operator that is installed on the cluster + +``` +kubectl get clusterserviceversion -n +kubectl delete clusterserviceversion rhacs-operator. -n +``` + +3. Delete the Operator’s OperatorGroup. +``` +kubectl get OperatorGroup -n +kubectl delete OperatorGroup rhacs-operator. -n +``` + +4. Check that there is no running ACS Operator + +``` +kubectl get pods -n +NAME READY STATUS RESTARTS AGE +``` + +5. Turn on ACS Operator management feature flag + +set `FEATURE_FLAG_UPGRADE_OPERATOR_ENABLED` to `true` and redeploy Fleetshard-sync service + +6. Check that the ACS Operator is running again + +``` +kubectl get pods -n +NAME READY STATUS RESTARTS AGE +rhacs-operator-controller-manager-3.74.1-5765676ffc-l9bpp 2/2 Running 0 13s +... +``` + +7. Check deployment + +``` +kubectl get deployments -n +NAME READY UP-TO-DATE AVAILABLE AGE +rhacs-operator-controller-manager-3.74.1 1/1 1 1 27s +``` + +#### Rollback installation/update of ACS Operator: + +1. Redeploy Fleetshard-sync with disabled `FEATURE_FLAG_UPGRADE_OPERATOR_ENABLED=false` environment variable +2. Delete existing ACS Operator deployment(s) + +``` +kubectl get deployments -n +kubectl delete deployment -n +``` + +Also, delete metric Service and serviceAccount +``` +kubectl delete service rhacs-operator-controller-manager-metrics-service -n +kubectl delete serviceAccount rhacs-operator-controller-manager -n +``` + +3. Check that there is no running ACS Operator pod(s) + +``` +kubectl get pods -n +NAME +... +``` + +4. Re-terraform the cluster +``` +./terraform_cluster.sh +``` + +5. Check that ACS Operator is running + +``` +kubectl get pods -n +NAME READY STATUS RESTARTS AGE +rhacs-operator-controller-manager-688d74ffb5-lkbm7 2/2 Running 0 13s +... +``` diff --git a/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-deployment.yaml b/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-deployment.yaml index 4b6c0e94a4..f773812435 100644 --- a/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-deployment.yaml +++ b/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-deployment.yaml @@ -1,10 +1,14 @@ +## Iterate over operator versions passed by fleet-shard sync +{{- range .Values.operator.images }} apiVersion: apps/v1 kind: Deployment metadata: labels: app: rhacs-operator control-plane: controller-manager - name: rhacs-operator-controller-manager + ## Name field must contain up to 63 characters + ## https://www.rfc-editor.org/rfc/rfc1123 + name: {{ $.Values.operator.deploymentPrefix | lower }}{{ .tag | lower }} namespace: stackrox-operator spec: replicas: 1 @@ -78,13 +82,11 @@ spec: containerName: manager resource: limits.memory divisor: '0' - - name: OPERATOR_CONDITION_NAME - value: rhacs-operator.v3.74.0 - {{ if .Values.operator.centralLabelSelector -}} + {{- if $.Values.operator.centralLabelSelector -}} - name: CENTRAL_LABEL_SELECTOR - value: {{ .Values.operator.centralLabelSelector | quote }} + value: "rhacs.redhat.com/tag={{ substr 0 64 (lower .tag) }},rhacs.redhat.com/repository={{ substr 0 64 (lower .repository )}}" {{- end }} - image: {{ .Values.operator.image }} + image: "{{ .repository }}:{{ .tag }}" imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 @@ -130,3 +132,5 @@ spec: serviceAccount: rhacs-operator-controller-manager serviceAccountName: rhacs-operator-controller-manager terminationGracePeriodSeconds: 10 +--- +{{- end }} diff --git a/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-controller-manager-metrics-service_v1_service.yaml b/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-manager-metrics-service_v1_service.yaml similarity index 85% rename from fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-controller-manager-metrics-service_v1_service.yaml rename to fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-manager-metrics-service_v1_service.yaml index d13cf021f0..cf9ecccaab 100644 --- a/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-controller-manager-metrics-service_v1_service.yaml +++ b/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-manager-metrics-service_v1_service.yaml @@ -5,7 +5,7 @@ metadata: labels: app: rhacs-operator control-plane: controller-manager - name: rhacs-operator-controller-manager-metrics-service + name: rhacs-operator-manager-metrics-service spec: ports: - name: https diff --git a/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-service-account.yaml b/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-service-account.yaml index 715218634d..e05d9bfac7 100644 --- a/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-service-account.yaml +++ b/fleetshard/pkg/central/charts/data/rhacs-operator/templates/rhacs-operator-service-account.yaml @@ -3,5 +3,5 @@ imagePullSecrets: - name: quay-ips kind: ServiceAccount metadata: - name: rhacs-operator-controller-manager + name: rhacs-operator-manager namespace: stackrox-operator diff --git a/fleetshard/pkg/central/charts/data/rhacs-operator/values.yaml b/fleetshard/pkg/central/charts/data/rhacs-operator/values.yaml index f5638cc359..dd7bb49e17 100644 --- a/fleetshard/pkg/central/charts/data/rhacs-operator/values.yaml +++ b/fleetshard/pkg/central/charts/data/rhacs-operator/values.yaml @@ -3,6 +3,15 @@ # Declare variables to be passed into your templates. operator: - # TODO: Split image into registry and image name + tag - image: quay.io/rhacs-eng/stackrox-operator:3.74.0 - # TODO: and values for resource limits and requests for both proxy and manager container + deploymentPrefix: rhacs-operator-manager- + + # Each item in images should contain `repository` and `tag` key + # example: + # images: + # - repository: quay.io/rhacs-eng/stackrox-operator + # tag: 3.74.0 + # - repository: quay.io/rhacs-eng/stackrox-operator + # tag: 3.74.1 + images: [] + # TODO: add values for resource limits and requests for both proxy and manager container + # TODO: add value for kube-rbac-proxy image diff --git a/fleetshard/pkg/central/operator/upgrade.go b/fleetshard/pkg/central/operator/upgrade.go index 4aff00b123..d27d88c2d8 100644 --- a/fleetshard/pkg/central/operator/upgrade.go +++ b/fleetshard/pkg/central/operator/upgrade.go @@ -4,22 +4,55 @@ package operator import ( "context" "fmt" + "strings" "github.com/golang/glog" + apiErrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "github.com/stackrox/acs-fleet-manager/fleetshard/pkg/central/charts" "helm.sh/helm/v3/pkg/chart" "helm.sh/helm/v3/pkg/chartutil" - apiErrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ctrlClient "sigs.k8s.io/controller-runtime/pkg/client" ) const ( - operatorNamespace = "stackrox-operator" - releaseName = "rhacs-operator" - operatorImage = "quay.io/rhacs-eng/stackrox-operator:3.74.0" + operatorNamespace = "stackrox-operator" + releaseName = "rhacs-operator" + operatorDeploymentPrefix = "rhacs-operator-manager" + + // deployment names should contain at most 63 characters + // RFC 1035 Label Names: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#rfc-1035-label-names + maxOperatorDeploymentNameLength = 63 ) +func parseOperatorImages(images []string) ([]chartutil.Values, error) { + if len(images) == 0 { + return nil, fmt.Errorf("the list of images is empty") + } + var operatorImages []chartutil.Values + uniqueImages := make(map[string]bool) + for _, img := range images { + if !strings.Contains(img, ":") { + return nil, fmt.Errorf("failed to parse image %q", img) + } + strs := strings.Split(img, ":") + if len(strs) != 2 { + return nil, fmt.Errorf("failed to split image and tag from %q", img) + } + repo, tag := strs[0], strs[1] + if len(operatorDeploymentPrefix+"-"+tag) > maxOperatorDeploymentNameLength { + return nil, fmt.Errorf("%s-%s contains more than %d characters and cannot be used as a deployment name", operatorDeploymentPrefix, tag, maxOperatorDeploymentNameLength) + } + if _, used := uniqueImages[repo+tag]; !used { + uniqueImages[repo+tag] = true + img := chartutil.Values{"repository": repo, "tag": tag} + operatorImages = append(operatorImages, img) + } + } + return operatorImages, nil +} + // ACSOperatorManager keeps data necessary for managing ACS Operator type ACSOperatorManager struct { client ctrlClient.Client @@ -27,19 +60,24 @@ type ACSOperatorManager struct { } // InstallOrUpgrade provisions or upgrades an existing ACS Operator from helm chart template -func (u *ACSOperatorManager) InstallOrUpgrade(ctx context.Context) error { +func (u *ACSOperatorManager) InstallOrUpgrade(ctx context.Context, images []string) error { + operatorImages, err := parseOperatorImages(images) + if err != nil { + return fmt.Errorf("failed to parse images: %w", err) + } chartVals := chartutil.Values{ "operator": chartutil.Values{ - "image": operatorImage, + "deploymentPrefix": operatorDeploymentPrefix + "-", + "images": operatorImages, }, } + u.resourcesChart = charts.MustGetChart("rhacs-operator") objs, err := charts.RenderToObjects(releaseName, operatorNamespace, u.resourcesChart, chartVals) if err != nil { - return fmt.Errorf("installing operator chart: %w", err) + return fmt.Errorf("failed rendering operator chart: %w", err) } - // TODO(ROX-16338): handle namespace assigning with refactoring of chart deployment for _, obj := range objs { if obj.GetNamespace() == "" { obj.SetNamespace(operatorNamespace) @@ -49,22 +87,21 @@ func (u *ACSOperatorManager) InstallOrUpgrade(ctx context.Context) error { out.SetGroupVersionKind(obj.GroupVersionKind()) err := u.client.Get(ctx, key, &out) if err == nil { - glog.V(10).Infof("Updating ACS Operator %s/%s", obj.GetNamespace(), obj.GetName()) + glog.V(10).Infof("Updating %s/%s in %s namespace", obj.GetKind(), obj.GetName(), obj.GetNamespace()) obj.SetResourceVersion(out.GetResourceVersion()) err := u.client.Update(ctx, obj) if err != nil { - return fmt.Errorf("failed to update ACS Operator %s/%s of type %v %s", key.Namespace, key.Name, obj.GroupVersionKind(), err) + return fmt.Errorf("failed to update object %s/%s in %s namespace: %w", obj.GetKind(), key.Name, key.Namespace, err) + } + } else { + if !apiErrors.IsNotFound(err) { + return fmt.Errorf("failed to retrieve object %s/%s in %s namespace: %w", obj.GetKind(), key.Name, key.Namespace, err) + } + err = u.client.Create(ctx, obj) + glog.Infof("Creating %s/%s in %s namespace", obj.GetKind(), obj.GetName(), obj.GetNamespace()) + if err != nil && !apiErrors.IsAlreadyExists(err) { + return fmt.Errorf("failed to create object %s/%s in %s namespace: %w", obj.GetKind(), key.Name, key.Namespace, err) } - - continue - } - if !apiErrors.IsNotFound(err) { - return fmt.Errorf("failed to retrieve object %s/%s of type %v %s", key.Namespace, key.Name, obj.GroupVersionKind(), err) - } - err = u.client.Create(ctx, obj) - glog.V(10).Infof("Creating object %s/%s", obj.GetNamespace(), obj.GetName()) - if err != nil && !apiErrors.IsAlreadyExists(err) { - return fmt.Errorf("failed to create object %s/%s of type %v: %w", key.Namespace, key.Name, obj.GroupVersionKind(), err) } } diff --git a/fleetshard/pkg/central/operator/upgrade_test.go b/fleetshard/pkg/central/operator/upgrade_test.go index f991d8ec0b..02b89147d0 100644 --- a/fleetshard/pkg/central/operator/upgrade_test.go +++ b/fleetshard/pkg/central/operator/upgrade_test.go @@ -4,17 +4,25 @@ import ( "context" "testing" + "helm.sh/helm/v3/pkg/chartutil" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "github.com/stackrox/acs-fleet-manager/fleetshard/pkg/testutils" + appsv1 "k8s.io/api/apps/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) const ( - kindCRDName = "CustomResourceDefinition" - k8sAPIVersion = "apiextensions.k8s.io/v1" + kindCRDName = "CustomResourceDefinition" + k8sAPIVersion = "apiextensions.k8s.io/v1" + operatorRepository = "quay.io/rhacs-eng/stackrox-operator" + operatorImage1 = "quay.io/rhacs-eng/stackrox-operator:3.74.1" + operatorImage2 = "quay.io/rhacs-eng/stackrox-operator:3.74.2" ) var securedClusterCRD = &unstructured.Unstructured{ @@ -42,18 +50,32 @@ var serviceAccount = &unstructured.Unstructured{ "kind": "ServiceAccount", "apiVersion": "v1", "metadata": map[string]interface{}{ - "name": "rhacs-operator-controller-manager", + "name": "rhacs-operator-manager", "namespace": operatorNamespace, }, }, } -var operatorDeployment = &unstructured.Unstructured{ +var operatorDeployment1 = &appsv1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: "rhacs-operator-manager-3.74.1", + Namespace: operatorNamespace, + }, +} + +var operatorDeployment2 = &appsv1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: "rhacs-operator-manager-3.74.2", + Namespace: operatorNamespace, + }, +} + +var metricService = &unstructured.Unstructured{ Object: map[string]interface{}{ - "kind": "Deployment", - "apiVersion": "apps/v1", + "kind": "Service", + "apiVersion": "v1", "metadata": map[string]interface{}{ - "name": "rhacs-operator-controller-manager", + "name": "rhacs-operator-manager-metrics-service", "namespace": operatorNamespace, }, }, @@ -63,8 +85,7 @@ func TestOperatorUpgradeFreshInstall(t *testing.T) { fakeClient := testutils.NewFakeClientBuilder(t).Build() u := NewACSOperatorManager(fakeClient) - err := u.InstallOrUpgrade(context.Background()) - + err := u.InstallOrUpgrade(context.Background(), []string{operatorImage1}) require.NoError(t, err) // check Secured Cluster CRD exists and correct @@ -88,18 +109,119 @@ func TestOperatorUpgradeFreshInstall(t *testing.T) { assert.NotEmpty(t, centralCRD.Object["metadata"]) assert.NotEmpty(t, centralCRD.Object["spec"]) + // check metric service exists + err = fakeClient.Get(context.Background(), client.ObjectKey{Namespace: operatorNamespace, Name: metricService.GetName()}, metricService) + require.NoError(t, err) + assert.Equal(t, k8sAPIVersion, centralCRD.GetAPIVersion()) + assert.NotEmpty(t, metricService.Object["metadata"]) + assert.NotEmpty(t, metricService.Object["spec"]) + // check Operator Deployment exists - err = fakeClient.Get(context.Background(), client.ObjectKey{Namespace: operatorNamespace, Name: operatorDeployment.GetName()}, operatorDeployment) + err = fakeClient.Get(context.Background(), client.ObjectKey{Namespace: operatorNamespace, Name: operatorDeployment1.Name}, operatorDeployment1) require.NoError(t, err) - assert.Equal(t, "apps/v1", operatorDeployment.GetAPIVersion()) - assert.NotEmpty(t, operatorDeployment.Object["metadata"]) - assert.NotEmpty(t, operatorDeployment.Object["spec"]) - templateSpec := operatorDeployment.Object["spec"].(map[string]interface{})["template"].(map[string]interface{})["spec"] - assert.NotEmpty(t, templateSpec) - assert.Contains(t, templateSpec, "containers") - containers := templateSpec.(map[string]interface{})["containers"].([]interface{}) + containers := operatorDeployment1.Spec.Template.Spec.Containers assert.Len(t, containers, 2) - managerContainer := containers[1].(map[string]interface{}) - assert.Equal(t, managerContainer["image"], operatorImage) + managerContainer := containers[1] + assert.Equal(t, managerContainer.Image, operatorImage1) +} + +func TestOperatorUpgradeMultipleVersions(t *testing.T) { + fakeClient := testutils.NewFakeClientBuilder(t).Build() + u := NewACSOperatorManager(fakeClient) + operatorImages := []string{operatorImage1, operatorImage2} + err := u.InstallOrUpgrade(context.Background(), operatorImages) + require.NoError(t, err) + + err = fakeClient.Get(context.Background(), client.ObjectKey{Namespace: operatorNamespace, Name: operatorDeployment1.Name}, operatorDeployment1) + require.NoError(t, err) + managerContainer := operatorDeployment1.Spec.Template.Spec.Containers[1] + assert.Equal(t, managerContainer.Image, operatorImage1) + + err = fakeClient.Get(context.Background(), client.ObjectKey{Namespace: operatorNamespace, Name: operatorDeployment2.Name}, operatorDeployment2) + require.NoError(t, err) + managerContainer = operatorDeployment2.Spec.Template.Spec.Containers[1] + assert.Equal(t, managerContainer.Image, operatorImage2) +} + +func TestOperatorUpgradeDoNotInstallLongTagVersion(t *testing.T) { + fakeClient := testutils.NewFakeClientBuilder(t).Build() + u := NewACSOperatorManager(fakeClient) + + operatorImageWithLongTag := "quay.io/rhacs-eng/stackrox-operator:3.74.1-with-ridiculously-long-tag-version-name" + err := u.InstallOrUpgrade(context.Background(), []string{operatorImageWithLongTag}) + require.Errorf(t, err, "zero tags parsed from images") + + deployments := &appsv1.DeploymentList{} + err = fakeClient.List(context.Background(), deployments) + require.NoError(t, err) + assert.Len(t, deployments.Items, 0) +} + +func TestParseOperatorImages(t *testing.T) { + cases := map[string]struct { + images []string + expected []map[string]string + shouldFail bool + }{ + "should parse one valid operator image": { + images: []string{operatorImage1}, + expected: []map[string]string{ + {"repository": operatorRepository, "tag": "3.74.1"}, + }, + }, + "should parse two valid operator images": { + images: []string{operatorImage1, operatorImage2}, + expected: []map[string]string{ + {"repository": operatorRepository, "tag": "3.74.1"}, + {"repository": operatorRepository, "tag": "3.74.2"}, + }, + }, + "should ignore duplicate operator images": { + images: []string{operatorImage1, operatorImage1}, + expected: []map[string]string{ + {"repository": operatorRepository, "tag": "3.74.1"}, + }, + }, + "fail if images list is empty": { + images: []string{}, + shouldFail: true, + }, + "should accept images from multiple repositories with the same tag": { + images: []string{"repo1:tag", "repo2:tag"}, + expected: []map[string]string{ + {"repository": "repo1", "tag": "tag"}, + {"repository": "repo2", "tag": "tag"}, + }, + }, + "fail if image does contain colon": { + images: []string{"quay.io/without-colon-123-tag"}, + shouldFail: true, + }, + "fail if image contains more than one colon": { + images: []string{"quay.io/image-name:1.2.3:"}, + shouldFail: true, + }, + "fail if image tag is too long": { + images: []string{"quay.io/image-name:1.2.3-with-ridiculously-long-tag-version-name"}, + shouldFail: true, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + got, err := parseOperatorImages(c.images) + if c.shouldFail { + assert.Error(t, err) + } else { + assert.NoError(t, err) + var expectedRepositoryAndTags []chartutil.Values + for _, m := range c.expected { + val := chartutil.Values{"repository": m["repository"], "tag": m["tag"]} + expectedRepositoryAndTags = append(expectedRepositoryAndTags, val) + } + assert.Equal(t, expectedRepositoryAndTags, got) + } + }) + } } diff --git a/fleetshard/pkg/runtime/runtime.go b/fleetshard/pkg/runtime/runtime.go index 50785b0288..721abbf076 100644 --- a/fleetshard/pkg/runtime/runtime.go +++ b/fleetshard/pkg/runtime/runtime.go @@ -4,6 +4,7 @@ package runtime import ( "context" "fmt" + "strings" "time" "github.com/stackrox/acs-fleet-manager/fleetshard/pkg/central/operator" @@ -213,12 +214,17 @@ func (r *Runtime) deleteStaleReconcilers(list *private.ManagedCentralList) { } func (r *Runtime) upgradeOperator() error { - glog.Infof("Start Operator upgrade") ctx := context.Background() - err := r.operatorManager.InstallOrUpgrade(ctx) + // TODO: gather desired operator versions from fleet-manager and update operators based on ticker + // TODO: Leave Operator installation before reconciler run until migration + operatorImages := []string{"quay.io/rhacs-eng/stackrox-operator:3.74.0", "quay.io/rhacs-eng/stackrox-operator:3.74.1"} + glog.Infof("Installing Operators: %s", strings.Join(operatorImages, ", ")) + err := r.operatorManager.InstallOrUpgrade(ctx, operatorImages) if err != nil { - return fmt.Errorf("operator upgrade: %w", err) + return fmt.Errorf("ensuring initial operator installation failed: %w", err) } + + // TODO: delete unused operator versions return nil } From ed1800bd7fb09ff2ff1c39720b9b9eb4eb3a45f7 Mon Sep 17 00:00:00 2001 From: Ludovic Cleroux Date: Tue, 2 May 2023 10:56:07 +0200 Subject: [PATCH 06/40] ROX-15980 probe resource requests and limits (#992) --- deploy/helm/probe/templates/01-operator-04-deployment.yaml | 7 +++++++ deploy/helm/probe/values.yaml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/deploy/helm/probe/templates/01-operator-04-deployment.yaml b/deploy/helm/probe/templates/01-operator-04-deployment.yaml index 7dfb4b6205..bae7f7e95e 100644 --- a/deploy/helm/probe/templates/01-operator-04-deployment.yaml +++ b/deploy/helm/probe/templates/01-operator-04-deployment.yaml @@ -55,4 +55,11 @@ spec: ports: - name: monitoring containerPort: 7070 + resources: + requests: + cpu: {{ .Values.resources.requests.cpu | quote }} + memory: {{ .Values.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.resources.limits.cpu | quote }} + memory: {{ .Values.resources.limits.memory | quote }} terminationGracePeriodSeconds: 300 diff --git a/deploy/helm/probe/values.yaml b/deploy/helm/probe/values.yaml index 23e3291cc0..5268e50d78 100644 --- a/deploy/helm/probe/values.yaml +++ b/deploy/helm/probe/values.yaml @@ -16,3 +16,10 @@ redHatSSO: clientSecret: "" endpoint: "https://sso.redhat.com" realm: "redhat-external" +resources: + limits: + cpu: "100m" + memory: "128Mi" + requests: + cpu: "100m" + memory: "128Mi" From 8620c557ec7dd72c3d9586704832b25e5ab157f7 Mon Sep 17 00:00:00 2001 From: Ludovic Cleroux Date: Tue, 2 May 2023 10:56:50 +0200 Subject: [PATCH 07/40] ROX-15980 observability resource requests and limits (#993) --- .../templates/01-operator-06-cr.yaml | 35 +++++++++++++++ .../charts/observability/values.yaml | 45 +++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml index db72bc52e0..d5c8d64215 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml @@ -44,6 +44,41 @@ spec: values: - rhacs - strimzi + alertManagerResourceRequirement: + requests: + cpu: {{ .Values.alertManager.resources.requests.cpu | quote }} + memory: {{ .Values.alertManager.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.alertManager.resources.limits.cpu | quote }} + memory: {{ .Values.alertManager.resources.limits.memory | quote }} + prometheusResourceRequirement: + requests: + cpu: {{ .Values.prometheus.resources.requests.cpu | quote }} + memory: {{ .Values.prometheus.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.prometheus.resources.limits.cpu | quote }} + memory: {{ .Values.prometheus.resources.limits.memory | quote }} + prometheusOperatorResourceRequirement: + requests: + cpu: {{ .Values.prometheusOperator.resources.requests.cpu | quote }} + memory: {{ .Values.prometheusOperator.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.prometheusOperator.resources.limits.cpu | quote }} + memory: {{ .Values.prometheusOperator.resources.limits.memory | quote }} + grafanaResourceRequirement: + requests: + cpu: {{ .Values.grafana.resources.requests.cpu | quote }} + memory: {{ .Values.grafana.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.grafana.resources.limits.cpu | quote }} + memory: {{ .Values.grafana.resources.limits.memory | quote }} + grafanaOperatorResourceRequirement: + requests: + cpu: {{ .Values.grafanaOperator.resources.requests.cpu | quote }} + memory: {{ .Values.grafanaOperator.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.grafanaOperator.resources.limits.cpu | quote }} + memory: {{ .Values.grafanaOperator.resources.limits.memory | quote }} storage: prometheus: volumeClaimTemplate: diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml index 2f280977e0..e727173d8f 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml @@ -35,3 +35,48 @@ pagerduty: deadMansSwitch: # Webhook URL of the dead man's switch provider. url: "" + +prometheus: + resources: + requests: + cpu: 1500m + memory: 18Gi + limits: + cpu: 1500m + memory: 18Gi + +prometheusOperator: + resources: + requests: + cpu: 200m + memory: 256Mi + limits: + cpu: 200m + memory: 256Mi + +grafana: + resources: + requests: + cpu: 500m + memory: 1024Mi + limits: + cpu: 500m + memory: 1024Mi + +grafanaOperator: + resources: + requests: + cpu: 200m + memory: 256Mi + limits: + cpu: 200m + memory: 256Mi + +alertManager: + resources: + requests: + cpu: 200m + memory: 256Mi + limits: + cpu: 200m + memory: 256Mi From 1d2003e426026a3cf99b71789184faa982a83965 Mon Sep 17 00:00:00 2001 From: Ludovic Cleroux Date: Tue, 2 May 2023 12:32:10 +0200 Subject: [PATCH 08/40] ROX-15980: Set resources requests and limits for fleetshard-sync (#990) --- dp-terraform/helm/rhacs-terraform/README.md | 2 ++ .../templates/fleetshard-sync.yaml | 7 +++++++ .../helm/rhacs-terraform/terraform_cluster.sh | 17 +++++++++++++++++ dp-terraform/helm/rhacs-terraform/values.yaml | 7 +++++++ 4 files changed, 33 insertions(+) diff --git a/dp-terraform/helm/rhacs-terraform/README.md b/dp-terraform/helm/rhacs-terraform/README.md index 41d28f2942..31d587b17c 100644 --- a/dp-terraform/helm/rhacs-terraform/README.md +++ b/dp-terraform/helm/rhacs-terraform/README.md @@ -17,6 +17,8 @@ Run the script for your environment and cluster name: The env var `FM_ENDPOINT` should point to an endpoint for the fleet manager. An option to use a fleet manager instance running in your laptop is to [setup ngrok](https://ngrok.com/docs/getting-started), launch the fleet manager, and run `ngrok http 8000` to expose it to the internet. That commands outputs an endpoint that you can use for `FM_ENDPOINT`. To get the cluster id for staging look for `cluster_id` in `dev/config/dataplane-cluster-configuration-staging.yaml` file. Export that value to environment variable `export CLUSTER_ID=""`. +The FLEETSHARD_SYNC__ environment variables can be used to override the default values for the fleetshard-sync container resource requests and limits. See the `terraform_cluster.sh` for the current default values. + **Create values file** Create a file `~/acs-terraform-values.yaml` with the values for the parameters in [values.yaml](./values.yaml) that are missing or that you want to override. That file will contain credentials, so make sure you put it in a safe location, and with suitable permissions. diff --git a/dp-terraform/helm/rhacs-terraform/templates/fleetshard-sync.yaml b/dp-terraform/helm/rhacs-terraform/templates/fleetshard-sync.yaml index ae47c13713..7251911fb9 100644 --- a/dp-terraform/helm/rhacs-terraform/templates/fleetshard-sync.yaml +++ b/dp-terraform/helm/rhacs-terraform/templates/fleetshard-sync.yaml @@ -83,3 +83,10 @@ spec: ports: - name: monitoring containerPort: 8080 + resources: + limits: + cpu: {{ .Values.fleetshardSync.resources.limits.cpu | quote }} + memory: {{ .Values.fleetshardSync.resources.limits.memory | quote }} + requests: + cpu: {{ .Values.fleetshardSync.resources.requests.cpu | quote }} + memory: {{ .Values.fleetshardSync.resources.requests.memory | quote }} diff --git a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh index dc0f149bee..a5a65df4c5 100755 --- a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh +++ b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh @@ -38,6 +38,10 @@ case $ENVIRONMENT in OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="false" OPERATOR_VERSION="v4.0.0" + FLEETSHARD_SYNC_CPU_REQUEST="${FLEETSHARD_SYNC_CPU_REQUEST:-"200m"}" + FLEETSHARD_SYNC_MEMORY_REQUEST="${FLEETSHARD_SYNC_MEMORY_REQUEST:-"512Mi"}" + FLEETSHARD_SYNC_CPU_LIMIT="${FLEETSHARD_SYNC_CPU_LIMIT:-"500m"}" + FLEETSHARD_SYNC_MEMORY_LIMIT="${FLEETSHARD_SYNC_MEMORY_LIMIT:-"512Mi"}" ;; stage) @@ -47,6 +51,10 @@ case $ENVIRONMENT in OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="true" OPERATOR_VERSION="v4.0.0" + FLEETSHARD_SYNC_CPU_REQUEST="${FLEETSHARD_SYNC_CPU_REQUEST:-"200m"}" + FLEETSHARD_SYNC_MEMORY_REQUEST="${FLEETSHARD_SYNC_MEMORY_REQUEST:-"1024Mi"}" + FLEETSHARD_SYNC_CPU_LIMIT="${FLEETSHARD_SYNC_CPU_LIMIT:-"1000m"}" + FLEETSHARD_SYNC_MEMORY_LIMIT="${FLEETSHARD_SYNC_MEMORY_LIMIT:-"1024Mi"}" ;; prod) @@ -56,6 +64,10 @@ case $ENVIRONMENT in OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="true" OPERATOR_VERSION="v4.0.0" + FLEETSHARD_SYNC_CPU_REQUEST="${FLEETSHARD_SYNC_CPU_REQUEST:-"200m"}" + FLEETSHARD_SYNC_MEMORY_REQUEST="${FLEETSHARD_SYNC_MEMORY_REQUEST:-"1024Mi"}" + FLEETSHARD_SYNC_CPU_LIMIT="${FLEETSHARD_SYNC_CPU_LIMIT:-"1000m"}" + FLEETSHARD_SYNC_MEMORY_LIMIT="${FLEETSHARD_SYNC_MEMORY_LIMIT:-"1024Mi"}" ;; *) @@ -100,6 +112,7 @@ if [[ "${OPERATOR_USE_UPSTREAM}" == "true" ]]; then OPERATOR_SOURCE="rhacs-operators" fi +# TODO(ROX-16771): Move this to env-specific values.yaml files # TODO(ROX-16645): set acsOperator.enabled to false invoke_helm "${SCRIPT_DIR}" rhacs-terraform \ --namespace rhacs \ @@ -124,6 +137,10 @@ invoke_helm "${SCRIPT_DIR}" rhacs-terraform \ --set fleetshardSync.aws.roleARN="${FLEETSHARD_SYNC_AWS_ROLE_ARN}" \ --set fleetshardSync.telemetry.storage.endpoint="${FLEETSHARD_SYNC_TELEMETRY_STORAGE_ENDPOINT:-}" \ --set fleetshardSync.telemetry.storage.key="${FLEETSHARD_SYNC_TELEMETRY_STORAGE_KEY:-}" \ + --set fleetshardSync.resources.requests.cpu="${FLEETSHARD_SYNC_CPU_REQUEST}" \ + --set fleetshardSync.resources.requests.memory="${FLEETSHARD_SYNC_MEMORY_REQUEST}" \ + --set fleetshardSync.resources.limits.cpu="${FLEETSHARD_SYNC_CPU_LIMIT}" \ + --set fleetshardSync.resources.limits.memory="${FLEETSHARD_SYNC_MEMORY_LIMIT}" \ --set cloudwatch.aws.accessKeyId="${CLOUDWATCH_EXPORTER_AWS_ACCESS_KEY_ID:-}" \ --set cloudwatch.aws.secretAccessKey="${CLOUDWATCH_EXPORTER_AWS_SECRET_ACCESS_KEY:-}" \ --set cloudwatch.clusterName="${CLUSTER_NAME}" \ diff --git a/dp-terraform/helm/rhacs-terraform/values.yaml b/dp-terraform/helm/rhacs-terraform/values.yaml index a49da1893b..07b21ac924 100644 --- a/dp-terraform/helm/rhacs-terraform/values.yaml +++ b/dp-terraform/helm/rhacs-terraform/values.yaml @@ -40,6 +40,13 @@ fleetshardSync: endpoint: "" # API key to push telemetry data to a remote backend. Leaving it empty disables telemetry. key: "" + resources: + requests: + cpu: "500m" + memory: "512Mi" + limits: + cpu: "500m" + memory: "512Mi" acsOperator: enabled: false From 4add8210b4a312f3faa47c99ee9cdda58cd5281d Mon Sep 17 00:00:00 2001 From: Ludovic Cleroux Date: Tue, 2 May 2023 13:17:09 +0200 Subject: [PATCH 09/40] ROX-16769 add resources for observability operator (#995) --- .../templates/01-operator-05-subscription.yaml | 8 ++++++++ .../rhacs-terraform/charts/observability/values.yaml | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-05-subscription.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-05-subscription.yaml index 1c83dfd2f0..26f9c6a19d 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-05-subscription.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-05-subscription.yaml @@ -12,3 +12,11 @@ spec: source: observability-operator-manifests sourceNamespace: {{ include "observability.namespace" . }} startingCSV: observability-operator.{{ .Values.observabilityOperatorVersion }} + config: + resources: + requests: + cpu: {{ .Values.observabilityOperator.resources.requests.cpu | quote }} + memory: {{ .Values.observabilityOperator.resources.requests.memory | quote }} + limits: + cpu: {{ .Values.observabilityOperator.resources.limits.cpu | quote }} + memory: {{ .Values.observabilityOperator.resources.limits.memory | quote }} diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml index e727173d8f..13b3d2b885 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/values.yaml @@ -36,6 +36,16 @@ deadMansSwitch: # Webhook URL of the dead man's switch provider. url: "" + +observabilityOperator: + resources: + requests: + cpu: "500m" + memory: "2048Mi" + limits: + cpu: "500m" + memory: "2048Mi" + prometheus: resources: requests: From aad51d1f7a2a50a4641a81417e1ae17e3c295e58 Mon Sep 17 00:00:00 2001 From: Ludovic Cleroux Date: Wed, 3 May 2023 15:26:52 +0200 Subject: [PATCH 10/40] ROX-15980 set resource requests and limits to the egress-proxy (#991) --- e2e/e2e_test.go | 7 ++++--- .../tenant-resources/templates/egress-proxy.yaml | 16 ++++++++++++++++ .../charts/data/tenant-resources/values.yaml | 11 ++++++++--- fleetshard/pkg/central/reconciler/reconciler.go | 16 ++++++++-------- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go index 8e8a998849..930be5895e 100644 --- a/e2e/e2e_test.go +++ b/e2e/e2e_test.go @@ -227,19 +227,20 @@ var _ = Describe("Central", func() { } }) - It("should spin up an egress proxy with two healthy replicas", func() { + It("should spin up an egress proxy with three healthy replicas", func() { if createdCentral == nil { Fail("central not created") } + var expected int32 = 3 Eventually(func() error { var egressProxyDeployment appsv1.Deployment key := ctrlClient.ObjectKey{Namespace: namespaceName, Name: "egress-proxy"} if err := k8sClient.Get(context.TODO(), key, &egressProxyDeployment); err != nil { return err } - if egressProxyDeployment.Status.ReadyReplicas < 2 { + if egressProxyDeployment.Status.ReadyReplicas < expected { statusBytes, _ := yaml.Marshal(&egressProxyDeployment.Status) - return fmt.Errorf("egress proxy only has %d/%d ready replicas (and %d unavailable ones), expected 2. full status: %s", egressProxyDeployment.Status.ReadyReplicas, egressProxyDeployment.Status.Replicas, egressProxyDeployment.Status.UnavailableReplicas, statusBytes) + return fmt.Errorf("egress proxy only has %d/%d ready replicas (and %d unavailable ones), expected %d. full status: %s", egressProxyDeployment.Status.ReadyReplicas, egressProxyDeployment.Status.Replicas, egressProxyDeployment.Status.UnavailableReplicas, expected, statusBytes) } return nil }).WithTimeout(waitTimeout).WithPolling(defaultPolling).Should(Succeed()) diff --git a/fleetshard/pkg/central/charts/data/tenant-resources/templates/egress-proxy.yaml b/fleetshard/pkg/central/charts/data/tenant-resources/templates/egress-proxy.yaml index 0666cf5abb..ee460d5cda 100644 --- a/fleetshard/pkg/central/charts/data/tenant-resources/templates/egress-proxy.yaml +++ b/fleetshard/pkg/central/charts/data/tenant-resources/templates/egress-proxy.yaml @@ -32,6 +32,15 @@ spec: annotations: config-hash: {{ .Files.Get "config/squid.conf" | sha256sum | quote }} spec: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/component + operator: In + values: + - egress-proxy + topologyKey: kubernetes.io/hostname containers: - name: egress-proxy image: {{ .Values.egressProxy.image }} @@ -49,6 +58,13 @@ spec: mountPath: /etc/squid/squid.conf subPath: squid.conf readOnly: true + resources: + limits: + cpu: {{ .Values.egressProxy.resources.limits.cpu | quote }} + memory: {{ .Values.egressProxy.resources.limits.memory | quote }} + requests: + cpu: {{ .Values.egressProxy.resources.requests.cpu | quote }} + memory: {{ .Values.egressProxy.resources.requests.memory | quote }} volumes: - name: config-volume configMap: diff --git a/fleetshard/pkg/central/charts/data/tenant-resources/values.yaml b/fleetshard/pkg/central/charts/data/tenant-resources/values.yaml index c16825415a..09bdff3883 100644 --- a/fleetshard/pkg/central/charts/data/tenant-resources/values.yaml +++ b/fleetshard/pkg/central/charts/data/tenant-resources/values.yaml @@ -1,7 +1,12 @@ - egressProxy: image: ubuntu/squid:5.2-22.04_beta - replicas: 2 - + replicas: 3 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 200m + memory: 256Mi labels: {} annotations: {} diff --git a/fleetshard/pkg/central/reconciler/reconciler.go b/fleetshard/pkg/central/reconciler/reconciler.go index e50acc7925..a71258faa6 100644 --- a/fleetshard/pkg/central/reconciler/reconciler.go +++ b/fleetshard/pkg/central/reconciler/reconciler.go @@ -933,21 +933,21 @@ func (r *CentralReconciler) ensureRouteDeleted(ctx context.Context, routeSupplie } func (r *CentralReconciler) chartValues(remoteCentral private.ManagedCentral) (chartutil.Values, error) { - vals := chartutil.Values{ + if r.resourcesChart == nil { + return nil, errors.New("resources chart is not set") + } + src := r.resourcesChart.Values + dst := map[string]interface{}{ "labels": map[string]interface{}{ k8s.ManagedByLabelKey: k8s.ManagedByFleetshardValue, }, } if r.egressProxyImage != "" { - override := chartutil.Values{ - "egressProxy": chartutil.Values{ - "image": r.egressProxyImage, - }, + dst["egressProxy"] = map[string]interface{}{ + "image": r.egressProxyImage, } - vals = chartutil.CoalesceTables(vals, override) } - - return vals, nil + return chartutil.CoalesceTables(dst, src), nil } func (r *CentralReconciler) shouldSkipReadyCentral(remoteCentral private.ManagedCentral) bool { From 357a23fdc507fd9103852e6a96e708ede516e1c4 Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Wed, 3 May 2023 19:19:26 +0200 Subject: [PATCH 11/40] fix e2e admin tests by reducing required resources (#1007) --- e2e/e2e_test.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go index 930be5895e..178833467c 100644 --- a/e2e/e2e_test.go +++ b/e2e/e2e_test.go @@ -320,12 +320,12 @@ var _ = Describe("Central", func() { centralResources := private.ResourceRequirements{ Requests: map[string]string{ - corev1.ResourceCPU.String(): "501m", - corev1.ResourceMemory.String(): "201M", + corev1.ResourceCPU.String(): "210m", + corev1.ResourceMemory.String(): "210M", }, Limits: map[string]string{ - corev1.ResourceCPU.String(): "502m", - corev1.ResourceMemory.String(): "202M", + corev1.ResourceCPU.String(): "310m", + corev1.ResourceMemory.String(): "310M", }, } centralSpec := private.CentralSpec{ @@ -333,12 +333,12 @@ var _ = Describe("Central", func() { } scannerResources := private.ResourceRequirements{ Requests: map[string]string{ - corev1.ResourceCPU.String(): "301m", - corev1.ResourceMemory.String(): "151M", + corev1.ResourceCPU.String(): "210m", + corev1.ResourceMemory.String(): "310M", }, Limits: map[string]string{ - corev1.ResourceCPU.String(): "302m", - corev1.ResourceMemory.String(): "152M", + corev1.ResourceCPU.String(): "211m", + corev1.ResourceMemory.String(): "311M", }, } scannerScaling := private.ScannerSpecAnalyzerScaling{ @@ -423,19 +423,19 @@ var _ = Describe("Central", func() { corev1.ResourceMemory.String(): "199M", }, Limits: map[string]string{ - corev1.ResourceCPU.String(): "505m", + corev1.ResourceCPU.String(): "315m", }, }, }, } newCentralResources := corev1.ResourceRequirements{ Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("501m"), + corev1.ResourceCPU: resource.MustParse("210m"), corev1.ResourceMemory: resource.MustParse("199M"), }, Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("505m"), - corev1.ResourceMemory: resource.MustParse("202M"), + corev1.ResourceCPU: resource.MustParse("315m"), + corev1.ResourceMemory: resource.MustParse("310M"), }, } From fc0f2be99a1d2929606cf984754fa2e857acb7cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl?= Date: Wed, 3 May 2023 20:08:34 +0200 Subject: [PATCH 12/40] Add `sleep(6s)` before tracking central creation (#999) --- .../dinosaur/pkg/handlers/admin_dinosaur.go | 4 +-- internal/dinosaur/pkg/handlers/dinosaur.go | 3 +-- internal/dinosaur/pkg/services/telemetry.go | 25 ++++++++++++++++--- .../dinosaur/pkg/services/telemetry_test.go | 2 +- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/internal/dinosaur/pkg/handlers/admin_dinosaur.go b/internal/dinosaur/pkg/handlers/admin_dinosaur.go index c0bd9eddfd..0fc69e3b88 100644 --- a/internal/dinosaur/pkg/handlers/admin_dinosaur.go +++ b/internal/dinosaur/pkg/handlers/admin_dinosaur.go @@ -81,8 +81,8 @@ func (h adminCentralHandler) Create(w http.ResponseWriter, r *http.Request) { }, Action: func() (interface{}, *errors.ServiceError) { svcErr := h.service.RegisterDinosaurJob(&convCentral) - h.telemetry.RegisterTenant(r.Context(), &convCentral) - h.telemetry.TrackCreationRequested(r.Context(), convCentral.ID, true, svcErr.AsError()) + h.telemetry.RegisterTenant(ctx, &convCentral, true, svcErr.AsError()) + if svcErr != nil { return nil, svcErr } diff --git a/internal/dinosaur/pkg/handlers/dinosaur.go b/internal/dinosaur/pkg/handlers/dinosaur.go index c6b255bc49..8ffcbccf73 100644 --- a/internal/dinosaur/pkg/handlers/dinosaur.go +++ b/internal/dinosaur/pkg/handlers/dinosaur.go @@ -92,8 +92,7 @@ func (h dinosaurHandler) Create(w http.ResponseWriter, r *http.Request) { svcErr := h.service.RegisterDinosaurJob(convCentral) // Do not track centrals created from internal services. if !convCentral.Internal { - h.telemetry.RegisterTenant(r.Context(), convCentral) - h.telemetry.TrackCreationRequested(r.Context(), convCentral.ID, false, svcErr.AsError()) + h.telemetry.RegisterTenant(ctx, convCentral, false, svcErr.AsError()) } if svcErr != nil { return nil, svcErr diff --git a/internal/dinosaur/pkg/services/telemetry.go b/internal/dinosaur/pkg/services/telemetry.go index 2c9805b65e..69698c75c1 100644 --- a/internal/dinosaur/pkg/services/telemetry.go +++ b/internal/dinosaur/pkg/services/telemetry.go @@ -2,6 +2,7 @@ package services import ( "context" + "time" "github.com/golang/glog" "github.com/pkg/errors" @@ -14,6 +15,10 @@ import ( // TenantGroupName holds the name of the Tenant group. const TenantGroupName = "Tenant" +// segmentChancesRaiser is a sleep period for the telemeter.Group call to finish +// its 3 background attempts to set the group properties. +const segmentChancesRaiser = 6 * time.Second + // TelemetryAuth is a wrapper around the user claim extraction. // //go:generate moq -out telemetry_moq.go . TelemetryAuth @@ -56,9 +61,9 @@ func (t *Telemetry) enabled() bool { return t != nil && t.config != nil && t.config.Enabled() } -// RegisterTenant emits a group event that captures meta data of the input central instance. +// setTenantProperties emits a group event that captures meta data of the input central instance. // Adds the token user to the tenant group. -func (t *Telemetry) RegisterTenant(ctx context.Context, central *dbapi.CentralRequest) { +func (t *Telemetry) setTenantProperties(ctx context.Context, central *dbapi.CentralRequest) { if !t.enabled() { return } @@ -84,8 +89,8 @@ func (t *Telemetry) RegisterTenant(ctx context.Context, central *dbapi.CentralRe ) } -// TrackCreationRequested emits a track event that signals the creation request of a Central instance. -func (t *Telemetry) TrackCreationRequested(ctx context.Context, tenantID string, isAdmin bool, requestErr error) { +// trackCreationRequested emits a track event that signals the creation request of a Central instance. +func (t *Telemetry) trackCreationRequested(ctx context.Context, tenantID string, isAdmin bool, requestErr error) { if !t.enabled() { return } @@ -115,6 +120,18 @@ func (t *Telemetry) TrackCreationRequested(ctx context.Context, tenantID string, ) } +// RegisterTenant initializes the tenant group with the associated properties +// and issues a following event tracking the central creation request. +func (t *Telemetry) RegisterTenant(ctx context.Context, convCentral *dbapi.CentralRequest, isAdmin bool, err error) { + t.setTenantProperties(ctx, convCentral) + go func() { + // This is to raise the chances for the tenant group properties be + // procesed by Segment: + time.Sleep(segmentChancesRaiser) + t.trackCreationRequested(ctx, convCentral.ID, isAdmin, err) + }() +} + // TrackDeletionRequested emits a track event that signals the deletion request of a Central instance. func (t *Telemetry) TrackDeletionRequested(ctx context.Context, tenantID string, isAdmin bool, requestErr error) { if !t.enabled() { diff --git a/internal/dinosaur/pkg/services/telemetry_test.go b/internal/dinosaur/pkg/services/telemetry_test.go index 0a0741f6b0..f39f33ee5d 100644 --- a/internal/dinosaur/pkg/services/telemetry_test.go +++ b/internal/dinosaur/pkg/services/telemetry_test.go @@ -22,7 +22,7 @@ func TestTelemetryTrackRequests(t *testing.T) { ctx := context.Background() tenantID := "tenant-id" createFunc := func(t *Telemetry, tt testCase) { - t.TrackCreationRequested(ctx, tenantID, tt.isAdmin, tt.requestErr) + t.trackCreationRequested(ctx, tenantID, tt.isAdmin, tt.requestErr) } deleteFunc := func(t *Telemetry, tt testCase) { t.TrackDeletionRequested(ctx, tenantID, tt.isAdmin, tt.requestErr) From 06e11f6d4e0c6ec0589f3d16146ee0804322b4f0 Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Thu, 4 May 2023 07:35:03 +0200 Subject: [PATCH 13/40] ROX-13692: create final snapshot for tenant db (#994) --- .github/workflows/rds.yaml | 3 +- Makefile | 2 +- .../central/cloudprovider/awsclient/rds.go | 16 ++++-- .../cloudprovider/awsclient/rds_test.go | 53 ++++++++++++++++--- 4 files changed, 61 insertions(+), 13 deletions(-) diff --git a/.github/workflows/rds.yaml b/.github/workflows/rds.yaml index c16b2252f7..f6101d5f5c 100644 --- a/.github/workflows/rds.yaml +++ b/.github/workflows/rds.yaml @@ -32,6 +32,7 @@ on: - 'docs/**' - 'pkg/api/openapi/docs/**' - 'pkg/api/openapi/.openapi-generator-ignore' + - 'dp-terraform/**' jobs: verify-test: @@ -67,4 +68,4 @@ jobs: AWS_AUTH_HELPER: "none" run: | ./dev/env/scripts/exec_fleetshard_sync.sh make test/rds - timeout-minutes: 35 + timeout-minutes: 50 diff --git a/Makefile b/Makefile index 2bedbc3eef..f43ba5b476 100644 --- a/Makefile +++ b/Makefile @@ -326,7 +326,7 @@ test: $(GOTESTSUM_BIN) # Runs the AWS RDS integration tests. test/rds: $(GOTESTSUM_BIN) RUN_RDS_TESTS=true \ - $(GOTESTSUM_BIN) --junitfile data/results/rds-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -v -timeout 30m -count=1 \ + $(GOTESTSUM_BIN) --junitfile data/results/rds-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -v -timeout 45m -count=1 \ ./fleetshard/pkg/central/cloudprovider/awsclient/... .PHONY: test/rds diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index a0d232aff2..cb5ce9e98e 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -166,7 +166,6 @@ func (r *RDS) ensureInstanceDeleted(instanceID string) error { if instanceStatus != dbDeletingStatus { glog.Infof("Initiating deprovisioning of RDS database instance %s.", instanceID) - // TODO(ROX-13692): do not skip taking a final DB snapshot _, err := r.rdsClient.DeleteDBInstance(newDeleteCentralDBInstanceInput(instanceID, true)) if err != nil { return fmt.Errorf("deleting DB instance: %w", err) @@ -187,8 +186,7 @@ func (r *RDS) ensureClusterDeleted(clusterID string) error { if clusterStatus != dbDeletingStatus { glog.Infof("Initiating deprovisioning of RDS database cluster %s.", clusterID) - // TODO(ROX-13692): do not skip taking a final DB snapshot - _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, true)) + _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, false)) if err != nil { return fmt.Errorf("deleting DB cluster: %w", err) } @@ -366,10 +364,16 @@ func newDeleteCentralDBInstanceInput(instanceID string, skipFinalSnapshot bool) } func newDeleteCentralDBClusterInput(clusterID string, skipFinalSnapshot bool) *rds.DeleteDBClusterInput { - return &rds.DeleteDBClusterInput{ + input := &rds.DeleteDBClusterInput{ DBClusterIdentifier: aws.String(clusterID), SkipFinalSnapshot: aws.Bool(skipFinalSnapshot), } + + if !skipFinalSnapshot { + input.FinalDBSnapshotIdentifier = getFinalSnapshotID(clusterID) + } + + return input } func newRdsClient(awsConfig config.AWS, auth fleetmanager.Auth) (*rds.RDS, error) { @@ -395,6 +399,10 @@ func newRdsClient(awsConfig config.AWS, auth fleetmanager.Auth) (*rds.RDS, error return rds.New(sess), nil } +func getFinalSnapshotID(clusterID string) *string { + return aws.String(fmt.Sprintf("%s-%s", clusterID, "final")) +} + type tokenFetcher struct { auth fleetmanager.Auth } diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go index ecc67b6453..9c76300068 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go @@ -17,7 +17,7 @@ import ( "github.com/stretchr/testify/require" ) -const awsTimeoutMinutes = 15 +const awsTimeoutMinutes = 30 func newTestRDS() (*RDS, error) { rdsClient, err := newTestRDSClient() @@ -47,7 +47,7 @@ func newTestRDSClient() (*rds.RDS, error) { func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID string) (bool, error) { for { - clusterExists, clusterStatus, err := rdsClient.clusterStatus(clusterID) + clusterExists, _, err := rdsClient.clusterStatus(clusterID) if err != nil { return false, err } @@ -56,11 +56,6 @@ func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID st return true, nil } - // exit early if cluster is marked as deleting - if clusterStatus == dbDeletingStatus { - return true, nil - } - ticker := time.NewTicker(awsRetrySeconds * time.Second) select { case <-ticker.C: @@ -71,6 +66,37 @@ func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID st } } +func waitForFinalSnapshotToExist(ctx context.Context, rdsClient *RDS, clusterID string) (bool, error) { + + ticker := time.NewTicker(awsRetrySeconds * time.Second) + for { + select { + case <-ticker.C: + snapshotOut, err := rdsClient.rdsClient.DescribeDBClusterSnapshots(&rds.DescribeDBClusterSnapshotsInput{ + DBClusterSnapshotIdentifier: getFinalSnapshotID(clusterID), + }) + + if err != nil { + if awsErr, ok := err.(awserr.Error); ok { + if awsErr.Code() != rds.ErrCodeDBClusterSnapshotNotFoundFault { + return false, err + } + + continue + } + } + + if snapshotOut != nil { + return len(snapshotOut.DBClusterSnapshots) == 1, nil + } + case <-ctx.Done(): + return false, fmt.Errorf("waiting for final DB snapshot: %w", ctx.Err()) + } + + } + +} + func TestRDSProvisioning(t *testing.T) { if os.Getenv("RUN_RDS_TESTS") != "true" { t.Skip("Skip RDS tests. Set RUN_RDS_TESTS=true env variable to enable RDS tests.") @@ -136,6 +162,19 @@ func TestRDSProvisioning(t *testing.T) { clusterDeleted, err := waitForClusterToBeDeleted(deleteCtx, rdsClient, clusterID) require.NoError(t, err) assert.True(t, clusterDeleted) + + // Always attemt to delete the final snapshot if it exists + defer func() { + _, err := rdsClient.rdsClient.DeleteDBClusterSnapshot( + &rds.DeleteDBClusterSnapshotInput{DBClusterSnapshotIdentifier: getFinalSnapshotID(clusterID)}, + ) + + assert.NoError(t, err) + }() + + snapshotExists, err := waitForFinalSnapshotToExist(deleteCtx, rdsClient, clusterID) + require.NoError(t, err) + require.True(t, snapshotExists) } func TestGetDBConnection(t *testing.T) { From e5e9b24ea847dcf699cffbdab955ed52b29a63ff Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Thu, 4 May 2023 11:40:31 +0200 Subject: [PATCH 14/40] Revert "ROX-13692: create final snapshot for tenant db (#994)" (#1009) This reverts commit 06e11f6d4e0c6ec0589f3d16146ee0804322b4f0. --- .github/workflows/rds.yaml | 3 +- Makefile | 2 +- .../central/cloudprovider/awsclient/rds.go | 16 ++---- .../cloudprovider/awsclient/rds_test.go | 53 +++---------------- 4 files changed, 13 insertions(+), 61 deletions(-) diff --git a/.github/workflows/rds.yaml b/.github/workflows/rds.yaml index f6101d5f5c..c16b2252f7 100644 --- a/.github/workflows/rds.yaml +++ b/.github/workflows/rds.yaml @@ -32,7 +32,6 @@ on: - 'docs/**' - 'pkg/api/openapi/docs/**' - 'pkg/api/openapi/.openapi-generator-ignore' - - 'dp-terraform/**' jobs: verify-test: @@ -68,4 +67,4 @@ jobs: AWS_AUTH_HELPER: "none" run: | ./dev/env/scripts/exec_fleetshard_sync.sh make test/rds - timeout-minutes: 50 + timeout-minutes: 35 diff --git a/Makefile b/Makefile index f43ba5b476..2bedbc3eef 100644 --- a/Makefile +++ b/Makefile @@ -326,7 +326,7 @@ test: $(GOTESTSUM_BIN) # Runs the AWS RDS integration tests. test/rds: $(GOTESTSUM_BIN) RUN_RDS_TESTS=true \ - $(GOTESTSUM_BIN) --junitfile data/results/rds-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -v -timeout 45m -count=1 \ + $(GOTESTSUM_BIN) --junitfile data/results/rds-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -v -timeout 30m -count=1 \ ./fleetshard/pkg/central/cloudprovider/awsclient/... .PHONY: test/rds diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index cb5ce9e98e..a0d232aff2 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -166,6 +166,7 @@ func (r *RDS) ensureInstanceDeleted(instanceID string) error { if instanceStatus != dbDeletingStatus { glog.Infof("Initiating deprovisioning of RDS database instance %s.", instanceID) + // TODO(ROX-13692): do not skip taking a final DB snapshot _, err := r.rdsClient.DeleteDBInstance(newDeleteCentralDBInstanceInput(instanceID, true)) if err != nil { return fmt.Errorf("deleting DB instance: %w", err) @@ -186,7 +187,8 @@ func (r *RDS) ensureClusterDeleted(clusterID string) error { if clusterStatus != dbDeletingStatus { glog.Infof("Initiating deprovisioning of RDS database cluster %s.", clusterID) - _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, false)) + // TODO(ROX-13692): do not skip taking a final DB snapshot + _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, true)) if err != nil { return fmt.Errorf("deleting DB cluster: %w", err) } @@ -364,16 +366,10 @@ func newDeleteCentralDBInstanceInput(instanceID string, skipFinalSnapshot bool) } func newDeleteCentralDBClusterInput(clusterID string, skipFinalSnapshot bool) *rds.DeleteDBClusterInput { - input := &rds.DeleteDBClusterInput{ + return &rds.DeleteDBClusterInput{ DBClusterIdentifier: aws.String(clusterID), SkipFinalSnapshot: aws.Bool(skipFinalSnapshot), } - - if !skipFinalSnapshot { - input.FinalDBSnapshotIdentifier = getFinalSnapshotID(clusterID) - } - - return input } func newRdsClient(awsConfig config.AWS, auth fleetmanager.Auth) (*rds.RDS, error) { @@ -399,10 +395,6 @@ func newRdsClient(awsConfig config.AWS, auth fleetmanager.Auth) (*rds.RDS, error return rds.New(sess), nil } -func getFinalSnapshotID(clusterID string) *string { - return aws.String(fmt.Sprintf("%s-%s", clusterID, "final")) -} - type tokenFetcher struct { auth fleetmanager.Auth } diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go index 9c76300068..ecc67b6453 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go @@ -17,7 +17,7 @@ import ( "github.com/stretchr/testify/require" ) -const awsTimeoutMinutes = 30 +const awsTimeoutMinutes = 15 func newTestRDS() (*RDS, error) { rdsClient, err := newTestRDSClient() @@ -47,7 +47,7 @@ func newTestRDSClient() (*rds.RDS, error) { func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID string) (bool, error) { for { - clusterExists, _, err := rdsClient.clusterStatus(clusterID) + clusterExists, clusterStatus, err := rdsClient.clusterStatus(clusterID) if err != nil { return false, err } @@ -56,6 +56,11 @@ func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID st return true, nil } + // exit early if cluster is marked as deleting + if clusterStatus == dbDeletingStatus { + return true, nil + } + ticker := time.NewTicker(awsRetrySeconds * time.Second) select { case <-ticker.C: @@ -66,37 +71,6 @@ func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID st } } -func waitForFinalSnapshotToExist(ctx context.Context, rdsClient *RDS, clusterID string) (bool, error) { - - ticker := time.NewTicker(awsRetrySeconds * time.Second) - for { - select { - case <-ticker.C: - snapshotOut, err := rdsClient.rdsClient.DescribeDBClusterSnapshots(&rds.DescribeDBClusterSnapshotsInput{ - DBClusterSnapshotIdentifier: getFinalSnapshotID(clusterID), - }) - - if err != nil { - if awsErr, ok := err.(awserr.Error); ok { - if awsErr.Code() != rds.ErrCodeDBClusterSnapshotNotFoundFault { - return false, err - } - - continue - } - } - - if snapshotOut != nil { - return len(snapshotOut.DBClusterSnapshots) == 1, nil - } - case <-ctx.Done(): - return false, fmt.Errorf("waiting for final DB snapshot: %w", ctx.Err()) - } - - } - -} - func TestRDSProvisioning(t *testing.T) { if os.Getenv("RUN_RDS_TESTS") != "true" { t.Skip("Skip RDS tests. Set RUN_RDS_TESTS=true env variable to enable RDS tests.") @@ -162,19 +136,6 @@ func TestRDSProvisioning(t *testing.T) { clusterDeleted, err := waitForClusterToBeDeleted(deleteCtx, rdsClient, clusterID) require.NoError(t, err) assert.True(t, clusterDeleted) - - // Always attemt to delete the final snapshot if it exists - defer func() { - _, err := rdsClient.rdsClient.DeleteDBClusterSnapshot( - &rds.DeleteDBClusterSnapshotInput{DBClusterSnapshotIdentifier: getFinalSnapshotID(clusterID)}, - ) - - assert.NoError(t, err) - }() - - snapshotExists, err := waitForFinalSnapshotToExist(deleteCtx, rdsClient, clusterID) - require.NoError(t, err) - require.True(t, snapshotExists) } func TestGetDBConnection(t *testing.T) { From a54fabb6e86d4f7c24300d0fed26251cbfc85068 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 11:49:17 +0200 Subject: [PATCH 15/40] Bump github.com/aws/aws-sdk-go from 1.44.248 to 1.44.255 (#1008) Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.248 to 1.44.255. - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.248...v1.44.255) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 73843f120f..fd747a5c9c 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/Nerzal/gocloak/v11 v11.2.0 github.com/antihax/optional v1.0.0 github.com/auth0/go-jwt-middleware/v2 v2.1.0 - github.com/aws/aws-sdk-go v1.44.248 + github.com/aws/aws-sdk-go v1.44.255 github.com/blang/semver/v4 v4.0.0 github.com/bxcodec/faker/v3 v3.8.1 github.com/caarlos0/env/v6 v6.10.1 diff --git a/go.sum b/go.sum index 3c7b2b44e7..4a646cc55d 100644 --- a/go.sum +++ b/go.sum @@ -154,8 +154,8 @@ github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.248 h1:GvkxpgsxqNc03LmhXiaxKpzbyxndnex7V+OThLx4g5M= -github.com/aws/aws-sdk-go v1.44.248/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= +github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= From 2d638c1a9d8682232587d449c0324e970850d472 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 11:48:23 +0000 Subject: [PATCH 16/40] Bump github.com/aws/aws-sdk-go from 1.44.255 to 1.44.256 (#1011) Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.255 to 1.44.256. - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.255...v1.44.256) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fd747a5c9c..c30da47eeb 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/Nerzal/gocloak/v11 v11.2.0 github.com/antihax/optional v1.0.0 github.com/auth0/go-jwt-middleware/v2 v2.1.0 - github.com/aws/aws-sdk-go v1.44.255 + github.com/aws/aws-sdk-go v1.44.256 github.com/blang/semver/v4 v4.0.0 github.com/bxcodec/faker/v3 v3.8.1 github.com/caarlos0/env/v6 v6.10.1 diff --git a/go.sum b/go.sum index 4a646cc55d..a560f1e8ae 100644 --- a/go.sum +++ b/go.sum @@ -154,8 +154,8 @@ github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= -github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.256 h1:O8VH+bJqgLDguqkH/xQBFz5o/YheeZqgcOYIgsTVWY4= +github.com/aws/aws-sdk-go v1.44.256/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= From d16053fbc4ab9c41793f0028629c22e407527c72 Mon Sep 17 00:00:00 2001 From: Ivan Degtiarenko <78353299+ivan-degtiarenko@users.noreply.github.com> Date: Thu, 4 May 2023 14:23:54 +0200 Subject: [PATCH 17/40] ROX-15954: Setup non-admin access to observability resources (#1006) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michaël --- dp-terraform/osd-cluster-idp-setup.sh | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/dp-terraform/osd-cluster-idp-setup.sh b/dp-terraform/osd-cluster-idp-setup.sh index 7e5e48fc09..9bf9167886 100755 --- a/dp-terraform/osd-cluster-idp-setup.sh +++ b/dp-terraform/osd-cluster-idp-setup.sh @@ -112,6 +112,52 @@ trap 'rm -f "${KUBECONFIG}"' EXIT echo "Logging into cluster ${CLUSTER_NAME}..." oc login "${CLUSTER_URL}" --token="${CLUSTER_TOKEN}" +# This set of commands modifies OIDC provider to include "groups" claim mapping. +CLUSTER_IDP_ID=$(ocm get /api/clusters_mgmt/v1/clusters/"$CLUSTER_ID"/identity_providers | jq -r '.items[0].id') +tmpfile=$(mktemp /tmp/dataplane-idp-setup-tmp-patch-body.XXXXXX) +cat <"$tmpfile" +{ + "type": "OpenIDIdentityProvider", + "open_id": { + "claims": { + "email": [ + "email" + ], + "groups": [ + "groups" + ], + "name": [ + "preferred_username" + ], + "preferred_username": [ + "preferred_username" + ] + }, + "client_id": "${OSD_OIDC_CLIENT_ID}", + "client_secret": "${OSD_OIDC_CLIENT_SECRET}", + "issuer": "https://auth.redhat.com/auth/realms/EmployeeIDP" + } +} +END +ocm patch /api/clusters_mgmt/v1/clusters/"$CLUSTER_ID"/identity_providers/"$CLUSTER_IDP_ID" --body="$tmpfile" +rm "$tmpfile" + +# This command grants access to all RH employees to access cluster monitoring. +oc apply -f - < Date: Thu, 4 May 2023 08:13:27 -0700 Subject: [PATCH 18/40] ROX-16791: Increase route timeout to 10m to allow for longer operations (#996) --- fleetshard/pkg/k8s/route.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/fleetshard/pkg/k8s/route.go b/fleetshard/pkg/k8s/route.go index 4a6b05049c..cfa34f9b13 100644 --- a/fleetshard/pkg/k8s/route.go +++ b/fleetshard/pkg/k8s/route.go @@ -19,6 +19,9 @@ const ( centralReencryptRouteName = "managed-central-reencrypt" centralPassthroughRouteName = "managed-central-passthrough" centralTLSSecretName = "central-tls" // pragma: allowlist secret + + centralReencryptTimeoutAnnotationKey = "haproxy.router.openshift.io/timeout" + centralReencryptTimeoutAnnotationValue = "10m" ) // ErrCentralTLSSecretNotFound returned when central-tls secret is not found during creation of the reencrypt route @@ -94,6 +97,10 @@ func (s *RouteService) CreateReencryptRoute(ctx context.Context, remoteCentral p return errors.Errorf("could not find centrals ca certificate 'ca.pem' in secret/%s", centralTLSSecretName) } + annotations := map[string]string{ + centralReencryptTimeoutAnnotationKey: centralReencryptTimeoutAnnotationValue, + } + return s.createCentralRoute(ctx, centralReencryptRouteName, remoteCentral.Metadata.Namespace, @@ -103,7 +110,8 @@ func (s *RouteService) CreateReencryptRoute(ctx context.Context, remoteCentral p Key: remoteCentral.Spec.UiEndpoint.Tls.Key, Certificate: remoteCentral.Spec.UiEndpoint.Tls.Cert, DestinationCACertificate: string(centralCA), - }) + }, + annotations) } // CreatePassthroughRoute creates a new managed central passthrough route. @@ -114,15 +122,16 @@ func (s *RouteService) CreatePassthroughRoute(ctx context.Context, remoteCentral remoteCentral.Spec.DataEndpoint.Host, &openshiftRouteV1.TLSConfig{ Termination: openshiftRouteV1.TLSTerminationPassthrough, - }) + }, nil) } -func (s *RouteService) createCentralRoute(ctx context.Context, name string, namespace string, host string, tls *openshiftRouteV1.TLSConfig) error { +func (s *RouteService) createCentralRoute(ctx context.Context, name, namespace, host string, tls *openshiftRouteV1.TLSConfig, annotations map[string]string) error { route := &openshiftRouteV1.Route{ ObjectMeta: metav1.ObjectMeta{ - Name: name, - Namespace: namespace, - Labels: map[string]string{ManagedByLabelKey: ManagedByFleetshardValue}, + Name: name, + Namespace: namespace, + Labels: map[string]string{ManagedByLabelKey: ManagedByFleetshardValue}, + Annotations: annotations, }, Spec: openshiftRouteV1.RouteSpec{ Host: host, From beaf7c9c62890b312c5f4425cdf81d4e43eccac1 Mon Sep 17 00:00:00 2001 From: Vlad Bologa Date: Thu, 4 May 2023 18:21:34 +0200 Subject: [PATCH 19/40] ROX-16894: Enable CloudWatch log exports for new RDS DBs (#1013) --- .../pkg/central/cloudprovider/awsclient/rds.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index a0d232aff2..4a9f434781 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -318,13 +318,14 @@ func getFailoverInstanceID(databaseID string) string { func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnetGroup, dataplaneClusterName string) *rds.CreateDBClusterInput { return &rds.CreateDBClusterInput{ - DBClusterIdentifier: aws.String(clusterID), - Engine: aws.String(dbEngine), - EngineVersion: aws.String(dbEngineVersion), - MasterUsername: aws.String(dbUser), - MasterUserPassword: aws.String(dbPassword), - VpcSecurityGroupIds: aws.StringSlice([]string{securityGroup}), - DBSubnetGroupName: aws.String(subnetGroup), + DBClusterIdentifier: aws.String(clusterID), + Engine: aws.String(dbEngine), + EngineVersion: aws.String(dbEngineVersion), + EnableCloudwatchLogsExports: aws.StringSlice([]string{"postgresql"}), + MasterUsername: aws.String(dbUser), + MasterUserPassword: aws.String(dbPassword), + VpcSecurityGroupIds: aws.StringSlice([]string{securityGroup}), + DBSubnetGroupName: aws.String(subnetGroup), ServerlessV2ScalingConfiguration: &rds.ServerlessV2ScalingConfiguration{ MinCapacity: aws.Float64(dbMinCapacityACU), MaxCapacity: aws.Float64(dbMaxCapacityACU), From 61b65b7b7258e758169b3413d8df1b06d15377f7 Mon Sep 17 00:00:00 2001 From: Connor Gorman Date: Thu, 4 May 2023 11:47:27 -0700 Subject: [PATCH 20/40] ROX-16883: Increase resource limits to avoid throttling (#723) --- internal/dinosaur/pkg/defaults/default_central_spec.go | 4 ++-- internal/dinosaur/pkg/defaults/default_scanner_spec.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/dinosaur/pkg/defaults/default_central_spec.go b/internal/dinosaur/pkg/defaults/default_central_spec.go index a77e3a3667..05a96351c5 100644 --- a/internal/dinosaur/pkg/defaults/default_central_spec.go +++ b/internal/dinosaur/pkg/defaults/default_central_spec.go @@ -13,8 +13,8 @@ import ( type CentralDefaults struct { MemoryRequest resource.Quantity `env:"MEMORY_REQUEST" envDefault:"250Mi"` CPURequest resource.Quantity `env:"CPU_REQUEST" envDefault:"50m"` - MemoryLimit resource.Quantity `env:"MEMORY_LIMIT" envDefault:"4G"` - CPULimit resource.Quantity `env:"CPU_LIMIT" envDefault:"250m"` + MemoryLimit resource.Quantity `env:"MEMORY_LIMIT" envDefault:"8G"` + CPULimit resource.Quantity `env:"CPU_LIMIT" envDefault:"4"` } var ( diff --git a/internal/dinosaur/pkg/defaults/default_scanner_spec.go b/internal/dinosaur/pkg/defaults/default_scanner_spec.go index 3770cd4414..48a83373e6 100644 --- a/internal/dinosaur/pkg/defaults/default_scanner_spec.go +++ b/internal/dinosaur/pkg/defaults/default_scanner_spec.go @@ -13,7 +13,7 @@ type AnalyzerDefaults struct { MemoryRequest resource.Quantity `env:"MEMORY_REQUEST" envDefault:"100M"` CPURequest resource.Quantity `env:"CPU_REQUEST" envDefault:"5m"` MemoryLimit resource.Quantity `env:"MEMORY_LIMIT" envDefault:"2500M"` - CPULimit resource.Quantity `env:"CPU_LIMIT" envDefault:"250m"` + CPULimit resource.Quantity `env:"CPU_LIMIT" envDefault:"2"` AutoScaling string `env:"AUTOSCALING" envDefault:"Enabled"` MinReplicas int32 `env:"MIN_REPLICAS" envDefault:"1"` Replicas int32 `env:"REPLICAS" envDefault:"1"` @@ -25,7 +25,7 @@ type DbDefaults struct { MemoryRequest resource.Quantity `env:"MEMORY_REQUEST" envDefault:"500M"` CPURequest resource.Quantity `env:"CPU_REQUEST" envDefault:"10m"` MemoryLimit resource.Quantity `env:"MEMORY_LIMIT" envDefault:"2500M"` - CPULimit resource.Quantity `env:"CPU_LIMIT" envDefault:"250m"` + CPULimit resource.Quantity `env:"CPU_LIMIT" envDefault:"2"` } // ScannerDefaults ... From 3439058c1ca766f0d8e39d8afef5d6b102bee8a9 Mon Sep 17 00:00:00 2001 From: Yury Kovalev <8366110+kovayur@users.noreply.github.com> Date: Fri, 5 May 2023 10:53:29 +0200 Subject: [PATCH 21/40] Upgrade go version to 1.20 (#1005) --- .github/workflows/ci.yaml | 4 ++-- .github/workflows/deploy-data-plane.yaml | 8 ++++---- .github/workflows/pre-commit.yaml | 2 +- .github/workflows/probe.yaml | 4 ++-- .github/workflows/rds.yaml | 4 ++-- .golangci.yml | 2 +- .openshift-ci/e2e-runtime/Dockerfile | 2 +- .pre-commit-config.yaml | 6 +++--- Dockerfile | 2 +- Makefile | 7 +------ README.md | 2 +- go.mod | 2 +- internal/dinosaur/pkg/services/data_migration.go | 3 +++ probe/Dockerfile | 2 +- tools/go.mod | 2 +- 15 files changed, 25 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d5b2d0237e..6bee0103e2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -80,10 +80,10 @@ jobs: uses: n1hility/cancel-previous-runs@v2 with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Go 1.19 + - name: Set up Go 1.20 uses: actions/setup-go@v2 with: - go-version: "1.19" + go-version: "1.20" - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Cache go module diff --git a/.github/workflows/deploy-data-plane.yaml b/.github/workflows/deploy-data-plane.yaml index f691d9fce1..2e82418cb6 100644 --- a/.github/workflows/deploy-data-plane.yaml +++ b/.github/workflows/deploy-data-plane.yaml @@ -48,10 +48,10 @@ jobs: contents: read environment: ${{ inputs.github_environment }} steps: - - name: Set up Go 1.19 + - name: Set up Go 1.20 uses: actions/setup-go@v3 with: - go-version: "1.19" + go-version: "1.20" - name: Checkout uses: actions/checkout@v3 with: @@ -81,10 +81,10 @@ jobs: contents: read environment: ${{ inputs.github_environment }} steps: - - name: Set up Go 1.19 + - name: Set up Go 1.20 uses: actions/setup-go@v3 with: - go-version: "1.19" + go-version: "1.20" - name: Checkout uses: actions/checkout@v3 with: diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 12cce81830..603a496bcb 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -16,7 +16,7 @@ jobs: - uses: actions/setup-python@v3 - uses: actions/setup-go@v3 with: - go-version: "1.19" + go-version: "1.20" - uses: pre-commit/action@v3.0.0 - uses: pre-commit/action@v3.0.0 name: Verify generated files are up-to-date diff --git a/.github/workflows/probe.yaml b/.github/workflows/probe.yaml index 454d892dd2..acfbffa8d0 100644 --- a/.github/workflows/probe.yaml +++ b/.github/workflows/probe.yaml @@ -15,10 +15,10 @@ jobs: uses: n1hility/cancel-previous-runs@v2 with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Go 1.19 + - name: Set up Go 1.20 uses: actions/setup-go@v2 with: - go-version: "1.19" + go-version: "1.20" - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Cache go module diff --git a/.github/workflows/rds.yaml b/.github/workflows/rds.yaml index c16b2252f7..e24f79aaea 100644 --- a/.github/workflows/rds.yaml +++ b/.github/workflows/rds.yaml @@ -43,10 +43,10 @@ jobs: contents: read environment: development steps: - - name: Set up Go 1.19 + - name: Set up Go 1.20 uses: actions/setup-go@v2 with: - go-version: "1.19" + go-version: "1.20" - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Cache go module diff --git a/.golangci.yml b/.golangci.yml index b4e0a5ec06..70ece4d666 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -90,7 +90,7 @@ linters-settings: require-explanation: false # don't require an explanation for nolint directives require-specific: true # require nolint directives to be specific about which linter is being skipped staticcheck: - go: "1.19" + go: "1.20" checks: [ all,-ST1000,-ST1001,-ST1003,-ST1005,-SA1019,-SA4001,-ST1016 ] wrapcheck: # ignoreSigRegexps: uncomment to add ignore rules diff --git a/.openshift-ci/e2e-runtime/Dockerfile b/.openshift-ci/e2e-runtime/Dockerfile index 5790cea907..0ed232ab65 100644 --- a/.openshift-ci/e2e-runtime/Dockerfile +++ b/.openshift-ci/e2e-runtime/Dockerfile @@ -5,7 +5,7 @@ RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial RUN dnf update -y --disablerepo=\* --enablerepo=baseos,appstream && dnf -y install make which git gettext jq gcc && dnf clean all && rm -rf /var/cache/dnf -COPY --from=registry.ci.openshift.org/openshift/release:golang-1.19 /usr/local/go /usr/local/go +COPY --from=registry.ci.openshift.org/stolostron/builder:go1.20-linux /usr/local/go /usr/local/go COPY --from=quay.io/openshift/origin-cli:4.13 /usr/bin/oc /usr/bin COPY --from=quay.io/operator-framework/operator-sdk:v1.25 /usr/local/bin/operator-sdk /usr/local/bin diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0e23786eed..5d20873098 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,11 +15,11 @@ repos: - id: detect-secrets args: ["--baseline", ".secrets.baseline"] - repo: https://github.com/golangci/golangci-lint - rev: v1.51.1 + rev: v1.52.2 hooks: - id: golangci-lint - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v4.4.0 hooks: - id: trailing-whitespace args: ["--markdown-linebreak-ext=md"] @@ -27,7 +27,7 @@ repos: exclude: '^(?:secrets/db.*|internal/dinosaur/pkg/api/(admin|private|public)/.*|pkg/client/redhatsso/api/.*)$' # Matches either secrets/db.* files or the generated files under internal/dinosaur/pkg/api/(admin|private|public) and pkg/client/redhatsso/client/api. - id: check-json - repo: https://github.com/shellcheck-py/shellcheck-py - rev: v0.8.0.4 + rev: v0.9.0.2 hooks: - id: shellcheck # Ignore scripts generated by openapi-generator. diff --git a/Dockerfile b/Dockerfile index 69098efff2..75f0a484dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.ci.openshift.org/openshift/release:golang-1.19 AS build +FROM registry.ci.openshift.org/stolostron/builder:go1.20-linux AS build ENV GOFLAGS="-mod=mod" diff --git a/Makefile b/Makefile index 2bedbc3eef..d58c2614f1 100644 --- a/Makefile +++ b/Makefile @@ -330,11 +330,6 @@ test/rds: $(GOTESTSUM_BIN) ./fleetshard/pkg/central/cloudprovider/awsclient/... .PHONY: test/rds -# Precompile everything required for development/test. -test/prepare: - $(GO) test -i ./internal/dinosaur/test/integration/... -.PHONY: test/prepare - # Runs the integration tests. # # Args: @@ -345,7 +340,7 @@ test/prepare: # make test/integration TESTFLAGS="-run TestAccounts" acts as TestAccounts* and run TestAccountsGet, TestAccountsPost, etc. # make test/integration TESTFLAGS="-run TestAccountsGet" runs TestAccountsGet # make test/integration TESTFLAGS="-short" skips long-run tests -test/integration/dinosaur: test/prepare $(GOTESTSUM_BIN) +test/integration/dinosaur: $(GOTESTSUM_BIN) $(GOTESTSUM_BIN) --junitfile data/results/fleet-manager-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -ldflags -s -v -timeout $(TEST_TIMEOUT) -count=1 $(TESTFLAGS) \ ./internal/dinosaur/test/integration/... .PHONY: test/integration/dinosaur diff --git a/README.md b/README.md index a4a2187173..6cf73fa79d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ ACS fleet-manager repository for the ACS managed service. #### Prerequisites -* [Golang 1.19+](https://golang.org/dl/) +* [Golang 1.20+](https://golang.org/dl/) * [Docker](https://docs.docker.com/get-docker/) - to create database * [ocm cli](https://github.com/openshift-online/ocm-cli/releases) - ocm command line tool * [Node.js v12.20+](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) diff --git a/go.mod b/go.mod index c30da47eeb..940eb8e2ac 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/stackrox/acs-fleet-manager -go 1.19 +go 1.20 require ( github.com/DATA-DOG/go-sqlmock v1.5.0 diff --git a/internal/dinosaur/pkg/services/data_migration.go b/internal/dinosaur/pkg/services/data_migration.go index 2a9d01fd90..83b3b10f81 100644 --- a/internal/dinosaur/pkg/services/data_migration.go +++ b/internal/dinosaur/pkg/services/data_migration.go @@ -56,6 +56,9 @@ func (m *DataMigration) migrateOrganisationNames() (int, error) { glog.Infof("migrated column %q to new value %q for central instance %q ", colName, central.OrganisationName, central.ID) migratedCnt++ } + if err := rows.Err(); err != nil { + glog.Error(errors.Wrapf(err, "iterating %q rows", colName)) + } return migratedCnt, nil } diff --git a/probe/Dockerfile b/probe/Dockerfile index bf403ad53e..d1e82cd1a6 100644 --- a/probe/Dockerfile +++ b/probe/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.ci.openshift.org/openshift/release:golang-1.19 AS build +FROM registry.ci.openshift.org/stolostron/builder:go1.20-linux AS build ENV GOFLAGS="-mod=mod" diff --git a/tools/go.mod b/tools/go.mod index 7f6abcfdc8..4bb30b5e34 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,6 +1,6 @@ module github.com/stackrox/acs-fleet-manager/tools -go 1.19 +go 1.20 require ( github.com/99designs/aws-vault/v6 v6.6.2 From d73873b24a5e50eb23f8ba7b36c711a159462a62 Mon Sep 17 00:00:00 2001 From: Aleksandr Kurlov Date: Fri, 5 May 2023 18:27:45 +0200 Subject: [PATCH 22/40] ROX-16338: Refactor helm chart installation (#954) * Refactor helm chart installation * Review comment --- fleetshard/pkg/central/charts/charts.go | 32 ++++++++ fleetshard/pkg/central/charts/charts_test.go | 80 +++++++++++++++++++ .../charts/testdata/test-chart/Chart.yaml | 6 ++ .../testdata/test-chart/templates/dummy.yaml | 8 ++ .../charts/testdata/test-chart/values.yaml | 1 + fleetshard/pkg/central/operator/upgrade.go | 27 +------ .../pkg/central/reconciler/reconciler.go | 24 +----- 7 files changed, 133 insertions(+), 45 deletions(-) create mode 100644 fleetshard/pkg/central/charts/testdata/test-chart/Chart.yaml create mode 100644 fleetshard/pkg/central/charts/testdata/test-chart/templates/dummy.yaml create mode 100644 fleetshard/pkg/central/charts/testdata/test-chart/values.yaml diff --git a/fleetshard/pkg/central/charts/charts.go b/fleetshard/pkg/central/charts/charts.go index 7bbcf93819..4c656a89b0 100644 --- a/fleetshard/pkg/central/charts/charts.go +++ b/fleetshard/pkg/central/charts/charts.go @@ -2,12 +2,18 @@ package charts import ( + "context" "embed" "fmt" "io/fs" "path" "strings" + "github.com/golang/glog" + apiErrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + ctrlClient "sigs.k8s.io/controller-runtime/pkg/client" + "helm.sh/helm/v3/pkg/chart" "helm.sh/helm/v3/pkg/chart/loader" ) @@ -65,3 +71,29 @@ func MustGetChart(name string) *chart.Chart { } return chrt } + +// InstallOrUpdateChart installs a new object from helm chart or update an existing object with the same Name, Namespace and Kind +func InstallOrUpdateChart(ctx context.Context, obj *unstructured.Unstructured, client ctrlClient.Client) error { + key := ctrlClient.ObjectKey{Namespace: obj.GetNamespace(), Name: obj.GetName()} + var out unstructured.Unstructured + out.SetGroupVersionKind(obj.GroupVersionKind()) + err := client.Get(ctx, key, &out) + if err == nil { + glog.V(10).Infof("Updating object %s/%s", obj.GetNamespace(), obj.GetName()) + obj.SetResourceVersion(out.GetResourceVersion()) + err := client.Update(ctx, obj) + if err != nil { + return fmt.Errorf("failed to update object %s/%s of type %s %w", key.Namespace, key.Name, obj.GetKind(), err) + } + } else { + if !apiErrors.IsNotFound(err) { + return fmt.Errorf("failed to retrieve object %s/%s of type %s %w", key.Namespace, key.Name, obj.GetKind(), err) + } + err = client.Create(ctx, obj) + glog.Infof("Creating object %s/%s", obj.GetNamespace(), obj.GetName()) + if err != nil && !apiErrors.IsAlreadyExists(err) { + return fmt.Errorf("failed to create object %s/%s of type %s: %w", key.Namespace, key.Name, obj.GetKind(), err) + } + } + return nil +} diff --git a/fleetshard/pkg/central/charts/charts_test.go b/fleetshard/pkg/central/charts/charts_test.go index 1d4b61e2d4..cf579391e4 100644 --- a/fleetshard/pkg/central/charts/charts_test.go +++ b/fleetshard/pkg/central/charts/charts_test.go @@ -1,14 +1,94 @@ package charts import ( + "context" + "embed" "testing" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + ctrlClient "sigs.k8s.io/controller-runtime/pkg/client" + + "helm.sh/helm/v3/pkg/chartutil" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + appsv1 "k8s.io/api/apps/v1" + + "github.com/stackrox/acs-fleet-manager/fleetshard/pkg/testutils" ) +//go:embed testdata +var testdata embed.FS + +var testNamespace = "test-namespace" + +var dummyDeployment = &appsv1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: "dummy", + Namespace: testNamespace, + Labels: map[string]string{ + "foo": "bar", + }, + }, +} + func TestTenantResourcesChart(t *testing.T) { c, err := GetChart("tenant-resources") require.NoError(t, err) assert.NotNil(t, c) } + +func TestInstallOrUpdateChartCreateNew(t *testing.T) { + chart, err := LoadChart(testdata, "testdata/test-chart") + require.NoError(t, err) + fakeClient := testutils.NewFakeClientBuilder(t).Build() + ctx := context.Background() + + chartVals := chartutil.Values{ + "foo": "bar", + } + objs, err := RenderToObjects("test-release", testNamespace, chart, chartVals) + require.NoError(t, err) + obj := objs[0] + require.NotEmpty(t, objs) + + err = InstallOrUpdateChart(ctx, obj, fakeClient) + require.NoError(t, err) + + key := ctrlClient.ObjectKey{Namespace: obj.GetNamespace(), Name: obj.GetName()} + var res unstructured.Unstructured + res.SetGroupVersionKind(obj.GroupVersionKind()) + + err = fakeClient.Get(ctx, key, &res) + require.NoError(t, err) + assert.NotEmpty(t, res.GetLabels()) + assert.Equal(t, "bar", res.GetLabels()["foo"]) +} + +func TestInstallOrUpdateChartUpdateExisting(t *testing.T) { + chart, err := LoadChart(testdata, "testdata/test-chart") + require.NoError(t, err) + fakeClient := testutils.NewFakeClientBuilder(t, dummyDeployment).Build() + ctx := context.Background() + + chartVals := chartutil.Values{ + "foo": "baz", + } + objs, err := RenderToObjects("test-release", testNamespace, chart, chartVals) + require.NoError(t, err) + obj := objs[0] + require.NotEmpty(t, objs) + + err = InstallOrUpdateChart(ctx, obj, fakeClient) + require.NoError(t, err) + + key := ctrlClient.ObjectKey{Namespace: obj.GetNamespace(), Name: obj.GetName()} + var res unstructured.Unstructured + res.SetGroupVersionKind(obj.GroupVersionKind()) + + err = fakeClient.Get(ctx, key, &res) + require.NoError(t, err) + assert.NotEmpty(t, res.GetLabels()) + assert.Equal(t, "baz", res.GetLabels()["foo"]) +} diff --git a/fleetshard/pkg/central/charts/testdata/test-chart/Chart.yaml b/fleetshard/pkg/central/charts/testdata/test-chart/Chart.yaml new file mode 100644 index 0000000000..8e011aaf65 --- /dev/null +++ b/fleetshard/pkg/central/charts/testdata/test-chart/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +name: test-resource +description: Testing Helm Chart +type: application +version: 0.0.0 +appVersion: 0.0.0 diff --git a/fleetshard/pkg/central/charts/testdata/test-chart/templates/dummy.yaml b/fleetshard/pkg/central/charts/testdata/test-chart/templates/dummy.yaml new file mode 100644 index 0000000000..48de73fa81 --- /dev/null +++ b/fleetshard/pkg/central/charts/testdata/test-chart/templates/dummy.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Deployment +metadata: + name: dummy + labels: + foo: {{ .Values.foo }} +spec: + replicas: 1 diff --git a/fleetshard/pkg/central/charts/testdata/test-chart/values.yaml b/fleetshard/pkg/central/charts/testdata/test-chart/values.yaml new file mode 100644 index 0000000000..b6ea483149 --- /dev/null +++ b/fleetshard/pkg/central/charts/testdata/test-chart/values.yaml @@ -0,0 +1 @@ +foo: "" diff --git a/fleetshard/pkg/central/operator/upgrade.go b/fleetshard/pkg/central/operator/upgrade.go index d27d88c2d8..ece1d29e85 100644 --- a/fleetshard/pkg/central/operator/upgrade.go +++ b/fleetshard/pkg/central/operator/upgrade.go @@ -6,10 +6,6 @@ import ( "fmt" "strings" - "github.com/golang/glog" - apiErrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "github.com/stackrox/acs-fleet-manager/fleetshard/pkg/central/charts" "helm.sh/helm/v3/pkg/chart" "helm.sh/helm/v3/pkg/chartutil" @@ -82,26 +78,9 @@ func (u *ACSOperatorManager) InstallOrUpgrade(ctx context.Context, images []stri if obj.GetNamespace() == "" { obj.SetNamespace(operatorNamespace) } - key := ctrlClient.ObjectKey{Namespace: obj.GetNamespace(), Name: obj.GetName()} - var out unstructured.Unstructured - out.SetGroupVersionKind(obj.GroupVersionKind()) - err := u.client.Get(ctx, key, &out) - if err == nil { - glog.V(10).Infof("Updating %s/%s in %s namespace", obj.GetKind(), obj.GetName(), obj.GetNamespace()) - obj.SetResourceVersion(out.GetResourceVersion()) - err := u.client.Update(ctx, obj) - if err != nil { - return fmt.Errorf("failed to update object %s/%s in %s namespace: %w", obj.GetKind(), key.Name, key.Namespace, err) - } - } else { - if !apiErrors.IsNotFound(err) { - return fmt.Errorf("failed to retrieve object %s/%s in %s namespace: %w", obj.GetKind(), key.Name, key.Namespace, err) - } - err = u.client.Create(ctx, obj) - glog.Infof("Creating %s/%s in %s namespace", obj.GetKind(), obj.GetName(), obj.GetNamespace()) - if err != nil && !apiErrors.IsAlreadyExists(err) { - return fmt.Errorf("failed to create object %s/%s in %s namespace: %w", obj.GetKind(), key.Name, key.Namespace, err) - } + err := charts.InstallOrUpdateChart(ctx, obj, u.client) + if err != nil { + return fmt.Errorf("failed to update operator object %w", err) } } diff --git a/fleetshard/pkg/central/reconciler/reconciler.go b/fleetshard/pkg/central/reconciler/reconciler.go index a71258faa6..d0571b0951 100644 --- a/fleetshard/pkg/central/reconciler/reconciler.go +++ b/fleetshard/pkg/central/reconciler/reconciler.go @@ -792,27 +792,9 @@ func (r *CentralReconciler) ensureChartResourcesExist(ctx context.Context, remot if obj.GetNamespace() == "" { obj.SetNamespace(remoteCentral.Metadata.Namespace) } - key := ctrlClient.ObjectKey{Namespace: obj.GetNamespace(), Name: obj.GetName()} - var out unstructured.Unstructured - out.SetGroupVersionKind(obj.GroupVersionKind()) - err := r.client.Get(ctx, key, &out) - if err == nil { - glog.V(10).Infof("Updating object %s/%s", obj.GetNamespace(), obj.GetName()) - obj.SetResourceVersion(out.GetResourceVersion()) - err := r.client.Update(ctx, obj) - if err != nil { - return fmt.Errorf("failed to update object %s/%s of type %v: %w", key.Namespace, key.Namespace, obj.GroupVersionKind(), err) - } - - continue - } - if !apiErrors.IsNotFound(err) { - return fmt.Errorf("failed to retrieve object %s/%s of type %v: %w", key.Namespace, key.Name, obj.GroupVersionKind(), err) - } - err = r.client.Create(ctx, obj) - glog.V(10).Infof("Creating object %s/%s", obj.GetNamespace(), obj.GetName()) - if err != nil && !apiErrors.IsAlreadyExists(err) { - return fmt.Errorf("failed to create object %s/%s of type %v: %w", key.Namespace, key.Name, obj.GroupVersionKind(), err) + err := charts.InstallOrUpdateChart(ctx, obj, r.client) + if err != nil { + return fmt.Errorf("failed to update central tenant object %w", err) } } From 233a5027f31a910a21a8083b798c1ddb0248b194 Mon Sep 17 00:00:00 2001 From: Evan Benshetler Date: Mon, 8 May 2023 11:16:40 +0200 Subject: [PATCH 23/40] Remove acs-stage-eu-01 from Helm bootstrapping CI (#1014) Nico and I are going to use acs-stage-eu-01 for Addon Package testing. To do so we need to make sure the Helm chart is removed from that cluster and will not be reinstalled there. --- .github/workflows/deploy-stage.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-stage.yaml b/.github/workflows/deploy-stage.yaml index ccdd53e9f9..900eb9f426 100644 --- a/.github/workflows/deploy-stage.yaml +++ b/.github/workflows/deploy-stage.yaml @@ -12,5 +12,5 @@ jobs: with: acs_environment: stage github_environment: stage - deploy_clusters: "acs-stage-dp-02 acs-stage-eu-01 acs-stage-eu-02" + deploy_clusters: "acs-stage-dp-02 acs-stage-eu-02" probe_clusters: "acs-stage-dp-02 acs-stage-eu-02" From 00ea52839f1b35080c234cdd208ef761e8a21fbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=A4umer?= Date: Mon, 8 May 2023 18:51:10 +0200 Subject: [PATCH 24/40] Add admin API client (#998) --- cmd/fleet-manager/main.go | 2 + .../dinosaur/pkg/cmd/admin/centrals/cmd.go | 23 ++++++++ .../dinosaur/pkg/cmd/admin/centrals/list.go | 42 ++++++++++++++ internal/dinosaur/pkg/cmd/admin/cmd.go | 22 +++++++ .../pkg/cmd/fleetmanagerclient/client.go | 57 ++++++++++++++++--- pkg/client/fleetmanager/auth_ocm.go | 5 +- pkg/client/fleetmanager/auth_rhsso.go | 5 +- pkg/client/fleetmanager/auth_static_token.go | 5 +- 8 files changed, 148 insertions(+), 13 deletions(-) create mode 100644 internal/dinosaur/pkg/cmd/admin/centrals/cmd.go create mode 100644 internal/dinosaur/pkg/cmd/admin/centrals/list.go create mode 100644 internal/dinosaur/pkg/cmd/admin/cmd.go diff --git a/cmd/fleet-manager/main.go b/cmd/fleet-manager/main.go index df959a8a09..c38c15adc3 100644 --- a/cmd/fleet-manager/main.go +++ b/cmd/fleet-manager/main.go @@ -4,6 +4,7 @@ package main import ( "flag" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/admin" "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/central" "github.com/stackrox/acs-fleet-manager/pkg/cmd/migrate" "github.com/stackrox/acs-fleet-manager/pkg/cmd/serve" @@ -48,6 +49,7 @@ func main() { rootCmd.AddCommand(migrate.NewMigrateCommand(env)) rootCmd.AddCommand(serve.NewServeCommand(env)) rootCmd.AddCommand(central.NewCentralCommand()) + rootCmd.AddCommand(admin.NewAdminCommand()) // Unsupported CLI commands. Eventually some of them can be removed. // rootCmd.AddCommand(cluster.NewClusterCommand(env)) // rootCmd.AddCommand(cloudprovider.NewCloudProviderCommand(env)) diff --git a/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go b/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go new file mode 100644 index 0000000000..4b0240449b --- /dev/null +++ b/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go @@ -0,0 +1,23 @@ +// Package centrals contains the admin central CLI interface. +package centrals + +import "github.com/spf13/cobra" + +const ( + apiErrorMsg = "%s admin Central failed: To fix this ensure you are authenticated, fleet-manager endpoint is configured and reachable. Status Code: %s." +) + +// NewAdminCentralsCommand creates a new admin central command. +func NewAdminCentralsCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "centrals", + Short: "Perform admin central API calls.", + Long: "Perform admin central API calls.", + PersistentPreRun: func(cmd *cobra.Command, args []string) {}, + } + cmd.AddCommand( + NewAdminCentralsListCommand(), + ) + + return cmd +} diff --git a/internal/dinosaur/pkg/cmd/admin/centrals/list.go b/internal/dinosaur/pkg/cmd/admin/centrals/list.go new file mode 100644 index 0000000000..83e149eb4a --- /dev/null +++ b/internal/dinosaur/pkg/cmd/admin/centrals/list.go @@ -0,0 +1,42 @@ +package centrals + +import ( + "encoding/json" + "fmt" + + admin "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/api/admin/private" + + "github.com/golang/glog" + "github.com/spf13/cobra" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/fleetmanagerclient" + "github.com/stackrox/acs-fleet-manager/pkg/client/fleetmanager" +) + +// NewAdminCentralsListCommand creates a new command for listing centrals. +func NewAdminCentralsListCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "list", + Short: "lists all managed central requests", + Long: "lists all managed central requests", + Run: func(cmd *cobra.Command, args []string) { + runList(fleetmanagerclient.AuthenticatedClientWithRHOASToken(), cmd, args) + }, + } + return cmd +} + +func runList(client *fleetmanager.Client, cmd *cobra.Command, _ []string) { + centrals, _, err := client.AdminAPI().GetCentrals(cmd.Context(), &admin.GetCentralsOpts{}) + if err != nil { + glog.Errorf(apiErrorMsg, "list", err) + return + } + + centralJSON, err := json.Marshal(centrals) + if err != nil { + glog.Errorf("Failed to marshal CentralRequests: %s", err) + return + } + + fmt.Println(string(centralJSON)) +} diff --git a/internal/dinosaur/pkg/cmd/admin/cmd.go b/internal/dinosaur/pkg/cmd/admin/cmd.go new file mode 100644 index 0000000000..7c39d8c3f2 --- /dev/null +++ b/internal/dinosaur/pkg/cmd/admin/cmd.go @@ -0,0 +1,22 @@ +// Package admin contains all admin API related CLI commands. +package admin + +import ( + "github.com/spf13/cobra" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/admin/centrals" +) + +// NewAdminCommand creates a new admin command. +func NewAdminCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "admin", + Short: "Perform admin API calls.", + Long: "Perform admin API calls. Use the STATIC_TOKEN to authenticate against its API.", + PersistentPreRun: func(cmd *cobra.Command, args []string) {}, + } + cmd.AddCommand( + centrals.NewAdminCentralsCommand(), + ) + + return cmd +} diff --git a/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go b/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go index 9deafb9916..f8a1978c32 100644 --- a/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go +++ b/internal/dinosaur/pkg/cmd/fleetmanagerclient/client.go @@ -1,4 +1,4 @@ -// Package fleetmanagerclient is a client for the CLI to connect to the fleetmanager. +// Package fleetmanagerclient is a fmClientAuthWithOCMRefreshToken for the CLI to connect to the fleetmanager. package fleetmanagerclient import ( @@ -12,16 +12,59 @@ import ( ) var ( - singletonInstance sync.Once - client *fleetmanager.Client + singletonOCMRefreshTokenInstance sync.Once + fmClientAuthWithOCMRefreshToken *fleetmanager.Client + + fmClientAuthWithRHOASToken *fleetmanager.Client + singletonRHOASTokenInstance sync.Once ) const ( defaultFleetManagerEndpoint = "http://localhost:8000" fleetManagerEndpointEnvVar = "FMCLI_FLEET_MANAGER_ENDPOINT" ocmRefreshTokenEnvVar = "OCM_TOKEN" + rhoasTokenEnvVar = "RHOAS_TOKEN" ) +// AuthenticatedClientWithRHOASToken returns a rest client for fleet-manager API using a static OCM token for authentication. +// This function should only be used for CLI commands. +func AuthenticatedClientWithRHOASToken() *fleetmanager.Client { + rhoasToken := os.Getenv(rhoasTokenEnvVar) + if rhoasToken == "" { + panic(fmt.Sprintf("%s not set. Please set RHOAS token with 'export %s='", rhoasTokenEnvVar, rhoasTokenEnvVar)) + } + + fleetManagerEndpoint := os.Getenv(fleetManagerEndpointEnvVar) + if fleetManagerEndpoint == "" { + fleetManagerEndpoint = defaultFleetManagerEndpoint + } + + singletonRHOASTokenInstance.Do(func() { + auth, err := fleetmanager.NewAuth(fleetmanager.StaticTokenAuthName, fleetmanager.Option{ + Static: fleetmanager.StaticOption{ + StaticToken: rhoasToken, + }, + }) + if err != nil { + glog.Fatalf("Failed to create connection: %s", err) + return + } + + fmClientAuthWithRHOASToken, err = fleetmanager.NewClient(fleetManagerEndpoint, auth) + if err != nil { + glog.Fatalf("Failed to create connection: %s", err) + return + } + }) + + // sleep timer necessary to avoid "token issued in future" errors for time lags between fleet-manager running on a + // local VM and the OCM server. + if fleetManagerEndpoint == defaultFleetManagerEndpoint { + time.Sleep(5 * time.Second) + } + return fmClientAuthWithRHOASToken +} + // AuthenticatedClientWithOCM returns a rest client to the fleet-manager and receives the OCM refresh token. // This function will panic on an error, designed to be used by the fleet-manager CLI. func AuthenticatedClientWithOCM() *fleetmanager.Client { @@ -35,8 +78,8 @@ func AuthenticatedClientWithOCM() *fleetmanager.Client { fleetManagerEndpoint = defaultFleetManagerEndpoint } - singletonInstance.Do(func() { - auth, err := fleetmanager.NewAuth("OCM", fleetmanager.Option{ + singletonOCMRefreshTokenInstance.Do(func() { + auth, err := fleetmanager.NewAuth(fleetmanager.OCMAuthName, fleetmanager.Option{ Ocm: fleetmanager.OCMOption{ RefreshToken: ocmRefreshToken, }, @@ -46,7 +89,7 @@ func AuthenticatedClientWithOCM() *fleetmanager.Client { return } - client, err = fleetmanager.NewClient(fleetManagerEndpoint, auth) + fmClientAuthWithOCMRefreshToken, err = fleetmanager.NewClient(fleetManagerEndpoint, auth) if err != nil { glog.Fatalf("Failed to create connection: %s", err) return @@ -58,5 +101,5 @@ func AuthenticatedClientWithOCM() *fleetmanager.Client { if fleetManagerEndpoint == defaultFleetManagerEndpoint { time.Sleep(5 * time.Second) } - return client + return fmClientAuthWithOCMRefreshToken } diff --git a/pkg/client/fleetmanager/auth_ocm.go b/pkg/client/fleetmanager/auth_ocm.go index 7775d51e85..ce2eb06564 100644 --- a/pkg/client/fleetmanager/auth_ocm.go +++ b/pkg/client/fleetmanager/auth_ocm.go @@ -12,7 +12,8 @@ import ( const ( ocmTokenExpirationMargin = 5 * time.Minute ocmClientID = "cloud-services" - ocmAuthName = "OCM" + // OCMAuthName is the name of the OCM auth authentication method + OCMAuthName = "OCM" ) var ( @@ -29,7 +30,7 @@ type ocmAuthFactory struct{} // GetName gets the name of the factory. func (f *ocmAuthFactory) GetName() string { - return ocmAuthName + return OCMAuthName } // CreateAuth ... diff --git a/pkg/client/fleetmanager/auth_rhsso.go b/pkg/client/fleetmanager/auth_rhsso.go index 9f47f4e5c6..f939360d46 100644 --- a/pkg/client/fleetmanager/auth_rhsso.go +++ b/pkg/client/fleetmanager/auth_rhsso.go @@ -13,7 +13,8 @@ import ( ) const ( - rhSSOAuthName = "RHSSO" + // RHSSOAuthName is the name of the Red Hat Single Sign On authentication method. + RHSSOAuthName = "RHSSO" ) var ( @@ -30,7 +31,7 @@ type rhSSOAuthFactory struct{} // GetName gets the name of the factory. func (f *rhSSOAuthFactory) GetName() string { - return rhSSOAuthName + return RHSSOAuthName } // CreateAuth creates an Auth using RH SSO. diff --git a/pkg/client/fleetmanager/auth_static_token.go b/pkg/client/fleetmanager/auth_static_token.go index f12065ccd9..81e882f95f 100644 --- a/pkg/client/fleetmanager/auth_static_token.go +++ b/pkg/client/fleetmanager/auth_static_token.go @@ -7,7 +7,8 @@ import ( ) const ( - staticTokenAuthName = "STATIC_TOKEN" + // StaticTokenAuthName is the name of the static token authentication method. + StaticTokenAuthName = "STATIC_TOKEN" ) var ( @@ -24,7 +25,7 @@ type staticTokenAuthFactory struct{} // GetName gets the name of the factory. func (f *staticTokenAuthFactory) GetName() string { - return staticTokenAuthName + return StaticTokenAuthName } // CreateAuth ... From 5c60dfd51e0d545a05d3cdab81e3a76574f30426 Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Tue, 9 May 2023 10:16:42 +0200 Subject: [PATCH 25/40] ROX-13692: fix final snapshot creation (#1012) * Revert "Revert "ROX-13692: create final snapshot for tenant db (#994)" (#1009)" This reverts commit e5e9b24ea847dcf699cffbdab955ed52b29a63ff. * do not repeat delete requests if cluster in backing-up status * ignore final snapshot errors in reconcilation --- .github/workflows/rds.yaml | 3 +- Makefile | 2 +- .../dataplane-cluster-configuration-crc.yaml | 1 + docs/development/howto-e2e-test-rds.md | 60 +++++++++++++++++++ .../central/cloudprovider/awsclient/rds.go | 40 +++++++++---- .../cloudprovider/awsclient/rds_test.go | 53 +++++++++++++--- 6 files changed, 138 insertions(+), 21 deletions(-) create mode 100644 docs/development/howto-e2e-test-rds.md diff --git a/.github/workflows/rds.yaml b/.github/workflows/rds.yaml index e24f79aaea..a15e5be182 100644 --- a/.github/workflows/rds.yaml +++ b/.github/workflows/rds.yaml @@ -32,6 +32,7 @@ on: - 'docs/**' - 'pkg/api/openapi/docs/**' - 'pkg/api/openapi/.openapi-generator-ignore' + - 'dp-terraform/**' jobs: verify-test: @@ -67,4 +68,4 @@ jobs: AWS_AUTH_HELPER: "none" run: | ./dev/env/scripts/exec_fleetshard_sync.sh make test/rds - timeout-minutes: 35 + timeout-minutes: 50 diff --git a/Makefile b/Makefile index d58c2614f1..cc322ad4e0 100644 --- a/Makefile +++ b/Makefile @@ -326,7 +326,7 @@ test: $(GOTESTSUM_BIN) # Runs the AWS RDS integration tests. test/rds: $(GOTESTSUM_BIN) RUN_RDS_TESTS=true \ - $(GOTESTSUM_BIN) --junitfile data/results/rds-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -v -timeout 30m -count=1 \ + $(GOTESTSUM_BIN) --junitfile data/results/rds-integration-tests.xml --format $(GOTESTSUM_FORMAT) -- -p 1 -v -timeout 45m -count=1 \ ./fleetshard/pkg/central/cloudprovider/awsclient/... .PHONY: test/rds diff --git a/dev/config/dataplane-cluster-configuration-crc.yaml b/dev/config/dataplane-cluster-configuration-crc.yaml index 8953326fe6..14e3ca1541 100644 --- a/dev/config/dataplane-cluster-configuration-crc.yaml +++ b/dev/config/dataplane-cluster-configuration-crc.yaml @@ -15,6 +15,7 @@ clusters: provider_type: standalone supported_instance_type: "eval,standard" cluster_dns: apps-crc.testing + multi_az: true available_central_operator_versions: - version: "0.1.0" ready: true diff --git a/docs/development/howto-e2e-test-rds.md b/docs/development/howto-e2e-test-rds.md new file mode 100644 index 0000000000..a5095d3140 --- /dev/null +++ b/docs/development/howto-e2e-test-rds.md @@ -0,0 +1,60 @@ +# How to e2e test RDS + +At the point in time this documentation was written AWS RDS DB creation and deletion is not e2e tested with a full setup of fleet-manager and fleetshard-sync. Everytime a change to the RDS provisioning logic is introduced we need to e2e test that change manually using the steps described here. + +**Prerequisites:** + +- A K8s cluster to create central resources on (using CRC as an example here) +- Kubeconfig configured with access to that cluster +- Setup personal AWS access through `aws-saml.py` (see [secret-management.md](./secret-management.md)) +- RHACS Operator running or installed in the cluster + +1. Run local fleet-manager + + ``` + make db/teardown db/setup db/migrate + + make binary + + ./fleet-manager serve --dataplane-cluster-config-file ./dev/config + ``` + +1. Run local fleetshard-sync + + ``` + # Prepare environment and secrets + export PATH="$PATH:$(pwd)/bin" + source ./scripts/lib/external_config.sh + kinit # get a kerberos ticket + export AWS_AUTH_HELPER=aws-saml + init_chamber + # When prompted select your profile for the dev AWS account arn:aws:iam::047735621815:role/047735621815-poweruser + + source <(run_chamber env "fleetshard-sync") + source <(run_chamber env -b secretsmanager "fleetshard-sync") + source <(run_chamber env "local_cluster") + export MANAGED_DB_ENABLED=true + # flip the PublicAcessible flag to true in rds.go line 354 + make binary + + ./fleetshard-sync + ``` + +1. Create a central instance and wait for DB Creation + + ``` + central_id=$(./scripts/create-centrals.sh | jq '.id' -r) + # Watch the fleetshard-sync logs to tell what's happening in the background. + # It should print something like this if everything works like expected: + # RDS instance status: creating (instance ID: rhacs-chcb5m8ah6b2ko6qut0g-db-instance) + + # At some point your central instance should become ready + ``` + +1. Make sure DB state is available and 2 instances exist in state available the central pod is ready +1. Delete the central + + ``` + export OCM_TOKEN=$(ocm token) + ./scripts/fmcurl "rhacs/v1/centrals/$central_id?async=true" -XDELETE + ``` diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index 4a9f434781..512a8ef0be 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -23,13 +23,13 @@ import ( const ( dbAvailableStatus = "available" dbDeletingStatus = "deleting" - - dbUser = "rhacs_master" - dbPrefix = "rhacs-" - dbInstanceSuffix = "-db-instance" - dbFailoverSuffix = "-db-failover" - dbClusterSuffix = "-db-cluster" - awsRetrySeconds = 30 + dbBackingUpStatus = "backing-up" + dbUser = "rhacs_master" + dbPrefix = "rhacs-" + dbInstanceSuffix = "-db-instance" + dbFailoverSuffix = "-db-failover" + dbClusterSuffix = "-db-cluster" + awsRetrySeconds = 30 // DB cluster / instance configuration parameters dbEngine = "aurora-postgresql" @@ -166,7 +166,6 @@ func (r *RDS) ensureInstanceDeleted(instanceID string) error { if instanceStatus != dbDeletingStatus { glog.Infof("Initiating deprovisioning of RDS database instance %s.", instanceID) - // TODO(ROX-13692): do not skip taking a final DB snapshot _, err := r.rdsClient.DeleteDBInstance(newDeleteCentralDBInstanceInput(instanceID, true)) if err != nil { return fmt.Errorf("deleting DB instance: %w", err) @@ -185,12 +184,19 @@ func (r *RDS) ensureClusterDeleted(clusterID string) error { return nil } - if clusterStatus != dbDeletingStatus { + if clusterStatus != dbDeletingStatus && clusterStatus != dbBackingUpStatus { glog.Infof("Initiating deprovisioning of RDS database cluster %s.", clusterID) - // TODO(ROX-13692): do not skip taking a final DB snapshot - _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, true)) + _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, false)) if err != nil { + if awsErr, ok := err.(awserr.Error); ok { + // This assumes that if a final snapshot exists, a deletion for the RDS cluster was already triggered + // and we can move on with deprovisioning, + if awsErr.Code() == rds.ErrCodeDBClusterSnapshotAlreadyExistsFault { + return nil + } + } return fmt.Errorf("deleting DB cluster: %w", err) + } } @@ -367,10 +373,16 @@ func newDeleteCentralDBInstanceInput(instanceID string, skipFinalSnapshot bool) } func newDeleteCentralDBClusterInput(clusterID string, skipFinalSnapshot bool) *rds.DeleteDBClusterInput { - return &rds.DeleteDBClusterInput{ + input := &rds.DeleteDBClusterInput{ DBClusterIdentifier: aws.String(clusterID), SkipFinalSnapshot: aws.Bool(skipFinalSnapshot), } + + if !skipFinalSnapshot { + input.FinalDBSnapshotIdentifier = getFinalSnapshotID(clusterID) + } + + return input } func newRdsClient(awsConfig config.AWS, auth fleetmanager.Auth) (*rds.RDS, error) { @@ -396,6 +408,10 @@ func newRdsClient(awsConfig config.AWS, auth fleetmanager.Auth) (*rds.RDS, error return rds.New(sess), nil } +func getFinalSnapshotID(clusterID string) *string { + return aws.String(fmt.Sprintf("%s-%s", clusterID, "final")) +} + type tokenFetcher struct { auth fleetmanager.Auth } diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go index ecc67b6453..97795652bb 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go @@ -17,7 +17,7 @@ import ( "github.com/stretchr/testify/require" ) -const awsTimeoutMinutes = 15 +const awsTimeoutMinutes = 30 func newTestRDS() (*RDS, error) { rdsClient, err := newTestRDSClient() @@ -47,7 +47,7 @@ func newTestRDSClient() (*rds.RDS, error) { func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID string) (bool, error) { for { - clusterExists, clusterStatus, err := rdsClient.clusterStatus(clusterID) + clusterExists, _, err := rdsClient.clusterStatus(clusterID) if err != nil { return false, err } @@ -56,11 +56,6 @@ func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID st return true, nil } - // exit early if cluster is marked as deleting - if clusterStatus == dbDeletingStatus { - return true, nil - } - ticker := time.NewTicker(awsRetrySeconds * time.Second) select { case <-ticker.C: @@ -71,6 +66,37 @@ func waitForClusterToBeDeleted(ctx context.Context, rdsClient *RDS, clusterID st } } +func waitForFinalSnapshotToExist(ctx context.Context, rdsClient *RDS, clusterID string) (bool, error) { + + ticker := time.NewTicker(awsRetrySeconds * time.Second) + for { + select { + case <-ticker.C: + snapshotOut, err := rdsClient.rdsClient.DescribeDBClusterSnapshots(&rds.DescribeDBClusterSnapshotsInput{ + DBClusterSnapshotIdentifier: getFinalSnapshotID(clusterID), + }) + + if err != nil { + if awsErr, ok := err.(awserr.Error); ok { + if awsErr.Code() != rds.ErrCodeDBClusterSnapshotNotFoundFault { + return false, err + } + + continue + } + } + + if snapshotOut != nil { + return len(snapshotOut.DBClusterSnapshots) == 1, nil + } + case <-ctx.Done(): + return false, fmt.Errorf("waiting for final DB snapshot: %w", ctx.Err()) + } + + } + +} + func TestRDSProvisioning(t *testing.T) { if os.Getenv("RUN_RDS_TESTS") != "true" { t.Skip("Skip RDS tests. Set RUN_RDS_TESTS=true env variable to enable RDS tests.") @@ -136,6 +162,19 @@ func TestRDSProvisioning(t *testing.T) { clusterDeleted, err := waitForClusterToBeDeleted(deleteCtx, rdsClient, clusterID) require.NoError(t, err) assert.True(t, clusterDeleted) + + // Always attempt to delete the final snapshot if it exists + defer func() { + _, err := rdsClient.rdsClient.DeleteDBClusterSnapshot( + &rds.DeleteDBClusterSnapshotInput{DBClusterSnapshotIdentifier: getFinalSnapshotID(clusterID)}, + ) + + assert.NoError(t, err) + }() + + snapshotExists, err := waitForFinalSnapshotToExist(deleteCtx, rdsClient, clusterID) + require.NoError(t, err) + require.True(t, snapshotExists) } func TestGetDBConnection(t *testing.T) { From c66a19a7145a5e63f5be91533bfaded7fdc39dd1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 May 2023 17:52:55 +0200 Subject: [PATCH 26/40] Bump github.com/prometheus/client_golang from 1.14.0 to 1.15.1 (#1016) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.14.0 to 1.15.1. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.14.0...v1.15.1) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 940eb8e2ac..cae7edc84f 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/pmezard/go-difflib v1.0.0 - github.com/prometheus/client_golang v1.14.0 + github.com/prometheus/client_golang v1.15.1 github.com/prometheus/client_model v0.3.0 github.com/prometheus/common v0.42.0 github.com/redhat-developer/app-services-sdk-core/app-services-sdk-go/serviceaccountmgmt v0.0.0-20230323122535-49460b57cc45 @@ -182,7 +182,7 @@ require ( google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 // indirect google.golang.org/grpc v1.53.0 // indirect - google.golang.org/protobuf v1.29.1 // indirect + google.golang.org/protobuf v1.30.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index a560f1e8ae..ce478e726e 100644 --- a/go.sum +++ b/go.sum @@ -732,8 +732,8 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB 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/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= @@ -936,8 +936,8 @@ github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -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_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= +github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1828,8 +1828,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 7f5db4d059b4a7764dff8009d0bc35a3a098ac82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 May 2023 20:53:21 +0200 Subject: [PATCH 27/40] Bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 in /tools (#1015) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.9.2 to 2.9.4. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.9.2...v2.9.4) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 10 +++++----- tools/go.sum | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 4bb30b5e34..ca2f1fa3ef 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -6,7 +6,7 @@ require ( github.com/99designs/aws-vault/v6 v6.6.2 github.com/go-bindata/go-bindata/v3 v3.1.4-0.20210427095211-26949cc13d95 github.com/matryer/moq v0.3.1 - github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/ginkgo/v2 v2.9.4 github.com/segmentio/chamber/v2 v2.12.0 gotest.tools/gotestsum v1.10.0 ) @@ -58,11 +58,11 @@ require ( github.com/stretchr/testify v1.8.0 // indirect github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f // indirect - golang.org/x/mod v0.9.0 // indirect + golang.org/x/mod v0.10.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/tools v0.8.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/segmentio/analytics-go.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/go.sum b/tools/go.sum index 910f679a78..23e13545b0 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -62,7 +62,7 @@ github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwV github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/go-bindata/go-bindata/v3 v3.1.4-0.20210427095211-26949cc13d95 h1:uuovnuyoQdZSs6QHG18MJM0c48qER1I2dmqvDYk3F5c= github.com/go-bindata/go-bindata/v3 v3.1.4-0.20210427095211-26949cc13d95/go.mod h1:1/zrpXsLD8YDIbhZRqXzm1Ghc7NhEvIN9+Z6R5/xH4I= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -108,9 +108,9 @@ github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= +github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -155,15 +155,15 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNT golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-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-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -187,25 +187,25 @@ golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.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-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= 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= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 8498a12ae3fffe0a7363edbe418fc82ee8401ba6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 May 2023 22:15:56 +0000 Subject: [PATCH 28/40] Bump github.com/openshift-online/ocm-sdk-go from 0.1.331 to 0.1.339 (#1017) * Bump github.com/openshift-online/ocm-sdk-go from 0.1.331 to 0.1.339 Bumps [github.com/openshift-online/ocm-sdk-go](https://github.com/openshift-online/ocm-sdk-go) from 0.1.331 to 0.1.339. - [Release notes](https://github.com/openshift-online/ocm-sdk-go/releases) - [Changelog](https://github.com/openshift-online/ocm-sdk-go/blob/main/CHANGES.md) - [Commits](https://github.com/openshift-online/ocm-sdk-go/compare/v0.1.331...v0.1.339) --- updated-dependencies: - dependency-name: github.com/openshift-online/ocm-sdk-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Drop deprecated Cluster dep --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aleksandr Kurlov --- go.mod | 2 +- go.sum | 4 ++-- test/mocks/api_server.go | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index cae7edc84f..5837f47106 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.9.2 github.com/onsi/gomega v1.27.6 - github.com/openshift-online/ocm-sdk-go v0.1.331 + github.com/openshift-online/ocm-sdk-go v0.1.339 github.com/openshift/api v3.9.1-0.20191201231411-9f834e337466+incompatible github.com/operator-framework/api v0.17.4 github.com/patrickmn/go-cache v2.1.0+incompatible diff --git a/go.sum b/go.sum index ce478e726e..bc54f58e1e 100644 --- a/go.sum +++ b/go.sum @@ -877,8 +877,8 @@ github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9 github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/openshift-online/ocm-sdk-go v0.1.331 h1:itr1qCJja8Edrjezxoq7FPG4NBAllWNyg4Ahxcn1GVE= -github.com/openshift-online/ocm-sdk-go v0.1.331/go.mod h1:KYOw8kAKAHyPrJcQoVR82CneQ4ofC02Na4cXXaTq4Nw= +github.com/openshift-online/ocm-sdk-go v0.1.339 h1:/vQcIWX9N+zmpA79b8bzleUiW9oTeeP3/gkxSBUtlgE= +github.com/openshift-online/ocm-sdk-go v0.1.339/go.mod h1:KYOw8kAKAHyPrJcQoVR82CneQ4ofC02Na4cXXaTq4Nw= github.com/openshift/api v0.0.0-20200623075207-eb651a5bb0ad/go.mod h1:l6TGeqJ92DrZBuWMNKcot1iZUHfbYSJyBWHGgg6Dn6s= github.com/openshift/api v3.9.1-0.20191201231411-9f834e337466+incompatible h1:QuymwFhW85sgklix1dTn58zOYqBXWHVlZOFQVIVsMi0= github.com/openshift/api v3.9.1-0.20191201231411-9f834e337466+incompatible/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= diff --git a/test/mocks/api_server.go b/test/mocks/api_server.go index b325a61dcb..f0e08eafa2 100644 --- a/test/mocks/api_server.go +++ b/test/mocks/api_server.go @@ -1186,8 +1186,7 @@ func GetMockMachineBuilder(modifyFn func(*clustersmgmtv1.MachinePoolBuilder)) *c builder := clustersmgmtv1.NewMachinePool(). ID(MockMachinePoolID). HREF(fmt.Sprintf("/api/clusters_mgmt/v1/clusters/%s/machine_pools/%s", MockClusterID, MockMachinePoolID)). - Replicas(MockMachinePoolReplicas). - Cluster(GetMockClusterBuilder(nil)) + Replicas(MockMachinePoolReplicas) if modifyFn != nil { modifyFn(builder) } From 03bfdb695493c7c2d378d4f964551a661b0838f4 Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Wed, 10 May 2023 10:09:52 +0200 Subject: [PATCH 29/40] ROX-13692: skip final snapshots for probe (#1018) skip final snapshots for probe --- .secrets.baseline | 4 ++-- .../central/cloudprovider/awsclient/rds.go | 8 +++---- .../cloudprovider/awsclient/rds_test.go | 4 ++-- .../pkg/central/cloudprovider/dbclient.go | 2 +- .../pkg/central/cloudprovider/dbclient_moq.go | 22 ++++++++++++------- .../pkg/central/reconciler/reconciler.go | 4 +++- .../pkg/central/reconciler/reconciler_test.go | 2 +- 7 files changed, 27 insertions(+), 19 deletions(-) diff --git a/.secrets.baseline b/.secrets.baseline index 206940dc46..7387f0d2fb 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -322,7 +322,7 @@ "filename": "fleetshard/pkg/central/cloudprovider/dbclient_moq.go", "hashed_secret": "80519927d0f3ce1efe933f46ca9e05e68e491adc", "is_verified": false, - "line_number": 118 + "line_number": 124 } ], "internal/dinosaur/pkg/api/public/api/openapi.yaml": [ @@ -546,5 +546,5 @@ } ] }, - "generated_at": "2023-03-28T21:54:47Z" + "generated_at": "2023-05-10T07:24:16Z" } diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index 512a8ef0be..67f1ed961d 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -82,7 +82,7 @@ func (r *RDS) EnsureDBProvisioned(ctx context.Context, databaseID, masterPasswor // EnsureDBDeprovisioned is a function that initiates the deprovisioning of the RDS database of a Central // Unlike EnsureDBProvisioned, this function does not block until the DB is deprovisioned -func (r *RDS) EnsureDBDeprovisioned(databaseID string) error { +func (r *RDS) EnsureDBDeprovisioned(databaseID string, skipFinalSnapshot bool) error { err := r.ensureInstanceDeleted(getInstanceID(databaseID)) if err != nil { return err @@ -93,7 +93,7 @@ func (r *RDS) EnsureDBDeprovisioned(databaseID string) error { return err } - err = r.ensureClusterDeleted(getClusterID(databaseID)) + err = r.ensureClusterDeleted(getClusterID(databaseID), skipFinalSnapshot) if err != nil { return err } @@ -175,7 +175,7 @@ func (r *RDS) ensureInstanceDeleted(instanceID string) error { return nil } -func (r *RDS) ensureClusterDeleted(clusterID string) error { +func (r *RDS) ensureClusterDeleted(clusterID string, skipFinalSnapshot bool) error { clusterExists, clusterStatus, err := r.clusterStatus(clusterID) if err != nil { return fmt.Errorf("getting DB cluster status: %w", err) @@ -186,7 +186,7 @@ func (r *RDS) ensureClusterDeleted(clusterID string) error { if clusterStatus != dbDeletingStatus && clusterStatus != dbBackingUpStatus { glog.Infof("Initiating deprovisioning of RDS database cluster %s.", clusterID) - _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, false)) + _, err := r.rdsClient.DeleteDBCluster(newDeleteCentralDBClusterInput(clusterID, skipFinalSnapshot)) if err != nil { if awsErr, ok := err.(awserr.Error); ok { // This assumes that if a final snapshot exists, a deletion for the RDS cluster was already triggered diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go index 97795652bb..ad54a008af 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go @@ -131,7 +131,7 @@ func TestRDSProvisioning(t *testing.T) { err = rdsClient.EnsureDBProvisioned(ctx, dbID, dbMasterPassword) defer func() { // clean-up AWS resources in case the test fails - deleteErr := rdsClient.EnsureDBDeprovisioned(dbID) + deleteErr := rdsClient.EnsureDBDeprovisioned(dbID, false) assert.NoError(t, deleteErr) }() require.NoError(t, err) @@ -153,7 +153,7 @@ func TestRDSProvisioning(t *testing.T) { require.NoError(t, err) require.True(t, failoverExists) - err = rdsClient.EnsureDBDeprovisioned(dbID) + err = rdsClient.EnsureDBDeprovisioned(dbID, false) assert.NoError(t, err) deleteCtx, deleteCancel := context.WithTimeout(context.TODO(), awsTimeoutMinutes*time.Minute) diff --git a/fleetshard/pkg/central/cloudprovider/dbclient.go b/fleetshard/pkg/central/cloudprovider/dbclient.go index 9a32fdb3a7..0ab54668db 100644 --- a/fleetshard/pkg/central/cloudprovider/dbclient.go +++ b/fleetshard/pkg/central/cloudprovider/dbclient.go @@ -16,7 +16,7 @@ type DBClient interface { EnsureDBProvisioned(ctx context.Context, databaseID, passwordSecretName string) error // EnsureDBDeprovisioned is a non-blocking function that makes sure that a managed DB is deprovisioned (more // specifically, that its deletion was initiated) - EnsureDBDeprovisioned(databaseID string) error + EnsureDBDeprovisioned(databaseID string, skipFinalSnapshot bool) error // GetDBConnection returns a postgres.DBConnection struct, which contains the data necessary // to construct a PostgreSQL connection string. It expects that the database was already provisioned. GetDBConnection(databaseID string) (postgres.DBConnection, error) diff --git a/fleetshard/pkg/central/cloudprovider/dbclient_moq.go b/fleetshard/pkg/central/cloudprovider/dbclient_moq.go index 06f92a40f2..260da5de26 100644 --- a/fleetshard/pkg/central/cloudprovider/dbclient_moq.go +++ b/fleetshard/pkg/central/cloudprovider/dbclient_moq.go @@ -19,7 +19,7 @@ var _ DBClient = &DBClientMock{} // // // make and configure a mocked DBClient // mockedDBClient := &DBClientMock{ -// EnsureDBDeprovisionedFunc: func(databaseID string) error { +// EnsureDBDeprovisionedFunc: func(databaseID string, skipFinalSnapshot bool) error { // panic("mock out the EnsureDBDeprovisioned method") // }, // EnsureDBProvisionedFunc: func(ctx context.Context, databaseID string, passwordSecretName string) error { @@ -36,7 +36,7 @@ var _ DBClient = &DBClientMock{} // } type DBClientMock struct { // EnsureDBDeprovisionedFunc mocks the EnsureDBDeprovisioned method. - EnsureDBDeprovisionedFunc func(databaseID string) error + EnsureDBDeprovisionedFunc func(databaseID string, skipFinalSnapshot bool) error // EnsureDBProvisionedFunc mocks the EnsureDBProvisioned method. EnsureDBProvisionedFunc func(ctx context.Context, databaseID string, passwordSecretName string) error @@ -50,6 +50,8 @@ type DBClientMock struct { EnsureDBDeprovisioned []struct { // DatabaseID is the databaseID argument value. DatabaseID string + // SkipFinalSnapshot is the skipFinalSnapshot argument value. + SkipFinalSnapshot bool } // EnsureDBProvisioned holds details about calls to the EnsureDBProvisioned method. EnsureDBProvisioned []struct { @@ -72,19 +74,21 @@ type DBClientMock struct { } // EnsureDBDeprovisioned calls EnsureDBDeprovisionedFunc. -func (mock *DBClientMock) EnsureDBDeprovisioned(databaseID string) error { +func (mock *DBClientMock) EnsureDBDeprovisioned(databaseID string, skipFinalSnapshot bool) error { if mock.EnsureDBDeprovisionedFunc == nil { panic("DBClientMock.EnsureDBDeprovisionedFunc: method is nil but DBClient.EnsureDBDeprovisioned was just called") } callInfo := struct { - DatabaseID string + DatabaseID string + SkipFinalSnapshot bool }{ - DatabaseID: databaseID, + DatabaseID: databaseID, + SkipFinalSnapshot: skipFinalSnapshot, } mock.lockEnsureDBDeprovisioned.Lock() mock.calls.EnsureDBDeprovisioned = append(mock.calls.EnsureDBDeprovisioned, callInfo) mock.lockEnsureDBDeprovisioned.Unlock() - return mock.EnsureDBDeprovisionedFunc(databaseID) + return mock.EnsureDBDeprovisionedFunc(databaseID, skipFinalSnapshot) } // EnsureDBDeprovisionedCalls gets all the calls that were made to EnsureDBDeprovisioned. @@ -92,10 +96,12 @@ func (mock *DBClientMock) EnsureDBDeprovisioned(databaseID string) error { // // len(mockedDBClient.EnsureDBDeprovisionedCalls()) func (mock *DBClientMock) EnsureDBDeprovisionedCalls() []struct { - DatabaseID string + DatabaseID string + SkipFinalSnapshot bool } { var calls []struct { - DatabaseID string + DatabaseID string + SkipFinalSnapshot bool } mock.lockEnsureDBDeprovisioned.RLock() calls = mock.calls.EnsureDBDeprovisioned diff --git a/fleetshard/pkg/central/reconciler/reconciler.go b/fleetshard/pkg/central/reconciler/reconciler.go index d0571b0951..97f3e26cd9 100644 --- a/fleetshard/pkg/central/reconciler/reconciler.go +++ b/fleetshard/pkg/central/reconciler/reconciler.go @@ -432,7 +432,9 @@ func (r *CentralReconciler) ensureCentralDeleted(ctx context.Context, remoteCent globalDeleted = globalDeleted && centralDeleted if r.managedDBEnabled { - err = r.managedDBProvisioningClient.EnsureDBDeprovisioned(remoteCentral.Id) + // skip Snapshot for remoteCentral created by probe + skipSnapshot := remoteCentral.Metadata.Internal + err = r.managedDBProvisioningClient.EnsureDBDeprovisioned(remoteCentral.Id, skipSnapshot) if err != nil { return false, fmt.Errorf("deprovisioning DB: %v", err) } diff --git a/fleetshard/pkg/central/reconciler/reconciler_test.go b/fleetshard/pkg/central/reconciler/reconciler_test.go index 0023a0be1b..8841357f33 100644 --- a/fleetshard/pkg/central/reconciler/reconciler_test.go +++ b/fleetshard/pkg/central/reconciler/reconciler_test.go @@ -411,7 +411,7 @@ func TestReconcileDeleteWithManagedDB(t *testing.T) { managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string) error { return nil } - managedDBProvisioningClient.EnsureDBDeprovisionedFunc = func(_ string) error { + managedDBProvisioningClient.EnsureDBDeprovisionedFunc = func(_ string, _ bool) error { return nil } managedDBProvisioningClient.GetDBConnectionFunc = func(_ string) (postgres.DBConnection, error) { From fe9a49702327258f6badd7596e3565da2d575df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=A4umer?= Date: Wed, 10 May 2023 15:19:32 +0200 Subject: [PATCH 30/40] Rename Central command to centrals to align with API resource naming (#1021) --- cmd/fleet-manager/main.go | 4 ++-- internal/dinosaur/pkg/cmd/admin/centrals/cmd.go | 1 + internal/dinosaur/pkg/cmd/{central => centrals}/cmd.go | 9 +++++---- .../dinosaur/pkg/cmd/{central => centrals}/create.go | 2 +- .../dinosaur/pkg/cmd/{central => centrals}/delete.go | 2 +- internal/dinosaur/pkg/cmd/{central => centrals}/flags.go | 2 +- internal/dinosaur/pkg/cmd/{central => centrals}/get.go | 2 +- internal/dinosaur/pkg/cmd/{central => centrals}/list.go | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) rename internal/dinosaur/pkg/cmd/{central => centrals}/cmd.go (81%) rename internal/dinosaur/pkg/cmd/{central => centrals}/create.go (99%) rename internal/dinosaur/pkg/cmd/{central => centrals}/delete.go (98%) rename internal/dinosaur/pkg/cmd/{central => centrals}/flags.go (97%) rename internal/dinosaur/pkg/cmd/{central => centrals}/get.go (98%) rename internal/dinosaur/pkg/cmd/{central => centrals}/list.go (98%) diff --git a/cmd/fleet-manager/main.go b/cmd/fleet-manager/main.go index c38c15adc3..0336934c3f 100644 --- a/cmd/fleet-manager/main.go +++ b/cmd/fleet-manager/main.go @@ -5,7 +5,7 @@ import ( "flag" "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/admin" - "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/central" + "github.com/stackrox/acs-fleet-manager/internal/dinosaur/pkg/cmd/centrals" "github.com/stackrox/acs-fleet-manager/pkg/cmd/migrate" "github.com/stackrox/acs-fleet-manager/pkg/cmd/serve" @@ -48,7 +48,7 @@ func main() { rootCmd.AddCommand(migrate.NewMigrateCommand(env)) rootCmd.AddCommand(serve.NewServeCommand(env)) - rootCmd.AddCommand(central.NewCentralCommand()) + rootCmd.AddCommand(centrals.NewCentralsCommand()) rootCmd.AddCommand(admin.NewAdminCommand()) // Unsupported CLI commands. Eventually some of them can be removed. // rootCmd.AddCommand(cluster.NewClusterCommand(env)) diff --git a/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go b/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go index 4b0240449b..0cc754c7fd 100644 --- a/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go +++ b/internal/dinosaur/pkg/cmd/admin/centrals/cmd.go @@ -11,6 +11,7 @@ const ( func NewAdminCentralsCommand() *cobra.Command { cmd := &cobra.Command{ Use: "centrals", + Aliases: []string{"central"}, Short: "Perform admin central API calls.", Long: "Perform admin central API calls.", PersistentPreRun: func(cmd *cobra.Command, args []string) {}, diff --git a/internal/dinosaur/pkg/cmd/central/cmd.go b/internal/dinosaur/pkg/cmd/centrals/cmd.go similarity index 81% rename from internal/dinosaur/pkg/cmd/central/cmd.go rename to internal/dinosaur/pkg/cmd/centrals/cmd.go index 2201fbb20a..83c7772aad 100644 --- a/internal/dinosaur/pkg/cmd/central/cmd.go +++ b/internal/dinosaur/pkg/cmd/centrals/cmd.go @@ -1,6 +1,6 @@ // Package central contains commands for interacting with central logic of the service directly instead of through the // REST API exposed via the serve command. -package central +package centrals import ( "github.com/spf13/cobra" @@ -10,10 +10,11 @@ const ( apiErrorMsg = "%s Central failed: To fix this ensure you are authenticated, fleet-manager endpoint is configured and reachable. Status Code: %s." ) -// NewCentralCommand ... -func NewCentralCommand() *cobra.Command { +// NewCentralsCommand ... +func NewCentralsCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "central", + Use: "centrals", + Aliases: []string{"central"}, Short: "Perform central CRUD actions directly", Long: "Perform central CRUD actions directly.", PersistentPreRun: func(cmd *cobra.Command, args []string) {}, diff --git a/internal/dinosaur/pkg/cmd/central/create.go b/internal/dinosaur/pkg/cmd/centrals/create.go similarity index 99% rename from internal/dinosaur/pkg/cmd/central/create.go rename to internal/dinosaur/pkg/cmd/centrals/create.go index d84a187298..02a30ce76a 100644 --- a/internal/dinosaur/pkg/cmd/central/create.go +++ b/internal/dinosaur/pkg/cmd/centrals/create.go @@ -1,4 +1,4 @@ -package central +package centrals import ( "encoding/json" diff --git a/internal/dinosaur/pkg/cmd/central/delete.go b/internal/dinosaur/pkg/cmd/centrals/delete.go similarity index 98% rename from internal/dinosaur/pkg/cmd/central/delete.go rename to internal/dinosaur/pkg/cmd/centrals/delete.go index 976702efc8..6e91863ca0 100644 --- a/internal/dinosaur/pkg/cmd/central/delete.go +++ b/internal/dinosaur/pkg/cmd/centrals/delete.go @@ -1,4 +1,4 @@ -package central +package centrals import ( "fmt" diff --git a/internal/dinosaur/pkg/cmd/central/flags.go b/internal/dinosaur/pkg/cmd/centrals/flags.go similarity index 97% rename from internal/dinosaur/pkg/cmd/central/flags.go rename to internal/dinosaur/pkg/cmd/centrals/flags.go index d5ce84fc38..5e5d625683 100644 --- a/internal/dinosaur/pkg/cmd/central/flags.go +++ b/internal/dinosaur/pkg/cmd/centrals/flags.go @@ -1,4 +1,4 @@ -package central +package centrals // FlagID ... const ( diff --git a/internal/dinosaur/pkg/cmd/central/get.go b/internal/dinosaur/pkg/cmd/centrals/get.go similarity index 98% rename from internal/dinosaur/pkg/cmd/central/get.go rename to internal/dinosaur/pkg/cmd/centrals/get.go index 30143b934d..f287e4de60 100644 --- a/internal/dinosaur/pkg/cmd/central/get.go +++ b/internal/dinosaur/pkg/cmd/centrals/get.go @@ -1,4 +1,4 @@ -package central +package centrals import ( "encoding/json" diff --git a/internal/dinosaur/pkg/cmd/central/list.go b/internal/dinosaur/pkg/cmd/centrals/list.go similarity index 98% rename from internal/dinosaur/pkg/cmd/central/list.go rename to internal/dinosaur/pkg/cmd/centrals/list.go index 106f841f19..4056bcf7ce 100644 --- a/internal/dinosaur/pkg/cmd/central/list.go +++ b/internal/dinosaur/pkg/cmd/centrals/list.go @@ -1,4 +1,4 @@ -package central +package centrals import ( "encoding/json" From 9abece0a5ebb4052c356cac5ebc35b59eb4c63f3 Mon Sep 17 00:00:00 2001 From: Vlad Bologa Date: Thu, 11 May 2023 09:21:45 +0200 Subject: [PATCH 31/40] ROX-16561: Do not export RDS/Postgres logs to CloudWatch for Probe instances (#1020) --- .secrets.baseline | 4 +-- .../central/cloudprovider/awsclient/rds.go | 33 +++++++++++-------- .../cloudprovider/awsclient/rds_test.go | 2 +- .../pkg/central/cloudprovider/dbclient.go | 2 +- .../pkg/central/cloudprovider/dbclient_moq.go | 14 +++++--- .../pkg/central/reconciler/reconciler.go | 3 +- .../pkg/central/reconciler/reconciler_test.go | 6 ++-- 7 files changed, 38 insertions(+), 26 deletions(-) diff --git a/.secrets.baseline b/.secrets.baseline index 7387f0d2fb..91cef3eb32 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -322,7 +322,7 @@ "filename": "fleetshard/pkg/central/cloudprovider/dbclient_moq.go", "hashed_secret": "80519927d0f3ce1efe933f46ca9e05e68e491adc", "is_verified": false, - "line_number": 124 + "line_number": 127 } ], "internal/dinosaur/pkg/api/public/api/openapi.yaml": [ @@ -546,5 +546,5 @@ } ] }, - "generated_at": "2023-05-10T07:24:16Z" + "generated_at": "2023-05-10T10:12:08Z" } diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index 67f1ed961d..95ba54ce75 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -61,9 +61,9 @@ type RDS struct { } // EnsureDBProvisioned is a blocking function that makes sure that an RDS database was provisioned for a Central -func (r *RDS) EnsureDBProvisioned(ctx context.Context, databaseID, masterPassword string) error { +func (r *RDS) EnsureDBProvisioned(ctx context.Context, databaseID, masterPassword string, exportLogs bool) error { clusterID := getClusterID(databaseID) - if err := r.ensureDBClusterCreated(clusterID, masterPassword); err != nil { + if err := r.ensureDBClusterCreated(clusterID, masterPassword, exportLogs); err != nil { return fmt.Errorf("ensuring DB cluster %s exists: %w", clusterID, err) } @@ -117,7 +117,7 @@ func (r *RDS) GetDBConnection(databaseID string) (postgres.DBConnection, error) return connection, nil } -func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string) error { +func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string, exportLogs bool) error { clusterExists, _, err := r.clusterStatus(clusterID) if err != nil { return fmt.Errorf("checking if DB cluster exists: %w", err) @@ -128,7 +128,7 @@ func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string) error { glog.Infof("Initiating provisioning of RDS database cluster %s.", clusterID) _, err = r.rdsClient.CreateDBCluster(newCreateCentralDBClusterInput(clusterID, masterPassword, r.dbSecurityGroup, - r.dbSubnetGroup, r.dataplaneClusterName)) + r.dbSubnetGroup, r.dataplaneClusterName, exportLogs)) if err != nil { return fmt.Errorf("creating DB cluster: %w", err) } @@ -322,16 +322,15 @@ func getFailoverInstanceID(databaseID string) string { return dbPrefix + databaseID + dbFailoverSuffix } -func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnetGroup, dataplaneClusterName string) *rds.CreateDBClusterInput { - return &rds.CreateDBClusterInput{ - DBClusterIdentifier: aws.String(clusterID), - Engine: aws.String(dbEngine), - EngineVersion: aws.String(dbEngineVersion), - EnableCloudwatchLogsExports: aws.StringSlice([]string{"postgresql"}), - MasterUsername: aws.String(dbUser), - MasterUserPassword: aws.String(dbPassword), - VpcSecurityGroupIds: aws.StringSlice([]string{securityGroup}), - DBSubnetGroupName: aws.String(subnetGroup), +func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnetGroup, dataplaneClusterName string, exportLogs bool) *rds.CreateDBClusterInput { + input := &rds.CreateDBClusterInput{ + DBClusterIdentifier: aws.String(clusterID), + Engine: aws.String(dbEngine), + EngineVersion: aws.String(dbEngineVersion), + MasterUsername: aws.String(dbUser), + MasterUserPassword: aws.String(dbPassword), + VpcSecurityGroupIds: aws.StringSlice([]string{securityGroup}), + DBSubnetGroupName: aws.String(subnetGroup), ServerlessV2ScalingConfiguration: &rds.ServerlessV2ScalingConfiguration{ MinCapacity: aws.Float64(dbMinCapacityACU), MaxCapacity: aws.Float64(dbMaxCapacityACU), @@ -344,6 +343,12 @@ func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnet Value: aws.String(dataplaneClusterName)}, }, } + + if exportLogs { + input.EnableCloudwatchLogsExports = aws.StringSlice([]string{"postgresql"}) + } + + return input } func newCreateCentralDBInstanceInput(clusterID, instanceID, dataplaneClusterName string, performanceInsights bool) *rds.CreateDBInstanceInput { diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go index ad54a008af..0dcb2e604e 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds_test.go @@ -128,7 +128,7 @@ func TestRDSProvisioning(t *testing.T) { require.NoError(t, err) require.False(t, failoverExists) - err = rdsClient.EnsureDBProvisioned(ctx, dbID, dbMasterPassword) + err = rdsClient.EnsureDBProvisioned(ctx, dbID, dbMasterPassword, false) defer func() { // clean-up AWS resources in case the test fails deleteErr := rdsClient.EnsureDBDeprovisioned(dbID, false) diff --git a/fleetshard/pkg/central/cloudprovider/dbclient.go b/fleetshard/pkg/central/cloudprovider/dbclient.go index 0ab54668db..9f147ad0db 100644 --- a/fleetshard/pkg/central/cloudprovider/dbclient.go +++ b/fleetshard/pkg/central/cloudprovider/dbclient.go @@ -13,7 +13,7 @@ import ( type DBClient interface { // EnsureDBProvisioned is a blocking function that makes sure that a database with the given databaseID was provisioned, // using the master password given as parameter - EnsureDBProvisioned(ctx context.Context, databaseID, passwordSecretName string) error + EnsureDBProvisioned(ctx context.Context, databaseID, passwordSecretName string, exportLogs bool) error // EnsureDBDeprovisioned is a non-blocking function that makes sure that a managed DB is deprovisioned (more // specifically, that its deletion was initiated) EnsureDBDeprovisioned(databaseID string, skipFinalSnapshot bool) error diff --git a/fleetshard/pkg/central/cloudprovider/dbclient_moq.go b/fleetshard/pkg/central/cloudprovider/dbclient_moq.go index 260da5de26..0e1d8338e0 100644 --- a/fleetshard/pkg/central/cloudprovider/dbclient_moq.go +++ b/fleetshard/pkg/central/cloudprovider/dbclient_moq.go @@ -22,7 +22,7 @@ var _ DBClient = &DBClientMock{} // EnsureDBDeprovisionedFunc: func(databaseID string, skipFinalSnapshot bool) error { // panic("mock out the EnsureDBDeprovisioned method") // }, -// EnsureDBProvisionedFunc: func(ctx context.Context, databaseID string, passwordSecretName string) error { +// EnsureDBProvisionedFunc: func(ctx context.Context, databaseID string, passwordSecretName string, exportLogs bool) error { // panic("mock out the EnsureDBProvisioned method") // }, // GetDBConnectionFunc: func(databaseID string) (postgres.DBConnection, error) { @@ -39,7 +39,7 @@ type DBClientMock struct { EnsureDBDeprovisionedFunc func(databaseID string, skipFinalSnapshot bool) error // EnsureDBProvisionedFunc mocks the EnsureDBProvisioned method. - EnsureDBProvisionedFunc func(ctx context.Context, databaseID string, passwordSecretName string) error + EnsureDBProvisionedFunc func(ctx context.Context, databaseID string, passwordSecretName string, exportLogs bool) error // GetDBConnectionFunc mocks the GetDBConnection method. GetDBConnectionFunc func(databaseID string) (postgres.DBConnection, error) @@ -61,6 +61,8 @@ type DBClientMock struct { DatabaseID string // PasswordSecretName is the passwordSecretName argument value. PasswordSecretName string + // ExportLogs is the exportLogs argument value. + ExportLogs bool } // GetDBConnection holds details about calls to the GetDBConnection method. GetDBConnection []struct { @@ -110,7 +112,7 @@ func (mock *DBClientMock) EnsureDBDeprovisionedCalls() []struct { } // EnsureDBProvisioned calls EnsureDBProvisionedFunc. -func (mock *DBClientMock) EnsureDBProvisioned(ctx context.Context, databaseID string, passwordSecretName string) error { +func (mock *DBClientMock) EnsureDBProvisioned(ctx context.Context, databaseID string, passwordSecretName string, exportLogs bool) error { if mock.EnsureDBProvisionedFunc == nil { panic("DBClientMock.EnsureDBProvisionedFunc: method is nil but DBClient.EnsureDBProvisioned was just called") } @@ -118,15 +120,17 @@ func (mock *DBClientMock) EnsureDBProvisioned(ctx context.Context, databaseID st Ctx context.Context DatabaseID string PasswordSecretName string + ExportLogs bool }{ Ctx: ctx, DatabaseID: databaseID, PasswordSecretName: passwordSecretName, + ExportLogs: exportLogs, } mock.lockEnsureDBProvisioned.Lock() mock.calls.EnsureDBProvisioned = append(mock.calls.EnsureDBProvisioned, callInfo) mock.lockEnsureDBProvisioned.Unlock() - return mock.EnsureDBProvisionedFunc(ctx, databaseID, passwordSecretName) + return mock.EnsureDBProvisionedFunc(ctx, databaseID, passwordSecretName, exportLogs) } // EnsureDBProvisionedCalls gets all the calls that were made to EnsureDBProvisioned. @@ -137,11 +141,13 @@ func (mock *DBClientMock) EnsureDBProvisionedCalls() []struct { Ctx context.Context DatabaseID string PasswordSecretName string + ExportLogs bool } { var calls []struct { Ctx context.Context DatabaseID string PasswordSecretName string + ExportLogs bool } mock.lockEnsureDBProvisioned.RLock() calls = mock.calls.EnsureDBProvisioned diff --git a/fleetshard/pkg/central/reconciler/reconciler.go b/fleetshard/pkg/central/reconciler/reconciler.go index 97f3e26cd9..25b24c84b9 100644 --- a/fleetshard/pkg/central/reconciler/reconciler.go +++ b/fleetshard/pkg/central/reconciler/reconciler.go @@ -587,7 +587,8 @@ func (r *CentralReconciler) ensureManagedCentralDBInitialized(ctx context.Contex return fmt.Errorf("getting DB password from secret: %w", err) } - err = r.managedDBProvisioningClient.EnsureDBProvisioned(ctx, remoteCentral.Id, dbMasterPassword) + exportLogs := !remoteCentral.Metadata.Internal // do not export DB logs of internal instances (e.g. Probes) + err = r.managedDBProvisioningClient.EnsureDBProvisioned(ctx, remoteCentral.Id, dbMasterPassword, exportLogs) if err != nil { return fmt.Errorf("provisioning RDS DB: %w", err) } diff --git a/fleetshard/pkg/central/reconciler/reconciler_test.go b/fleetshard/pkg/central/reconciler/reconciler_test.go index 8841357f33..b42850504c 100644 --- a/fleetshard/pkg/central/reconciler/reconciler_test.go +++ b/fleetshard/pkg/central/reconciler/reconciler_test.go @@ -128,7 +128,7 @@ func TestReconcileCreateWithManagedDB(t *testing.T) { fakeClient := testutils.NewFakeClientBuilder(t).Build() managedDBProvisioningClient := &cloudprovider.DBClientMock{} - managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string) error { + managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string, _ bool) error { return nil } managedDBProvisioningClient.GetDBConnectionFunc = func(_ string) (postgres.DBConnection, error) { @@ -408,7 +408,7 @@ func TestReconcileDeleteWithManagedDB(t *testing.T) { fakeClient := testutils.NewFakeClientBuilder(t).Build() managedDBProvisioningClient := &cloudprovider.DBClientMock{} - managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string) error { + managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string, _ bool) error { return nil } managedDBProvisioningClient.EnsureDBDeprovisionedFunc = func(_ string, _ bool) error { @@ -436,7 +436,7 @@ func TestReconcileDeleteWithManagedDB(t *testing.T) { deletedCentral.Metadata.DeletionTimestamp = "2006-01-02T15:04:05Z07:00" // trigger deletion - managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string) error { + managedDBProvisioningClient.EnsureDBProvisionedFunc = func(_ context.Context, _ string, _ string, _ bool) error { return nil } statusTrigger, err := r.Reconcile(context.TODO(), deletedCentral) From 5bb5eefb01dc8044067063bf55691773ff260263 Mon Sep 17 00:00:00 2001 From: Kyle Lape Date: Thu, 11 May 2023 09:52:11 -0500 Subject: [PATCH 32/40] Directly manage Alertmanager configuration (#1022) This will enable us to set up a Slack receiver for alerts that we don't want going to PagerDuty. This configuration was pulled directly from the generated version of this secret in one of our data plane clusters and modified to be generated by this Helm chart instead. There is no functional difference between this config and the one generated by the Observability operator. The PagerDuty and Dead Man's Snitch secrets are deleted since those secrets are now used directly in the Alertmanager configuration. --- .secrets.baseline | 9 ++++++ .../01-operator-03-secret-alertmanager.yaml | 31 +++++++++++++++++++ ...1-operator-03-secret-dead-mans-switch.yaml | 8 ----- .../01-operator-03-secret-pagerduty.yaml | 8 ----- .../templates/01-operator-06-cr.yaml | 1 + 5 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml delete mode 100644 dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-dead-mans-switch.yaml delete mode 100644 dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-pagerduty.yaml diff --git a/.secrets.baseline b/.secrets.baseline index 91cef3eb32..6d8fcc6d37 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -316,6 +316,15 @@ "line_number": 86 } ], + "dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml": [ + { + "type": "Secret Keyword", + "filename": "dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml", + "hashed_secret": "3e513f12b341ed3327bea645a728401b5d0f9ddb", + "is_verified": false, + "line_number": 15 + } + ], "fleetshard/pkg/central/cloudprovider/dbclient_moq.go": [ { "type": "Secret Keyword", diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml new file mode 100644 index 0000000000..74322d526c --- /dev/null +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Secret +metadata: + name: rhacs-alertmanager-configuration + namespace: {{ include "observability.namespace" . }} +stringData: + alertmanager.yml: | + global: + resolve_timeout: 5m + route: + receiver: default-receiver + repeat_interval: 12h + routes: + - receiver: managed-rhacs-pagerduty + match: + observability: managed-rhacs + severity: critical + - receiver: managed-rhacs-deadmanssnitch + repeat_interval: 5m + match: + alertname: DeadMansSwitch + observability: managed-rhacs + receivers: + - name: default-receiver + - name: managed-rhacs-pagerduty + pagerduty_configs: + - service_key: {{ .Values.pagerduty.key | quote }} + - name: managed-rhacs-deadmanssnitch + webhook_configs: + - url: {{ .Values.deadMansSwitch.url | quote }} +type: Opaque diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-dead-mans-switch.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-dead-mans-switch.yaml deleted file mode 100644 index 8263f6280f..0000000000 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-dead-mans-switch.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: rhacs-dead-mans-switch - namespace: {{ include "observability.namespace" . }} -stringData: - SNITCH_URL: {{ .Values.deadMansSwitch.url | quote }} -type: Opaque diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-pagerduty.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-pagerduty.yaml deleted file mode 100644 index 8da6ead77b..0000000000 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-pagerduty.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: rhacs-pagerduty - namespace: {{ include "observability.namespace" . }} -stringData: - PAGERDUTY_KEY: {{ .Values.pagerduty.key | quote }} -type: Opaque diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml index d5c8d64215..a9bb38aab2 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-06-cr.yaml @@ -12,6 +12,7 @@ spec: resyncPeriod: {{ .Values.resyncPeriod | quote }} retention: {{ .Values.retention | quote }} selfContained: + alertManagerConfigSecret: rhacs-alertmanager-configuration disableBlackboxExporter: true # Disable logging features of the operator, because we set up the logging operator # ourselves via the logging sub-chart. From 8db31070618fbf09b212d74ee57b3da05f7b3ba0 Mon Sep 17 00:00:00 2001 From: Kyle Lape Date: Thu, 11 May 2023 12:19:09 -0500 Subject: [PATCH 33/40] Change secret key to alertmanager.yaml (#1030) Prometheus operator specifically looks for `alertmanager.yaml`, NOT `alertmanager.yml`. If it cannot find that specific key, it will use a default/dummy congiruation instead, effectively disabling alertmanager. --- .../templates/01-operator-03-secret-alertmanager.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml index 74322d526c..e6f743feab 100644 --- a/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml +++ b/dp-terraform/helm/rhacs-terraform/charts/observability/templates/01-operator-03-secret-alertmanager.yaml @@ -4,7 +4,7 @@ metadata: name: rhacs-alertmanager-configuration namespace: {{ include "observability.namespace" . }} stringData: - alertmanager.yml: | + alertmanager.yaml: | global: resolve_timeout: 5m route: From c35055d72211f11e50ecd8978cf52d01f8056ae6 Mon Sep 17 00:00:00 2001 From: Vlad Bologa Date: Mon, 15 May 2023 14:54:51 +0200 Subject: [PATCH 34/40] ROX-17040: Tag instances created by the Probe service (#1024) --- .../central/cloudprovider/awsclient/rds.go | 48 ++++++++++++++----- .../pkg/central/cloudprovider/dbclient.go | 2 +- .../pkg/central/cloudprovider/dbclient_moq.go | 20 ++++---- .../pkg/central/reconciler/reconciler.go | 3 +- 4 files changed, 47 insertions(+), 26 deletions(-) diff --git a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go index 95ba54ce75..0beb4eeb6b 100644 --- a/fleetshard/pkg/central/cloudprovider/awsclient/rds.go +++ b/fleetshard/pkg/central/cloudprovider/awsclient/rds.go @@ -41,7 +41,11 @@ const ( dbBackupRetentionPeriod = 30 dbInstancePromotionTier = 2 // a tier of 2 (or higher) ensures that readers and writers can scale independently dbCACertificateType = "rds-ca-rsa4096-g1" + dataplaneClusterNameKey = "DataplaneClusterName" + instanceTypeTagKey = "ACSInstanceType" + regularInstaceTagValue = "regular" + testInstanceTagValue = "test" // The Aurora Serverless v2 DB instance configuration in ACUs (Aurora Capacity Units) // 1 ACU = 1 vCPU + 2GB RAM @@ -61,19 +65,19 @@ type RDS struct { } // EnsureDBProvisioned is a blocking function that makes sure that an RDS database was provisioned for a Central -func (r *RDS) EnsureDBProvisioned(ctx context.Context, databaseID, masterPassword string, exportLogs bool) error { +func (r *RDS) EnsureDBProvisioned(ctx context.Context, databaseID, masterPassword string, isTestInstance bool) error { clusterID := getClusterID(databaseID) - if err := r.ensureDBClusterCreated(clusterID, masterPassword, exportLogs); err != nil { + if err := r.ensureDBClusterCreated(clusterID, masterPassword, isTestInstance); err != nil { return fmt.Errorf("ensuring DB cluster %s exists: %w", clusterID, err) } instanceID := getInstanceID(databaseID) - if err := r.ensureDBInstanceCreated(instanceID, clusterID); err != nil { + if err := r.ensureDBInstanceCreated(instanceID, clusterID, isTestInstance); err != nil { return fmt.Errorf("ensuring DB instance %s exists in cluster %s: %w", instanceID, clusterID, err) } failoverID := getFailoverInstanceID(databaseID) - if err := r.ensureDBInstanceCreated(failoverID, clusterID); err != nil { + if err := r.ensureDBInstanceCreated(failoverID, clusterID, isTestInstance); err != nil { return fmt.Errorf("ensuring failover DB instance %s exists in cluster %s: %w", failoverID, clusterID, err) } @@ -117,7 +121,7 @@ func (r *RDS) GetDBConnection(databaseID string) (postgres.DBConnection, error) return connection, nil } -func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string, exportLogs bool) error { +func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string, isTestInstance bool) error { clusterExists, _, err := r.clusterStatus(clusterID) if err != nil { return fmt.Errorf("checking if DB cluster exists: %w", err) @@ -128,7 +132,7 @@ func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string, exportLog glog.Infof("Initiating provisioning of RDS database cluster %s.", clusterID) _, err = r.rdsClient.CreateDBCluster(newCreateCentralDBClusterInput(clusterID, masterPassword, r.dbSecurityGroup, - r.dbSubnetGroup, r.dataplaneClusterName, exportLogs)) + r.dbSubnetGroup, r.dataplaneClusterName, isTestInstance)) if err != nil { return fmt.Errorf("creating DB cluster: %w", err) } @@ -136,7 +140,7 @@ func (r *RDS) ensureDBClusterCreated(clusterID, masterPassword string, exportLog return nil } -func (r *RDS) ensureDBInstanceCreated(instanceID string, clusterID string) error { +func (r *RDS) ensureDBInstanceCreated(instanceID string, clusterID string, isTestInstance bool) error { instanceExists, _, err := r.instanceStatus(instanceID) if err != nil { return fmt.Errorf("checking if DB instance exists: %w", err) @@ -147,7 +151,7 @@ func (r *RDS) ensureDBInstanceCreated(instanceID string, clusterID string) error glog.Infof("Initiating provisioning of RDS database instance %s.", instanceID) _, err = r.rdsClient.CreateDBInstance(newCreateCentralDBInstanceInput(clusterID, instanceID, - r.dataplaneClusterName, r.performanceInsights)) + r.dataplaneClusterName, r.performanceInsights, isTestInstance)) if err != nil { return fmt.Errorf("creating DB instance: %w", err) } @@ -322,7 +326,7 @@ func getFailoverInstanceID(databaseID string) string { return dbPrefix + databaseID + dbFailoverSuffix } -func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnetGroup, dataplaneClusterName string, exportLogs bool) *rds.CreateDBClusterInput { +func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnetGroup, dataplaneClusterName string, isTestInstance bool) *rds.CreateDBClusterInput { input := &rds.CreateDBClusterInput{ DBClusterIdentifier: aws.String(clusterID), Engine: aws.String(dbEngine), @@ -340,18 +344,24 @@ func newCreateCentralDBClusterInput(clusterID, dbPassword, securityGroup, subnet Tags: []*rds.Tag{ { Key: aws.String(dataplaneClusterNameKey), - Value: aws.String(dataplaneClusterName)}, + Value: aws.String(dataplaneClusterName), + }, + { + Key: aws.String(instanceTypeTagKey), + Value: aws.String(getInstanceType(isTestInstance)), + }, }, } - if exportLogs { + // do not export DB logs of internal instances (e.g. Probes) + if !isTestInstance { input.EnableCloudwatchLogsExports = aws.StringSlice([]string{"postgresql"}) } return input } -func newCreateCentralDBInstanceInput(clusterID, instanceID, dataplaneClusterName string, performanceInsights bool) *rds.CreateDBInstanceInput { +func newCreateCentralDBInstanceInput(clusterID, instanceID, dataplaneClusterName string, performanceInsights bool, isTestInstance bool) *rds.CreateDBInstanceInput { return &rds.CreateDBInstanceInput{ DBInstanceClass: aws.String(dbInstanceClass), DBClusterIdentifier: aws.String(clusterID), @@ -365,7 +375,12 @@ func newCreateCentralDBInstanceInput(clusterID, instanceID, dataplaneClusterName Tags: []*rds.Tag{ { Key: aws.String(dataplaneClusterNameKey), - Value: aws.String(dataplaneClusterName)}, + Value: aws.String(dataplaneClusterName), + }, + { + Key: aws.String(instanceTypeTagKey), + Value: aws.String(getInstanceType(isTestInstance)), + }, }, } } @@ -417,6 +432,13 @@ func getFinalSnapshotID(clusterID string) *string { return aws.String(fmt.Sprintf("%s-%s", clusterID, "final")) } +func getInstanceType(isTestInstance bool) string { + if isTestInstance { + return testInstanceTagValue + } + return regularInstaceTagValue +} + type tokenFetcher struct { auth fleetmanager.Auth } diff --git a/fleetshard/pkg/central/cloudprovider/dbclient.go b/fleetshard/pkg/central/cloudprovider/dbclient.go index 9f147ad0db..7a93cf1608 100644 --- a/fleetshard/pkg/central/cloudprovider/dbclient.go +++ b/fleetshard/pkg/central/cloudprovider/dbclient.go @@ -13,7 +13,7 @@ import ( type DBClient interface { // EnsureDBProvisioned is a blocking function that makes sure that a database with the given databaseID was provisioned, // using the master password given as parameter - EnsureDBProvisioned(ctx context.Context, databaseID, passwordSecretName string, exportLogs bool) error + EnsureDBProvisioned(ctx context.Context, databaseID, passwordSecretName string, isTestInstance bool) error // EnsureDBDeprovisioned is a non-blocking function that makes sure that a managed DB is deprovisioned (more // specifically, that its deletion was initiated) EnsureDBDeprovisioned(databaseID string, skipFinalSnapshot bool) error diff --git a/fleetshard/pkg/central/cloudprovider/dbclient_moq.go b/fleetshard/pkg/central/cloudprovider/dbclient_moq.go index 0e1d8338e0..843dde5c06 100644 --- a/fleetshard/pkg/central/cloudprovider/dbclient_moq.go +++ b/fleetshard/pkg/central/cloudprovider/dbclient_moq.go @@ -22,7 +22,7 @@ var _ DBClient = &DBClientMock{} // EnsureDBDeprovisionedFunc: func(databaseID string, skipFinalSnapshot bool) error { // panic("mock out the EnsureDBDeprovisioned method") // }, -// EnsureDBProvisionedFunc: func(ctx context.Context, databaseID string, passwordSecretName string, exportLogs bool) error { +// EnsureDBProvisionedFunc: func(ctx context.Context, databaseID string, passwordSecretName string, isTestInstance bool) error { // panic("mock out the EnsureDBProvisioned method") // }, // GetDBConnectionFunc: func(databaseID string) (postgres.DBConnection, error) { @@ -39,7 +39,7 @@ type DBClientMock struct { EnsureDBDeprovisionedFunc func(databaseID string, skipFinalSnapshot bool) error // EnsureDBProvisionedFunc mocks the EnsureDBProvisioned method. - EnsureDBProvisionedFunc func(ctx context.Context, databaseID string, passwordSecretName string, exportLogs bool) error + EnsureDBProvisionedFunc func(ctx context.Context, databaseID string, passwordSecretName string, isTestInstance bool) error // GetDBConnectionFunc mocks the GetDBConnection method. GetDBConnectionFunc func(databaseID string) (postgres.DBConnection, error) @@ -61,8 +61,8 @@ type DBClientMock struct { DatabaseID string // PasswordSecretName is the passwordSecretName argument value. PasswordSecretName string - // ExportLogs is the exportLogs argument value. - ExportLogs bool + // IsTestInstance is the isTestInstance argument value. + IsTestInstance bool } // GetDBConnection holds details about calls to the GetDBConnection method. GetDBConnection []struct { @@ -112,7 +112,7 @@ func (mock *DBClientMock) EnsureDBDeprovisionedCalls() []struct { } // EnsureDBProvisioned calls EnsureDBProvisionedFunc. -func (mock *DBClientMock) EnsureDBProvisioned(ctx context.Context, databaseID string, passwordSecretName string, exportLogs bool) error { +func (mock *DBClientMock) EnsureDBProvisioned(ctx context.Context, databaseID string, passwordSecretName string, isTestInstance bool) error { if mock.EnsureDBProvisionedFunc == nil { panic("DBClientMock.EnsureDBProvisionedFunc: method is nil but DBClient.EnsureDBProvisioned was just called") } @@ -120,17 +120,17 @@ func (mock *DBClientMock) EnsureDBProvisioned(ctx context.Context, databaseID st Ctx context.Context DatabaseID string PasswordSecretName string - ExportLogs bool + IsTestInstance bool }{ Ctx: ctx, DatabaseID: databaseID, PasswordSecretName: passwordSecretName, - ExportLogs: exportLogs, + IsTestInstance: isTestInstance, } mock.lockEnsureDBProvisioned.Lock() mock.calls.EnsureDBProvisioned = append(mock.calls.EnsureDBProvisioned, callInfo) mock.lockEnsureDBProvisioned.Unlock() - return mock.EnsureDBProvisionedFunc(ctx, databaseID, passwordSecretName, exportLogs) + return mock.EnsureDBProvisionedFunc(ctx, databaseID, passwordSecretName, isTestInstance) } // EnsureDBProvisionedCalls gets all the calls that were made to EnsureDBProvisioned. @@ -141,13 +141,13 @@ func (mock *DBClientMock) EnsureDBProvisionedCalls() []struct { Ctx context.Context DatabaseID string PasswordSecretName string - ExportLogs bool + IsTestInstance bool } { var calls []struct { Ctx context.Context DatabaseID string PasswordSecretName string - ExportLogs bool + IsTestInstance bool } mock.lockEnsureDBProvisioned.RLock() calls = mock.calls.EnsureDBProvisioned diff --git a/fleetshard/pkg/central/reconciler/reconciler.go b/fleetshard/pkg/central/reconciler/reconciler.go index 25b24c84b9..486472ea86 100644 --- a/fleetshard/pkg/central/reconciler/reconciler.go +++ b/fleetshard/pkg/central/reconciler/reconciler.go @@ -587,8 +587,7 @@ func (r *CentralReconciler) ensureManagedCentralDBInitialized(ctx context.Contex return fmt.Errorf("getting DB password from secret: %w", err) } - exportLogs := !remoteCentral.Metadata.Internal // do not export DB logs of internal instances (e.g. Probes) - err = r.managedDBProvisioningClient.EnsureDBProvisioned(ctx, remoteCentral.Id, dbMasterPassword, exportLogs) + err = r.managedDBProvisioningClient.EnsureDBProvisioned(ctx, remoteCentral.Id, dbMasterPassword, remoteCentral.Metadata.Internal) if err != nil { return fmt.Errorf("provisioning RDS DB: %w", err) } From ca5ee3f65a523f3904ec519094fe3881223ea660 Mon Sep 17 00:00:00 2001 From: Vlad Bologa Date: Mon, 15 May 2023 18:54:42 +0200 Subject: [PATCH 35/40] Bump operator to v4.0.1 (#1033) --- dp-terraform/helm/rhacs-terraform/terraform_cluster.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh index a5a65df4c5..fe6595ce7d 100755 --- a/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh +++ b/dp-terraform/helm/rhacs-terraform/terraform_cluster.sh @@ -37,7 +37,7 @@ case $ENVIRONMENT in OBSERVABILITY_OBSERVATORIUM_GATEWAY="https://observatorium-mst.api.nonexistent.openshift.com" OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="false" - OPERATOR_VERSION="v4.0.0" + OPERATOR_VERSION="v4.0.1" FLEETSHARD_SYNC_CPU_REQUEST="${FLEETSHARD_SYNC_CPU_REQUEST:-"200m"}" FLEETSHARD_SYNC_MEMORY_REQUEST="${FLEETSHARD_SYNC_MEMORY_REQUEST:-"512Mi"}" FLEETSHARD_SYNC_CPU_LIMIT="${FLEETSHARD_SYNC_CPU_LIMIT:-"500m"}" @@ -50,7 +50,7 @@ case $ENVIRONMENT in OBSERVABILITY_OBSERVATORIUM_GATEWAY="https://observatorium-mst.api.stage.openshift.com" OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="true" - OPERATOR_VERSION="v4.0.0" + OPERATOR_VERSION="v4.0.1" FLEETSHARD_SYNC_CPU_REQUEST="${FLEETSHARD_SYNC_CPU_REQUEST:-"200m"}" FLEETSHARD_SYNC_MEMORY_REQUEST="${FLEETSHARD_SYNC_MEMORY_REQUEST:-"1024Mi"}" FLEETSHARD_SYNC_CPU_LIMIT="${FLEETSHARD_SYNC_CPU_LIMIT:-"1000m"}" @@ -63,7 +63,7 @@ case $ENVIRONMENT in OBSERVABILITY_OBSERVATORIUM_GATEWAY="https://observatorium-mst.api.openshift.com" OBSERVABILITY_OPERATOR_VERSION="v4.2.1" OPERATOR_USE_UPSTREAM="true" - OPERATOR_VERSION="v4.0.0" + OPERATOR_VERSION="v4.0.1" FLEETSHARD_SYNC_CPU_REQUEST="${FLEETSHARD_SYNC_CPU_REQUEST:-"200m"}" FLEETSHARD_SYNC_MEMORY_REQUEST="${FLEETSHARD_SYNC_MEMORY_REQUEST:-"1024Mi"}" FLEETSHARD_SYNC_CPU_LIMIT="${FLEETSHARD_SYNC_CPU_LIMIT:-"1000m"}" From d8be14b335e3d5ba17df088ffc05c592af063b80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 23:07:29 +0200 Subject: [PATCH 36/40] Bump github.com/prometheus/common from 0.42.0 to 0.43.0 (#1031) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.42.0 to 0.43.0. - [Release notes](https://github.com/prometheus/common/releases) - [Commits](https://github.com/prometheus/common/compare/v0.42.0...v0.43.0) --- updated-dependencies: - dependency-name: github.com/prometheus/common dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 5837f47106..555ed3841a 100644 --- a/go.mod +++ b/go.mod @@ -39,8 +39,8 @@ require ( github.com/pkg/errors v0.9.1 github.com/pmezard/go-difflib v1.0.0 github.com/prometheus/client_golang v1.15.1 - github.com/prometheus/client_model v0.3.0 - github.com/prometheus/common v0.42.0 + github.com/prometheus/client_model v0.4.0 + github.com/prometheus/common v0.43.0 github.com/redhat-developer/app-services-sdk-core/app-services-sdk-go/serviceaccountmgmt v0.0.0-20230323122535-49460b57cc45 github.com/rs/xid v1.5.0 github.com/santhosh-tekuri/jsonschema/v3 v3.1.0 diff --git a/go.sum b/go.sum index bc54f58e1e..554bf30c99 100644 --- a/go.sum +++ b/go.sum @@ -944,8 +944,8 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/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/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -957,8 +957,8 @@ github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16 github.com/prometheus/common v0.24.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= +github.com/prometheus/common v0.43.0/go.mod h1:NCvr5cQIh3Y/gy73/RdVtC9r8xxrxwJnB+2lB3BxrFc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -985,8 +985,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= From 9dac41076ba19ec74d920027b7dcc29cdb6d5778 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 May 2023 00:42:41 +0200 Subject: [PATCH 37/40] Bump github.com/operator-framework/api from 0.17.4 to 0.17.5 (#1001) Bumps [github.com/operator-framework/api](https://github.com/operator-framework/api) from 0.17.4 to 0.17.5. - [Release notes](https://github.com/operator-framework/api/releases) - [Changelog](https://github.com/operator-framework/api/blob/master/RELEASE.md) - [Commits](https://github.com/operator-framework/api/compare/v0.17.4...v0.17.5) --- updated-dependencies: - dependency-name: github.com/operator-framework/api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 555ed3841a..03e66849af 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/onsi/gomega v1.27.6 github.com/openshift-online/ocm-sdk-go v0.1.339 github.com/openshift/api v3.9.1-0.20191201231411-9f834e337466+incompatible - github.com/operator-framework/api v0.17.4 + github.com/operator-framework/api v0.17.5 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/pmezard/go-difflib v1.0.0 diff --git a/go.sum b/go.sum index 554bf30c99..67ea09a7ba 100644 --- a/go.sum +++ b/go.sum @@ -895,8 +895,8 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/operator-framework/api v0.17.4 h1:ZNTnHaCncZ3IQ9KcYXFkEdHZXsZZCBy/HbWU7R4uAZM= -github.com/operator-framework/api v0.17.4/go.mod h1:l/cuwtPxkVUY7fzYgdust2m9tlmb8I4pOvbsUufRb24= +github.com/operator-framework/api v0.17.5 h1:9d0pc6m1Vp4QeS8i5dhl/B0nifhKQdtw+iFsNx0An0Q= +github.com/operator-framework/api v0.17.5/go.mod h1:l/cuwtPxkVUY7fzYgdust2m9tlmb8I4pOvbsUufRb24= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= From 86d166f4327f77c43c5645cd1158309a597d2471 Mon Sep 17 00:00:00 2001 From: Johannes Malsam <60240743+johannes94@users.noreply.github.com> Date: Tue, 16 May 2023 07:47:26 +0200 Subject: [PATCH 38/40] add FM_URL env variable for fmcurl script (#1029) --- scripts/fmcurl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/fmcurl b/scripts/fmcurl index 0afa849006..58bf9cb7de 100755 --- a/scripts/fmcurl +++ b/scripts/fmcurl @@ -13,5 +13,5 @@ shift # Normalize resource=$(echo "$resource" | sed -e 's/^\///;') - -curl -LH "Authorization: Bearer ${OCM_TOKEN}" "http://localhost:8000/api/${resource}" "$@" | jq . +FM_URL="${FM_URL:-http://localhost:8000}" +curl -LH "Authorization: Bearer ${OCM_TOKEN}" "$FM_URL/api/${resource}" "$@" | jq . From 657e37006f42ad881ad0dfc8dc605c1a1ef4ad9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 May 2023 08:54:33 +0200 Subject: [PATCH 39/40] Bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.5 (#1035) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.9.2 to 2.9.5. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.9.2...v2.9.5) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 12 ++++++------ go.sum | 26 +++++++++++++------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 03e66849af..32266133ad 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/lib/pq v1.10.8 github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/ginkgo/v2 v2.9.5 github.com/onsi/gomega v1.27.6 github.com/openshift-online/ocm-sdk-go v0.1.339 github.com/openshift/api v3.9.1-0.20191201231411-9f834e337466+incompatible @@ -52,9 +52,9 @@ require ( github.com/stretchr/testify v1.8.2 github.com/xeipuuv/gojsonschema v1.2.0 github.com/zgalor/weberr v0.8.2 - golang.org/x/net v0.9.0 + golang.org/x/net v0.10.0 golang.org/x/oauth2 v0.7.0 - golang.org/x/sys v0.7.0 + golang.org/x/sys v0.8.0 gopkg.in/resty.v1 v1.12.0 gopkg.in/yaml.v2 v2.4.0 gorm.io/driver/postgres v1.5.0 @@ -98,7 +98,7 @@ require ( github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-jose/go-jose/v3 v3.0.0 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/logr v1.2.4 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect @@ -174,10 +174,10 @@ require ( go.uber.org/zap v1.24.0 // indirect golang.org/x/crypto v0.7.0 // indirect golang.org/x/exp v0.0.0-20220823124025-807a23277127 // indirect - golang.org/x/term v0.7.0 // indirect + golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/tools v0.9.1 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 // indirect diff --git a/go.sum b/go.sum index 67ea09a7ba..9a2715bfc9 100644 --- a/go.sum +++ b/go.sum @@ -353,8 +353,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= @@ -864,8 +864,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= -github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1275,7 +1275,7 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +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/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= @@ -1353,8 +1353,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1505,8 +1505,8 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1514,8 +1514,8 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1613,8 +1613,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From fa26250d5c5922d0713773d3e3563119bc76ab09 Mon Sep 17 00:00:00 2001 From: dhaus67 Date: Tue, 16 May 2023 10:20:15 +0200 Subject: [PATCH 40/40] ROX-17002: Bump stackrox dependency (#1036) --- go.mod | 57 +++--- go.sum | 602 ++++++--------------------------------------------------- 2 files changed, 82 insertions(+), 577 deletions(-) diff --git a/go.mod b/go.mod index 32266133ad..6520f31e6d 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 github.com/hashicorp/go-multierror v1.1.1 - github.com/lib/pq v1.10.8 + github.com/lib/pq v1.10.9 github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.9.5 @@ -59,11 +59,11 @@ require ( gopkg.in/yaml.v2 v2.4.0 gorm.io/driver/postgres v1.5.0 gorm.io/gorm v1.25.0 - helm.sh/helm/v3 v3.11.2 - k8s.io/api v0.26.3 + helm.sh/helm/v3 v3.11.3 + k8s.io/api v0.26.4 k8s.io/apimachinery v0.27.1 - k8s.io/client-go v0.26.3 - k8s.io/utils v0.0.0-20230209194617-a36077c30491 + k8s.io/client-go v0.26.4 + k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 sigs.k8s.io/controller-runtime v0.14.6 sigs.k8s.io/yaml v1.3.0 ) @@ -81,16 +81,15 @@ require ( github.com/blevesearch/go-porterstemmer v1.0.3 // indirect github.com/blevesearch/mmap-go v1.0.2 // indirect github.com/blevesearch/segment v0.9.0 // indirect - github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cloudflare/cfssl v1.6.3 // indirect + github.com/cloudflare/cfssl v1.6.4 // indirect github.com/couchbase/vellum v1.0.2 // indirect github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/distribution v2.8.1+incompatible // indirect - github.com/docker/docker v20.10.24+incompatible // indirect + github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/docker/docker v23.0.5+incompatible // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/emicklei/go-restful/v3 v3.10.1 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect @@ -107,28 +106,28 @@ require ( github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/certificate-transparency-go v1.1.4 // indirect + github.com/google/certificate-transparency-go v1.1.5 // indirect github.com/google/gnostic v0.6.9 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/gorilla/schema v1.2.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.1 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.2 // indirect github.com/huandu/xstrings v1.4.0 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect - github.com/jackc/pgconn v1.13.0 // indirect + github.com/jackc/pgconn v1.14.0 // indirect github.com/jackc/pgio v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgproto3/v2 v2.3.1 // indirect + github.com/jackc/pgproto3/v2 v2.3.2 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect - github.com/jackc/pgtype v1.13.0 // indirect - github.com/jackc/pgx/v4 v4.17.2 // indirect - github.com/jackc/pgx/v5 v5.3.0 // indirect + github.com/jackc/pgtype v1.14.0 // indirect + github.com/jackc/pgx/v4 v4.18.1 // indirect + github.com/jackc/pgx/v5 v5.3.1 // indirect github.com/jackc/puddle v1.3.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect @@ -159,7 +158,7 @@ require ( github.com/shopspring/decimal v1.3.1 // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/stackrox/scanner v0.0.0-20230320080549-581c726c4295 // indirect + github.com/stackrox/scanner v0.0.0-20230411230651-f2265de65ce4 // indirect github.com/steveyen/gtreap v0.1.0 // indirect github.com/tkuchiki/go-timezone v0.2.2 // indirect github.com/weppos/publicsuffix-go v0.20.1-0.20221031080346-e4081aa8a6de // indirect @@ -169,25 +168,25 @@ require ( github.com/zmap/zcrypto v0.0.0-20220402174210-599ec18ecbac // indirect github.com/zmap/zlint/v3 v3.4.0 // indirect go.etcd.io/bbolt v1.3.7 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.9.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.10.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.7.0 // indirect - golang.org/x/exp v0.0.0-20220823124025-807a23277127 // indirect + golang.org/x/crypto v0.8.0 // indirect + golang.org/x/exp v0.0.0-20230124195608-d38c7dcee874 // indirect golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.9.1 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 // indirect - google.golang.org/grpc v1.53.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.54.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiextensions-apiserver v0.26.1 // indirect - k8s.io/component-base v0.26.1 // indirect + k8s.io/component-base v0.26.4 // indirect k8s.io/klog/v2 v2.90.1 // indirect k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect @@ -197,11 +196,11 @@ require ( replace ( github.com/blevesearch/bleve => github.com/stackrox/bleve v0.0.0-20220907150529-4ecbd2543f9e github.com/facebookincubator/nvdtools => github.com/stackrox/nvdtools v0.0.0-20210326191554-5daeb6395b56 - github.com/fullsailor/pkcs7 => github.com/misberner/pkcs7 v0.0.0-20190417093538-a48bf0f78dea + github.com/fullsailor/pkcs7 => github.com/stackrox/pkcs7 v0.0.0-20220914154527-cfdb0aa47179 github.com/gogo/protobuf => github.com/connorgorman/protobuf v1.2.2-0.20210115205927-b892c1b298f7 - github.com/heroku/docker-registry-client => github.com/stackrox/docker-registry-client v0.0.0-20220204234128-07f109db0819 - github.com/operator-framework/helm-operator-plugins => github.com/stackrox/helm-operator v0.0.8-0.20220506091602-3764c49abfb3 - github.com/stackrox/rox => github.com/stackrox/stackrox v0.0.0-20230323083409-e83503a98fb4 + github.com/heroku/docker-registry-client => github.com/stackrox/docker-registry-client v0.0.0-20230411213734-d75b95d65d28 + github.com/operator-framework/helm-operator-plugins => github.com/stackrox/helm-operator v0.0.12-0.20221003092512-fbf71229411f + github.com/stackrox/rox => github.com/stackrox/stackrox v0.0.0-20230516045525-a98c9075fbf9 go.uber.org/zap => github.com/stackrox/zap v1.15.1-0.20200720133746-810fd602fd0f ) diff --git a/go.sum b/go.sum index 9a2715bfc9..26e2e66d75 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,8 @@ -bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= -bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4= 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.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -48,34 +43,18 @@ cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQH cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= 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/spanner v1.17.0/go.mod h1:+17t2ixFwRG4lWRwE+5kipDR9Ef07Jkmc8z0IbMDKUs= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -code.gitea.io/sdk/gitea v0.11.3/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= -contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= -contrib.go.opencensus.io/exporter/stackdriver v0.13.5/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= -contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= -contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= -github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= -github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= @@ -89,21 +68,12 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -116,59 +86,26 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/RoaringBitmap/roaring v1.2.3 h1:yqreLINqIrX22ErkKI0vY47/ivtJr6n+kMhVOVmhWBY= github.com/RoaringBitmap/roaring v1.2.3/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= -github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= 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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= -github.com/apache/beam v2.28.0+incompatible/go.mod h1:/8NX3Qi8vGstDLLaeaU7+lzVEu/ACaQhYjeefzQ0y1o= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= -github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= -github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= -github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/auth0/go-jwt-middleware/v2 v2.1.0 h1:VU4LsC3aFPoqXVyEp8EixU6FNM+ZNIjECszRTvtGQI8= github.com/auth0/go-jwt-middleware/v2 v2.1.0/go.mod h1:CpzcJoleayAACpv+vt0AP8/aYn5TDngsqzLapV1nM4c= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.256 h1:O8VH+bJqgLDguqkH/xQBFz5o/YheeZqgcOYIgsTVWY4= github.com/aws/aws-sdk-go v1.44.256/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blevesearch/blevex v1.0.0 h1:pnilj2Qi3YSEGdWgLj1Pn9Io7ukfXPoQcpAI1Bv8n/o= @@ -179,24 +116,14 @@ github.com/blevesearch/mmap-go v1.0.2/go.mod h1:ol2qBqYaOUsGdm7aRMRrYGgPvnwLe6Y+ github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt22Ac= github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bxcodec/faker/v3 v3.8.1 h1:qO/Xq19V6uHt2xujwpaetgKhraGCapqY2CRWGD/SqcM= github.com/bxcodec/faker/v3 v3.8.1/go.mod h1:DdSDccxF5msjFo5aO4vrobRQ8nIApg8kq3QWPEQD6+o= -github.com/caarlos0/ctrlc v1.0.0/go.mod h1:CdXpj4rmq0q/1Eb44M9zi2nKB0QraNKuRGYGrrHhcQw= github.com/caarlos0/env/v6 v6.10.1 h1:t1mPSxNpei6M5yAeu1qtRdPAK29Nbcf/n3G7x+b3/II= github.com/caarlos0/env/v6 v6.10.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= -github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e/go.mod h1:9IOqJGCPMSc6E5ydlp5NIonxObaeu/Iub/X03EKPVYo= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= 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.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -205,16 +132,12 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL 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/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= -github.com/cloudflare/cfssl v1.6.3 h1:hDhRaGQN55nh0510/7A5QBN3xLoDz/M7nQX80icXvzs= -github.com/cloudflare/cfssl v1.6.3/go.mod h1:Kq0iHKY8sm2klDeQ2Ci/FI+6QdBGuyPWodgTJFLrXIw= -github.com/cloudflare/redoctober v0.0.0-20201013214028-99c99a8e7544/go.mod h1:6Se34jNoqrd8bTxrmJB2Bg2aoZ2CdSXonils9NsiNgo= +github.com/cloudflare/cfssl v1.6.4 h1:NMOvfrEjFfC63K3SGXgAnFdsgkmiq4kATme5BfcqrO8= +github.com/cloudflare/cfssl v1.6.4/go.mod h1:8b3CQMxfWPAeom3zBnGJ6sd+G1NkL5TXqmDXacb+1J0= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210322005330-6414d713912e/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= @@ -223,63 +146,38 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/connorgorman/protobuf v1.2.2-0.20210115205927-b892c1b298f7 h1:YsgEuC8PhmdxkjGb3/l4inKcwVKuPXp1YELVPZkIByA= github.com/connorgorman/protobuf v1.2.2-0.20210115205927-b892c1b298f7/go.mod h1:4n/qquk+A505mqkK9+o7Xth9+UxUWFc4/5faDXkYyyU= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc/v3 v3.5.0 h1:VxKtbccHZxs8juq7RdJntSqtXFtde9YpNpGn0yqgEHw= github.com/coreos/go-oidc/v3 v3.5.0/go.mod h1:ecXRtV4romGPeO6ieExAsUK9cb/3fp9hXNz1tlv8PIM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/couchbase/vellum v1.0.2 h1:BrbP0NKiyDdndMPec8Jjhy0U47CZ0Lgx3xUC2r9rZqw= github.com/couchbase/vellum v1.0.2/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLBJ1uAg1W4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisenkom/go-mssqldb v0.12.0 h1:VtrkII767ttSPNRfFekePK3sctr+joXgO58stqQbtUA= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= -github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.24+incompatible h1:Ugvxm7a8+Gz6vqQYQQ2W7GYq5EUPaAiuPgIfVyI3dYE= -github.com/docker/docker v20.10.24+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v23.0.5+incompatible h1:DaxtlTJjFSnLOXVNUBU1+6kXGz2lpDoEAH6QoxaSg8k= +github.com/docker/docker v23.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-healthcheck v0.1.0 h1:6ZrRr63F5LLsPwSlbZgjgoxNu+o1VlMIhCQWgbfrgU0= github.com/docker/go-healthcheck v0.1.0/go.mod h1:3v7a0338vhH6WnYFtUd66S+9QK3M6xK4sKr7gGrht6o= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= @@ -287,8 +185,6 @@ github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -299,54 +195,36 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ= -github.com/etcd-io/gofail v0.0.0-20190801230047-ad7f989257ca/go.mod h1:49H/RkXP8pKaZy4h0d+NW16rSLhyVBt4o6VLJbmOqDE= 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 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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= 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/fullstorydev/grpcurl v1.8.0/go.mod h1:Mn2jWbdMrQGJQ8UD62uNyMumT2acsZUCkZIqFxsQf1o= -github.com/fullstorydev/grpcurl v1.8.1/go.mod h1:3BWhvHZwNO7iLXaQlojdg5NA6SxUDePli4ecpK1N7gw= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.20.0 h1:bwXW98iMRIWxn+4FgPW7vMrjmbym6HblXALmhjHmQaQ= github.com/getsentry/sentry-go v0.20.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= 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/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= 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-gormigrate/gormigrate/v2 v2.0.2 h1:YV4Lc5yMQX8ahVW0ENPq6sPhrhdkGukc6fPRYmZ1R6Y= github.com/go-gormigrate/gormigrate/v2 v2.0.2/go.mod h1:vld36QpBTfTzLealsHsmQQJK5lSwJt6wiORv+oFX8/I= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-jose/go-jose/v3 v3.0.0 h1:s6rrhirfEP/CGIoc6p+PZAeogN2SxKav6Wp7+dyMWVo= github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= 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/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= 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= @@ -373,14 +251,10 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= 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-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= 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/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= @@ -389,24 +263,19 @@ github.com/goava/di v1.11.1 h1:9NBVyaoa0A5fmAfwWEaA8odHGWdgXTLW4EOti4qo72U= github.com/goava/di v1.11.1/go.mod h1:ToepvYlpTdC7DrFggmv/TyKIuezBLvAXlRxJkOvtemo= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188 h1:+eHOFJl1BaXrQxKX+T06f78590z4qA2ZzBTqahsKSE4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v0.0.0-20210429001901-424d2337a529/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -442,18 +311,13 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/certificate-transparency-go v1.1.2-0.20210422104406-9f33727a7a18/go.mod h1:6CKh9dscIRoqc2kC6YUFICHZMT9NrClyPrRVFrdw1QQ= -github.com/google/certificate-transparency-go v1.1.2-0.20210511102531-373a877eec92/go.mod h1:kXWPsHVPSKVuxPPG69BRtumCbAW537FydV/GH89oBhM= -github.com/google/certificate-transparency-go v1.1.4 h1:hCyXHDbtqlr/lMXU0D4WgbalXL0Zk4dSWWMbPV8VrqY= -github.com/google/certificate-transparency-go v1.1.4/go.mod h1:D6lvbfwckhNrbM9WVl1EVeMOyzC19mpIjMOI4nxBHtQ= +github.com/google/certificate-transparency-go v1.1.5 h1:EVfYyOiMSdwwXd6FJxnh0jYgYj/Dh5n9sXtgIr5+Vj0= +github.com/google/certificate-transparency-go v1.1.5/go.mod h1:CnNCSPt9ptZQ8jDSrqyTmh2dT2MQLKymfGYwXqjQ7YY= 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= @@ -473,18 +337,12 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM= -github.com/google/go-licenses v0.0.0-20210329231322-ce1d9163b77d/go.mod h1:+TYOmkVoJOpwnS0wfdsJCV9CoD5nJYsHoFk/0CrTK4M= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= -github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= 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/licenseclassifier v0.0.0-20210325184830-bb04aff29e72/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= @@ -505,20 +363,11 @@ github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg= -github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/trillian v1.3.14-0.20210409160123-c5ea3abd4a41/go.mod h1:1dPv0CUjNQVFEDuAUFhZql16pw/VlPgaX8qj+g5pVzQ= -github.com/google/trillian v1.3.14-0.20210428093031-b4ddea2e86b1/go.mod h1:FdIJX+NoDk/dIN2ZxTyz5nAJWgf+NSSSriPAMThChTY= -github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -530,90 +379,42 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= -github.com/goreleaser/goreleaser v0.134.0/go.mod h1:ZT6Y2rSYa6NxQzIsdfWWNWAlYGXGbreo66NmE+3X3WQ= -github.com/goreleaser/nfpm v1.2.1/go.mod h1:TtWrABZozuLOttX2uDlYyECfQX7x5XYkVxhjYcR6G9w= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru/v2 v2.0.1 h1:5pv5N1lT1fjLg2VQ5KWc7kmucp2x/kvFOnxuVTqZ6x4= -github.com/hashicorp/golang-lru/v2 v2.0.1/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/golang-lru/v2 v2.0.2 h1:Dwmkdr5Nc/oBiXgJS3CDHNhJtIHkuZ3DZF5twqnfBdU= +github.com/hashicorp/golang-lru/v2 v2.0.2/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/itchyny/gojq v0.12.7 h1:hYPTpeWfrJ1OT+2j6cvBScbhl0TkdwGM4bc66onUSOQ= github.com/itchyny/gojq v0.12.7/go.mod h1:ZdvNHVlzPgUf8pgjnuDTmGfHA/21KoutQUJ3An/xNuw= github.com/itchyny/timefmt-go v0.1.3 h1:7M3LGVDsqcd0VZH2U+x393obrzZisp7C0uEe921iRkU= @@ -629,8 +430,8 @@ github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfG github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= github.com/jackc/pgconn v1.12.0/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= -github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= -github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI= +github.com/jackc/pgconn v1.14.0 h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= @@ -647,8 +448,8 @@ github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1: github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= -github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= @@ -657,18 +458,18 @@ github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCM github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= -github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= -github.com/jackc/pgtype v1.13.0 h1:XkIc7A+1BmZD19bB2NxrtjJweHxQ9agqvM+9URc68Cg= -github.com/jackc/pgtype v1.13.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= +github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= github.com/jackc/pgx/v4 v4.16.0/go.mod h1:N0A9sFdWzkw/Jy1lwoiB64F2+ugFZi987zRxcPez/wI= -github.com/jackc/pgx/v4 v4.17.2 h1:0Ut0rpeKwvIVbMQ1KbMBU4h6wxehBI535LK6Flheh8E= -github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw= -github.com/jackc/pgx/v5 v5.3.0 h1:/NQi8KHMpKWHInxXesC8yD4DhkXPrVhmnwYkjp9AmBA= +github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= +github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= @@ -676,58 +477,38 @@ github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.3.0 h1:eHK/5clGOatcjX3oWGBO/MpxpbHzSwud5EWTSCI+MX0= github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= -github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= -github.com/jhump/protoreflect v1.8.2/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmhodges/clock v0.0.0-20160418191101-880ee4c33548/go.mod h1:hGT6jSUVzF6no3QaDSMLGLEHtHSBSefs+MgcDWnmhmo= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= 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 v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= 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/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/kisom/goutils v1.4.3/go.mod h1:Lp5qrquG7yhYnWzZCI/68Pa/GpFynw//od6EkGnWpac= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -740,82 +521,47 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.5/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.8 h1:3fdt97i/cwSU83+E0hZTC/Xpc9mTZxc6UWSCRcSbxiE= -github.com/lib/pq v1.10.8/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= -github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= 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/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 h1:Z/i1e+gTZrmcGeZyWckaLfucYG6KYOXLWo4co8pZYNY= github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103/go.mod h1:o9YPB5aGP8ob35Vy6+vyq3P3bWe7NQWzf+JLiXCiMaE= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.18/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -825,7 +571,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN 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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= @@ -835,30 +580,13 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m 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 h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= -github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/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.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -867,8 +595,6 @@ github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47 github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -885,124 +611,70 @@ github.com/openshift/api v3.9.1-0.20191201231411-9f834e337466+incompatible/go.mo github.com/openshift/build-machinery-go v0.0.0-20200424080330-082bf86082cc/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc= github.com/openshift/client-go v0.0.0-20200623090625-83993cebb5ae h1:3NJm9lI7FV4ZU3BFmATM61zfTqwLk+11kuyDCyxceW4= github.com/openshift/client-go v0.0.0-20200623090625-83993cebb5ae/go.mod h1:6GlTOU9aZVIQI8mF5W6Pgc+zVHpMc2V486sxD2cd8t4= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/operator-framework/api v0.17.5 h1:9d0pc6m1Vp4QeS8i5dhl/B0nifhKQdtw+iFsNx0An0Q= github.com/operator-framework/api v0.17.5/go.mod h1:l/cuwtPxkVUY7fzYgdust2m9tlmb8I4pOvbsUufRb24= -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= 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/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.24.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= github.com/prometheus/common v0.43.0/go.mod h1:NCvr5cQIh3Y/gy73/RdVtC9r8xxrxwJnB+2lB3BxrFc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/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/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/pseudomuto/protoc-gen-doc v1.4.1/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg= -github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/redhat-developer/app-services-sdk-core/app-services-sdk-go v0.1.0/go.mod h1:JPNDOitDoHoHk5ZPRjfOxHQhE4Br0WtiyV8m43E0rso= github.com/redhat-developer/app-services-sdk-core/app-services-sdk-go/serviceaccountmgmt v0.0.0-20230323122535-49460b57cc45 h1:zB7YuR81lby8jPK9CKIvzKQIrbpooR7R2lr5l3aL5KE= github.com/redhat-developer/app-services-sdk-core/app-services-sdk-go/serviceaccountmgmt v0.0.0-20230323122535-49460b57cc45/go.mod h1:9UjE86bWDvSfAwSAqweZPRNEAjAgI0ZvKYMIoz06qd0= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/santhosh-tekuri/jsonschema/v3 v3.1.0 h1:levPcBfnazlA1CyCMC3asL/QLZkq9pa8tQZOH513zQw= github.com/santhosh-tekuri/jsonschema/v3 v3.1.0/go.mod h1:8kzK2TC0k0YjOForaAHdNEa7ik0fokNa2k30BKJ/W7Y= -github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b/go.mod h1:am+Fp8Bt506lA3Rk3QCmSqmYmLMnPDhdDUcosQCAx+I= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= github.com/segmentio/backo-go v1.0.1 h1:68RQccglxZeyURy93ASB/2kc9QudzgIDexJ927N++y4= @@ -1011,81 +683,52 @@ github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= github.com/selvatico/go-mocket v1.0.7 h1:jbVa7RkoOCzBanQYiYF+VWgySHZogg25fOIKkM38q5k= github.com/selvatico/go-mocket v1.0.7/go.mod h1:7bSWzuNieCdUlanCVu3w0ppS0LvDtPAZmKBIlhoTcp8= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spyzhov/ajson v0.8.0 h1:sFXyMbi4Y/BKjrsfkUZHSjA2JM1184enheSjjoT/zCc= github.com/spyzhov/ajson v0.8.0/go.mod h1:63V+CGM6f1Bu/p4nLIN8885ojBdt88TbLoSFzyqMuVA= -github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stackrox/bleve v0.0.0-20220907150529-4ecbd2543f9e h1:+gtD6n44cUn+WHL68MPZZvOz4ZObSx/cmk8IZ3a6s+w= github.com/stackrox/bleve v0.0.0-20220907150529-4ecbd2543f9e/go.mod h1:iEpZccUqBH5f0BOF0uH78s8+dUaG/OWu4xuYMXBOdGs= -github.com/stackrox/scanner v0.0.0-20230320080549-581c726c4295 h1:lDZqRj8Hnfw4CcxQ8r/u0SEtuflDWdCNwpiM+NCH4pY= -github.com/stackrox/scanner v0.0.0-20230320080549-581c726c4295/go.mod h1:r/euwOKjAP+6eCYmw1yazzI/mJD2BHeAc0vtJVxZsCg= -github.com/stackrox/stackrox v0.0.0-20230323083409-e83503a98fb4 h1:JpkYXmLwGzxZtM9DpaF70QX9l/DJGm/3izZKT3SZGmA= -github.com/stackrox/stackrox v0.0.0-20230323083409-e83503a98fb4/go.mod h1:0VZoqZM3cQLVzEmdSY6oEV/aaGZqAWHSAWP6y33ovWI= +github.com/stackrox/scanner v0.0.0-20230411230651-f2265de65ce4 h1:GfGtz9MCBj9L36d7KGaV6HCEoQY+PAy2fXWvozK0GLs= +github.com/stackrox/scanner v0.0.0-20230411230651-f2265de65ce4/go.mod h1:4SRyOkdm9xp3Bca85Hp3636r7FvnA610Laxn3nbQBzc= +github.com/stackrox/stackrox v0.0.0-20230516045525-a98c9075fbf9 h1:FIyoW/el4TbZpemw9TefNl58dOBlcYq1hFnPjhypK7c= +github.com/stackrox/stackrox v0.0.0-20230516045525-a98c9075fbf9/go.mod h1:Ka7dL/IHtJSTDURMBdGW1cRmlDE9ERRSpDUZBItdWn4= github.com/stackrox/zap v1.15.1-0.20200720133746-810fd602fd0f h1:Ofa3PAa609eSHcHP2kCJDUWUnuEWfiqXhsuppk/QtOE= github.com/stackrox/zap v1.15.1-0.20200720133746-810fd602fd0f/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1097,31 +740,12 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= -github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= -github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= -github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= github.com/tkuchiki/go-timezone v0.2.2 h1:MdHR65KwgVTwWFQrota4SKzc4L5EfuH5SdZZGtk/P2Q= github.com/tkuchiki/go-timezone v0.2.2/go.mod h1:oFweWxYl35C/s7HMVZXiA19Jr9Y0qJHMaG/J2TES4LY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= -github.com/weppos/publicsuffix-go v0.13.1-0.20210123135404-5fd73613514e/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= -github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= github.com/weppos/publicsuffix-go v0.15.1-0.20220329081811-9a40b608a236/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= github.com/weppos/publicsuffix-go v0.20.1-0.20221031080346-e4081aa8a6de h1:eR9jm8DVMdrDUuVji4eOxPK4r/dANDlDBdISSUUV96s= github.com/weppos/publicsuffix-go v0.20.1-0.20221031080346-e4081aa8a6de/go.mod h1:g9GsAxnaxsUuTLZcQdYbi43vT2k9ubZGHsdCy819VLk= @@ -1129,8 +753,6 @@ github.com/weppos/publicsuffix-go/publicsuffix/generator v0.0.0-20220927085643-d github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= -github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= -github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -1138,8 +760,6 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1151,34 +771,14 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zgalor/weberr v0.8.2 h1:rzGP0jQVt8hGSNnzjDAQNHMxNNrf3gUrYhpSgY76+mk= github.com/zgalor/weberr v0.8.2/go.mod h1:cqK89mj84q3PRgqQXQFWJDzCorOd8xOtov/ulOnqDwc= -github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= github.com/zmap/zcertificate v0.0.0-20180516150559-0e3d58b1bac4/go.mod h1:5iU54tB79AMBcySS0R2XIyZBAVmeHranShAFELYx7is= -github.com/zmap/zcrypto v0.0.0-20210123152837-9cf5beac6d91/go.mod h1:R/deQh6+tSWlgI9tb4jNmXxn8nSCabl5ZQsBX9//I/E= -github.com/zmap/zcrypto v0.0.0-20210511125630-18f1e0152cfc/go.mod h1:FM4U1E3NzlNMRnSUTU3P1UdukWhYGifqEsjk9fn7BCk= github.com/zmap/zcrypto v0.0.0-20220402174210-599ec18ecbac h1:+nr36qrZEH0RIYNjcUEnOrCUdcSG3om2ANaFA6iSVWA= github.com/zmap/zcrypto v0.0.0-20220402174210-599ec18ecbac/go.mod h1:egdRkzUylATvPkWMpebZbXhv0FMEMJGX/ur0D3Csk2s= -github.com/zmap/zlint/v3 v3.1.0/go.mod h1:L7t8s3sEKkb0A2BxGy1IWrxt1ZATa1R4QfJZaQOD3zU= github.com/zmap/zlint/v3 v3.4.0 h1:Xs/lrMJY74MpJx/jSx2oVvZBrqlyUyFaLLBRyf68cqg= github.com/zmap/zlint/v3 v3.4.0/go.mod h1:WgepL2QqxyMHnrOWJ54NqrgfMtOyuXr52wEE0tcfo9k= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= -go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= -go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= -go.etcd.io/etcd/etcdctl/v3 v3.5.0-alpha.0/go.mod h1:YPwSaBciV5G6Gpt435AasAG3ROetZsKNUzibRa/++oo= -go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= -go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= -go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= -go.etcd.io/etcd/tests/v3 v3.5.0-alpha.0/go.mod h1:HnrHxjyCuZ8YDt8PYVyQQ5d1ZQfzJVEtQWllr5Vp/30= -go.etcd.io/etcd/v3 v3.5.0-alpha.0/go.mod h1:JZ79d3LV6NUfPjUxXrpiFAYcjhT+06qqw+i28snx8To= -go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1190,50 +790,37 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -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/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= +go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-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= @@ -1244,9 +831,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 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-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220823124025-807a23277127 h1:S4NrSKDfihhl3+4jSTgwoIevKxX9p7Iv9x++OEIptDo= -golang.org/x/exp v0.0.0-20220823124025-807a23277127/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20230124195608-d38c7dcee874 h1:kWC3b7j6Fu09SnEBr7P4PuQyM0R6sqyH9R+EjIvT1nQ= +golang.org/x/exp v0.0.0-20230124195608-d38c7dcee874/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= @@ -1280,31 +866,22 @@ golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73r 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-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181108082009-03003ca0c849/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/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-20191119073136-fc4aabc6c914/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= @@ -1312,7 +889,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL 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-20200421231249-e086a090c8fd/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= @@ -1325,7 +901,6 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -1356,9 +931,7 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1368,8 +941,6 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -1387,7 +958,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ 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-20190412183630-56d357773e84/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= @@ -1399,19 +969,14 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1421,20 +986,16 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/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-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-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-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191119060738-e882bf8e40c2/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-20191220142924-d4481acd189f/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= @@ -1446,7 +1007,6 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200420163511-1957bb5e6d1f/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= @@ -1456,9 +1016,7 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1466,11 +1024,9 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1483,6 +1039,7 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1531,15 +1088,11 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1547,8 +1100,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1557,19 +1108,15 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/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-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/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-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191118222007-07fc4c7f2b98/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= @@ -1588,18 +1135,14 @@ golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapK 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-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/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-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1626,14 +1169,10 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNq golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= 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.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= 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.10.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= @@ -1651,7 +1190,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= @@ -1671,26 +1209,18 @@ google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6r google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.2/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-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/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-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= 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= @@ -1727,10 +1257,7 @@ google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210331142528-b7513248f0ba/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210510173355-fb37daa5cd7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -1769,18 +1296,12 @@ google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 h1:QQF+HdiI4iocoxUjjpLgvTYDHKm99C/VtTBFnfiCJos= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +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/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.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= @@ -1790,7 +1311,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.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.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= @@ -1809,8 +1329,8 @@ google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11 google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/examples v0.0.0-20210902184326-c93e472777b9 h1:nuV5/Eu1pLmXFqSuM5yYgg1z+m3f7+HC1HO1xsmCz9I= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1823,7 +1343,6 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 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.25.1-0.20200805231151-a709e31e5d12/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= @@ -1836,25 +1355,16 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= -gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1879,22 +1389,20 @@ gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqw gorm.io/gorm v1.25.0 h1:+KtYtb2roDz14EQe4bla8CbQlmb9dN3VejSai3lprfU= gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -helm.sh/helm/v3 v3.11.2 h1:P3cLaFxfoxaGLGJVnoPrhf1j86LC5EDINSpYSpMUkkA= -helm.sh/helm/v3 v3.11.2/go.mod h1:Hw+09mfpDiRRKAgAIZlFkPSeOkvv7Acl5McBvQyNPVw= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +helm.sh/helm/v3 v3.11.3 h1:n1X5yaQTP5DYywlBOZMl2gX398Gp6YwFp/IAVj6+5D4= +helm.sh/helm/v3 v3.11.3/go.mod h1:S+sOdQc3BLvt09a9rSlKKVs9x0N/yx+No0y3qFw+FQ8= 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 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.4 h1:SadWOkti5uVN1FAMgxn165+Mw00fuQKyk4Gyn/inxNQ= -honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.18.4/go.mod h1:lOIQAKYgai1+vz9J7YcDZwC26Z0zQewYOGWdyIPUUQ4= -k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= -k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= +k8s.io/api v0.26.4 h1:qSG2PmtcD23BkYiWfoYAcak870eF/hE7NNYBYavTT94= +k8s.io/api v0.26.4/go.mod h1:WwKEXU3R1rgCZ77AYa7DFksd9/BAIKyOmRlbVxgvjCk= k8s.io/apiextensions-apiserver v0.26.1 h1:cB8h1SRk6e/+i3NOrQgSFij1B2S0Y0wDoNl66bn8RMI= k8s.io/apiextensions-apiserver v0.26.1/go.mod h1:AptjOSXDGuE0JICx/Em15PaoO7buLwTs0dGleIHixSM= k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= @@ -1902,11 +1410,11 @@ k8s.io/apimachinery v0.18.4/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCk k8s.io/apimachinery v0.27.1 h1:EGuZiLI95UQQcClhanryclaQE6xjg1Bts6/L3cD7zyc= k8s.io/apimachinery v0.27.1/go.mod h1:5ikh59fK3AJ287GUvpUsryoMFtH9zj/ARfWCo3AyXTM= k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= -k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= -k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= +k8s.io/client-go v0.26.4 h1:/7P/IbGBuT73A+G97trf44NTPSNqvuBREpOfdLbHvD4= +k8s.io/client-go v0.26.4/go.mod h1:6qOItWm3EwxJdl/8p5t7FWtWUOwyMdA8N9ekbW4idpI= k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= -k8s.io/component-base v0.26.1 h1:4ahudpeQXHZL5kko+iDHqLj/FSGAEUnSVO0EBbgDd+4= -k8s.io/component-base v0.26.1/go.mod h1:VHrLR0b58oC035w6YQiBSbtsf0ThuSwXP+p5dD/kAWU= +k8s.io/component-base v0.26.4 h1:Bg2xzyXNKL3eAuiTEu3XE198d6z22ENgFgGQv2GGOUk= +k8s.io/component-base v0.26.4/go.mod h1:lTuWL1Xz/a4e80gmIC3YZG2JCO4xNwtKWHJWeJmsq20= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= @@ -1918,9 +1426,8 @@ k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C 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-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY= -k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrDp+YEkVDAHu7Jwk= +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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= @@ -1936,4 +1443,3 @@ 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= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=