Skip to content
This repository was archived by the owner on Dec 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions pkg/handlers/handler_backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,15 +119,21 @@ func (o *BackupHandler) UpdateTotalSize(ctx context.Context, backup *sysv1.Backu
return o.update(ctx, backup)
}

func (o *BackupHandler) ListBackups(ctx context.Context, owner string, offset, limit int64) (*sysv1.BackupList, error) {
func (o *BackupHandler) ListBackups(ctx context.Context, owner string, offset, limit int64, labelSelector string, fieldSelector string) (*sysv1.BackupList, error) {
c, err := o.factory.Sysv1Client()
if err != nil {
return nil, err
}

backups, err := c.SysV1().Backups(constant.DefaultNamespaceOsFramework).List(ctx, metav1.ListOptions{
LabelSelector: fmt.Sprintf("owner=%s", owner),
})
var listOpts = metav1.ListOptions{}
if labelSelector != "" {
listOpts.LabelSelector = labelSelector
}
if fieldSelector != "" {
listOpts.FieldSelector = fieldSelector
}

backups, err := c.SysV1().Backups(constant.DefaultNamespaceOsFramework).List(ctx, listOpts)

if err != nil {
return nil, err
Expand Down
35 changes: 30 additions & 5 deletions pkg/modules/backup/v1/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func (h *Handler) listBackup(req *restful.Request, resp *restful.Response) {
limit := util.ParseToInt64(req.QueryParameter("limit"))
offset := util.ParseToInt64(req.QueryParameter("offset"))

backups, err := h.handler.GetBackupHandler().ListBackups(ctx, owner, offset, limit)
backups, err := h.handler.GetBackupHandler().ListBackups(ctx, owner, offset, limit, fmt.Sprintf("owner=%s", owner), "")
if err != nil {
log.Errorf("get backups error: %v", err)
response.Success(resp, parseResponseBackupList(backups, nil, 1))
Expand Down Expand Up @@ -215,12 +215,37 @@ func (h *Handler) update(req *restful.Request, resp *restful.Response) {
return
}

r := &ResponseDescribeBackup{ // TODO
Name: backupId,
BackupPolicies: b.BackupPolicies,
log.Infof("received backup update success, id: %s", backupId)

backups, err := h.handler.GetBackupHandler().ListBackups(ctx, backupId, 0, 0, "", fmt.Sprintf("metadata.name=%s", backupId))
if err != nil {
response.HandleError(resp, errors.WithMessagef(err, format, backupId))
return
}

response.Success(resp, r)
result, _, totalPage := handlers.GenericPager(0, 0, backups)

labelsSelector := h.handler.GetBackupHandler().GetBackupIdForLabels(result)
var allSnapshots = new(sysv1.SnapshotList)
for _, ls := range labelsSelector {
snapshots, err := h.handler.GetSnapshotHandler().ListSnapshots(ctx, 0, 0, ls, "")
if err != nil {
log.Errorf("get snapshots error: %v", err)
continue
}
if snapshots == nil || len(snapshots.Items) == 0 {
continue
}
allSnapshots.Items = append(allSnapshots.Items, snapshots.Items...)
}

data := parseResponseBackupList(result, allSnapshots, totalPage)
var items = data.Backups
if len(items) == 0 {
response.Success(resp, nil)
} else {
response.Success(resp, items[0])
}
}

func (h *Handler) deleteBackupPlan(req *restful.Request, resp *restful.Response) {
Expand Down
33 changes: 11 additions & 22 deletions pkg/modules/backup/v1/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,11 @@ type RestoreCancel struct {
Event string `json:"event"`
}

type ResponseBackupListInfo struct {
TotalPage int64 `json:"totalPage"`
Backups []*ResponseBackupList `json:"backups"`
}

type ResponseBackupList struct {
Id string `json:"id"`
Name string `json:"name"`
Expand Down Expand Up @@ -473,10 +478,11 @@ func parseResponseBackupOne(backup *sysv1.Backup, snapshot *sysv1.Snapshot) (map
return result, nil
}

func parseResponseBackupList(data *sysv1.BackupList, snapshots *sysv1.SnapshotList, totalPage int64) map[string]interface{} {
var result = make(map[string]interface{})
func parseResponseBackupList(data *sysv1.BackupList, snapshots *sysv1.SnapshotList, totalPage int64) *ResponseBackupListInfo {
var result = new(ResponseBackupListInfo)
if data == nil || data.Items == nil || len(data.Items) == 0 {
result["backups"] = []struct{}{}
result.TotalPage = 0
result.Backups = []*ResponseBackupList{}
return result
}

Expand Down Expand Up @@ -535,29 +541,12 @@ func parseResponseBackupList(data *sysv1.BackupList, snapshots *sysv1.SnapshotLi
res = append(res, r)
}

result["totalPage"] = totalPage
result["backups"] = res
result.TotalPage = totalPage
result.Backups = res

return result
}

func parseBackupSnapshotDetail(b *SyncBackup) *SnapshotDetails {
return &SnapshotDetails{
Name: b.Name,
CreationTimestamp: b.CreationTimestamp,
Size: b.Size,
Phase: b.Phase,
FailedMessage: b.FailedMessage,
Owner: b.Owner,
BackupType: b.BackupType,
SnapshotId: b.SnapshotId,
RepositoryPasswordHash: b.RepositoryPasswordHash,
BackupConfigName: b.BackupConfigName,
//RefFullyBackupUid: b.RefFullyBackupUid,
//RefFullyBackupName: b.RefFullyBackupName,
}
}

func parseResponseRestoreDetailFromBackupUrl(restore *sysv1.Restore) (*ResponseRestoreDetail, error) {
var result = &ResponseRestoreDetail{}
var backupType, _ = handlers.GetRestoreType(restore)
Expand Down