Skip to content

Commit 10d5e9e

Browse files
tanmoysrtmergify[bot]
authored andcommitted
feat: s3 support added in pv backup (#265)
(cherry picked from commit 36054ef)
1 parent b271a21 commit 10d5e9e

File tree

14 files changed

+219
-26
lines changed

14 files changed

+219
-26
lines changed

cmd/config.cluster.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ postgresql:
4444
database: swiftwave
4545
time_zone: Asia/Kolkata
4646
ssl_mode: disable # disable or require
47+
persistent_volume_backup:
48+
s3_config:
49+
enabled: false # true or false
50+
endpoint: ""
51+
region: ""
52+
bucket: ""
53+
access_key_id: ""
54+
secret_access_key: ""
55+
force_path_style: false
4756
pubsub:
4857
mode: remote # local or remote
4958
buffer_length: 1000

cmd/config.standalone.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ postgresql:
4444
database: swiftwave
4545
time_zone: Asia/Kolkata
4646
ssl_mode: disable # disable or require
47+
persistent_volume_backup:
48+
s3_config:
49+
enabled: false # true or false
50+
endpoint: ""
51+
region: ""
52+
bucket: ""
53+
access_key_id: ""
54+
secret_access_key: ""
55+
force_path_style: false
4756
pubsub:
4857
mode: local # local or remote
4958
buffer_length: 1000

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.21.7
44

55
require (
66
github.com/99designs/gqlgen v0.17.43
7+
github.com/aws/aws-sdk-go v1.50.18
78
github.com/docker/docker v25.0.3+incompatible
89
github.com/fatih/color v1.16.0
910
github.com/go-git/go-git/v5 v5.11.0
@@ -60,6 +61,7 @@ require (
6061
github.com/go-logr/stdr v1.2.2 // indirect
6162
github.com/inconshreveable/mousetrap v1.1.0 // indirect
6263
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
64+
github.com/jmespath/go-jmespath v0.4.0 // indirect
6365
github.com/kevinburke/ssh_config v1.2.0 // indirect
6466
github.com/klauspost/compress v1.16.7 // indirect
6567
github.com/moby/patternmatcher v0.5.0 // indirect

go.sum

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig
2727
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
2828
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
2929
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
30+
github.com/aws/aws-sdk-go v1.50.18 h1:h+FQjxp5sSDqFKScTUXHVahBlqduKtiR0qM18evcvag=
31+
github.com/aws/aws-sdk-go v1.50.18/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
3032
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
3133
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
3234
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
@@ -123,6 +125,10 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
123125
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
124126
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
125127
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
128+
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
129+
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
130+
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
131+
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
126132
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
127133
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
128134
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
@@ -351,6 +357,7 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD
351357
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
352358
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
353359
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
360+
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
354361
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
355362
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
356363
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

swiftwave_service/core/pv_backup.operations.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package core
22

33
import (
44
"context"
5+
"github.com/swiftwave-org/swiftwave/swiftwave_service/uploader"
6+
"github.com/swiftwave-org/swiftwave/system_config"
57
"gorm.io/gorm"
68
"log"
79
"os"
@@ -35,11 +37,19 @@ func (persistentVolumeBackup *PersistentVolumeBackup) Update(ctx context.Context
3537
return tx.Error
3638
}
3739

38-
func (persistentVolumeBackup *PersistentVolumeBackup) Delete(ctx context.Context, db gorm.DB, dataDir string) error {
39-
if persistentVolumeBackup.File != "" && persistentVolumeBackup.Type == LocalBackup {
40-
err := os.Remove(filepath.Join(dataDir, persistentVolumeBackup.File))
41-
if err != nil {
42-
log.Println("error deleting file: ", err)
40+
func (persistentVolumeBackup *PersistentVolumeBackup) Delete(ctx context.Context, db gorm.DB, dataDir string, config system_config.S3Config) error {
41+
if persistentVolumeBackup.File != "" {
42+
if persistentVolumeBackup.Type == LocalBackup {
43+
err := os.Remove(filepath.Join(dataDir, persistentVolumeBackup.File))
44+
if err != nil {
45+
log.Println("error deleting file: ", err)
46+
}
47+
}
48+
if persistentVolumeBackup.Type == S3Backup {
49+
err := uploader.DeleteFileFromS3(persistentVolumeBackup.File, config.Bucket, config)
50+
if err != nil {
51+
log.Println("error deleting file from s3: ", err)
52+
}
4353
}
4454
}
4555
tx := db.Delete(persistentVolumeBackup)
@@ -52,7 +62,7 @@ func FindPersistentVolumeBackupsByPersistentVolumeId(ctx context.Context, db gor
5262
return persistentVolumeBackups, tx.Error
5363
}
5464

55-
func DeletePersistentVolumeBackupsByPersistentVolumeId(ctx context.Context, db gorm.DB, persistentVolumeId uint, dataDir string) error {
65+
func DeletePersistentVolumeBackupsByPersistentVolumeId(ctx context.Context, db gorm.DB, persistentVolumeId uint, dataDir string, config system_config.S3Config) error {
5666
transaction := db.Begin()
5767
var persistentVolumeBackups []*PersistentVolumeBackup
5868
tx := transaction.Where("persistent_volume_id = ?", persistentVolumeId).Find(&persistentVolumeBackups)
@@ -61,7 +71,7 @@ func DeletePersistentVolumeBackupsByPersistentVolumeId(ctx context.Context, db g
6171
return tx.Error
6272
}
6373
for _, p := range persistentVolumeBackups {
64-
err := p.Delete(ctx, *transaction, dataDir)
74+
err := p.Delete(ctx, *transaction, dataDir, config)
6575
if err != nil {
6676
log.Println("error deleting persistentVolumeBackup: ", err)
6777
}

swiftwave_service/core/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ type BackupType string
124124

125125
const (
126126
LocalBackup BackupType = "local"
127+
S3Backup BackupType = "s3"
127128
)
128129

129130
// BackupStatus : status of backup

swiftwave_service/graphql/model/models_gen.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swiftwave_service/graphql/persistent_volume.resolvers.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swiftwave_service/graphql/persistent_volume_backup.resolvers.go

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swiftwave_service/graphql/schema/persistent_volume_backup.graphqls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
enum PersistentVolumeBackupType {
22
local
3+
s3
34
}
45

56
enum PersistentVolumeBackupStatus {

0 commit comments

Comments
 (0)