From 4d5eb50176025715f0e0e8b18bf60966576e4ca5 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 16 Jun 2025 15:35:33 +0200 Subject: [PATCH] [BUGFIX] Do not attempt to clear approvals when there are none --- approvals/approvals.go | 11 +++++++++++ provider/kubernetes/approvals.go | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/approvals/approvals.go b/approvals/approvals.go index b61cb96f..1209a92d 100644 --- a/approvals/approvals.go +++ b/approvals/approvals.go @@ -36,6 +36,9 @@ type Manager interface { // Rejects Approval Reject(identifier string) (*types.Approval, error) + // If the approval exists + Exists(identifier string) bool + Get(identifier string) (*types.Approval, error) List() ([]*types.Approval, error) Delete(*types.Approval) error @@ -372,6 +375,14 @@ func (m *DefaultManager) Delete(approval *types.Approval) error { return m.store.DeleteApproval(existing) } +func (m *DefaultManager) Exists(identifier string) bool { + _, err := m.Get(identifier) + if err != nil { + return false + } + return true +} + func (m *DefaultManager) Archive(identifier string) error { existing, err := m.Get(identifier) if err != nil { diff --git a/provider/kubernetes/approvals.go b/provider/kubernetes/approvals.go index 19c6479c..5aad8830 100644 --- a/provider/kubernetes/approvals.go +++ b/provider/kubernetes/approvals.go @@ -37,7 +37,12 @@ func (p *Provider) checkForApprovals(event *types.Event, plans []*UpdatePlan) (a // updateComplete is called after we successfully update resource func (p *Provider) updateComplete(plan *UpdatePlan) error { - return p.approvalManager.Archive(getApprovalIdentifier(plan.Resource.Identifier, plan.NewVersion)) + approvalIdentifier := getApprovalIdentifier(plan.Resource.Identifier, plan.NewVersion) + // There might be no approvals for this plan + if p.approvalManager.Exists(approvalIdentifier) { + return p.approvalManager.Archive(approvalIdentifier) + } + return nil } func getInt(key string, labels map[string]string, annotations map[string]string) (int, error) {