)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b44bc758ce175d6d10d1bd4bf0b4fc5f173d13dc","unresolved":false,"context_lines":[{"line_number":12,"context_line":"actually detach anything, rather it just updates the database."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This change adds a call to terminate_connection to correctly detach the"},{"line_number":15,"context_line":"volumes. It also mostly reverts a prvious attempt to address this bug:"},{"line_number":16,"context_line":"https://review.openstack.org/#/c/170907/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I7682fd014c6403d7652c2ad0f53f3ee24f613c8f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a50d1a3_a2e53add","line":15,"updated":"2015-07-23 20:30:11.000000000","message":"typo: prvious -\u003e previous","commit_id":"55a126a87b75c9892d98c1bdf3df1dbe62b1f301"}],"nova/compute/manager.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bac938920ce40c0b5a66ab45cc8a8f18d26512db","unresolved":false,"context_lines":[{"line_number":3007,"context_line":"            def detach_block_devices(context, bdms):"},{"line_number":3008,"context_line":"                for bdm in bdms:"},{"line_number":3009,"context_line":"                    if bdm.is_volume:"},{"line_number":3010,"context_line":"                        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3011,"context_line":"                        self.volume_api.terminate_connection(context,"},{"line_number":3012,"context_line":"                                                             bdm.volume_id,"},{"line_number":3013,"context_line":"                                                             connector)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aaa499b_10ef8ae9","line":3010,"updated":"2015-04-13 15:36:56.000000000","message":"we can more this to outside the loop","commit_id":"dc266e2881ceee1132158663e9f0941cc15da898"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"2db550805e2b32e7f497f82f3aa1cafe45cc8ea4","unresolved":false,"context_lines":[{"line_number":3007,"context_line":"            def detach_block_devices(context, bdms):"},{"line_number":3008,"context_line":"                for bdm in bdms:"},{"line_number":3009,"context_line":"                    if bdm.is_volume:"},{"line_number":3010,"context_line":"                        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3011,"context_line":"                        self.volume_api.terminate_connection(context,"},{"line_number":3012,"context_line":"                                                             bdm.volume_id,"},{"line_number":3013,"context_line":"                                                             connector)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aaa499b_8b9475e2","line":3010,"in_reply_to":"7aaa499b_10ef8ae9","updated":"2015-04-14 06:33:00.000000000","message":"Done","commit_id":"dc266e2881ceee1132158663e9f0941cc15da898"},{"author":{"_account_id":6896,"name":"Loganathan Parthipan","email":"parthi@hpe.com","username":"parthipan"},"change_message_id":"ef1d774855f215244bff006375fb91505bf52b4b","unresolved":false,"context_lines":[{"line_number":3012,"context_line":"                        self.volume_api.terminate_connection(context,"},{"line_number":3013,"context_line":"                                                             bdm.volume_id,"},{"line_number":3014,"context_line":"                                                             connector)"},{"line_number":3015,"context_line":"                        self.detach_volume(context, bdm.volume_id, instance)"},{"line_number":3016,"context_line":""},{"line_number":3017,"context_line":"            files \u003d self._decode_files(injected_files)"},{"line_number":3018,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_3becc3c6","line":3015,"updated":"2015-04-20 15:04:06.000000000","message":"Do you want this to be volume_api.detach instead? Effectively reverting the last patch on this line.","commit_id":"eccd4aa85fdd86255604cb18783ab58dfe3b5b13"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"13f030328ce104416cb5083b2c93d3f33acba6de","unresolved":false,"context_lines":[{"line_number":3012,"context_line":"                        self.volume_api.terminate_connection(context,"},{"line_number":3013,"context_line":"                                                             bdm.volume_id,"},{"line_number":3014,"context_line":"                                                             connector)"},{"line_number":3015,"context_line":"                        self.detach_volume(context, bdm.volume_id, instance)"},{"line_number":3016,"context_line":""},{"line_number":3017,"context_line":"            files \u003d self._decode_files(injected_files)"},{"line_number":3018,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_3b5f2374","line":3015,"in_reply_to":"dac4157f_3becc3c6","updated":"2015-04-20 15:07:44.000000000","message":"Ooops bad rebase, will fix now.","commit_id":"eccd4aa85fdd86255604cb18783ab58dfe3b5b13"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2e12bbd3a059b840f869583b834fa58fa405b8aa","unresolved":false,"context_lines":[{"line_number":3006,"context_line":"                        context, instance, bdms\u003dbdms)"},{"line_number":3007,"context_line":""},{"line_number":3008,"context_line":"            def detach_block_devices(context, bdms):"},{"line_number":3009,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3010,"context_line":"                for bdm in bdms:"},{"line_number":3011,"context_line":"                    if bdm.is_volume:"},{"line_number":3012,"context_line":"                        self.volume_api.terminate_connection(context,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_0893f35c","line":3009,"updated":"2015-04-23 12:48:41.000000000","message":"Some drivers like Ironic do not implement this method, so an exception will be raised here and stop the process. We need to add a condition on bdm before to call that method here.\n\n  def detach_block_devices(context, bdms):\n    if bdms:\n      connector \u003d self.driver.get_volume_connector(instance)\n      for dbm in bdms:\n        if ...\n        ....","commit_id":"e8e63a30051f37c6553d7f118f697b16fa23f10d"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"409a29bd9ca86fd762ea60d9c926df3beeac4726","unresolved":false,"context_lines":[{"line_number":3006,"context_line":"                        context, instance, bdms\u003dbdms)"},{"line_number":3007,"context_line":""},{"line_number":3008,"context_line":"            def detach_block_devices(context, bdms):"},{"line_number":3009,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3010,"context_line":"                for bdm in bdms:"},{"line_number":3011,"context_line":"                    if bdm.is_volume:"},{"line_number":3012,"context_line":"                        self.volume_api.terminate_connection(context,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_288a37c0","line":3009,"in_reply_to":"bab921fb_0893f35c","updated":"2015-04-23 12:58:24.000000000","message":"Done","commit_id":"e8e63a30051f37c6553d7f118f697b16fa23f10d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"bfdd8ddf097012480dac5eb08769e15474a8ac96","unresolved":false,"context_lines":[{"line_number":3007,"context_line":""},{"line_number":3008,"context_line":"            def detach_block_devices(context, bdms):"},{"line_number":3009,"context_line":"                if bdms:"},{"line_number":3010,"context_line":"                    connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3011,"context_line":"                    for bdm in bdms:"},{"line_number":3012,"context_line":"                        if bdm.is_volume:"},{"line_number":3013,"context_line":"                            self.volume_api.terminate_connection(context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad58531_474912d0","line":3010,"updated":"2015-05-11 22:25:23.000000000","message":"Is this guaranteed not to error if the instance doesn\u0027t exist on this host?  Rebuild is used for evacuate as well, in which case this code will be running on a host where the instance does not exist.","commit_id":"55a126a87b75c9892d98c1bdf3df1dbe62b1f301"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"423188e55a02841ce933f7d3b2d3565f725e50b4","unresolved":false,"context_lines":[{"line_number":3013,"context_line":"                            self.volume_api.terminate_connection(context,"},{"line_number":3014,"context_line":"                                                                 bdm.volume_id,"},{"line_number":3015,"context_line":"                                                                 connector)"},{"line_number":3016,"context_line":"                            self.volume_api.detach(context, bdm.volume_id)"},{"line_number":3017,"context_line":""},{"line_number":3018,"context_line":"            files \u003d self._decode_files(injected_files)"},{"line_number":3019,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_f69f4e01","line":3016,"updated":"2015-06-02 23:55:25.000000000","message":"I don\u0027t see how this isn\u0027t duplicating what\u0027s being done in the existing self.detach_volume","commit_id":"55a126a87b75c9892d98c1bdf3df1dbe62b1f301"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"423188e55a02841ce933f7d3b2d3565f725e50b4","unresolved":false,"context_lines":[{"line_number":4866,"context_line":"        info \u003d dict(volume_id\u003dvolume_id)"},{"line_number":4867,"context_line":"        self._notify_about_instance_usage("},{"line_number":4868,"context_line":"            context, instance, \"volume.detach\", extra_usage_info\u003dinfo)"},{"line_number":4869,"context_line":"        self.volume_api.detach(context.elevated(), volume_id)"},{"line_number":4870,"context_line":""},{"line_number":4871,"context_line":"    def _init_volume_connection(self, context, new_volume_id,"},{"line_number":4872,"context_line":"                                old_volume_id, connector, instance, bdm):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_76fd9e39","line":4869,"updated":"2015-06-02 23:55:25.000000000","message":"Isn\u0027t this already doing the right things to detach the volume?","commit_id":"55a126a87b75c9892d98c1bdf3df1dbe62b1f301"}]}
