(req dto.CommonBackup)
| 80 | } |
| 81 | |
| 82 | func (u *BackupService) ContainerBackup(req dto.CommonBackup) error { |
| 83 | timeNow := time.Now().Format(constant.DateTimeSlimLayout) + common.RandStrAndNum(5) |
| 84 | fileName := req.FileName |
| 85 | if fileName == "" { |
| 86 | fileName = fmt.Sprintf("%s_%s.tar.gz", req.Name, timeNow) |
| 87 | } |
| 88 | if !strings.HasSuffix(fileName, ".tar.gz") { |
| 89 | fileName += ".tar.gz" |
| 90 | } |
| 91 | itemDir := fmt.Sprintf("container/%s", req.Name) |
| 92 | backupDir := path.Join(global.Dir.LocalBackupDir, itemDir) |
| 93 | record := &model.BackupRecord{ |
| 94 | Type: req.Type, |
| 95 | Name: req.Name, |
| 96 | SourceAccountIDs: "1", |
| 97 | DownloadAccountID: 1, |
| 98 | FileDir: itemDir, |
| 99 | FileName: fileName, |
| 100 | TaskID: req.TaskID, |
| 101 | Status: constant.StatusWaiting, |
| 102 | Description: req.Description, |
| 103 | } |
| 104 | if err := backupRepo.CreateRecord(record); err != nil { |
| 105 | global.LOG.Errorf("save backup record failed, err: %v", err) |
| 106 | return err |
| 107 | } |
| 108 | if err := handleContainerBackup(req.Name, nil, record.ID, backupDir, fileName, req.TaskID, req.Secret, req.StopBefore); err != nil { |
| 109 | backupRepo.UpdateRecordByMap(record.ID, map[string]interface{}{"status": constant.StatusFailed, "message": err.Error()}) |
| 110 | return err |
| 111 | } |
| 112 | return nil |
| 113 | } |
| 114 | |
| 115 | func (u *BackupService) ContainerRecover(req dto.CommonRecover) error { |
| 116 | return handleContainerRecover(req, nil) |
nothing calls this directly
no test coverage detected