From d5f9d6d522b372bd2288a34d48f83f28aab2a16e Mon Sep 17 00:00:00 2001 From: shreddedbacon Date: Wed, 31 Jul 2024 20:45:26 +1000 Subject: [PATCH 1/2] fix: backup handler to ignore namespaces lagoon does not care about --- services/backup-handler/go.mod | 2 +- services/backup-handler/go.sum | 4 +-- .../backup-handler/internal/handler/main.go | 29 +++++++++---------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/services/backup-handler/go.mod b/services/backup-handler/go.mod index c7bf9e6241..f76bda16a3 100644 --- a/services/backup-handler/go.mod +++ b/services/backup-handler/go.mod @@ -6,7 +6,7 @@ require ( github.com/google/uuid v1.3.0 github.com/isayme/go-amqp-reconnect v0.0.0-20210303120416-fc811b0bcda2 github.com/streadway/amqp v1.0.0 - github.com/uselagoon/machinery v0.0.22 + github.com/uselagoon/machinery v0.0.25-0.20240731103619-a4140d3a8941 ) require ( diff --git a/services/backup-handler/go.sum b/services/backup-handler/go.sum index 879f0da5d8..ce18ad77e4 100644 --- a/services/backup-handler/go.sum +++ b/services/backup-handler/go.sum @@ -16,5 +16,5 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo= github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/uselagoon/machinery v0.0.22 h1:4FVJRLS8he2NAZYMIJXQqVb25jQ03tF8dNhQbrBMX3g= -github.com/uselagoon/machinery v0.0.22/go.mod h1:NbgtEofjK2XY0iUpk9aMYazIo+W/NI56+UF72jv8zVY= +github.com/uselagoon/machinery v0.0.25-0.20240731103619-a4140d3a8941 h1:clRmB6HIdP9KQtviEQjRTJJYNEWqudBZE3diNFAadnU= +github.com/uselagoon/machinery v0.0.25-0.20240731103619-a4140d3a8941/go.mod h1:NbgtEofjK2XY0iUpk9aMYazIo+W/NI56+UF72jv8zVY= diff --git a/services/backup-handler/internal/handler/main.go b/services/backup-handler/internal/handler/main.go index 94c3c39efd..07970b8669 100644 --- a/services/backup-handler/internal/handler/main.go +++ b/services/backup-handler/internal/handler/main.go @@ -142,21 +142,6 @@ func (b *BackupHandler) WebhookHandler(w http.ResponseWriter, r *http.Request) { log.Printf("unable to decode json data from webhook, error is %s:", err.Error()) } else { // get backups from the API - - token, err := jwt.GenerateAdminToken(b.Endpoint.TokenSigningKey, b.Endpoint.JWTAudience, b.Endpoint.JWTSubject, b.Endpoint.JWTIssuer, time.Now().Unix(), 60) - if err != nil { - // the token wasn't generated - log.Printf("unable to generate token: %v", err) - return - } - l := lclient.New(b.Endpoint.Endpoint, b.Endpoint.JWTSubject, b.Endpoint.Version, &token, false) - ctx := context.Background() - apiEnv, err := lagoon.GetEnvironmentByNamespace(ctx, backupData.Name, l) - if err != nil { - log.Printf("unable to connect to the api, error is %s:", err.Error()) - return - } - // handle restores if backupData.RestoreLocation != "" { singleBackup := Webhook{ @@ -169,11 +154,23 @@ func (b *BackupHandler) WebhookHandler(w http.ResponseWriter, r *http.Request) { // else handle snapshots } else if backupData.Snapshots != nil { // use the name from the webhook to get the environment in the api - backupsEnv, err := lagoon.GetBackupsForEnvironmentByName(ctx, apiEnv.Name, apiEnv.ProjectID, l) + ctx := context.Background() + token, err := jwt.GenerateAdminToken(b.Endpoint.TokenSigningKey, b.Endpoint.JWTAudience, b.Endpoint.JWTSubject, b.Endpoint.JWTIssuer, time.Now().Unix(), 60) + if err != nil { + // the token wasn't generated + log.Printf("unable to generate token: %v", err) + return + } + l := lclient.New(b.Endpoint.Endpoint, b.Endpoint.JWTSubject, b.Endpoint.Version, &token, false) + backupsEnv, err := lagoon.GetBackupsByEnvironmentNamespace(ctx, backupData.Name, l) if err != nil { log.Printf("unable to connect to the api, error is %s:", err.Error()) return } + if backupsEnv.OpenshiftProjectName != backupData.Name { + log.Printf("unable to handle backups, returned environment does not match namespace for backups %s", backupData.Name) + return + } // remove backups that no longer exists from the api for index, backup := range backupsEnv.Backups { // check that the backup in the api is not in the webhook payload From 34a1df8705f3b1c8310a114100020dd82afe19c6 Mon Sep 17 00:00:00 2001 From: shreddedbacon Date: Thu, 1 Aug 2024 16:03:06 +1000 Subject: [PATCH 2/2] chore: use machinery v0.0.25 in backup-handler --- services/backup-handler/go.mod | 2 +- services/backup-handler/go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/services/backup-handler/go.mod b/services/backup-handler/go.mod index f76bda16a3..a6ac3d9416 100644 --- a/services/backup-handler/go.mod +++ b/services/backup-handler/go.mod @@ -6,7 +6,7 @@ require ( github.com/google/uuid v1.3.0 github.com/isayme/go-amqp-reconnect v0.0.0-20210303120416-fc811b0bcda2 github.com/streadway/amqp v1.0.0 - github.com/uselagoon/machinery v0.0.25-0.20240731103619-a4140d3a8941 + github.com/uselagoon/machinery v0.0.25 ) require ( diff --git a/services/backup-handler/go.sum b/services/backup-handler/go.sum index ce18ad77e4..b52e2f0a85 100644 --- a/services/backup-handler/go.sum +++ b/services/backup-handler/go.sum @@ -18,3 +18,5 @@ github.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo= github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/uselagoon/machinery v0.0.25-0.20240731103619-a4140d3a8941 h1:clRmB6HIdP9KQtviEQjRTJJYNEWqudBZE3diNFAadnU= github.com/uselagoon/machinery v0.0.25-0.20240731103619-a4140d3a8941/go.mod h1:NbgtEofjK2XY0iUpk9aMYazIo+W/NI56+UF72jv8zVY= +github.com/uselagoon/machinery v0.0.25 h1:Xaf7f8c+U16HYQBqoChCv37dCBdH+aUgOkuHG5YXLCo= +github.com/uselagoon/machinery v0.0.25/go.mod h1:NbgtEofjK2XY0iUpk9aMYazIo+W/NI56+UF72jv8zVY=