Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix golang-ci failures #508

Merged
merged 6 commits into from
Feb 20, 2024
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
3 changes: 2 additions & 1 deletion client/incus_storage_buckets.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ func (r *ProtocolIncus) CreateStoragePoolBucketBackup(poolName string, bucketNam
return op, nil
}

// DeleteStorageBucketBackup deletes an existing storage bucket backup.
// DeleteStoragePoolBucketBackup deletes an existing storage bucket backup.
func (r *ProtocolIncus) DeleteStoragePoolBucketBackup(pool string, bucketName string, name string) (Operation, error) {
err := r.CheckExtension("storage_bucket_backup")
if err != nil {
Expand Down Expand Up @@ -337,6 +337,7 @@ func (r *ProtocolIncus) GetStoragePoolBucketBackupFile(pool string, bucketName s
return &resp, nil
}

// CreateStoragePoolBucketFromBackup creates a new storage bucket from a backup.
func (r *ProtocolIncus) CreateStoragePoolBucketFromBackup(pool string, args StoragePoolBucketBackupArgs) (Operation, error) {
if !r.HasExtension("storage_bucket_backup") {
return nil, fmt.Errorf(`The server is missing the required "custom_volume_backup" API extension`)
Expand Down
14 changes: 9 additions & 5 deletions cmd/incus/storage_bucket.go
Original file line number Diff line number Diff line change
Expand Up @@ -1201,6 +1201,7 @@ type cmdStorageBucketExport struct {
flagCompressionAlgorithm string
}

// Command generates the command definition.
func (c *cmdStorageBucketExport) Command() *cobra.Command {
cmd := &cobra.Command{}
cmd.Use = usage("export", i18n.G("[<remote>:]<pool> <bucket> [<path>]"))
Expand All @@ -1219,6 +1220,7 @@ func (c *cmdStorageBucketExport) Command() *cobra.Command {
return cmd
}

// Run runs the actual command logic.
func (c *cmdStorageBucketExport) Run(cmd *cobra.Command, args []string) error {
// Quick checks.
exit, err := c.global.CheckArgs(cmd, args, 2, 3)
Expand All @@ -1242,11 +1244,11 @@ func (c *cmdStorageBucketExport) Run(cmd *cobra.Command, args []string) error {
return fmt.Errorf(i18n.G("Missing bucket name"))
}

client := pool.server
s := pool.server

// If a target was specified, use the bucket on the given member.
if c.storageBucket.flagTarget != "" {
client = client.UseTarget(c.storageBucket.flagTarget)
s = s.UseTarget(c.storageBucket.flagTarget)
}

req := api.StorageBucketBackupsPost{
Expand All @@ -1255,7 +1257,7 @@ func (c *cmdStorageBucketExport) Run(cmd *cobra.Command, args []string) error {
CompressionAlgorithm: c.flagCompressionAlgorithm,
}

op, err := client.CreateStoragePoolBucketBackup(pool.name, bucketName, req)
op, err := s.CreateStoragePoolBucketBackup(pool.name, bucketName, req)
if err != nil {
return fmt.Errorf(i18n.G("Failed to create backup: %v"), err)
}
Expand Down Expand Up @@ -1300,7 +1302,7 @@ func (c *cmdStorageBucketExport) Run(cmd *cobra.Command, args []string) error {

defer func() {
// Delete backup after we're done
op, err := client.DeleteStoragePoolBucketBackup(pool.name, bucketName, backupName)
op, err := s.DeleteStoragePoolBucketBackup(pool.name, bucketName, backupName)
if err == nil {
_ = op.Wait()
}
Expand Down Expand Up @@ -1332,7 +1334,7 @@ func (c *cmdStorageBucketExport) Run(cmd *cobra.Command, args []string) error {
}

// Export tarball
_, err = client.GetStoragePoolBucketBackupFile(pool.name, bucketName, backupName, &backupFileRequest)
_, err = s.GetStoragePoolBucketBackupFile(pool.name, bucketName, backupName, &backupFileRequest)
if err != nil {
_ = os.Remove(targetName)
progress.Done("")
Expand All @@ -1350,6 +1352,7 @@ type cmdStorageBucketImport struct {
storageBucket *cmdStorageBucket
}

// Command generates the command definition.
func (c *cmdStorageBucketImport) Command() *cobra.Command {
cmd := &cobra.Command{}
cmd.Use = usage("import", i18n.G("[<remote>:]<pool> <backup file> [<bucket>]"))
Expand All @@ -1365,6 +1368,7 @@ func (c *cmdStorageBucketImport) Command() *cobra.Command {
return cmd
}

// Run runs the actual command logic.
func (c *cmdStorageBucketImport) Run(cmd *cobra.Command, args []string) error {
conf := c.global.conf

Expand Down
12 changes: 6 additions & 6 deletions cmd/incusd/backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -646,8 +646,8 @@ func bucketBackupCreate(s *state.State, args db.StoragePoolBucketBackup, project
l.Debug("Bucket backup started")
defer l.Debug("Bucket backup finished")

revert := revert.New()
defer revert.Fail()
reverter := revert.New()
defer reverter.Fail()

pool, err := storagePools.LoadByName(s, poolName)
if err != nil {
Expand All @@ -666,7 +666,7 @@ func bucketBackupCreate(s *state.State, args db.StoragePoolBucketBackup, project
return fmt.Errorf("Failed creating backup record: %w", err)
}

revert.Add(func() {
reverter.Add(func() {
_ = s.DB.Cluster.Transaction(context.Background(), func(ctx context.Context, tx *db.ClusterTx) error {
return tx.DeleteStoragePoolBucketBackup(ctx, args.Name)
})
Expand Down Expand Up @@ -700,7 +700,7 @@ func bucketBackupCreate(s *state.State, args db.StoragePoolBucketBackup, project
return err
}

revert.Add(func() { _ = os.Remove(backupsPath) })
reverter.Add(func() { _ = os.Remove(backupsPath) })
}

target := internalUtil.VarPath("backups", "buckets", pool.Name(), project.StorageBucket(projectName, backupRow.Name))
Expand All @@ -713,7 +713,7 @@ func bucketBackupCreate(s *state.State, args db.StoragePoolBucketBackup, project
}

defer func() { _ = tarFileWriter.Close() }()
revert.Add(func() { _ = os.Remove(target) })
reverter.Add(func() { _ = os.Remove(target) })

// Create the tarball.
tarPipeReader, tarPipeWriter := io.Pipe()
Expand Down Expand Up @@ -782,7 +782,7 @@ func bucketBackupCreate(s *state.State, args db.StoragePoolBucketBackup, project
return fmt.Errorf("Error closing tar file: %w", err)
}

revert.Success()
reverter.Success()
return nil
}

Expand Down
10 changes: 5 additions & 5 deletions cmd/incusd/storage_buckets.go
Original file line number Diff line number Diff line change
Expand Up @@ -1174,8 +1174,8 @@ func storagePoolBucketKeyPut(d *Daemon, r *http.Request) response.Response {
}

func createStoragePoolBucketFromBackup(s *state.State, r *http.Request, requestProjectName string, projectName string, data io.Reader, pool string, bucketName string) response.Response {
revert := revert.New()
defer revert.Fail()
reverter := revert.New()
defer reverter.Fail()

// Create temporary file to store uploaded backup data.
backupFile, err := os.CreateTemp(internalUtil.VarPath("backups"), fmt.Sprintf("%s_", backup.WorkingDirPrefix))
Expand All @@ -1184,7 +1184,7 @@ func createStoragePoolBucketFromBackup(s *state.State, r *http.Request, requestP
}

defer func() { _ = os.Remove(backupFile.Name()) }()
revert.Add(func() { _ = backupFile.Close() })
reverter.Add(func() { _ = backupFile.Close() })

// Stream uploaded backup data into temporary file.
_, err = io.Copy(backupFile, data)
Expand Down Expand Up @@ -1224,7 +1224,7 @@ func createStoragePoolBucketFromBackup(s *state.State, r *http.Request, requestP
"pool": bInfo.Pool,
})

runRevert := revert.Clone()
runRevert := reverter.Clone()

run := func(op *operations.Operation) error {
defer func() { _ = backupFile.Close() }()
Expand Down Expand Up @@ -1252,6 +1252,6 @@ func createStoragePoolBucketFromBackup(s *state.State, r *http.Request, requestP
return response.InternalError(err)
}

revert.Success()
reverter.Success()
return operations.OperationResponse(op)
}
26 changes: 13 additions & 13 deletions cmd/incusd/storage_buckets_backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -333,13 +333,13 @@ func storagePoolBucketBackupsPost(d *Daemon, r *http.Request) response.Response
length := len(base)
max := 0

for _, backup := range backups {
for _, entry := range backups {
// Ignore backups not containing base.
if !strings.HasPrefix(backup, base) {
if !strings.HasPrefix(entry, base) {
continue
}

substr := backup[length:]
substr := entry[length:]
var num int
count, err := fmt.Sscanf(substr, "%d", &num)
if err != nil || count != 1 {
Expand All @@ -361,7 +361,7 @@ func storagePoolBucketBackupsPost(d *Daemon, r *http.Request) response.Response

fullName := bucketName + internalInstance.SnapshotDelimiter + req.Name

backup := func(op *operations.Operation) error {
do := func(op *operations.Operation) error {
args := db.StoragePoolBucketBackup{
Name: fullName,
BucketID: bucket.ID,
Expand All @@ -383,7 +383,7 @@ func storagePoolBucketBackupsPost(d *Daemon, r *http.Request) response.Response
resources["storage_buckets"] = []api.URL{*api.NewURL().Path(version.APIVersion, "storage-pools", poolName, "buckets", bucketName)}
resources["backups"] = []api.URL{*api.NewURL().Path(version.APIVersion, "storage-pools", poolName, "buckets", bucketName, "backups", req.Name)}

op, err := operations.OperationCreate(s, request.ProjectParam(r), operations.OperationClassTask, operationtype.BucketBackupCreate, resources, nil, backup, nil, nil, r)
op, err := operations.OperationCreate(s, request.ProjectParam(r), operations.OperationClassTask, operationtype.BucketBackupCreate, resources, nil, do, nil, nil, r)
if err != nil {
return response.InternalError(err)
}
Expand Down Expand Up @@ -475,12 +475,12 @@ func storagePoolBucketBackupGet(d *Daemon, r *http.Request) response.Response {

fullName := bucketName + internalInstance.SnapshotDelimiter + backupName

backup, err := storagePoolBucketBackupLoadByName(s, projectName, poolName, fullName)
entry, err := storagePoolBucketBackupLoadByName(s, projectName, poolName, fullName)
if err != nil {
return response.SmartError(err)
}

return response.SyncResponse(true, backup.Render())
return response.SyncResponse(true, entry.Render())
}

// swagger:operation POST /1.0/storage-pools/{poolName}/buckets/{bucketName}/backups/{backupName} storage storage_pool_buckets_backup_post
Expand Down Expand Up @@ -570,15 +570,15 @@ func storagePoolBucketBackupPost(d *Daemon, r *http.Request) response.Response {

oldName := bucketName + internalInstance.SnapshotDelimiter + backupName

backup, err := storagePoolBucketBackupLoadByName(s, projectName, poolName, oldName)
entry, err := storagePoolBucketBackupLoadByName(s, projectName, poolName, oldName)
if err != nil {
return response.SmartError(err)
}

newName := bucketName + internalInstance.SnapshotDelimiter + req.Name

rename := func(op *operations.Operation) error {
err := backup.Rename(newName)
err := entry.Rename(newName)
if err != nil {
return err
}
Expand Down Expand Up @@ -670,13 +670,13 @@ func storagePoolBucketBackupDelete(d *Daemon, r *http.Request) response.Response

fullName := bucketName + internalInstance.SnapshotDelimiter + backupName

backup, err := storagePoolBucketBackupLoadByName(s, projectName, poolName, fullName)
entry, err := storagePoolBucketBackupLoadByName(s, projectName, poolName, fullName)
if err != nil {
return response.SmartError(err)
}

remove := func(op *operations.Operation) error {
err := backup.Delete()
err := entry.Delete()
if err != nil {
return err
}
Expand Down Expand Up @@ -799,7 +799,7 @@ func storagePoolBucketBackupLoadByName(s *state.State, projectName, poolName, ba
}

bucketName := strings.Split(backupName, "/")[0]
backup := backup.NewBucketBackup(s, projectName, poolName, bucketName, b.ID, b.Name, b.CreationDate, b.ExpiryDate)
entry := backup.NewBucketBackup(s, projectName, poolName, bucketName, b.ID, b.Name, b.CreationDate, b.ExpiryDate)

return backup, nil
return entry, nil
}
8 changes: 4 additions & 4 deletions internal/server/backup/backup_bucket.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ func (b *BucketBackup) Rename(newName string) error {
newParentName, _, _ := api.GetParentAndSnapshotName(newName)
newParentBackupsPath := internalUtil.VarPath("backups", "buckets", b.poolName, project.StorageBucket(b.projectName, newParentName))

revert := revert.New()
defer revert.Fail()
reverter := revert.New()
defer reverter.Fail()

// Create the new backup path if doesn't exist.
if !util.PathExists(newParentBackupsPath) {
Expand All @@ -101,7 +101,7 @@ func (b *BucketBackup) Rename(newName string) error {
return err
}

revert.Add(func() { _ = os.Rename(newBackupPath, oldBackupPath) })
reverter.Add(func() { _ = os.Rename(newBackupPath, oldBackupPath) })

// Check if we can remove the old parent directory.
empty, _ := internalUtil.PathIsEmpty(oldParentBackupsPath)
Expand All @@ -120,7 +120,7 @@ func (b *BucketBackup) Rename(newName string) error {
return err
}

revert.Success()
reverter.Success()
return nil
}

Expand Down
3 changes: 1 addition & 2 deletions internal/server/db/backups.go
Original file line number Diff line number Diff line change
Expand Up @@ -708,8 +708,7 @@ FROM storage_buckets_backups`
return backups, nil
}

// RenameVolumeBackup renames a volume backup from the given current name
// to the new one.
// RenameBucketBackup renames a bucket backup from the given current name to the new one.
func (c *ClusterTx) RenameBucketBackup(ctx context.Context, oldName, newName string) error {
str := "UPDATE storage_buckets_backups SET name = ? WHERE name = ?"
stmt, err := c.tx.Prepare(str)
Expand Down
8 changes: 4 additions & 4 deletions internal/server/storage/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -7203,8 +7203,8 @@ func (b *backend) CreateBucketFromBackup(srcBackup backup.Info, srcData io.ReadS
return fmt.Errorf("Storage pool does not support buckets")
}

revert := revert.New()
defer revert.Fail()
reverter := revert.New()
defer reverter.Fail()

bucketRequest := api.StorageBucketsPost{
Name: srcBackup.Name,
Expand All @@ -7217,7 +7217,7 @@ func (b *backend) CreateBucketFromBackup(srcBackup backup.Info, srcData io.ReadS
return err
}

revert.Add(func() { _ = b.DeleteBucket(srcBackup.Project, bucketRequest.Name, op) })
reverter.Add(func() { _ = b.DeleteBucket(srcBackup.Project, bucketRequest.Name, op) })

// Upload all keys from the backup.
for _, bucketKey := range srcBackup.Config.BucketKeys {
Expand Down Expand Up @@ -7245,7 +7245,7 @@ func (b *backend) CreateBucketFromBackup(srcBackup backup.Info, srcData io.ReadS
return err
}

revert.Success()
reverter.Success()
return nil
}

Expand Down
3 changes: 3 additions & 0 deletions internal/server/storage/backend_mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -356,14 +356,17 @@ func (b *mockBackend) CreateCustomVolumeFromISO(projectName string, volName stri
return nil
}

// GenerateBucketBackupConfig returns the backup config entry for this bucket.
func (b *mockBackend) GenerateBucketBackupConfig(projectName string, bucketName string, op *operations.Operation) (*backupConfig.Config, error) {
return nil, nil
}

// BackupBucket backups up a bucket to a tarball.
func (b *mockBackend) BackupBucket(projectName string, bucketName string, tarWriter *instancewriter.InstanceTarWriter, op *operations.Operation) error {
return nil
}

// CreateBucketFromBackup creates a bucket from a tarball.
func (b *mockBackend) CreateBucketFromBackup(srcBackup backup.Info, srcData io.ReadSeeker, op *operations.Operation) error {
return nil
}
9 changes: 5 additions & 4 deletions internal/server/storage/s3/transfer_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ func (t TransferManager) DownloadAllFiles(bucketName string, tarWriter *instance
return nil
}

// UploadAllFiles uploads all the provided files to the bucket.
func (t TransferManager) UploadAllFiles(bucketName string, srcData io.ReadSeeker) error {
logger.Debugf("Uploading all files to bucket %s", bucketName)
logger.Debugf("Endpoint: %s", t.getEndpoint())
Expand All @@ -114,7 +115,7 @@ func (t TransferManager) UploadAllFiles(bucketName string, srcData io.ReadSeeker
}

defer func() { _ = os.RemoveAll(mountPath) }()
logger.Debugf("Created temp mounth path %s", mountPath)
logger.Debugf("Created temp mount path %s", mountPath)

tr, cancelFunc, err := backup.TarReader(srcData, nil, mountPath)
if err != nil {
Expand Down Expand Up @@ -148,20 +149,20 @@ func (t TransferManager) UploadAllFiles(bucketName string, srcData io.ReadSeeker

func (t TransferManager) getMinioClient() (*minio.Client, error) {
bucketLookup := minio.BucketLookupPath
credentials := credentials.NewStaticV4(t.accessKey, t.secretKey, "")
creds := credentials.NewStaticV4(t.accessKey, t.secretKey, "")

if t.isSecureEndpoint() {
return minio.New(t.getEndpoint(), &minio.Options{
BucketLookup: bucketLookup,
Creds: credentials,
Creds: creds,
Secure: true,
Transport: getTransport(),
})
}

return minio.New(t.getEndpoint(), &minio.Options{
BucketLookup: bucketLookup,
Creds: credentials,
Creds: creds,
Secure: false,
})
}
Expand Down
Loading