)]}'
{"guidelines/http.rst":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aaa7104eb691090f32251311cdf15a188362745e","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* If a call is made which attempts to put a resource into a state which it is"},{"line_number":40,"context_line":"  already in (eg locking an instance which is already locked), the return code"},{"line_number":41,"context_line":"  should be **200 OK**."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Failure Codes"},{"line_number":44,"context_line":"~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3acd31a7_9aeca990","line":41,"updated":"2015-05-04 00:44:16.000000000","message":"hmm...\nthere is this case. an normal user want to lock an instance but the instance is locked by admin, although it is in locked status, but it\u0027s not looked by this user.\n\nTo be honest, this is an specify case, it shouldn\u0027t be 200 ok?\n\nany thoughts?\n\nEli.","commit_id":"2c942a675ba649af846ae3b6cf91de465ae18e17"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"df19fbe0a375ef671d1b1dfad5a151e11f6889fb","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* If a call is made which attempts to put a resource into a state which it is"},{"line_number":40,"context_line":"  already in (eg locking an instance which is already locked), the return code"},{"line_number":41,"context_line":"  should be **200 OK**."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Failure Codes"},{"line_number":44,"context_line":"~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3acd31a7_3f443948","line":41,"in_reply_to":"3acd31a7_9aeca990","updated":"2015-05-05 10:29:49.000000000","message":"It needs to be decided whether \"locked by admin\" and \"locked by user\" are really the same state.","commit_id":"2c942a675ba649af846ae3b6cf91de465ae18e17"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"37ff6a082ba6580e9fa1fffd633f16ccbf50ddc0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":59,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":60,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":61,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* A **500 Internal Server Error** should **not** be returned to the user upon"},{"line_number":64,"context_line":"  any user-initiated failure. This error should **only** be returned when the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3acd31a7_32e95581","line":61,"updated":"2015-05-01 14:37:32.000000000","message":"I agree with this.\n\nShould we add about the state conflict too, like you can\u0027t snapshot a resizing server, because we don\u0027t allow both of those things to happen at the same?","commit_id":"2c942a675ba649af846ae3b6cf91de465ae18e17"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ba70e18099112a52b10ff41ec532b85d1c1313fd","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":59,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":60,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":61,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* A **500 Internal Server Error** should **not** be returned to the user upon"},{"line_number":64,"context_line":"  any user-initiated failure. This error should **only** be returned when the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3acd31a7_c6081294","line":61,"in_reply_to":"3acd31a7_32e95581","updated":"2015-05-03 08:45:13.000000000","message":"We still allow reboot a rebooting instance that avoid the previous reboot stuck at somewhere. Similar to delete a deleting instance, right?","commit_id":"2c942a675ba649af846ae3b6cf91de465ae18e17"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aaa7104eb691090f32251311cdf15a188362745e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":59,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":60,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":61,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* A **500 Internal Server Error** should **not** be returned to the user upon"},{"line_number":64,"context_line":"  any user-initiated failure. This error should **only** be returned when the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3acd31a7_faef1d85","line":61,"in_reply_to":"3acd31a7_c6081294","updated":"2015-05-04 00:44:16.000000000","message":"that is interesting... we may need to think this case by case then.\nI think this is just a guild line, but for specify cases, we need to consider it more.\n\nIt \u0027s good to adding reboot a rebooting instance as an example. \n\n+1 alex.","commit_id":"2c942a675ba649af846ae3b6cf91de465ae18e17"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"df19fbe0a375ef671d1b1dfad5a151e11f6889fb","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":59,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":60,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":61,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* A **500 Internal Server Error** should **not** be returned to the user upon"},{"line_number":64,"context_line":"  any user-initiated failure. This error should **only** be returned when the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3acd31a7_3f4e793b","line":61,"in_reply_to":"3acd31a7_faef1d85","updated":"2015-05-05 10:29:49.000000000","message":"I\u0027d prefer to avoid repeating the w3c\u0027s definition of Conflict here, but if everything else is just a case-by-case decision then perhaps there\u0027s nothing more to say?","commit_id":"2c942a675ba649af846ae3b6cf91de465ae18e17"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"385c1870732f87825666f15c6fbfcf2f17455fa9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  the list of accepted request methods for the resource."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":62,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":63,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":64,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_1609ef2c","line":62,"updated":"2015-06-05 11:46:45.000000000","message":"Why only return it when we are performing the same action?\n\nI think this is a more generic error code and it should be returned when there\u0027s a conflict between requested action and current resource status.\n\nExample cases where I think this should be returned as well but isn\u0027t the same action are: when a snapshot is being used to create a new volume and a deletion of this snapshot is requested, and also when a volume is being created and we try to attach it before it has finished.","commit_id":"9a1fd806d9cebf13f8e6232039597c180d691714"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d0c2ee2dc51979216219564253a42d7548de7b5a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  the list of accepted request methods for the resource."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":62,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":63,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":64,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_76e4a33a","line":62,"in_reply_to":"3afb71cf_1609ef2c","updated":"2015-06-05 11:54:40.000000000","message":"Hi Gorka. This is intended to be complementary to the patch it depends on. It doesn\u0027t describe the general \"Conflict\" case. I think that in general we should avoid simply restating the HTTP spec, but if you think there is something worth adding I think it would be best to add it in a follow-up patch to this one.","commit_id":"9a1fd806d9cebf13f8e6232039597c180d691714"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"78f5be239de72e00361f1e4b69d6f580fb01ab82","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  the list of accepted request methods for the resource."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":62,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":63,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":64,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_f12add2b","line":62,"in_reply_to":"3afb71cf_76e4a33a","updated":"2015-06-05 12:27:15.000000000","message":"Hi Matthew,\n\nThanks for the response, since commit message stated that it added clarification for 409 I thought it was meant to be more generic. But as a clarification of previous patches I think it\u0027s great.","commit_id":"9a1fd806d9cebf13f8e6232039597c180d691714"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7c741941c65a98d92cfbb9ea92ebf8b4fcb2ac68","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  the list of accepted request methods for the resource."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":62,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":63,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":64,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_41d58ae2","line":62,"in_reply_to":"3afb71cf_f12add2b","updated":"2015-06-11 09:27:48.000000000","message":"Yeah I had the same thoughts as Gorka when looked at the commit message and the text here.\n\nThanks for clarifying Matthew","commit_id":"9a1fd806d9cebf13f8e6232039597c180d691714"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"151c6c7fd776e80528b8946accd304a6ad2672c3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":62,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":63,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":64,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* A **500 Internal Server Error** should **not** be returned to the user upon"},{"line_number":67,"context_line":"  any user-initiated failure. This error should **only** be returned when the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_2eec04f2","line":64,"updated":"2015-06-09 22:54:00.000000000","message":"you might want to add that this guideline has priority over the guideline concerning operations putting a resource in a status where it already is.\n\nFor instance the instance being snapshotted would already be in \"snapshotting\" state and therefore for this specific example the other guideline would apply as well.\n\nDoes this guideline apply to DELETE operations as well? I reckon delete might be looked as an instance of the guideline at line 39 for async ops and  always be subject to the guideline at line 33 for sync ops?","commit_id":"9a1fd806d9cebf13f8e6232039597c180d691714"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"dff034a18f230c5ff2b32fede7d5c5114cb1cbd8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"* If a call is made which attempts to perform an action on a resource which is"},{"line_number":62,"context_line":"  already performing that action and therefore the request cannot be fulfilled"},{"line_number":63,"context_line":"  (eg snapshotting an instance which is already in the process of"},{"line_number":64,"context_line":"  snapshotting), the return code should be **409 Conflict**."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* A **500 Internal Server Error** should **not** be returned to the user upon"},{"line_number":67,"context_line":"  any user-initiated failure. This error should **only** be returned when the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_4e0efde5","line":64,"in_reply_to":"3afb71cf_2eec04f2","updated":"2015-06-10 15:12:50.000000000","message":"I think that the \"cannot be fulfilled\" is the key phrase here. The second snapshot request isn\u0027t idempotent, so it fails. A second DELETE call would be idempotent, so it wouldn\u0027t fail; it would be a no-op, and the caller\u0027s request would be fulfilled.","commit_id":"9a1fd806d9cebf13f8e6232039597c180d691714"}]}
