From 048685ba1fdfeb97fd88c1ec3dc4fcf6f899a30a Mon Sep 17 00:00:00 2001 From: Ranish Karim Date: Fri, 2 May 2025 09:51:17 -0700 Subject: [PATCH 1/2] US1000701 Fixed undeploy bundle issue. It was not using correct mutation and also RepoStatus was not cleaning up as well. --- internal/graphman/generated-modified.go | 6 +++--- pkg/gateway/reconcile/gateway.go | 18 ++++++++++++++++++ pkg/gateway/reconcile/l7repositories.go | 6 +++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/internal/graphman/generated-modified.go b/internal/graphman/generated-modified.go index 3ee2b281..91fcbcc9 100644 --- a/internal/graphman/generated-modified.go +++ b/internal/graphman/generated-modified.go @@ -9535,10 +9535,10 @@ func installBundleGeneric( return &data_, err_ } -// The query or mutation executed by installBundleGeneric. +// The query or mutation executed by deleteBundleGeneric. const deleteBundleGeneric_Operation = ` -mutation installBundleGeneric { - installBundleEntities { +mutation deleteBundle { + deleteBundleEntities { summary } } diff --git a/pkg/gateway/reconcile/gateway.go b/pkg/gateway/reconcile/gateway.go index dcc36ead..fc342e87 100644 --- a/pkg/gateway/reconcile/gateway.go +++ b/pkg/gateway/reconcile/gateway.go @@ -1427,6 +1427,24 @@ func ReconcileDBGateway(ctx context.Context, params Params, kind string, gateway return nil } +func deleteRepoRefStatus(ctx context.Context, params Params, repository securityv1.Repository) (err error) { + repositoryStatuses := params.Instance.Status.RepositoryStatus + for i, repositoryStatus := range repositoryStatuses { + if repositoryStatus.Name == repository.Name { + repositoryStatuses = append(repositoryStatuses[:i], repositoryStatuses[i+1:]...) + break + } + } + + params.Instance.Status.RepositoryStatus = repositoryStatuses + err = params.Client.Status().Update(ctx, params.Instance) + if err != nil { + params.Log.V(2).Info("failed to delete gateway status", "name", params.Instance.Name, "namespace", params.Instance.Namespace, "message", err.Error()) + return err + } + return nil +} + func updateRepoRefStatus(ctx context.Context, params Params, repository securityv1.Repository, referenceType securityv1.RepositoryReferenceType, commit string, applyError error) (err error) { gatewayStatus := params.Instance.Status var conditions []securityv1.RepositoryCondition diff --git a/pkg/gateway/reconcile/l7repositories.go b/pkg/gateway/reconcile/l7repositories.go index a9e4bbc5..c5d50853 100644 --- a/pkg/gateway/reconcile/l7repositories.go +++ b/pkg/gateway/reconcile/l7repositories.go @@ -87,7 +87,11 @@ func reconcileDynamicRepository(ctx context.Context, params Params, repoRef secu err = SyncGateway(ctx, params, *gwUpdReq) - _ = updateRepoRefStatus(ctx, params, *gwUpdReq.repository, gwUpdReq.repositoryReference.Type, gwUpdReq.checksum, err) + if delete && err == nil { + _ = deleteRepoRefStatus(ctx, params, *gwUpdReq.repository) + } else { + _ = updateRepoRefStatus(ctx, params, *gwUpdReq.repository, gwUpdReq.repositoryReference.Type, gwUpdReq.checksum, err) + } gwUpdReq = nil if err != nil { return err From 3e823c8de113ae79ec2b128803c6dc405474b8e6 Mon Sep 17 00:00:00 2001 From: Ranish Karim Date: Fri, 2 May 2025 11:22:33 -0700 Subject: [PATCH 2/2] US1000701 handled disabled repo case --- pkg/gateway/reconcile/gateway.go | 10 +++++++--- pkg/gateway/reconcile/l7repositories.go | 8 ++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/gateway/reconcile/gateway.go b/pkg/gateway/reconcile/gateway.go index fc342e87..c662fe86 100644 --- a/pkg/gateway/reconcile/gateway.go +++ b/pkg/gateway/reconcile/gateway.go @@ -1427,11 +1427,15 @@ func ReconcileDBGateway(ctx context.Context, params Params, kind string, gateway return nil } -func deleteRepoRefStatus(ctx context.Context, params Params, repository securityv1.Repository) (err error) { +func disabledOrDeleteRepoRefStatus(ctx context.Context, params Params, repository securityv1.Repository, disabled bool) (err error) { repositoryStatuses := params.Instance.Status.RepositoryStatus for i, repositoryStatus := range repositoryStatuses { if repositoryStatus.Name == repository.Name { - repositoryStatuses = append(repositoryStatuses[:i], repositoryStatuses[i+1:]...) + if disabled { + repositoryStatuses[i].Enabled = false + } else { + repositoryStatuses = append(repositoryStatuses[:i], repositoryStatuses[i+1:]...) + } break } } @@ -1439,7 +1443,7 @@ func deleteRepoRefStatus(ctx context.Context, params Params, repository security params.Instance.Status.RepositoryStatus = repositoryStatuses err = params.Client.Status().Update(ctx, params.Instance) if err != nil { - params.Log.V(2).Info("failed to delete gateway status", "name", params.Instance.Name, "namespace", params.Instance.Namespace, "message", err.Error()) + params.Log.V(2).Info("failed to disabled/delete gateway status", "name", params.Instance.Name, "namespace", params.Instance.Namespace, "message", err.Error()) return err } return nil diff --git a/pkg/gateway/reconcile/l7repositories.go b/pkg/gateway/reconcile/l7repositories.go index c5d50853..741a4d9d 100644 --- a/pkg/gateway/reconcile/l7repositories.go +++ b/pkg/gateway/reconcile/l7repositories.go @@ -13,7 +13,7 @@ func ExternalRepository(ctx context.Context, params Params) error { for _, repoRef := range gateway.Spec.App.RepositoryReferences { if repoRef.Enabled { - err := reconcileDynamicRepository(ctx, params, repoRef, false) + err := reconcileDynamicRepository(ctx, params, repoRef, false, false) if err != nil { params.Log.Error(err, "failed to reconcile repository reference", "name", gateway.Name, "repository", repoRef.Name, "namespace", gateway.Namespace) return err @@ -34,7 +34,7 @@ func ExternalRepository(ctx context.Context, params Params) error { } if !found || disabled { repoRef := securityv1.RepositoryReference{Name: repoStatus.Name, Type: "dynamic", Encryption: securityv1.BundleEncryption{Passphrase: "delete"}} - err := reconcileDynamicRepository(ctx, params, repoRef, true) + err := reconcileDynamicRepository(ctx, params, repoRef, true, disabled) if err != nil { params.Log.Error(err, "failed to remove repository reference", "name", gateway.Name, "repository", repoRef.Name, "namespace", gateway.Namespace) return err @@ -45,7 +45,7 @@ func ExternalRepository(ctx context.Context, params Params) error { return nil } -func reconcileDynamicRepository(ctx context.Context, params Params, repoRef securityv1.RepositoryReference, delete bool) (err error) { +func reconcileDynamicRepository(ctx context.Context, params Params, repoRef securityv1.RepositoryReference, delete bool, disabled bool) (err error) { gateway := params.Instance repository := &securityv1.Repository{} @@ -88,7 +88,7 @@ func reconcileDynamicRepository(ctx context.Context, params Params, repoRef secu err = SyncGateway(ctx, params, *gwUpdReq) if delete && err == nil { - _ = deleteRepoRefStatus(ctx, params, *gwUpdReq.repository) + _ = disabledOrDeleteRepoRefStatus(ctx, params, *gwUpdReq.repository, disabled) } else { _ = updateRepoRefStatus(ctx, params, *gwUpdReq.repository, gwUpdReq.repositoryReference.Type, gwUpdReq.checksum, err) }