)]}'
{"cinder/volume/api.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"d61d9153c07897ebcf204af381b814127338f8c4","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    @wrap_check_policy"},{"line_number":555,"context_line":"    def detach(self, context, volume, attachment_id):"},{"line_number":556,"context_line":"        if (volume[\u0027status\u0027] !\u003d \u0027in-use\u0027 or"},{"line_number":557,"context_line":"                volume[\u0027attach_status\u0027] !\u003d \u0027attached\u0027):"},{"line_number":558,"context_line":"            msg \u003d (_(\"Unable to detach volume. Volume status must be \u0027in-use\u0027 \""},{"line_number":559,"context_line":"                     \"and attach_status must be \u0027attached\u0027 to detach. \""},{"line_number":560,"context_line":"                     \"Currently: status: \u0027%(status)s\u0027, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_3621d04d","line":557,"updated":"2015-03-25 05:53:11.000000000","message":"The correct state here is \"detaching\" - begin_detaching does that transition.  So this change breaks how Nova calls Cinder.  However, if we check status\u003d\u003ddetaching, the tempest test will break.  What I was getting at before is that here we should check that status\u003d\u003ddetaching, and also fix the tempest test to call begin_detaching.  That would make things a bit more correct.  Not sure what we can do for Kilo though.","commit_id":"2a79279e7653dfff31c3b841310b3fbc7c4e10e5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4dba5a67351bffaab3b4a3aa8ec5276b060ad6a9","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    @wrap_check_policy"},{"line_number":555,"context_line":"    def detach(self, context, volume, attachment_id):"},{"line_number":556,"context_line":"        if (volume[\u0027status\u0027] !\u003d \u0027in-use\u0027 or"},{"line_number":557,"context_line":"                volume[\u0027attach_status\u0027] !\u003d \u0027attached\u0027):"},{"line_number":558,"context_line":"            msg \u003d (_(\"Unable to detach volume. Volume status must be \u0027in-use\u0027 \""},{"line_number":559,"context_line":"                     \"and attach_status must be \u0027attached\u0027 to detach. \""},{"line_number":560,"context_line":"                     \"Currently: status: \u0027%(status)s\u0027, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_05cf242b","line":557,"in_reply_to":"1a6ced46_3621d04d","updated":"2015-03-25 16:54:22.000000000","message":"changed the state checking.   I think you might be right Avishay about doing this check here breaking existing tempest tests.  \n\nIf so, I\u0027ll just remove this code for now.","commit_id":"2a79279e7653dfff31c3b841310b3fbc7c4e10e5"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"ab9d60ed8fbc57534721d94401b67987641131f5","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        if (volume[\u0027status\u0027] !\u003d \u0027in-use\u0027 or"},{"line_number":557,"context_line":"                volume[\u0027attach_status\u0027] !\u003d \u0027attached\u0027):"},{"line_number":558,"context_line":"            msg \u003d (_(\"Unable to detach volume. Volume status must be \u0027in-use\u0027 \""},{"line_number":559,"context_line":"                     \"and attach_status must be \u0027attached\u0027 to detach. \""},{"line_number":560,"context_line":"                     \"Currently: status: \u0027%(status)s\u0027, \""},{"line_number":561,"context_line":"                     \"attach_status: \u0027%(attach_status)s.\u0027\") %"},{"line_number":562,"context_line":"                   {\u0027status\u0027: volume[\u0027status\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_9bae3a84","line":559,"updated":"2015-03-24 21:39:51.000000000","message":"Do you mean \"or\" instead of \"and\"?\nThat would align with the conditional in L#556\nor should L#556 be \"and\"?","commit_id":"2a79279e7653dfff31c3b841310b3fbc7c4e10e5"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"7eb08844fa7e231c38598b4415a1a19676e37a71","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def detach(self, context, volume, attachment_id):"},{"line_number":556,"context_line":"        if (volume[\u0027status\u0027] !\u003d \u0027detaching\u0027):"},{"line_number":557,"context_line":"            msg \u003d (_(\"Unable to detach volume. Volume status must be \""},{"line_number":558,"context_line":"                     \"\u0027detaching\u0027 to detach. Currently: status: \""},{"line_number":559,"context_line":"                     \"\u0027%(status)s\u0027, attach_status: \""},{"line_number":560,"context_line":"                     \"\u0027%(attach_status)s.\u0027\") %"},{"line_number":561,"context_line":"                   {\u0027status\u0027: volume[\u0027status\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_e6c13355","line":558,"updated":"2015-03-25 16:14:45.000000000","message":"I hate to rathole on an error message, but this could be confusing to the cloud operator. Moving to \u0027detaching\u0027 via begin_detaching(..) is an internal thing, and the admin/user will be only see that as a transient state after issuing a volume-detach.\nSo, from the user/admin POV, starting state must be \u0027attached\u0027 to detach.\nMaybe this could be clarified if you upload another patch.","commit_id":"d3e0b60ad1e73ad287fbfaeae3c8fe461def235f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"13ccd7892a05e7daef62366451c7a42b38586873","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def detach(self, context, volume, attachment_id):"},{"line_number":556,"context_line":"        if (volume[\u0027status\u0027] !\u003d \u0027detaching\u0027):"},{"line_number":557,"context_line":"            msg \u003d (_(\"Unable to detach volume. Volume status must be \""},{"line_number":558,"context_line":"                     \"\u0027detaching\u0027 to detach. Currently: status: \""},{"line_number":559,"context_line":"                     \"\u0027%(status)s\u0027, attach_status: \""},{"line_number":560,"context_line":"                     \"\u0027%(attach_status)s.\u0027\") %"},{"line_number":561,"context_line":"                   {\u0027status\u0027: volume[\u0027status\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_e839fda4","line":558,"in_reply_to":"1a6ced46_e565a81e","updated":"2015-03-25 17:00:18.000000000","message":"Of course, you are right. I forgot that the API must be called directly to get here without first calling begin_detaching().","commit_id":"d3e0b60ad1e73ad287fbfaeae3c8fe461def235f"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"bb6f5ea9b81c5061469a676426a72aea84e9cb88","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def detach(self, context, volume, attachment_id):"},{"line_number":556,"context_line":"        if (volume[\u0027status\u0027] !\u003d \u0027detaching\u0027):"},{"line_number":557,"context_line":"            msg \u003d (_(\"Unable to detach volume. Volume status must be \""},{"line_number":558,"context_line":"                     \"\u0027detaching\u0027 to detach. Currently: status: \""},{"line_number":559,"context_line":"                     \"\u0027%(status)s\u0027, attach_status: \""},{"line_number":560,"context_line":"                     \"\u0027%(attach_status)s.\u0027\") %"},{"line_number":561,"context_line":"                   {\u0027status\u0027: volume[\u0027status\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_e565a81e","line":558,"in_reply_to":"1a6ced46_e6c13355","updated":"2015-03-25 16:55:47.000000000","message":"Scott, they will only see this error message if they are manually calling this API incorrectly.   It would be entirely incorrect to change the message to say it must be in attached, in-use state prior to calling this function.","commit_id":"d3e0b60ad1e73ad287fbfaeae3c8fe461def235f"}]}
