|
1 | 1 | package backup
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "fmt" |
4 | 5 | "os"
|
5 |
| - "time" |
6 | 6 |
|
7 |
| - "github.com/mariadb-operator/mariadb-operator/pkg/pitr" |
| 7 | + "github.com/mariadb-operator/mariadb-operator/pkg/backup" |
8 | 8 | "github.com/spf13/cobra"
|
9 |
| - ctrl "sigs.k8s.io/controller-runtime" |
10 | 9 | )
|
11 | 10 |
|
12 |
| -var PitrCmd = &cobra.Command{ |
| 11 | +var restoreCommand = &cobra.Command{ |
13 | 12 | Use: "restore",
|
14 | 13 | Short: "Restore.",
|
15 |
| - Long: `Finds the backup file to restore taking into account the target recovery time.`, |
| 14 | + Long: `Finds the backup file to be restored in order to implement point in time recovery.`, |
16 | 15 | Run: func(cmd *cobra.Command, args []string) {
|
| 16 | + if err := setupLogger(cmd); err != nil { |
| 17 | + fmt.Printf("error setting up logger: %v\n", err) |
| 18 | + os.Exit(1) |
| 19 | + } |
| 20 | + logger.Info("Starting restore") |
17 | 21 |
|
18 |
| - setupLog.Info("Starting PITR") |
19 |
| - targetRecoveryTime, err := time.Parse(time.RFC3339, targetRecoveryTimeRaw) |
| 22 | + targetTime, err := getTargetTime() |
20 | 23 | if err != nil {
|
21 |
| - setupLog.Error(err, "error parsing target recovery time") |
| 24 | + logger.Error(err, "error getting target time") |
22 | 25 | os.Exit(1)
|
23 | 26 | }
|
24 |
| - setupLog.Info("Target recovery time", "time", targetRecoveryTime.String()) |
| 27 | + logger.Info("Target time", "time", targetTime.String()) |
25 | 28 |
|
26 | 29 | backupFileNames, err := getBackupFileNames()
|
27 | 30 | if err != nil {
|
28 |
| - setupLog.Error(err, "error reading backup files", "path", backupPath) |
| 31 | + logger.Error(err, "error reading backup files", "path", path) |
29 | 32 | os.Exit(1)
|
30 | 33 | }
|
31 | 34 |
|
32 |
| - targetRecoveryFile, err := pitr.GetTargetRecoveryFile(backupFileNames, targetRecoveryTime, ctrl.Log.WithName("pitr")) |
| 35 | + backupTargetFile, err := backup.GetBackupTargetFile(backupFileNames, targetTime, logger.WithName("point-in-time-recovery")) |
33 | 36 | if err != nil {
|
34 |
| - setupLog.Error(err, "error reading getting target recovery file", "time", targetRecoveryTime) |
| 37 | + logger.Error(err, "error reading getting target recovery file") |
35 | 38 | os.Exit(1)
|
36 | 39 | }
|
| 40 | + backupTargetFilepath := fmt.Sprintf("%s/%s", path, backupTargetFile) |
| 41 | + logger.Info("Target file", "time", backupTargetFilepath) |
37 | 42 |
|
38 |
| - if err := os.WriteFile(backupTargetPath, []byte(targetRecoveryFile), 0644); err != nil { |
39 |
| - setupLog.Error(err, "error writing target recovery file") |
| 43 | + if err := os.WriteFile(targetFilePath, []byte(backupTargetFilepath), 0644); err != nil { |
| 44 | + logger.Error(err, "error writing target file") |
40 | 45 | os.Exit(1)
|
41 | 46 | }
|
42 | 47 | },
|
43 | 48 | }
|
44 | 49 |
|
45 | 50 | func getBackupFileNames() ([]string, error) {
|
46 |
| - entries, err := os.ReadDir(backupPath) |
| 51 | + entries, err := os.ReadDir(path) |
47 | 52 | if err != nil {
|
48 | 53 | return nil, err
|
49 | 54 | }
|
50 | 55 | var fileNames []string
|
51 | 56 | for _, e := range entries {
|
52 | 57 | name := e.Name()
|
53 |
| - if pitr.IsValidBackupFile(name) { |
| 58 | + if backup.IsValidBackupFile(name) { |
54 | 59 | fileNames = append(fileNames, name)
|
55 | 60 | } else {
|
56 |
| - setupLog.V(1).Info("ignoring file", "file", name) |
| 61 | + logger.V(1).Info("ignoring file", "file", name) |
57 | 62 | }
|
58 | 63 | }
|
59 | 64 | return fileNames, nil
|
|
0 commit comments