fix(db): fix missing portainer.edb in backups when encrypted portainer db is used [EE-6417] (#11886)

pull/11904/head
Matt Hook 6 months ago committed by GitHub
parent d490061c1f
commit 8aec5adb66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -82,7 +82,8 @@ func CreateBackupArchive(password string, gate *offlinegate.OfflineGate, datasto
} }
func backupDb(backupDirPath string, datastore dataservices.DataStore) error { func backupDb(backupDirPath string, datastore dataservices.DataStore) error {
_, err := datastore.Backup(filepath.Join(backupDirPath, "portainer.db")) dbFileName := datastore.Connection().GetDatabaseFileName()
_, err := datastore.Backup(filepath.Join(backupDirPath, dbFileName))
return err return err
} }

@ -36,6 +36,7 @@ type (
} }
DataStore interface { DataStore interface {
Connection() portainer.Connection
Open() (newStore bool, err error) Open() (newStore bool, err error)
Init() error Init() error
Close() error Close() error

@ -4,6 +4,7 @@ import (
"time" "time"
portainer "github.com/portainer/portainer/api" portainer "github.com/portainer/portainer/api"
"github.com/portainer/portainer/api/database"
"github.com/portainer/portainer/api/dataservices" "github.com/portainer/portainer/api/dataservices"
"github.com/portainer/portainer/api/dataservices/errors" "github.com/portainer/portainer/api/dataservices/errors"
) )
@ -34,6 +35,7 @@ type testDatastore struct {
version dataservices.VersionService version dataservices.VersionService
webhook dataservices.WebhookService webhook dataservices.WebhookService
pendingActionsService dataservices.PendingActionsService pendingActionsService dataservices.PendingActionsService
connection portainer.Connection
} }
func (d *testDatastore) Backup(path string) (string, error) { return "", nil } func (d *testDatastore) Backup(path string) (string, error) { return "", nil }
@ -88,6 +90,10 @@ func (d *testDatastore) PendingActions() dataservices.PendingActionsService {
return d.pendingActionsService return d.pendingActionsService
} }
func (d *testDatastore) Connection() portainer.Connection {
return d.connection
}
func (d *testDatastore) IsErrObjectNotFound(e error) bool { func (d *testDatastore) IsErrObjectNotFound(e error) bool {
return false return false
} }
@ -105,7 +111,8 @@ type datastoreOption = func(d *testDatastore)
// NewDatastore creates new instance of testDatastore. // NewDatastore creates new instance of testDatastore.
// Will apply options before returning, opts will be applied from left to right. // Will apply options before returning, opts will be applied from left to right.
func NewDatastore(options ...datastoreOption) *testDatastore { func NewDatastore(options ...datastoreOption) *testDatastore {
d := testDatastore{} conn, _ := database.NewDatabase("boltdb", "", nil)
d := testDatastore{connection: conn}
for _, o := range options { for _, o := range options {
o(&d) o(&d)
} }

Loading…
Cancel
Save