Skip to content

Commit af4d8f2

Browse files
committed
[PBM-1244] send backup type to agent on delete-backup
1 parent 02dc667 commit af4d8f2

File tree

6 files changed

+49
-19
lines changed

6 files changed

+49
-19
lines changed

cmd/pbm-agent/delete.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,14 @@ func (a *Agent) Delete(ctx context.Context, d *ctrl.DeleteBackupCmd, opid ctrl.O
8787
return
8888
}
8989

90+
bcpType, err := backup.ParseDeleteBackupType(string(d.Type))
91+
if err != nil {
92+
l.Error("parse type field: %v", err.Error())
93+
return
94+
}
95+
9096
l.Info("deleting backups older than %v", t)
91-
err = backup.DeleteBackupBefore(ctx, a.leadConn, t, "")
97+
err = backup.DeleteBackupBefore(ctx, a.leadConn, t, bcpType)
9298
if err != nil {
9399
l.Error("deleting: %v", err)
94100
return

cmd/pbm/delete.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,10 @@ func deleteManyBackup(ctx context.Context, pbm sdk.Client, d *deleteBcpOpts) (sd
122122
return sdk.NoOpID, errors.Errorf("--older-than %q is after now %q", providedTime, realTime)
123123
}
124124

125-
bcpType := sdk.ParseBackupType(d.bcpType)
125+
bcpType, err := backup.ParseDeleteBackupType(d.bcpType)
126+
if err != nil {
127+
return sdk.NoOpID, errors.Wrap(err, "parse --type")
128+
}
126129
backups, err := sdk.ListDeleteBackupBefore(ctx, pbm, ts, bcpType)
127130
if err != nil {
128131
return sdk.NoOpID, errors.Wrap(err, "fetch backup list")
@@ -141,7 +144,7 @@ func deleteManyBackup(ctx context.Context, pbm sdk.Client, d *deleteBcpOpts) (sd
141144
}
142145
}
143146

144-
cid, err := pbm.DeleteBackupBefore(ctx, ts)
147+
cid, err := pbm.DeleteBackupBefore(ctx, ts, sdk.DeleteBackupBeforeOptions{Type: bcpType})
145148
return cid, errors.Wrap(err, "schedule delete")
146149
}
147150

pbm/backup/delete.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,26 @@ import (
2020

2121
const SelectiveBackup defs.BackupType = "selective"
2222

23+
var ErrInvalidDeleteBackupType = errors.New("invalid backup type")
24+
25+
func ParseDeleteBackupType(s string) (defs.BackupType, error) {
26+
if s == "" {
27+
return "", nil
28+
}
29+
30+
switch s {
31+
case
32+
string(defs.PhysicalBackup),
33+
string(defs.ExternalBackup),
34+
string(defs.IncrementalBackup),
35+
string(defs.LogicalBackup),
36+
string(SelectiveBackup):
37+
return defs.BackupType(s), nil
38+
}
39+
40+
return "", ErrInvalidDeleteBackupType
41+
}
42+
2343
var (
2444
ErrBackupInProgress = errors.New("backup is in progress")
2545
ErrIncrementalBackup = errors.New("backup is incremental")

sdk/impl.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,12 @@ func (c *clientImpl) DeleteBackupByName(ctx context.Context, name string) (Comma
151151
return CommandID(opid.String()), err
152152
}
153153

154-
func (c *clientImpl) DeleteBackupBefore(ctx context.Context, beforeTS Timestamp) (CommandID, error) {
155-
opid, err := ctrl.SendDeleteBackupBefore(ctx, c.conn, beforeTS, "")
154+
func (c *clientImpl) DeleteBackupBefore(
155+
ctx context.Context,
156+
beforeTS Timestamp,
157+
options DeleteBackupBeforeOptions,
158+
) (CommandID, error) {
159+
opid, err := ctrl.SendDeleteBackupBefore(ctx, c.conn, beforeTS, options.Type)
156160
return CommandID(opid.String()), err
157161
}
158162

sdk/sdk.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ type GetAllRestoresOptions struct {
9292
Limit int64
9393
}
9494

95+
type DeleteBackupBeforeOptions struct {
96+
Type BackupType
97+
}
98+
9599
type Command = ctrl.Cmd
96100

97101
type Client interface {
@@ -112,7 +116,7 @@ type Client interface {
112116
CancelBackup(ctx context.Context) (CommandID, error)
113117

114118
DeleteBackupByName(ctx context.Context, name string) (CommandID, error)
115-
DeleteBackupBefore(ctx context.Context, beforeTS Timestamp) (CommandID, error)
119+
DeleteBackupBefore(ctx context.Context, beforeTS Timestamp, options DeleteBackupBeforeOptions) (CommandID, error)
116120

117121
DeleteOplogRange(ctx context.Context, until Timestamp) (CommandID, error)
118122

sdk/util.go

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,13 @@ import (
1414
"github.com/percona/percona-backup-mongodb/pbm/topo"
1515
)
1616

17-
var errMissedClusterTime = errors.New("missed cluster time")
18-
19-
func ParseBackupType(s string) BackupType {
20-
switch s {
21-
case
22-
string(PhysicalBackup),
23-
string(ExternalBackup),
24-
string(IncrementalBackup),
25-
string(LogicalBackup),
26-
string(SelectiveBackup):
27-
return BackupType(s)
28-
}
17+
var (
18+
errMissedClusterTime = errors.New("missed cluster time")
19+
errInvalidDeleteBackupType = backup.ErrInvalidDeleteBackupType
20+
)
2921

30-
return ""
22+
func ParseDeleteBackupType(s string) (BackupType, error) {
23+
return backup.ParseDeleteBackupType(s)
3124
}
3225

3326
func IsHeartbeatStale(clusterTime, other Timestamp) bool {

0 commit comments

Comments
 (0)