)]}'
{"nova/api/openstack/compute/legacy_v2/contrib/admin_actions.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9b8dffe2715c26b57231da3a0bfce85632531451","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":345,"context_line":"                    \u0027os-migrateLive\u0027, id)"},{"line_number":346,"context_line":"        except exception.MigrationPreCheckClientException as e:"},{"line_number":347,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003de.format_message())"},{"line_number":348,"context_line":"        except Exception:"},{"line_number":349,"context_line":"            if host is None:"},{"line_number":350,"context_line":"                msg \u003d _(\"Live migration of instance %s to another host \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_38dd2415","line":347,"updated":"2016-03-11 18:35:11.000000000","message":"do we need this step, given the generic exception handler below will create a 500 error anyway? I guess this way you get a more specific error message, but I wondering if the user needs that detail. Maybe.","commit_id":"e503f8498a903c8551071c01a4048831c6aad07c"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"e379092a0de05acbb0ee4518b455ba943f5696c2","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":345,"context_line":"                    \u0027os-migrateLive\u0027, id)"},{"line_number":346,"context_line":"        except exception.MigrationPreCheckClientException as e:"},{"line_number":347,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003de.format_message())"},{"line_number":348,"context_line":"        except Exception:"},{"line_number":349,"context_line":"            if host is None:"},{"line_number":350,"context_line":"                msg \u003d _(\"Live migration of instance %s to another host \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_df6ce29e","line":347,"in_reply_to":"3afc51ec_38dd2415","updated":"2016-03-11 20:32:11.000000000","message":"Yes. Thanks for your comment. I didn\u0027t notice the generic exception handler. Since this is a client exception, user may not need that detail. Will change it.","commit_id":"e503f8498a903c8551071c01a4048831c6aad07c"}],"nova/api/openstack/compute/migrate_server.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"32ced8c5c3cfc0940718f7e84cc22f7ee2d3d6b7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                exception.LiveMigrationWithOldNovaNotSupported) as ex:"},{"line_number":107,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dex.format_message())"},{"line_number":108,"context_line":"        except exception.MigrationPreCheckClientException as e:"},{"line_number":109,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003de.format_message())"},{"line_number":110,"context_line":"        except exception.InstanceIsLocked as e:"},{"line_number":111,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":112,"context_line":"        except exception.InstanceInvalidState as state_error:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_54ad5d30","line":109,"updated":"2016-04-04 11:56:23.000000000","message":"I think we also need up update the legacy_v2 API with the same change (and tests) https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/legacy_v2/contrib/admin_actions.py#L325","commit_id":"2e710b94b49a223b7de50e45b7be43c317dbd80d"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"2babbcf13e13746bec4fd305f23ad47a0858fd27","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                exception.LiveMigrationWithOldNovaNotSupported) as ex:"},{"line_number":107,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dex.format_message())"},{"line_number":108,"context_line":"        except exception.MigrationPreCheckClientException as e:"},{"line_number":109,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003de.format_message())"},{"line_number":110,"context_line":"        except exception.InstanceIsLocked as e:"},{"line_number":111,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":112,"context_line":"        except exception.InstanceInvalidState as state_error:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_1c4f75be","line":109,"in_reply_to":"9a061dce_54ad5d30","updated":"2016-04-04 18:14:39.000000000","message":"Done","commit_id":"2e710b94b49a223b7de50e45b7be43c317dbd80d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a3f322ca101b3fa096e41572dc0cc23089991928","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.response(202)"},{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.24\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_25, \"2.25\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a061dce_2b25c3c1","line":63,"range":{"start_line":63,"start_character":32,"end_line":63,"end_character":47},"updated":"2016-04-09 00:55:14.000000000","message":"Here should contain 500 also for passing original error message to a client.\n\nif not, the message is overwritten with the following message:\n\n 501                 msg \u003d _(\u0027Unexpected API Error. Please report this at \u0027\n 502                     \u0027http://bugs.launchpad.net/nova/ and attach the Nova \u0027\n 503                     \u0027API log if possible.\\n%s\u0027) % type(exc)\n 504                 raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)","commit_id":"49aba2e5fa0040936cccd548851186d434baabf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"54fa90603f9a3618f1e2703d1e60c75a9854e6c3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.response(202)"},{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.24\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_25, \"2.25\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_05abc28a","line":63,"range":{"start_line":63,"start_character":32,"end_line":63,"end_character":47},"in_reply_to":"1a122d0e_0d034e43","updated":"2016-05-05 22:30:23.000000000","message":"John, now we don\u0027t have actual expected internal error.\nand Sujitha wants to get actual reports of LP with \"Unexpected API Error. Please report this at ..\" by undecorated of expected_errors(). So current \"raise exc.HTTPInternalServerError()\" is meaningless, and that is inconsistent from the other code.","commit_id":"49aba2e5fa0040936cccd548851186d434baabf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9eb64b5611972dbc6ef09a439cced9c0a1a4b90a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.response(202)"},{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.24\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_25, \"2.25\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_f04feb31","line":63,"range":{"start_line":63,"start_character":32,"end_line":63,"end_character":47},"in_reply_to":"1a122d0e_2ba4bf55","updated":"2016-05-04 17:09:00.000000000","message":"If you still want to send the above message(Unextected API Error, ...) back to API users, it is not necessary to add line 108-109 on REST API layer.\n\nAll exceptions which are excepted on REST API layer are listed on the decorator expected_errors() now. This way makes them inconsistent and less readable.\nI am fine if removing these lines.","commit_id":"49aba2e5fa0040936cccd548851186d434baabf0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7783e6995a37fda78a04b945991e0511751fcb21","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.response(202)"},{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.24\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_25, \"2.25\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_0d034e43","line":63,"range":{"start_line":63,"start_character":32,"end_line":63,"end_character":47},"in_reply_to":"1a122d0e_f04feb31","updated":"2016-05-05 11:26:20.000000000","message":"I quite like how those lines make it explicit that its a very possible 500 error. I could go either way.","commit_id":"49aba2e5fa0040936cccd548851186d434baabf0"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"80326c6a1b21d6f2319214871cb5c50964cbf544","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.response(202)"},{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.24\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_25, \"2.25\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a18252c_b5a040a7","line":63,"range":{"start_line":63,"start_character":32,"end_line":63,"end_character":47},"in_reply_to":"9a061dce_2b25c3c1","updated":"2016-04-11 21:04:51.000000000","message":"I think Unexpected API Error message is more appropriate because it is a Client Exception. Operator can check the logs to understand what is causing the issue.\n\nEven before this is handled with this new exception, user used to get the same message but instance changed to ERROR state when cinder client exception is thrown.\n\nSo I didn\u0027t change it. Please let me know if I\u0027m wrong.","commit_id":"49aba2e5fa0040936cccd548851186d434baabf0"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"69804f957f2eb56c4ba41d36d7a34a60d74c6288","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.response(202)"},{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.24\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_25, \"2.25\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_2ba4bf55","line":63,"range":{"start_line":63,"start_character":32,"end_line":63,"end_character":47},"in_reply_to":"9a061dce_2b25c3c1","updated":"2016-04-15 15:25:27.000000000","message":"Ken\u0027ichi,\nWouldn\u0027t adding 500 to expected errors have a broader impact here? I mean, if a 500 arises from a place other than what we are handling here, which is cinder-client related, then those would be considered expected as well and like you said, those error messages would be relayed as well to the user. Do we want that behaviour? Is my assessment accurate?","commit_id":"49aba2e5fa0040936cccd548851186d434baabf0"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"14950a52e9311a76634730762a8b681932bf6765","unresolved":false,"context_lines":[{"line_number":5080,"context_line":"        \"\"\""},{"line_number":5081,"context_line":"        return self.driver.check_instance_shared_storage_remote(ctxt, data)"},{"line_number":5082,"context_line":""},{"line_number":5083,"context_line":"    @wrap_exception()"},{"line_number":5084,"context_line":"    @wrap_instance_event"},{"line_number":5085,"context_line":"    @wrap_instance_fault"},{"line_number":5086,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_9d7b08f5","line":5083,"updated":"2016-03-09 15:47:08.000000000","message":"I suspect you will also need a similar decorator here.","commit_id":"370bbdce15b4df46990c90ba4ca840b4bf3c48dd"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"14950a52e9311a76634730762a8b681932bf6765","unresolved":false,"context_lines":[{"line_number":5121,"context_line":"            self.driver.check_can_live_migrate_destination_cleanup(ctxt,"},{"line_number":5122,"context_line":"                    dest_check_data)"},{"line_number":5123,"context_line":"        return migrate_data"},{"line_number":5124,"context_line":""},{"line_number":5125,"context_line":"    @wrap_exception()"},{"line_number":5126,"context_line":"    @wrap_instance_event"},{"line_number":5127,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_9db828ca","line":5124,"updated":"2016-03-09 15:47:08.000000000","message":"I think you need this adding here:\n\n @messaging.expected_exceptions(exception.MigrationPreCheckClientException)\n\nWithout that, I think this gets into a generic RPC exception by the time it hits your other exception block.\n\nYou might want to double check if the other expected exceptions work here. They might be broken as well.","commit_id":"370bbdce15b4df46990c90ba4ca840b4bf3c48dd"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"ee667b622a14dc0103d26a9182aece97daa4ea3b","unresolved":false,"context_lines":[{"line_number":5149,"context_line":"            block_device_info \u003d self._get_instance_block_device_info("},{"line_number":5150,"context_line":"                            ctxt, instance, refresh_conn_info\u003dTrue)"},{"line_number":5151,"context_line":"        except(cinder_exception.ClientException):"},{"line_number":5152,"context_line":"            reason \u003d _(\"Unable to migrate instance: \""},{"line_number":5153,"context_line":"                       \"Cinder client exception during initialize connection\")"},{"line_number":5154,"context_line":"            raise exception.MigrationPreCheckClientException(reason\u003dreason)"},{"line_number":5155,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_ddbaece0","line":5152,"range":{"start_line":5152,"start_character":24,"end_line":5152,"end_character":30},"updated":"2016-03-16 18:20:58.000000000","message":"I think this error message could be ambiguous to the user. We should pass on the message captured in the exception, which should be more specific, to the user.","commit_id":"b6180f198fa52ebaede40cb90136508e69cdd683"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"9e7cf867bffd889bdfafac15e7f0898c04780642","unresolved":false,"context_lines":[{"line_number":5149,"context_line":"            block_device_info \u003d self._get_instance_block_device_info("},{"line_number":5150,"context_line":"                            ctxt, instance, refresh_conn_info\u003dTrue)"},{"line_number":5151,"context_line":"        except(cinder_exception.ClientException):"},{"line_number":5152,"context_line":"            reason \u003d _(\"Unable to migrate instance: \""},{"line_number":5153,"context_line":"                       \"Cinder client exception during initialize connection\")"},{"line_number":5154,"context_line":"            raise exception.MigrationPreCheckClientException(reason\u003dreason)"},{"line_number":5155,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_993705b0","line":5152,"range":{"start_line":5152,"start_character":24,"end_line":5152,"end_character":30},"in_reply_to":"1af94dfe_ddbaece0","updated":"2016-03-21 20:35:15.000000000","message":"Done","commit_id":"b6180f198fa52ebaede40cb90136508e69cdd683"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"26a0fd590d2b056ba73372906184e47bb76a4181","unresolved":false,"context_lines":[{"line_number":5170,"context_line":"            block_device_info \u003d self._get_instance_block_device_info("},{"line_number":5171,"context_line":"                            ctxt, instance, refresh_conn_info\u003dTrue)"},{"line_number":5172,"context_line":"        except cinder_exception.ClientException as exc:"},{"line_number":5173,"context_line":"            raise exception.MigrationPreCheckClientException("},{"line_number":5174,"context_line":"                                 reason\u003dsix.text_type(exc))"},{"line_number":5175,"context_line":""},{"line_number":5176,"context_line":"        result \u003d self.driver.check_can_live_migrate_source(ctxt, instance,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_b5e5ed09","line":5173,"updated":"2016-05-11 15:10:13.000000000","message":"ah, I see, because its a precheck thing, this means we don\u0027t put the instance into an ERROR state, which is the key aim here.","commit_id":"2c52aca7965bf3c9dd4c17b4f7706bdef401463f"}],"nova/tests/unit/api/openstack/compute/test_migrate_server.py":[{"author":{"_account_id":20996,"name":"Avinash Raghavendra","email":"avinash.raghavendra@ericsson.com","username":"eragavi"},"change_message_id":"49b43c00cb65b8f136a0d18b43abeab77f3a2ed7","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        self._test_migrate_live_failed_with_exception("},{"line_number":269,"context_line":"            exception.LiveMigrationWithOldNovaNotSafe(server\u003d\u0027\u0027))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_migrate_live__Migration_Precheck_Client_Exception(self):"},{"line_number":272,"context_line":"        self._test_migrate_live_failed_with_exception("},{"line_number":273,"context_line":"            exception.MigrationPreCheckClientException(reason\u003d\u0027\u0027),"},{"line_number":274,"context_line":"            expected_exc\u003dwebob.exc.HTTPInternalServerError,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_184d6b6c","line":271,"range":{"start_line":271,"start_character":26,"end_line":271,"end_character":62},"updated":"2016-03-17 06:59:27.000000000","message":"This has 2 underscores and also first letters needs to lowercase. please correct it..","commit_id":"b6180f198fa52ebaede40cb90136508e69cdd683"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"9e7cf867bffd889bdfafac15e7f0898c04780642","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        self._test_migrate_live_failed_with_exception("},{"line_number":269,"context_line":"            exception.LiveMigrationWithOldNovaNotSafe(server\u003d\u0027\u0027))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_migrate_live__Migration_Precheck_Client_Exception(self):"},{"line_number":272,"context_line":"        self._test_migrate_live_failed_with_exception("},{"line_number":273,"context_line":"            exception.MigrationPreCheckClientException(reason\u003d\u0027\u0027),"},{"line_number":274,"context_line":"            expected_exc\u003dwebob.exc.HTTPInternalServerError,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_d9f33d09","line":271,"range":{"start_line":271,"start_character":26,"end_line":271,"end_character":62},"in_reply_to":"1af94dfe_184d6b6c","updated":"2016-03-21 20:35:15.000000000","message":"Done","commit_id":"b6180f198fa52ebaede40cb90136508e69cdd683"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":20996,"name":"Avinash Raghavendra","email":"avinash.raghavendra@ericsson.com","username":"eragavi"},"change_message_id":"49b43c00cb65b8f136a0d18b43abeab77f3a2ed7","unresolved":false,"context_lines":[{"line_number":1799,"context_line":"            instance.uuid)"},{"line_number":1800,"context_line":"        self.assertTrue(dest_check_data.is_volume_backed)"},{"line_number":1801,"context_line":""},{"line_number":1802,"context_line":"    def test_can_live_migrate_source_for_Cinder_Client_exception(self):"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":"        is_volume_backed \u003d \u0027volume_backed\u0027"},{"line_number":1805,"context_line":"        dest_check_data \u003d migrate_data_obj.LiveMigrateData()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_18928b9e","line":1802,"range":{"start_line":1802,"start_character":41,"end_line":1802,"end_character":54},"updated":"2016-03-17 06:59:27.000000000","message":"again, keeping it consistent with the naming convention. please turn them to lower case.","commit_id":"b6180f198fa52ebaede40cb90136508e69cdd683"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"9e7cf867bffd889bdfafac15e7f0898c04780642","unresolved":false,"context_lines":[{"line_number":1799,"context_line":"            instance.uuid)"},{"line_number":1800,"context_line":"        self.assertTrue(dest_check_data.is_volume_backed)"},{"line_number":1801,"context_line":""},{"line_number":1802,"context_line":"    def test_can_live_migrate_source_for_Cinder_Client_exception(self):"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":"        is_volume_backed \u003d \u0027volume_backed\u0027"},{"line_number":1805,"context_line":"        dest_check_data \u003d migrate_data_obj.LiveMigrateData()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_19de556d","line":1802,"range":{"start_line":1802,"start_character":41,"end_line":1802,"end_character":54},"in_reply_to":"1af94dfe_18928b9e","updated":"2016-03-21 20:35:15.000000000","message":"Done","commit_id":"b6180f198fa52ebaede40cb90136508e69cdd683"}]}
