<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<br>
<div class="moz-cite-prefix">On 06/13/2014 02:03 AM, Aline Manera
wrote:<br>
</div>
<blockquote cite="mid:5399EB5E.7020409@linux.vnet.ibm.com"
type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">On 06/12/2014 04:07 AM, Hongliang
Wang wrote:<br>
</div>
<blockquote
cite="mid:1402556825-7102-2-git-send-email-hlwang@linux.vnet.ibm.com"
type="cite">
<pre wrap="">When user tries to create a resource with an existing name, we should return
HTTP 409 status code to tell the user and let him/her choose another one.
Signed-off-by: Hongliang Wang <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:hlwang@linux.vnet.ibm.com"><hlwang@linux.vnet.ibm.com></a>
---
src/kimchi/control/base.py | 3 +++
src/kimchi/exception.py | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py
index f8a5210..aaa479d 100644
--- a/src/kimchi/control/base.py
+++ b/src/kimchi/control/base.py
@@ -28,6 +28,7 @@ from kimchi.control.utils import validate_params
from kimchi.exception import InvalidOperation, InvalidParameter
from kimchi.exception import KimchiException
from kimchi.exception import MissingParameter, NotFoundError, OperationFailed
+from kimchi.exception import ResourceAlreadyExists
class Resource(object):
@@ -84,6 +85,8 @@ class Resource(object):
raise cherrypy.HTTPError(400, e.message)
except InvalidOperation, e:
raise cherrypy.HTTPError(400, e.message)
+ except ResourceAlreadyExists, e:
+ raise cherrypy.HTTPError(409, e.message)
except OperationFailed, e:
raise cherrypy.HTTPError(500, e.message)
except NotFoundError, e:
diff --git a/src/kimchi/exception.py b/src/kimchi/exception.py
index fcf60cc..38daeab 100644
--- a/src/kimchi/exception.py
+++ b/src/kimchi/exception.py
@@ -91,3 +91,7 @@ class IsoFormatError(KimchiException):
class TimeoutExpired(KimchiException):
pass
+
+
+class ResourceAlreadyExists(KimchiException):
+ pass
</pre>
</blockquote>
<br>
<font face="DejaVu Sans Mono">You don't need to create a new
exception type</font><br>
In those situation, we use InvalidParameter()<br>
</blockquote>
I noticed that and was to use InvalidParameter() though I found it
only returns 400 which is not that specific for existing resource
error. When we use InvalidParameter with HTTP status code 400, the
user can only knows some parameter is wrong which is relatively
general. If we use 409, the use will definitely know the given name
conflicts with an existing one. So I suggest 409 here.<br>
<br>
</body>
</html>