From 5721f9338e496a5509374c89e1b9ac38660afca0 Mon Sep 17 00:00:00 2001 From: Pierre Curzola Date: Mon, 25 May 2026 18:12:06 +0200 Subject: [PATCH] chore(deps/go-scalingo) update go-scalingo to add the support of continuousbackup events --- CHANGELOG.md | 4 + go.mod | 2 + go.sum | 2 - .../Scalingo/go-scalingo/v11/CHANGELOG.md | 2 + .../Scalingo/go-scalingo/v11/events_addon.go | 118 +++++++++++- .../go-scalingo/v11/events_boilerplate.go | 13 +- .../go-scalingo/v11/events_specialize.go | 6 + .../go-scalingo/v11/events_structs.go | 169 +++++++++--------- vendor/modules.txt | 3 +- 9 files changed, 229 insertions(+), 90 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2cb2501..ff3e34e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,15 @@ ## To Be Released +<<<<<<< HEAD * feat(dbdr/net-peering) Add commands to configure net peerings of DB-DR * build(deps): update `github.com/google/go-github` from v47 to v88 ## 1.45.0 +======= +* chore(deps/go-scalingo) update go-scalingo to add support of continuousbackup events +>>>>>>> 68020435 (chore(deps/go-scalingo) update go-scalingo to add the support of continuousbackup events) * fix(addons): parse `maintenance-window-hour` as an int * feat(session): remove region cache on logout * feat: add JSON output for the `apps` command diff --git a/go.mod b/go.mod index 5f998273..38eab1cd 100644 --- a/go.mod +++ b/go.mod @@ -30,6 +30,8 @@ require ( golang.org/x/text v0.38.0 ) +replace github.com/Scalingo/go-scalingo/v11 => ../go-scalingo + require ( dario.cat/mergo v1.0.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect diff --git a/go.sum b/go.sum index 11fdd881..f9173c46 100644 --- a/go.sum +++ b/go.sum @@ -9,8 +9,6 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63n github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM= github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= -github.com/Scalingo/go-scalingo/v11 v11.1.0 h1:l3OAolYadtOvMLlz0I02AJwTAv+LJJLGrt3KWFShqUY= -github.com/Scalingo/go-scalingo/v11 v11.1.0/go.mod h1:EFkYIeVUQyMliFtciiw7prOpMp6CSngS/OQTPpra5xA= github.com/Scalingo/go-utils/errors/v3 v3.2.1 h1:2w3qUz6MxJa3aqx/biz2G3JquSKsFnfz/E7wrNf/LPc= github.com/Scalingo/go-utils/errors/v3 v3.2.1/go.mod h1:jVVNoOdYFjuNkR/BeEZWNWJVvu4jmyLY4udlsQQyBss= github.com/Scalingo/go-utils/logger v1.12.1 h1:r+RqwOcnsTtKoQdvcNVZCtu0Xhq01tp/3gT6+4Q7AxI= diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md b/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md index 774f675f..b3d6d4a6 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md +++ b/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md @@ -2,6 +2,8 @@ ## To Be Released +* feat(events): add database continuous backup events + ## 11.1.0 * feat: list database endpoints diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/events_addon.go b/vendor/github.com/Scalingo/go-scalingo/v11/events_addon.go index b2b438dd..7e559fa0 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/events_addon.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/events_addon.go @@ -2,6 +2,7 @@ package scalingo import ( "fmt" + "strings" "time" ) @@ -135,11 +136,12 @@ type EventDatabaseAddFeatureType struct { } type EventDatabaseAddFeatureTypeData struct { + EventSecurityTypeData + Feature string `json:"feature"` AddonProviderID string `json:"addon_provider_id"` AddonProviderName string `json:"addon_provider_name"` AddonUUID string `json:"addon_uuid"` - EventSecurityTypeData } func (ev *EventDatabaseAddFeatureType) String() string { @@ -156,11 +158,12 @@ type EventDatabaseRemoveFeatureType struct { } type EventDatabaseRemoveFeatureTypeData struct { + EventSecurityTypeData + Feature string `json:"feature"` AddonProviderID string `json:"addon_provider_id"` AddonProviderName string `json:"addon_provider_name"` AddonUUID string `json:"addon_uuid"` - EventSecurityTypeData } func (ev *EventDatabaseRemoveFeatureType) String() string { @@ -201,6 +204,8 @@ func (ev *EventDatabaseBackupSucceededType) String() string { } type EventDatabaseBackupSucceededTypeData struct { + EventSecurityTypeData + AddonUUID string `json:"addon_uuid"` AddonName string `json:"addon_name"` ResourceID string `json:"resource_id"` @@ -209,7 +214,6 @@ type EventDatabaseBackupSucceededTypeData struct { BackupStatus string `json:"backup_status"` StartedAt time.Time `json:"started_at"` EndedAt time.Time `json:"ended_at"` - EventSecurityTypeData } type EventDatabaseBackupFailedType struct { @@ -254,3 +258,111 @@ type EventDatabaseBackupFailedTypeData struct { EndedAt time.Time `json:"ended_at"` EventSecurityTypeData } + +type EventDatabaseContinuousBackupTypeData struct { + EventSecurityTypeData + + AddonName string `json:"addon_name"` + ResourceID string `json:"resource_id"` + AddonUUID string `json:"addon_uuid"` + Status string `json:"status"` + Error string `json:"error"` + Recoverable bool `json:"recoverable"` + CheckedAt time.Time `json:"checked_at"` + UnrecoverableDurationSeconds int64 `json:"unrecoverable_duration_seconds"` +} + +type EventDatabaseContinuousBackupHealthyType struct { + Event + + TypeData EventDatabaseContinuousBackupHealthyTypeData `json:"type_data"` +} + +func (ev *EventDatabaseContinuousBackupHealthyType) String() string { + return formatDatabaseContinuousBackupString( + ev.TypeData.EventDatabaseContinuousBackupTypeData, + "healthy", + ) +} + +func (ev *EventDatabaseContinuousBackupHealthyType) Who() string { + return ev.Event.Who() +} + +type EventDatabaseContinuousBackupHealthyTypeData struct { + EventDatabaseContinuousBackupTypeData +} + +type EventDatabaseContinuousBackupDelayedType struct { + Event + + TypeData EventDatabaseContinuousBackupDelayedTypeData `json:"type_data"` +} + +func (ev *EventDatabaseContinuousBackupDelayedType) String() string { + return formatDatabaseContinuousBackupString( + ev.TypeData.EventDatabaseContinuousBackupTypeData, + "delayed", + ) +} + +func (ev *EventDatabaseContinuousBackupDelayedType) Who() string { + return ev.Event.Who() +} + +type EventDatabaseContinuousBackupDelayedTypeData struct { + EventDatabaseContinuousBackupTypeData +} + +type EventDatabaseContinuousBackupStaleType struct { + Event + + TypeData EventDatabaseContinuousBackupStaleTypeData `json:"type_data"` +} + +func (ev *EventDatabaseContinuousBackupStaleType) String() string { + return formatDatabaseContinuousBackupString( + ev.TypeData.EventDatabaseContinuousBackupTypeData, + "stale", + ) +} + +func (ev *EventDatabaseContinuousBackupStaleType) Who() string { + return ev.Event.Who() +} + +type EventDatabaseContinuousBackupStaleTypeData struct { + EventDatabaseContinuousBackupTypeData +} + +func formatDatabaseContinuousBackupString(data EventDatabaseContinuousBackupTypeData, status string) string { + message := fmt.Sprintf( + "Point-in-time recovery for database '%s' is %s", + data.ResourceID, status, + ) + details := []string{} + if data.Status != "" && data.Status != "healthy" { + details = append(details, "status: "+formatContinuousBackupStatus(data.Status)) + } + if data.Error == "" { + if len(details) == 0 { + return message + } + + return fmt.Sprintf("%s (%s)", message, strings.Join(details, ", ")) + } + + details = append(details, "error: "+data.Error) + return fmt.Sprintf("%s (%s)", message, strings.Join(details, ", ")) +} + +func formatContinuousBackupStatus(status string) string { + switch status { + case "pgbackrest_error": + return "pgBackRest error" + case "wal_error": + return "WAL error" + default: + return status + } +} diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/events_boilerplate.go b/vendor/github.com/Scalingo/go-scalingo/v11/events_boilerplate.go index 2f4f3be9..6d02bc28 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/events_boilerplate.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/events_boilerplate.go @@ -2,7 +2,6 @@ package scalingo // Do not edit, generated with 'go generate' - func (e *EventNewUserType) TypeDataPtr() interface{} { return &e.TypeData } @@ -139,6 +138,18 @@ func (e *EventDatabaseBackupSucceededType) TypeDataPtr() interface{} { return &e.TypeData } +func (e *EventDatabaseContinuousBackupHealthyType) TypeDataPtr() interface{} { + return &e.TypeData +} + +func (e *EventDatabaseContinuousBackupDelayedType) TypeDataPtr() interface{} { + return &e.TypeData +} + +func (e *EventDatabaseContinuousBackupStaleType) TypeDataPtr() interface{} { + return &e.TypeData +} + func (e *EventNewCollaboratorType) TypeDataPtr() interface{} { return &e.TypeData } diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/events_specialize.go b/vendor/github.com/Scalingo/go-scalingo/v11/events_specialize.go index 12fc834e..79d23237 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/events_specialize.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/events_specialize.go @@ -80,6 +80,12 @@ func (pev *Event) Specialize() DetailedEvent { e = &EventDatabaseBackupFailedType{Event: ev} case EventDatabaseBackupSucceeded: e = &EventDatabaseBackupSucceededType{Event: ev} + case EventDatabaseContinuousBackupHealthy: + e = &EventDatabaseContinuousBackupHealthyType{Event: ev} + case EventDatabaseContinuousBackupDelayed: + e = &EventDatabaseContinuousBackupDelayedType{Event: ev} + case EventDatabaseContinuousBackupStale: + e = &EventDatabaseContinuousBackupStaleType{Event: ev} case EventNewCollaborator: e = &EventNewCollaboratorType{Event: ev} case EventAcceptCollaborator: diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/events_structs.go b/vendor/github.com/Scalingo/go-scalingo/v11/events_structs.go index 53bc8f44..bf5a416e 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/events_structs.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/events_structs.go @@ -74,89 +74,92 @@ const ScalingoDeployUserEmail = "deploy@scalingo.com" type EventTypeName string const ( - EventNewUser EventTypeName = "new_user" - EventNewApp EventTypeName = "new_app" - EventEditApp EventTypeName = "edit_app" - EventDeleteApp EventTypeName = "delete_app" - EventRenameApp EventTypeName = "rename_app" - EventUpdateAppProject EventTypeName = "update_app_project" - EventTransferApp EventTypeName = "transfer_app" - EventRestart EventTypeName = "restart" - EventScale EventTypeName = "scale" - EventStopApp EventTypeName = "stop_app" - EventCrash EventTypeName = "crash" - EventRepeatedCrash EventTypeName = "repeated_crash" - EventDeployment EventTypeName = "deployment" - EventLinkSCM EventTypeName = "link_scm" - EventUpdateSCM EventTypeName = "update_scm" - EventUnlinkSCM EventTypeName = "unlink_scm" - EventNewIntegration EventTypeName = "new_integration" - EventDeleteIntegration EventTypeName = "delete_integration" - EventAuthorizeGithub EventTypeName = "authorize_github" - EventRevokeGithub EventTypeName = "revoke_github" - EventRun EventTypeName = "run" - EventNewDomain EventTypeName = "new_domain" - EventEditDomain EventTypeName = "edit_domain" - EventDeleteDomain EventTypeName = "delete_domain" - EventUpgradeDatabase EventTypeName = "upgrade_database" - EventNewAddon EventTypeName = "new_addon" - EventUpgradeAddon EventTypeName = "upgrade_addon" - EventDeleteAddon EventTypeName = "delete_addon" - EventResumeAddon EventTypeName = "resume_addon" - EventSuspendAddon EventTypeName = "suspend_addon" - EventDatabaseAddFeature EventTypeName = "database/add_feature" - EventDatabaseRemoveFeature EventTypeName = "database/remove_feature" - EventDatabaseBackupFailed EventTypeName = "database_backup_failed" - EventDatabaseBackupSucceeded EventTypeName = "database_backup_succeeded" - EventNewCollaborator EventTypeName = "new_collaborator" - EventAcceptCollaborator EventTypeName = "accept_collaborator" - EventDeleteCollaborator EventTypeName = "delete_collaborator" - EventChangeCollaboratorRole EventTypeName = "change_collaborator_role" - EventNewVariable EventTypeName = "new_variable" - EventEditVariable EventTypeName = "edit_variable" - EventEditVariables EventTypeName = "edit_variables" - EventDeleteVariable EventTypeName = "delete_variable" - EventAddCredit EventTypeName = "add_credit" - EventAddPaymentMethod EventTypeName = "add_payment_method" - EventAddVoucher EventTypeName = "add_voucher" - EventNewKey EventTypeName = "new_key" - EventEditKey EventTypeName = "edit_key" - EventDeleteKey EventTypeName = "delete_key" - EventPaymentAttempt EventTypeName = "payment_attempt" - EventNewAlert EventTypeName = "new_alert" - EventAlert EventTypeName = "alert" - EventDeleteAlert EventTypeName = "delete_alert" - EventNewAutoscaler EventTypeName = "new_autoscaler" - EventEditAutoscaler EventTypeName = "edit_autoscaler" - EventDeleteAutoscaler EventTypeName = "delete_autoscaler" - EventAddonUpdated EventTypeName = "addon_updated" - EventStartRegionMigration EventTypeName = "start_region_migration" - EventNewLogDrain EventTypeName = "new_log_drain" - EventDeleteLogDrain EventTypeName = "delete_log_drain" - EventNewAddonLogDrain EventTypeName = "new_addon_log_drain" - EventDeleteAddonLogDrain EventTypeName = "delete_addon_log_drain" - EventNewNotifier EventTypeName = "new_notifier" - EventEditNotifier EventTypeName = "edit_notifier" - EventDeleteNotifier EventTypeName = "delete_notifier" - EventEditHDSContact EventTypeName = "edit_hds_contact" - EventCreateDataAccessConsent EventTypeName = "create_data_access_consent" - EventNewToken EventTypeName = "new_token" - EventRegenerateToken EventTypeName = "regenerate_token" - EventDeleteToken EventTypeName = "delete_token" - EventTfaEnabled EventTypeName = "tfa_enabled" - EventTfaDisabled EventTypeName = "tfa_disabled" - EventLoginSuccess EventTypeName = "login_success" - EventLoginFailure EventTypeName = "login_failure" - EventLoginLock EventTypeName = "login_lock" - EventLoginUnlockSuccess EventTypeName = "login_unlock_success" - EventPasswordResetQuery EventTypeName = "password_reset_query" - EventPasswordResetSuccess EventTypeName = "password_reset_success" - EventStackChanged EventTypeName = "stack_changed" - EventCreateReviewApp EventTypeName = "create_review_app" - EventDestroyReviewApp EventTypeName = "destroy_review_app" - EventPlanDatabaseMaintenance EventTypeName = "plan_database_maintenance" - EventStartDatabaseMaintenance EventTypeName = "start_database_maintenance" - EventCompleteDatabaseMaintenance EventTypeName = "complete_database_maintenance" + EventNewUser EventTypeName = "new_user" + EventNewApp EventTypeName = "new_app" + EventEditApp EventTypeName = "edit_app" + EventDeleteApp EventTypeName = "delete_app" + EventRenameApp EventTypeName = "rename_app" + EventUpdateAppProject EventTypeName = "update_app_project" + EventTransferApp EventTypeName = "transfer_app" + EventRestart EventTypeName = "restart" + EventScale EventTypeName = "scale" + EventStopApp EventTypeName = "stop_app" + EventCrash EventTypeName = "crash" + EventRepeatedCrash EventTypeName = "repeated_crash" + EventDeployment EventTypeName = "deployment" + EventLinkSCM EventTypeName = "link_scm" + EventUpdateSCM EventTypeName = "update_scm" + EventUnlinkSCM EventTypeName = "unlink_scm" + EventNewIntegration EventTypeName = "new_integration" + EventDeleteIntegration EventTypeName = "delete_integration" + EventAuthorizeGithub EventTypeName = "authorize_github" + EventRevokeGithub EventTypeName = "revoke_github" + EventRun EventTypeName = "run" + EventNewDomain EventTypeName = "new_domain" + EventEditDomain EventTypeName = "edit_domain" + EventDeleteDomain EventTypeName = "delete_domain" + EventUpgradeDatabase EventTypeName = "upgrade_database" + EventNewAddon EventTypeName = "new_addon" + EventUpgradeAddon EventTypeName = "upgrade_addon" + EventDeleteAddon EventTypeName = "delete_addon" + EventResumeAddon EventTypeName = "resume_addon" + EventSuspendAddon EventTypeName = "suspend_addon" + EventDatabaseAddFeature EventTypeName = "database/add_feature" + EventDatabaseRemoveFeature EventTypeName = "database/remove_feature" + EventDatabaseBackupFailed EventTypeName = "database_backup_failed" + EventDatabaseBackupSucceeded EventTypeName = "database_backup_succeeded" + EventDatabaseContinuousBackupHealthy EventTypeName = "database_continuousbackup_healthy" + EventDatabaseContinuousBackupDelayed EventTypeName = "database_continuousbackup_delayed" + EventDatabaseContinuousBackupStale EventTypeName = "database_continuousbackup_stale" + EventNewCollaborator EventTypeName = "new_collaborator" + EventAcceptCollaborator EventTypeName = "accept_collaborator" + EventDeleteCollaborator EventTypeName = "delete_collaborator" + EventChangeCollaboratorRole EventTypeName = "change_collaborator_role" + EventNewVariable EventTypeName = "new_variable" + EventEditVariable EventTypeName = "edit_variable" + EventEditVariables EventTypeName = "edit_variables" + EventDeleteVariable EventTypeName = "delete_variable" + EventAddCredit EventTypeName = "add_credit" + EventAddPaymentMethod EventTypeName = "add_payment_method" + EventAddVoucher EventTypeName = "add_voucher" + EventNewKey EventTypeName = "new_key" + EventEditKey EventTypeName = "edit_key" + EventDeleteKey EventTypeName = "delete_key" + EventPaymentAttempt EventTypeName = "payment_attempt" + EventNewAlert EventTypeName = "new_alert" + EventAlert EventTypeName = "alert" + EventDeleteAlert EventTypeName = "delete_alert" + EventNewAutoscaler EventTypeName = "new_autoscaler" + EventEditAutoscaler EventTypeName = "edit_autoscaler" + EventDeleteAutoscaler EventTypeName = "delete_autoscaler" + EventAddonUpdated EventTypeName = "addon_updated" + EventStartRegionMigration EventTypeName = "start_region_migration" + EventNewLogDrain EventTypeName = "new_log_drain" + EventDeleteLogDrain EventTypeName = "delete_log_drain" + EventNewAddonLogDrain EventTypeName = "new_addon_log_drain" + EventDeleteAddonLogDrain EventTypeName = "delete_addon_log_drain" + EventNewNotifier EventTypeName = "new_notifier" + EventEditNotifier EventTypeName = "edit_notifier" + EventDeleteNotifier EventTypeName = "delete_notifier" + EventEditHDSContact EventTypeName = "edit_hds_contact" + EventCreateDataAccessConsent EventTypeName = "create_data_access_consent" + EventNewToken EventTypeName = "new_token" + EventRegenerateToken EventTypeName = "regenerate_token" + EventDeleteToken EventTypeName = "delete_token" + EventTfaEnabled EventTypeName = "tfa_enabled" + EventTfaDisabled EventTypeName = "tfa_disabled" + EventLoginSuccess EventTypeName = "login_success" + EventLoginFailure EventTypeName = "login_failure" + EventLoginLock EventTypeName = "login_lock" + EventLoginUnlockSuccess EventTypeName = "login_unlock_success" + EventPasswordResetQuery EventTypeName = "password_reset_query" + EventPasswordResetSuccess EventTypeName = "password_reset_success" + EventStackChanged EventTypeName = "stack_changed" + EventCreateReviewApp EventTypeName = "create_review_app" + EventDestroyReviewApp EventTypeName = "destroy_review_app" + EventPlanDatabaseMaintenance EventTypeName = "plan_database_maintenance" + EventStartDatabaseMaintenance EventTypeName = "start_database_maintenance" + EventCompleteDatabaseMaintenance EventTypeName = "complete_database_maintenance" // EventLinkGithub and EventUnlinkGithub events are kept for // retro-compatibility. They are replaced by SCM events. diff --git a/vendor/modules.txt b/vendor/modules.txt index 245fb0b0..41cf1522 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -37,7 +37,7 @@ github.com/ProtonMail/go-crypto/openpgp/packet github.com/ProtonMail/go-crypto/openpgp/s2k github.com/ProtonMail/go-crypto/openpgp/x25519 github.com/ProtonMail/go-crypto/openpgp/x448 -# github.com/Scalingo/go-scalingo/v11 v11.1.0 +# github.com/Scalingo/go-scalingo/v11 v11.1.0 => ../go-scalingo ## explicit; go 1.25.0 github.com/Scalingo/go-scalingo/v11 github.com/Scalingo/go-scalingo/v11/billing @@ -347,3 +347,4 @@ gopkg.in/warnings.v0 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 +# github.com/Scalingo/go-scalingo/v11 => ../go-scalingo