)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"858750aaf644906f79c8b742dc464080360dc43f","unresolved":false,"context_lines":[{"line_number":2548,"context_line":"            try:"},{"line_number":2549,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2550,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2551,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2552,"context_line":"                try:"},{"line_number":2553,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2554,"context_line":"                                                         bdm.volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_3f02656f","line":2551,"updated":"2015-03-25 19:15:14.000000000","message":"How about checking volume here like this?\n\n         connector \u003d self.driver.get_volume_connector(instance)\n         volume \u003d self.volume_api.get(context, bdm.volume_id)\n         if (volume[\u0027attach_status\u0027] \u003d\u003d \"attached\" and\n                 volume[\u0027instance_uuid\u0027] \u003d\u003d instance.uuid):\n             self.volume_api.terminate_connection(context,\n                                                  bdm.volume_id,\n                                                  connector)\n             self.volume_api.detach(context, bdm.volume_id)\n\nWe can get volume from Cinder using volume_api.get and check\nwhether the volume is attached to intended instance.\nFor more detail of format for the volume, please check get() and\n_untranslate_volume_summary_view() in nova/volume/cinder.py","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":8922,"name":"haruka tanizawa","email":"h-tanizawa@intellilink.co.jp","username":"h-tanizawa"},"change_message_id":"7ffae14c7f36f36a95d38a44ade26e0c5f9bb745","unresolved":false,"context_lines":[{"line_number":2548,"context_line":"            try:"},{"line_number":2549,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2550,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2551,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2552,"context_line":"                try:"},{"line_number":2553,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2554,"context_line":"                                                         bdm.volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_985604d1","line":2551,"in_reply_to":"1a6ced46_3f02656f","updated":"2015-03-31 07:54:41.000000000","message":"Thank you for your review. And your way to modify is more sophisticated. I either don\u0027t want to add new parameter toward cinder.","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"31793eaacbf40bba90299d4fbf6287a9a29b2b06","unresolved":false,"context_lines":[{"line_number":2548,"context_line":"            try:"},{"line_number":2549,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2550,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2551,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2552,"context_line":"                try:"},{"line_number":2553,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2554,"context_line":"                                                         bdm.volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_6dac9735","line":2551,"in_reply_to":"da9b358b_6dd93783","updated":"2015-03-31 12:02:32.000000000","message":"So the point is that cinderclient returns volume object but the volume_api.get() creates and returns customized volume dictionary from the volume object. This is a confusing point...","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":8922,"name":"haruka tanizawa","email":"h-tanizawa@intellilink.co.jp","username":"h-tanizawa"},"change_message_id":"3f2c834a6617319f0fdae29d088448f36055bcef","unresolved":false,"context_lines":[{"line_number":2548,"context_line":"            try:"},{"line_number":2549,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2550,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2551,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2552,"context_line":"                try:"},{"line_number":2553,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2554,"context_line":"                                                         bdm.volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_f6c5218e","line":2551,"in_reply_to":"da9b358b_985604d1","updated":"2015-03-31 08:53:19.000000000","message":"But now volume information doesn\u0027t have \u0027instance_uuid\u0027, so I have to take instance_uuid information from volume_attachment record, right?","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"b5c21e082d8f02dcfccfc393e7bafd91211c01ea","unresolved":false,"context_lines":[{"line_number":2548,"context_line":"            try:"},{"line_number":2549,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2550,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2551,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2552,"context_line":"                try:"},{"line_number":2553,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2554,"context_line":"                                                         bdm.volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_6dd93783","line":2551,"in_reply_to":"da9b358b_f6c5218e","updated":"2015-03-31 11:54:52.000000000","message":"The volume is a dictionary which is created by get() and _untranslate_volume_summary_view() in nova/volume/cinder.py.\n\nAs you can see, _untranslate_volume_summary_view() creates a dictionary using information from a volume which was passed from cinderclient.\nSo the volume which is returned from volume_api.get() has entries of \u0027attach_status\u0027, \u0027instance_uuid\u0027, etc. You can use it.\n\n class API(object):\n    \"\"\"API for interacting with the volume manager.\"\"\"\n\n    @translate_volume_exception\n    def get(self, context, volume_id):\n        item \u003d cinderclient(context).volumes.get(volume_id)\n        return _untranslate_volume_summary_view(context, item)\n\n def _untranslate_volume_summary_view(context, vol):\n   d \u003d {}\n  ...\n    if vol.attachments:\n        att \u003d vol.attachments[0]\n        d[\u0027attach_status\u0027] \u003d \u0027attached\u0027\n        d[\u0027instance_uuid\u0027] \u003d att[\u0027server_id\u0027]\n        d[\u0027mountpoint\u0027] \u003d att[\u0027device\u0027]","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"483c4b8dd1444d3db438b1de4c2e438bcdb654b9","unresolved":false,"context_lines":[{"line_number":2558,"context_line":"                    LOG.warning(_LW(\u0027instance and volume are not consistency. \u0027"},{"line_number":2559,"context_line":"                              \u0027Just removing unnecessary bdm record.\u0027))"},{"line_number":2560,"context_line":"                    bdm.destroy()"},{"line_number":2561,"context_line":""},{"line_number":2562,"context_line":"                self.volume_api.detach(context, bdm.volume_id)"},{"line_number":2563,"context_line":"            except exception.DiskNotFound as exc:"},{"line_number":2564,"context_line":"                LOG.debug(\u0027Ignoring DiskNotFound: %s\u0027, exc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_1e1ddd73","line":2561,"updated":"2015-03-24 19:51:56.000000000","message":"An exception might occur for a variety of reasons. I don\u0027t think it is safe to destroy the bdm here.","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":8922,"name":"haruka tanizawa","email":"h-tanizawa@intellilink.co.jp","username":"h-tanizawa"},"change_message_id":"7ffae14c7f36f36a95d38a44ade26e0c5f9bb745","unresolved":false,"context_lines":[{"line_number":2558,"context_line":"                    LOG.warning(_LW(\u0027instance and volume are not consistency. \u0027"},{"line_number":2559,"context_line":"                              \u0027Just removing unnecessary bdm record.\u0027))"},{"line_number":2560,"context_line":"                    bdm.destroy()"},{"line_number":2561,"context_line":""},{"line_number":2562,"context_line":"                self.volume_api.detach(context, bdm.volume_id)"},{"line_number":2563,"context_line":"            except exception.DiskNotFound as exc:"},{"line_number":2564,"context_line":"                LOG.debug(\u0027Ignoring DiskNotFound: %s\u0027, exc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_58751c96","line":2561,"in_reply_to":"1a6ced46_1e1ddd73","updated":"2015-03-31 07:54:41.000000000","message":"Hmm, yes. I agree with you. I will consider more.","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7c5f538638d8771abfb92d6c2e900edc4ffa03c9","unresolved":false,"context_lines":[{"line_number":2593,"context_line":"            try:"},{"line_number":2594,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2595,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2596,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2597,"context_line":"                self.volume_api.terminate_connection(context,"},{"line_number":2598,"context_line":"                                                     bdm.volume_id,"},{"line_number":2599,"context_line":"                                                     connector)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aa745d1_df138d0c","side":"PARENT","line":2596,"updated":"2015-04-16 08:44:45.000000000","message":"Since you are refactorizing this part of code, can you move this line out of the loop?","commit_id":"f6476078b88ac99459126e9955ddecf7d5eee383"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"781d3477c589ae48ea9ca5d425df303591d7389a","unresolved":false,"context_lines":[{"line_number":2593,"context_line":"            try:"},{"line_number":2594,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2595,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2596,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2597,"context_line":"                self.volume_api.terminate_connection(context,"},{"line_number":2598,"context_line":"                                                     bdm.volume_id,"},{"line_number":2599,"context_line":"                                                     connector)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_3a426d3f","side":"PARENT","line":2596,"in_reply_to":"5aa745d1_df138d0c","updated":"2015-04-17 16:36:32.000000000","message":"Good suggestion. Done.","commit_id":"f6476078b88ac99459126e9955ddecf7d5eee383"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5a5ba2333e4f0f3fcd412dc8f474e65bddc205ed","unresolved":false,"context_lines":[{"line_number":2590,"context_line":"        if try_deallocate_networks:"},{"line_number":2591,"context_line":"            self._try_deallocate_network(context, instance, requested_networks)"},{"line_number":2592,"context_line":""},{"line_number":2593,"context_line":"        for bdm in vol_bdms:"},{"line_number":2594,"context_line":"            try:"},{"line_number":2595,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2596,"context_line":"                #             just tell cinder that we are done with it."}],"source_content_type":"text/x-python","patch_set":4,"id":"bab921fb_34205b9b","side":"PARENT","line":2593,"updated":"2015-04-23 07:36:47.000000000","message":"All of this block can be in the condition your have introduced","commit_id":"45c4fcb095490a3ee397130c449672eaf39a059f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"7faac7f64d9a1064d7692314403284d72e61f0b8","unresolved":false,"context_lines":[{"line_number":2590,"context_line":"        if try_deallocate_networks:"},{"line_number":2591,"context_line":"            self._try_deallocate_network(context, instance, requested_networks)"},{"line_number":2592,"context_line":""},{"line_number":2593,"context_line":"        for bdm in vol_bdms:"},{"line_number":2594,"context_line":"            try:"},{"line_number":2595,"context_line":"                # NOTE(vish): actual driver detach done in driver.destroy, so"},{"line_number":2596,"context_line":"                #             just tell cinder that we are done with it."}],"source_content_type":"text/x-python","patch_set":4,"id":"bab921fb_e30340b7","side":"PARENT","line":2593,"in_reply_to":"bab921fb_34205b9b","updated":"2015-04-23 13:11:36.000000000","message":"Thank you. I will fix it soon.","commit_id":"45c4fcb095490a3ee397130c449672eaf39a059f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ab14bba3c9740a2daf892ca81f3c6615843804a9","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"                # to an instance which is going to shutdown."},{"line_number":2602,"context_line":"                volume \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2603,"context_line":"                if (volume[\u0027attach_status\u0027] \u003d\u003d \"attached\" and"},{"line_number":2604,"context_line":"                        volume[\u0027instance_uuid\u0027] \u003d\u003d instance.uuid):"},{"line_number":2605,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2606,"context_line":"                                                         bdm.volume_id,"},{"line_number":2607,"context_line":"                                                         connector)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_06f0768f","line":2604,"updated":"2015-04-20 21:03:50.000000000","message":"maybe it\u0027s worthy to add some test to ensure \ndetached volume won\u0027t be called this again ?","commit_id":"c8415b38469b3af574a68f6659357cf9cea4f5d4"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"7faac7f64d9a1064d7692314403284d72e61f0b8","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"                # to an instance which is going to shutdown."},{"line_number":2602,"context_line":"                volume \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2603,"context_line":"                if (volume[\u0027attach_status\u0027] \u003d\u003d \"attached\" and"},{"line_number":2604,"context_line":"                        volume[\u0027instance_uuid\u0027] \u003d\u003d instance.uuid):"},{"line_number":2605,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2606,"context_line":"                                                         bdm.volume_id,"},{"line_number":2607,"context_line":"                                                         connector)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab921fb_e3c8e076","line":2604,"in_reply_to":"bab921fb_744db371","updated":"2015-04-23 13:11:36.000000000","message":"I\u0027ll add the test.","commit_id":"c8415b38469b3af574a68f6659357cf9cea4f5d4"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5a5ba2333e4f0f3fcd412dc8f474e65bddc205ed","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"                # to an instance which is going to shutdown."},{"line_number":2602,"context_line":"                volume \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2603,"context_line":"                if (volume[\u0027attach_status\u0027] \u003d\u003d \"attached\" and"},{"line_number":2604,"context_line":"                        volume[\u0027instance_uuid\u0027] \u003d\u003d instance.uuid):"},{"line_number":2605,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":2606,"context_line":"                                                         bdm.volume_id,"},{"line_number":2607,"context_line":"                                                         connector)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab921fb_744db371","line":2604,"in_reply_to":"dac4157f_06f0768f","updated":"2015-04-23 07:36:47.000000000","message":"Yes probably better.","commit_id":"c8415b38469b3af574a68f6659357cf9cea4f5d4"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"df6beaf2b5dff2a867ef8dafb42328dfad72402a","unresolved":false,"context_lines":[{"line_number":2594,"context_line":"            connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2595,"context_line":"            for bdm in vol_bdms:"},{"line_number":2596,"context_line":"                try:"},{"line_number":2597,"context_line":"                    # Get a volume infomation and verify the instance_uuid of"},{"line_number":2598,"context_line":"                    # the volume in order to clarify whether the volume is"},{"line_number":2599,"context_line":"                    # attached to an instance which is going to shutdown."},{"line_number":2600,"context_line":"                    volume \u003d self.volume_api.get(context, bdm.volume_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ad32947_95c71712","line":2597,"updated":"2015-04-28 14:02:26.000000000","message":"s/infomation/information","commit_id":"10103203a74befad98bab57e3dcdd34d05a322f0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"52b53f0a9d6ca28ae025125f8d4bf1910062ffbc","unresolved":false,"context_lines":[{"line_number":2643,"context_line":"                        self.volume_api.terminate_connection(context,"},{"line_number":2644,"context_line":"                                                             bdm.volume_id,"},{"line_number":2645,"context_line":"                                                             connector)"},{"line_number":2646,"context_line":"                        self.volume_api.detach(context, bdm.volume_id)"},{"line_number":2647,"context_line":"                except exception.DiskNotFound as exc:"},{"line_number":2648,"context_line":"                    LOG.debug(\u0027Ignoring DiskNotFound: %s\u0027, exc,"},{"line_number":2649,"context_line":"                              instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aca2d91_71b494f1","line":2646,"updated":"2015-05-06 18:11:15.000000000","message":"Maybe this whole bug should be fixed by fixing the Cinder API detach_volume to accept an instance on behalf of which to detach, and to reject a detach unless the instance matches.","commit_id":"ee9edc6b120130daae64d2f94161d562c87c258c"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"52b53f0a9d6ca28ae025125f8d4bf1910062ffbc","unresolved":false,"context_lines":[{"line_number":4884,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":4885,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("},{"line_number":4886,"context_line":"                context, volume_id)"},{"line_number":4887,"context_line":"        if not bdm.connection_info:"},{"line_number":4888,"context_line":"            LOG.exception(_LE(\u0027Failed to detach volume %(volume_id)s from \u0027"},{"line_number":4889,"context_line":"                              \u0027%(mp)s. Unable to find connection_info in the \u0027"},{"line_number":4890,"context_line":"                              \u0027block device mapping for specified volume. \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aca2d91_31961c4d","line":4887,"updated":"2015-05-06 18:11:15.000000000","message":"This part of the change might make sense - but we really want to make sure that this does not happen (i.e. that if a BDM is created but there is a failure with detachment - it is deleted properly)","commit_id":"ee9edc6b120130daae64d2f94161d562c87c258c"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"52b53f0a9d6ca28ae025125f8d4bf1910062ffbc","unresolved":false,"context_lines":[{"line_number":4885,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("},{"line_number":4886,"context_line":"                context, volume_id)"},{"line_number":4887,"context_line":"        if not bdm.connection_info:"},{"line_number":4888,"context_line":"            LOG.exception(_LE(\u0027Failed to detach volume %(volume_id)s from \u0027"},{"line_number":4889,"context_line":"                              \u0027%(mp)s. Unable to find connection_info in the \u0027"},{"line_number":4890,"context_line":"                              \u0027block device mapping for specified volume. \u0027"},{"line_number":4891,"context_line":"                              \u0027Invalid block device mapping will be \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aca2d91_e64eacc0","line":4888,"updated":"2015-05-06 18:11:15.000000000","message":"LOG.exception() is only meant to be used in an except: block as a shorthand for logging the stack trace too.","commit_id":"ee9edc6b120130daae64d2f94161d562c87c258c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3c1d4a2cd6efef5145720cc84296ea2212a96004","unresolved":false,"context_lines":[{"line_number":4893,"context_line":"                          {\u0027volume_id\u0027: volume_id, \u0027mp\u0027: bdm.device_name},"},{"line_number":4894,"context_line":"                          context\u003dcontext, instance\u003dinstance)"},{"line_number":4895,"context_line":"            LOG.debug(\"Invalid block device mapping to be destroyed: %s\" % bdm,"},{"line_number":4896,"context_line":"                       instance\u003dinstance)"},{"line_number":4897,"context_line":"            bdm.destroy()"},{"line_number":4898,"context_line":"            self.volume_api.roll_detaching(context, volume_id)"},{"line_number":4899,"context_line":"            raise exception.InvalidBDM()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_b07636a2","line":4896,"updated":"2015-05-05 12:04:43.000000000","message":"why an log exception then a debug info? \ncan we put into whole exception log?","commit_id":"ee9edc6b120130daae64d2f94161d562c87c258c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3c1d4a2cd6efef5145720cc84296ea2212a96004","unresolved":false,"context_lines":[{"line_number":4896,"context_line":"                       instance\u003dinstance)"},{"line_number":4897,"context_line":"            bdm.destroy()"},{"line_number":4898,"context_line":"            self.volume_api.roll_detaching(context, volume_id)"},{"line_number":4899,"context_line":"            raise exception.InvalidBDM()"},{"line_number":4900,"context_line":""},{"line_number":4901,"context_line":"        if CONF.volume_usage_poll_interval \u003e 0:"},{"line_number":4902,"context_line":"            vol_stats \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_d0ec12f5","line":4899,"updated":"2015-05-05 12:04:43.000000000","message":"the exception is Block Device Mapping is Invalid.\nseems the root cause here is not \nthe bdm is not valid?","commit_id":"ee9edc6b120130daae64d2f94161d562c87c258c"}],"nova/volume/cinder.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"483c4b8dd1444d3db438b1de4c2e438bcdb654b9","unresolved":false,"context_lines":[{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    @translate_volume_exception"},{"line_number":373,"context_line":"    def terminate_connection(self, context, volume_id, connector,"},{"line_number":374,"context_line":"                             instance_uuid\u003dNone):"},{"line_number":375,"context_line":"        return cinderclient(context).volumes.terminate_connection(volume_id,"},{"line_number":376,"context_line":"                                                      connector, instance_uuid)"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_a93d75bd","line":374,"updated":"2015-03-24 19:51:56.000000000","message":"This would have to be changed in python-cinderclient and in cinder at the same time in order for this to work.","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"},{"author":{"_account_id":8922,"name":"haruka tanizawa","email":"h-tanizawa@intellilink.co.jp","username":"h-tanizawa"},"change_message_id":"7ffae14c7f36f36a95d38a44ade26e0c5f9bb745","unresolved":false,"context_lines":[{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    @translate_volume_exception"},{"line_number":373,"context_line":"    def terminate_connection(self, context, volume_id, connector,"},{"line_number":374,"context_line":"                             instance_uuid\u003dNone):"},{"line_number":375,"context_line":"        return cinderclient(context).volumes.terminate_connection(volume_id,"},{"line_number":376,"context_line":"                                                      connector, instance_uuid)"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_584e3c70","line":374,"in_reply_to":"1a6ced46_a93d75bd","updated":"2015-03-31 07:54:41.000000000","message":"Oh, I also modified this patch.\n\nhttps://review.openstack.org/#/c/166692/2/cinderclient/v2/volumes.py","commit_id":"a82bd95bae29ddaab612b380b8b2533a0f1068ad"}]}
