Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func (br *backupService) UploadBackup(bucket, backupName string, metadata, backup, log io.Reader) error {
- // Uploading the log file is best-effort; if it fails, we log the error but it doesn't impact the
- // backup's status.
- logKey := getBackupLogKey(backupName, backupName)
- if err := br.seekAndPutObject(bucket, logKey, log); err != nil {
- br.logger.WithError(err).WithFields(logrus.Fields{
- "bucket": bucket,
- "key": logKey,
- }).Error("Error uploading log file")
- }
- br.logger.Info("Completed log file upload")
- if metadata == nil {
- // If we don't have metadata, something failed, and there's no point in continuing. An object
- // storage bucket that is missing the metadata file can't be restored, nor can its logs be
- // viewed.
- br.logger.Debug("Metadata was nil, returning early")
- return nil
- }
- // upload metadata file
- metadataKey := getMetadataKey(backupName)
- if err := br.seekAndPutObject(bucket, metadataKey, metadata); err != nil {
- // failure to upload metadata file is a hard-stop
- br.logger.Info("Failed to upload metadata file")
- return err
- }
- br.logger.Info("Completed metadata upload")
- if backup != nil {
- // upload tar file
- if err := br.seekAndPutObject(bucket, getBackupContentsKey(backupName, backupName), backup); err != nil {
- // try to delete the metadata file since the data upload failed
- deleteErr := br.objectStore.DeleteObject(bucket, metadataKey)
- br.logger.Info("Failed to upload backup")
- return kerrors.NewAggregate([]error{err, deleteErr})
- }
- br.logger.Info("Completed backup upload")
- }
- return nil
- }
Add Comment
Please, Sign In to add comment