<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">&lt;hlwang@linux.vnet.ibm.com&gt;</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>