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..c662fe86 100644 --- a/pkg/gateway/reconcile/gateway.go +++ b/pkg/gateway/reconcile/gateway.go @@ -1427,6 +1427,28 @@ func ReconcileDBGateway(ctx context.Context, params Params, kind string, gateway return nil } +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 { + if disabled { + repositoryStatuses[i].Enabled = false + } else { + 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 disabled/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..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{} @@ -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 { + _ = disabledOrDeleteRepoRefStatus(ctx, params, *gwUpdReq.repository, disabled) + } else { + _ = updateRepoRefStatus(ctx, params, *gwUpdReq.repository, gwUpdReq.repositoryReference.Type, gwUpdReq.checksum, err) + } gwUpdReq = nil if err != nil { return err