store backup resource list metadata in object storage (#1709)

* move backedUpItems to pkg/backup.Request struct

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* construct resource itemKey field from gvk

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* store backup resource list metadata in object storage

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* remove debug log

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* fix formatting

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* add missing license blocks and split BackupInfo struct lines

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* add test for checking BackedUpItems matches tarball contents

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>

* add comment to explain test

Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>
This commit is contained in:
Adnan Abdulhussein
2019-08-05 10:15:55 -07:00
committed by Steve Kriss
parent 635dd27e1a
commit 07525bd593
13 changed files with 323 additions and 42 deletions

View File

@@ -570,7 +570,6 @@ func persistBackup(backup *pkgbackup.Request, backupContents, backupLog *os.File
volumeSnapshots := new(bytes.Buffer)
gzw := gzip.NewWriter(volumeSnapshots)
defer gzw.Close()
if err := json.NewEncoder(gzw).Encode(backup.VolumeSnapshots); err != nil {
errs = append(errs, errors.Wrap(err, "error encoding list of volume snapshots"))
@@ -581,7 +580,6 @@ func persistBackup(backup *pkgbackup.Request, backupContents, backupLog *os.File
podVolumeBackups := new(bytes.Buffer)
gzw = gzip.NewWriter(podVolumeBackups)
defer gzw.Close()
if err := json.NewEncoder(gzw).Encode(backup.PodVolumeBackups); err != nil {
errs = append(errs, errors.Wrap(err, "error encoding pod volume backups"))
@@ -590,20 +588,32 @@ func persistBackup(backup *pkgbackup.Request, backupContents, backupLog *os.File
errs = append(errs, errors.Wrap(err, "error closing gzip writer"))
}
backupResourceList := new(bytes.Buffer)
gzw = gzip.NewWriter(backupResourceList)
if err := json.NewEncoder(gzw).Encode(backup.BackupResourceList()); err != nil {
errs = append(errs, errors.Wrap(err, "error encoding backup resource list"))
}
if err := gzw.Close(); err != nil {
errs = append(errs, errors.Wrap(err, "error closing gzip writer"))
}
if len(errs) > 0 {
// Don't upload the JSON files or backup tarball if encoding to json fails.
backupJSON = nil
backupContents = nil
volumeSnapshots = nil
backupResourceList = nil
}
backupInfo := persistence.BackupInfo{
Name: backup.Name,
Metadata: backupJSON,
Contents: backupContents,
Log: backupLog,
PodVolumeBackups: podVolumeBackups,
VolumeSnapshots: volumeSnapshots,
Name: backup.Name,
Metadata: backupJSON,
Contents: backupContents,
Log: backupLog,
PodVolumeBackups: podVolumeBackups,
VolumeSnapshots: volumeSnapshots,
BackupResourceList: backupResourceList,
}
if err := backupStore.PutBackup(backupInfo); err != nil {
errs = append(errs, err)