)]}'
{"nova/tests/virt/xenapi/test_xenapi.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"91954c98fdcc4e50765318d449449ffbfb1cc218","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"        instance \u003d self._create_instance()"},{"line_number":1248,"context_line":"        session \u003d xenapi_conn.XenAPISession(\u0027test_url\u0027, \u0027root\u0027, \u0027test_pass\u0027,"},{"line_number":1249,"context_line":"                                            fake.FakeVirtAPI())"},{"line_number":1250,"context_line":"        conn \u003d xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)"},{"line_number":1251,"context_line":"        image_meta \u003d {\u0027id\u0027: IMAGE_VHD,"},{"line_number":1252,"context_line":"                      \u0027disk_format\u0027: \u0027vhd\u0027}"},{"line_number":1253,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ft1I%3D","line":1250,"updated":"2013-09-20 17:22:59.000000000","message":"Minor nit, expecially since it matches other tests, but there\u0027s a self.conn already setup.","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d8e77fa97b06fac7f0a9ccfc682a28d7351e7386","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"        instance \u003d self._create_instance()"},{"line_number":1248,"context_line":"        session \u003d xenapi_conn.XenAPISession(\u0027test_url\u0027, \u0027root\u0027, \u0027test_pass\u0027,"},{"line_number":1249,"context_line":"                                            fake.FakeVirtAPI())"},{"line_number":1250,"context_line":"        conn \u003d xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)"},{"line_number":1251,"context_line":"        image_meta \u003d {\u0027id\u0027: IMAGE_VHD,"},{"line_number":1252,"context_line":"                      \u0027disk_format\u0027: \u0027vhd\u0027}"},{"line_number":1253,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FtlA%3D","line":1250,"in_reply_to":"AAAAS3%2F%2Ft1I%3D","updated":"2013-09-20 18:34:31.000000000","message":"Gotcha","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"953296361f9fd817b6be7dd6fa5509822f895a5f","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                self._attach_orig_disk_for_rescue(instance, vm_ref)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                def undo_attach_root_disk():"},{"line_number":429,"context_line":"                    vm_utils.destroy_vbd(self._session, vbd_ref)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"                undo_mgr.undo_with(undo_attach_root_disk)"},{"line_number":432,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FwLs%3D","line":429,"updated":"2013-09-19 22:13:15.000000000","message":"Need to grab the vbd_ref first. :)  But I think this is correct.","commit_id":"4ce80a51ec6360a06afb707a6e04f0c9de8f1c45"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"6883a2397f829222af5edd8278e5f601e23797cd","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                self._attach_orig_disk_for_rescue(instance, vm_ref)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                def undo_attach_root_disk():"},{"line_number":429,"context_line":"                    vm_utils.destroy_vbd(self._session, vbd_ref)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"                undo_mgr.undo_with(undo_attach_root_disk)"},{"line_number":432,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FucM%3D","line":429,"in_reply_to":"AAAAS3%2F%2FwLs%3D","updated":"2013-09-20 14:34:24.000000000","message":"yeah.  screwed it up rebasing.","commit_id":"4ce80a51ec6360a06afb707a6e04f0c9de8f1c45"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a25d2de43e682df2dffc11c1b14bf019cf768794","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                vbd_ref \u003d self._attach_orig_disk_for_rescue(instance, vm_ref)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                def undo_attach_root_disk():"},{"line_number":429,"context_line":"                    vm_utils.destroy_vbd(self._session, vbd_ref)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"                undo_mgr.undo_with(undo_attach_root_disk)"},{"line_number":432,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ft2s%3D","line":429,"updated":"2013-09-20 17:07:27.000000000","message":"I think its worth a note saying that we destroy the vbd, such that the VDI can be attached back to the original VM, and such that destroy above does not delete the original disk.","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"91954c98fdcc4e50765318d449449ffbfb1cc218","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                vbd_ref \u003d self._attach_orig_disk_for_rescue(instance, vm_ref)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                def undo_attach_root_disk():"},{"line_number":429,"context_line":"                    vm_utils.destroy_vbd(self._session, vbd_ref)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"                undo_mgr.undo_with(undo_attach_root_disk)"},{"line_number":432,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ftyg%3D","line":429,"in_reply_to":"AAAAS3%2F%2Ft2s%3D","updated":"2013-09-20 17:22:59.000000000","message":"A note would be nice, since it is a bit subtle.","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d8e77fa97b06fac7f0a9ccfc682a28d7351e7386","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                vbd_ref \u003d self._attach_orig_disk_for_rescue(instance, vm_ref)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                def undo_attach_root_disk():"},{"line_number":429,"context_line":"                    vm_utils.destroy_vbd(self._session, vbd_ref)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"                undo_mgr.undo_with(undo_attach_root_disk)"},{"line_number":432,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ftk0%3D","line":429,"in_reply_to":"AAAAS3%2F%2Ft2s%3D","updated":"2013-09-20 18:34:31.000000000","message":"Done","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a25d2de43e682df2dffc11c1b14bf019cf768794","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"            raise RuntimeError(_(\"Instance is already in Rescue Mode: %s\")"},{"line_number":1315,"context_line":"                               % instance[\u0027name\u0027])"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1318,"context_line":"        vm_utils.hard_shutdown_vm(self._session, instance, vm_ref)"},{"line_number":1319,"context_line":"        self._acquire_bootlock(vm_ref)"},{"line_number":1320,"context_line":"        self.spawn(context, instance, image_meta, [], rescue_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ft2Y%3D","line":1317,"updated":"2013-09-20 17:07:27.000000000","message":"This should be a regular shutdown, not a hard shutdown, ouch. Another bug here.","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d8e77fa97b06fac7f0a9ccfc682a28d7351e7386","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"            raise RuntimeError(_(\"Instance is already in Rescue Mode: %s\")"},{"line_number":1315,"context_line":"                               % instance[\u0027name\u0027])"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1318,"context_line":"        vm_utils.hard_shutdown_vm(self._session, instance, vm_ref)"},{"line_number":1319,"context_line":"        self._acquire_bootlock(vm_ref)"},{"line_number":1320,"context_line":"        self.spawn(context, instance, image_meta, [], rescue_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FtkQ%3D","line":1317,"in_reply_to":"AAAAS3%2F%2Ft2Y%3D","updated":"2013-09-20 18:34:31.000000000","message":"Separate cleanups, ya?","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a25d2de43e682df2dffc11c1b14bf019cf768794","unresolved":false,"context_lines":[{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1318,"context_line":"        vm_utils.hard_shutdown_vm(self._session, instance, vm_ref)"},{"line_number":1319,"context_line":"        self._acquire_bootlock(vm_ref)"},{"line_number":1320,"context_line":"        self.spawn(context, instance, image_meta, [], rescue_password,"},{"line_number":1321,"context_line":"                   network_info, name_label\u003drescue_name_label, rescue\u003dTrue)"},{"line_number":1322,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ft2U%3D","line":1319,"updated":"2013-09-20 17:07:27.000000000","message":"I think we should catch the exceptions from spawn, and start back up the old VM, and undo the bootlock.\n\nThe VM is in the error state, but at least the user is not totally blocked any more. This is probably another change I guess.","commit_id":"e79de77c71ce576e6bfff388eb90d2801c3af9a1"}]}
