)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b3b59d8f4ba063bc0cb9d9d308582902456ee4b4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     paul-carlton2 \u003cpaul.carlton2@hpe.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-02 13:59:01 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Attach/detach root volume for shelved_offloaded"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is part of a series to allow the attach and detach of a root"},{"line_number":10,"context_line":"volume for instances in shelved_offloaded state."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"3a71b18c_a819478a","line":7,"updated":"2016-12-05 17:03:51.000000000","message":"root volume or boot volume (as in blueprint)? I\u0027m just curious why that renaming was?","commit_id":"6619f4f57eb2826cad6508e80ddb131b9d055db1"}],"nova/api/openstack/compute/shelve.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b354d430c407b31e4184c9563f866b8341a48512","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                                                              id)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @wsgi.response(202)"},{"line_number":77,"context_line":"    @exts.expected_errors((404, 409, 403))"},{"line_number":78,"context_line":"    @wsgi.action(\u0027unshelve\u0027)"},{"line_number":79,"context_line":"    def _unshelve(self, req, id, body):"},{"line_number":80,"context_line":"        \"\"\"Restore an instance from shelved mode.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_ebf1eace","line":77,"updated":"2016-11-15 15:25:16.000000000","message":"These should be in order. I\u0027m also not sure 403 is appropriate here. Seems like a 400 for a bad request is more appropriate for how this is used.","commit_id":"4333883fee4d7e334946b0cce08a4338adc8aee6"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b3b59d8f4ba063bc0cb9d9d308582902456ee4b4","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                                                              id)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @wsgi.response(202)"},{"line_number":77,"context_line":"    @exts.expected_errors((400, 404, 409))"},{"line_number":78,"context_line":"    @wsgi.action(\u0027unshelve\u0027)"},{"line_number":79,"context_line":"    def _unshelve(self, req, id, body):"},{"line_number":80,"context_line":"        \"\"\"Restore an instance from shelved mode.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"3a71b18c_0be075f9","line":77,"updated":"2016-12-05 17:03:51.000000000","message":"Possibly, this should be mentioned in api-ref.","commit_id":"6619f4f57eb2826cad6508e80ddb131b9d055db1"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b354d430c407b31e4184c9563f866b8341a48512","unresolved":false,"context_lines":[{"line_number":3126,"context_line":"                not self._has_root_volume(context, instance)):"},{"line_number":3127,"context_line":"            instance.task_state \u003d None"},{"line_number":3128,"context_line":"            instance.save()"},{"line_number":3129,"context_line":"            msg \u003d _(\"Can\u0027t unshelve instance without a root device volume\")"},{"line_number":3130,"context_line":"            LOG.error(msg, instance\u003dinstance)"},{"line_number":3131,"context_line":"            raise exception.UnshelveException(instance_id\u003dinstance.uuid,"},{"line_number":3132,"context_line":"                                              reason\u003dmsg)"},{"line_number":3133,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_cbcb4e71","line":3130,"range":{"start_line":3129,"start_character":12,"end_line":3130,"end_character":45},"updated":"2016-11-15 15:25:16.000000000","message":"Is this an error that should get an admin paged in the middle of the night? It\u0027s just a bad user request isn\u0027t it?","commit_id":"4333883fee4d7e334946b0cce08a4338adc8aee6"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b3b59d8f4ba063bc0cb9d9d308582902456ee4b4","unresolved":false,"context_lines":[{"line_number":2016,"context_line":"                    LOG.warning(err_str, exc, instance\u003dinstance)"},{"line_number":2017,"context_line":""},{"line_number":2018,"context_line":"            if (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":2019,"context_line":"                    self._detach_root_vol(bdm)):"},{"line_number":2020,"context_line":"                values \u003d {\u0027device_present\u0027: False}"},{"line_number":2021,"context_line":"                LOG.debug(\"Updating root volume for shelved offloaded \""},{"line_number":2022,"context_line":"                          \"instance, updating the BDM record \""}],"source_content_type":"text/x-python","patch_set":25,"id":"3a71b18c_8e46534d","line":2019,"updated":"2016-12-05 17:03:51.000000000","message":"_detach_root_vol sounds like it does something on bdm.\nPossibly, it needs a better name.","commit_id":"6619f4f57eb2826cad6508e80ddb131b9d055db1"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b3b59d8f4ba063bc0cb9d9d308582902456ee4b4","unresolved":false,"context_lines":[{"line_number":3469,"context_line":"        \"\"\"Inject network info for the instance.\"\"\""},{"line_number":3470,"context_line":"        self.compute_rpcapi.inject_network_info(context, instance\u003dinstance)"},{"line_number":3471,"context_line":""},{"line_number":3472,"context_line":"    def _bdm_as_root(self, context, volume_id, instance, device):"},{"line_number":3473,"context_line":"        volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":3474,"context_line":"        return (volume.get(\u0027bootable\u0027) and"},{"line_number":3475,"context_line":"                instance[\u0027root_device_name\u0027] \u003d\u003d device)"}],"source_content_type":"text/x-python","patch_set":25,"id":"3a71b18c_8ebf33a9","line":3472,"updated":"2016-12-05 17:03:51.000000000","message":"nit: the same as with _detach_root_vol looks like some converting function.","commit_id":"6619f4f57eb2826cad6508e80ddb131b9d055db1"}],"nova/compute/utils.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b3b59d8f4ba063bc0cb9d9d308582902456ee4b4","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"def root_device_present(bdms):"},{"line_number":236,"context_line":"    return any(map(lambda x: x[\u0027device_present\u0027] is True"},{"line_number":237,"context_line":"                               and x[\u0027boot_index\u0027] \u003d\u003d 0, bdms))"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"def delete_no_volume_bdm(bdms):"}],"source_content_type":"text/x-python","patch_set":25,"id":"3a71b18c_ced68b4e","line":237,"updated":"2016-12-05 17:03:51.000000000","message":"This method isn\u0027t tested.\nnit: Don\u0027t you think\nany(x[\u0027device_present\u0027] is True\n    and x[\u0027boot_index\u0027] \u003d\u003d 0 for x in bdms) is cleaner?","commit_id":"6619f4f57eb2826cad6508e80ddb131b9d055db1"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"17f186097e6fbfee0924ea9dc694fafb2c75c444","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from nova.tests.unit import fake_network"},{"line_number":36,"context_line":"from nova import volume"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a77a97e_f3d0ea55","side":"PARENT","line":38,"updated":"2016-11-16 02:59:39.000000000","message":"Unrelated modification","commit_id":"0090a367853079fd8c3bb5058e1a2d9b90d52992"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b3b59d8f4ba063bc0cb9d9d308582902456ee4b4","unresolved":false,"context_lines":[{"line_number":1314,"context_line":""},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"class ComputeTestCase(BaseTestCase):"},{"line_number":1317,"context_line":"    USES_DB_SELF \u003d True"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def setUp(self):"},{"line_number":1320,"context_line":"        super(ComputeTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":25,"id":"3a71b18c_8e01f308","line":1317,"updated":"2016-12-05 17:03:51.000000000","message":"Could you, please, explain why this setting needs?\nI thought it\u0027s for cell or api db things.","commit_id":"6619f4f57eb2826cad6508e80ddb131b9d055db1"}]}
