[lxc-devel] [lxd/master] lxd/response: Show wrapped errors

stgraber on Github lxc-bot at linuxcontainers.org
Wed Aug 14 00:09:40 UTC 2019


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 354 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190813/0896937e/attachment.bin>
-------------- next part --------------
From 718f8d0263627ff20411feebb731c9f8544f115e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 13 Aug 2019 19:58:25 -0400
Subject: [PATCH] lxd/response: Show wrapped errors
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/response.go | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lxd/response.go b/lxd/response.go
index 8e77e8d402..3b9e6fe9c9 100644
--- a/lxd/response.go
+++ b/lxd/response.go
@@ -524,10 +524,22 @@ func SmartError(err error) Response {
 
 	switch errors.Cause(err) {
 	case os.ErrNotExist, sql.ErrNoRows, db.ErrNoSuchObject:
+		if errors.Cause(err) != err {
+			return NotFound(err)
+		}
+
 		return NotFound(nil)
 	case os.ErrPermission:
+		if errors.Cause(err) != err {
+			return Forbidden(err)
+		}
+
 		return Forbidden(nil)
 	case db.ErrAlreadyDefined, sqlite3.ErrConstraintUnique:
+		if errors.Cause(err) != err {
+			return Conflict(err)
+		}
+
 		return Conflict(nil)
 	case dqlite.ErrNoAvailableLeader:
 		return Unavailable(err)


More information about the lxc-devel mailing list