diff --git a/bundle/deploy/lock/release.go b/bundle/deploy/lock/release.go index 26f95edfc..b9ea783f5 100644 --- a/bundle/deploy/lock/release.go +++ b/bundle/deploy/lock/release.go @@ -46,12 +46,10 @@ func (m *release) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics log.Infof(ctx, "Releasing deployment lock") switch m.goal { - case GoalDeploy: - return diag.FromErr(b.Locker.Unlock(ctx)) - case GoalBind, GoalUnbind: - return diag.FromErr(b.Locker.Unlock(ctx)) + case GoalDeploy, GoalBind, GoalUnbind: + return diag.FromErrPrefix("failed to unlock: ", b.Locker.Unlock(ctx)) case GoalDestroy: - return diag.FromErr(b.Locker.Unlock(ctx, locker.AllowLockFileNotExist)) + return diag.FromErrPrefix("failed to unlock: ", b.Locker.Unlock(ctx, locker.AllowLockFileNotExist)) default: return diag.Errorf("unknown goal for lock release: %s", m.goal) } diff --git a/bundle/permissions/workspace_root.go b/bundle/permissions/workspace_root.go index 828b12f50..956909420 100644 --- a/bundle/permissions/workspace_root.go +++ b/bundle/permissions/workspace_root.go @@ -75,7 +75,7 @@ func setPermissions(ctx context.Context, w workspace.WorkspaceInterface, path st obj, err := w.GetStatusByPath(ctx, path) if err != nil { - return err + return fmt.Errorf("GetStatusByPath(%s) failed: %w", path, err) } _, err = w.SetPermissions(ctx, workspace.WorkspaceObjectPermissionsRequest{ @@ -84,7 +84,7 @@ func setPermissions(ctx context.Context, w workspace.WorkspaceInterface, path st AccessControlList: permissions, }) - return err + return fmt.Errorf("SetPermissions(%d) failed: %w", obj.ObjectId, err) } func GetWorkspaceObjectPermissionLevel(bundlePermission string) (workspace.WorkspaceObjectPermissionLevel, error) { diff --git a/libs/diag/diagnostic.go b/libs/diag/diagnostic.go index 0c7699b4e..d22e2f87f 100644 --- a/libs/diag/diagnostic.go +++ b/libs/diag/diagnostic.go @@ -53,6 +53,19 @@ func FromErr(err error) Diagnostics { } } +// FromErrPrefix returns a new error diagnostic from the specified error, if any. +func FromErrPrefix(prefix string, err error) Diagnostics { + if err == nil { + return nil + } + return []Diagnostic{ + { + Severity: Error, + Summary: prefix + err.Error(), + }, + } +} + // FromErr returns a new warning diagnostic from the specified error, if any. func WarningFromErr(err error) Diagnostics { if err == nil {