)]}'
{"nova/compute/api.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fbdf6fe1a9b2b5d683c84d62be832acef72451e7","unresolved":false,"context_lines":[{"line_number":2731,"context_line":"                    new_volume_id\u003dnew_volume[\u0027id\u0027])"},{"line_number":2732,"context_line":""},{"line_number":2733,"context_line":"    @contextlib.contextmanager"},{"line_number":2734,"context_line":"    def _reserve_swap_volume(self, context, old_volume, new_volume, instance):"},{"line_number":2735,"context_line":"        old_volume_id \u003d old_volume[\u0027id\u0027]"},{"line_number":2736,"context_line":"        new_volume_id \u003d new_volume[\u0027id\u0027]"},{"line_number":2737,"context_line":"        self.volume_api.check_detach(context, old_volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9G8A%3D","line":2734,"updated":"2013-12-16 18:21:43.000000000","message":"The only thing we are adding here is the context manager - none of the logic changes really. Why not just leave it as is - no need to do anything in the API?","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"9e3c1eb3550e68c46271eccafecaf283eea50b2c","unresolved":false,"context_lines":[{"line_number":2731,"context_line":"                    new_volume_id\u003dnew_volume[\u0027id\u0027])"},{"line_number":2732,"context_line":""},{"line_number":2733,"context_line":"    @contextlib.contextmanager"},{"line_number":2734,"context_line":"    def _reserve_swap_volume(self, context, old_volume, new_volume, instance):"},{"line_number":2735,"context_line":"        old_volume_id \u003d old_volume[\u0027id\u0027]"},{"line_number":2736,"context_line":"        new_volume_id \u003d new_volume[\u0027id\u0027]"},{"line_number":2737,"context_line":"        self.volume_api.check_detach(context, old_volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GCs%3D","line":2734,"in_reply_to":"AAAATn%2F9G8A%3D","updated":"2013-12-16 21:04:27.000000000","message":"Done","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fbdf6fe1a9b2b5d683c84d62be832acef72451e7","unresolved":false,"context_lines":[{"line_number":2735,"context_line":"        old_volume_id \u003d old_volume[\u0027id\u0027]"},{"line_number":2736,"context_line":"        new_volume_id \u003d new_volume[\u0027id\u0027]"},{"line_number":2737,"context_line":"        self.volume_api.check_detach(context, old_volume)"},{"line_number":2738,"context_line":"        self.volume_api.check_attach(context, new_volume, instance\u003dinstance)"},{"line_number":2739,"context_line":"        try:"},{"line_number":2740,"context_line":"            self.volume_api.begin_detaching(context, old_volume_id)"},{"line_number":2741,"context_line":"            self.volume_api.reserve_volume(context, new_volume_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9HHU%3D","line":2738,"updated":"2013-12-16 18:21:43.000000000","message":"These two lines do not really need to be in the context manager - if we decide to keep it","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"9e3c1eb3550e68c46271eccafecaf283eea50b2c","unresolved":false,"context_lines":[{"line_number":2735,"context_line":"        old_volume_id \u003d old_volume[\u0027id\u0027]"},{"line_number":2736,"context_line":"        new_volume_id \u003d new_volume[\u0027id\u0027]"},{"line_number":2737,"context_line":"        self.volume_api.check_detach(context, old_volume)"},{"line_number":2738,"context_line":"        self.volume_api.check_attach(context, new_volume, instance\u003dinstance)"},{"line_number":2739,"context_line":"        try:"},{"line_number":2740,"context_line":"            self.volume_api.begin_detaching(context, old_volume_id)"},{"line_number":2741,"context_line":"            self.volume_api.reserve_volume(context, new_volume_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GCg%3D","line":2738,"in_reply_to":"AAAATn%2F9HHU%3D","updated":"2013-12-16 21:04:27.000000000","message":"Done","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"}],"nova/compute/manager.py":[{"author":{"_account_id":8964,"name":"yasunori jitsukawa","email":"y-jitsukawa@cresco.co.jp","username":"y-jitsukawa"},"change_message_id":"234293cb4579e826d249b8431df1fec1c6267ac0","unresolved":false,"context_lines":[{"line_number":3971,"context_line":""},{"line_number":3972,"context_line":"        try:"},{"line_number":3973,"context_line":"            self.driver.swap_volume(old_cinfo, new_cinfo, instance, mountpoint)"},{"line_number":3974,"context_line":"            failed \u003d True"},{"line_number":3975,"context_line":"        except Exception:  # pylint: disable\u003dW0702"},{"line_number":3976,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3977,"context_line":"                msg \u003d _(\"Failed to swap volume %(old_volume_id)s \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Fk10%3D","line":3974,"updated":"2013-11-01 03:05:09.000000000","message":"If swap goes well, you should be False.","commit_id":"b5427519941c5516fdc6d06ad507bb5a2a290f20"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"aec613ebd31e48da5394e986268cc406e512d0fb","unresolved":false,"context_lines":[{"line_number":3971,"context_line":""},{"line_number":3972,"context_line":"        try:"},{"line_number":3973,"context_line":"            self.driver.swap_volume(old_cinfo, new_cinfo, instance, mountpoint)"},{"line_number":3974,"context_line":"            failed \u003d True"},{"line_number":3975,"context_line":"        except Exception:  # pylint: disable\u003dW0702"},{"line_number":3976,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3977,"context_line":"                msg \u003d _(\"Failed to swap volume %(old_volume_id)s \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Fknc%3D","line":3974,"in_reply_to":"AAAATn%2F%2Fk10%3D","updated":"2013-11-01 04:56:30.000000000","message":"Absolutely. It slipped a line..\nThanks!","commit_id":"b5427519941c5516fdc6d06ad507bb5a2a290f20"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fbdf6fe1a9b2b5d683c84d62be832acef72451e7","unresolved":false,"context_lines":[{"line_number":3945,"context_line":"        except Exception:  # pylint: disable\u003dW0702"},{"line_number":3946,"context_line":"            failed \u003d True"},{"line_number":3947,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3948,"context_line":"                msg \u003d _(\"Failed to swap volume %(old_volume_id)s \""},{"line_number":3949,"context_line":"                        \"for %(new_volume_id)s\")"},{"line_number":3950,"context_line":"                LOG.exception(msg % {\u0027old_volume_id\u0027: old_volume_id,"},{"line_number":3951,"context_line":"                                     \u0027new_volume_id\u0027: new_volume_id},"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9G6I%3D","line":3948,"updated":"2013-12-16 18:21:43.000000000","message":"We now log this no matter where it fails - meaning that if _init_volume fails we will log both errors which was not true before. We don\u0027t want to log too much.","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"9e3c1eb3550e68c46271eccafecaf283eea50b2c","unresolved":false,"context_lines":[{"line_number":3945,"context_line":"        except Exception:  # pylint: disable\u003dW0702"},{"line_number":3946,"context_line":"            failed \u003d True"},{"line_number":3947,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3948,"context_line":"                msg \u003d _(\"Failed to swap volume %(old_volume_id)s \""},{"line_number":3949,"context_line":"                        \"for %(new_volume_id)s\")"},{"line_number":3950,"context_line":"                LOG.exception(msg % {\u0027old_volume_id\u0027: old_volume_id,"},{"line_number":3951,"context_line":"                                     \u0027new_volume_id\u0027: new_volume_id},"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GC0%3D","line":3948,"in_reply_to":"AAAATn%2F9G6I%3D","updated":"2013-12-16 21:04:27.000000000","message":"Done","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fbdf6fe1a9b2b5d683c84d62be832acef72451e7","unresolved":false,"context_lines":[{"line_number":3985,"context_line":""},{"line_number":3986,"context_line":"        bdm \u003d self._get_instance_volume_bdm(context, instance, old_volume_id)"},{"line_number":3987,"context_line":"        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3988,"context_line":"        volume_data \u003d (bdm, connector, old_volume_id, new_volume_id)"},{"line_number":3989,"context_line":""},{"line_number":3990,"context_line":"        comp_ret, new_cinfo \u003d self._swap_volume(context, instance, volume_data)"},{"line_number":3991,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9HAk%3D","line":3988,"updated":"2013-12-16 18:21:43.000000000","message":"This is only for the sake of passing less arguments, I guess? No need to do this IMHO","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"9e3c1eb3550e68c46271eccafecaf283eea50b2c","unresolved":false,"context_lines":[{"line_number":3985,"context_line":""},{"line_number":3986,"context_line":"        bdm \u003d self._get_instance_volume_bdm(context, instance, old_volume_id)"},{"line_number":3987,"context_line":"        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3988,"context_line":"        volume_data \u003d (bdm, connector, old_volume_id, new_volume_id)"},{"line_number":3989,"context_line":""},{"line_number":3990,"context_line":"        comp_ret, new_cinfo \u003d self._swap_volume(context, instance, volume_data)"},{"line_number":3991,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GC8%3D","line":3988,"in_reply_to":"AAAATn%2F9HAk%3D","updated":"2013-12-16 21:04:27.000000000","message":"Done","commit_id":"681cfc79807805095ced8b8d146bdde152ab5c97"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"93c2d63f731bdb2c6acb68674c2c6a4c8750e9d2","unresolved":false,"context_lines":[{"line_number":3906,"context_line":"    def _swap_volume(self, context, instance, bdm, connector, old_volume_id,"},{"line_number":3907,"context_line":"                                                              new_volume_id):"},{"line_number":3908,"context_line":"        mountpoint \u003d bdm[\u0027device_name\u0027]"},{"line_number":3909,"context_line":"        failed \u003d False"},{"line_number":3910,"context_line":"        new_cinfo \u003d None"},{"line_number":3911,"context_line":"        try:"},{"line_number":3912,"context_line":"            old_cinfo, new_cinfo \u003d self._init_volume_connection(context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9flU%3D","line":3909,"updated":"2014-02-06 14:56:23.000000000","message":"why do we need failed - why no just set the conn_volume in the flows - it will save the ifs","commit_id":"724493d21fdfcbb4c095b54975c0c1d612f0a856"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"93c2d63f731bdb2c6acb68674c2c6a4c8750e9d2","unresolved":false,"context_lines":[{"line_number":3916,"context_line":"                                                                instance,"},{"line_number":3917,"context_line":"                                                                bdm)"},{"line_number":3918,"context_line":"            self.driver.swap_volume(old_cinfo, new_cinfo, instance, mountpoint)"},{"line_number":3919,"context_line":"        except Exception:  # pylint: disable\u003dW0702"},{"line_number":3920,"context_line":"            failed \u003d True"},{"line_number":3921,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3922,"context_line":"                if new_cinfo:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9fmY%3D","line":3919,"updated":"2014-02-06 14:56:23.000000000","message":"is it possible to catch specific exceptions here?","commit_id":"724493d21fdfcbb4c095b54975c0c1d612f0a856"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"93c2d63f731bdb2c6acb68674c2c6a4c8750e9d2","unresolved":false,"context_lines":[{"line_number":3922,"context_line":"                if new_cinfo:"},{"line_number":3923,"context_line":"                    msg \u003d _(\"Failed to swap volume %(old_volume_id)s \""},{"line_number":3924,"context_line":"                            \"for %(new_volume_id)s\")"},{"line_number":3925,"context_line":"                    LOG.exception(msg % {\u0027old_volume_id\u0027: old_volume_id,"},{"line_number":3926,"context_line":"                                         \u0027new_volume_id\u0027: new_volume_id},"},{"line_number":3927,"context_line":"                                  context\u003dcontext,"},{"line_number":3928,"context_line":"                                  instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9fmo%3D","line":3925,"updated":"2014-02-06 14:56:23.000000000","message":"please use a , instead of %","commit_id":"724493d21fdfcbb4c095b54975c0c1d612f0a856"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"93c2d63f731bdb2c6acb68674c2c6a4c8750e9d2","unresolved":false,"context_lines":[{"line_number":3929,"context_line":"                else:"},{"line_number":3930,"context_line":"                    msg \u003d _(\"Failed to connect to volume %(volume_id)s \""},{"line_number":3931,"context_line":"                            \"with volume at %(mountpoint)s\")"},{"line_number":3932,"context_line":"                    LOG.exception(msg % {\u0027volume_id\u0027: new_volume_id,"},{"line_number":3933,"context_line":"                                         \u0027mountpoint\u0027: bdm[\u0027device_name\u0027]},"},{"line_number":3934,"context_line":"                                  context\u003dcontext,"},{"line_number":3935,"context_line":"                                  instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9fmk%3D","line":3932,"updated":"2014-02-06 14:56:23.000000000","message":"ditto","commit_id":"724493d21fdfcbb4c095b54975c0c1d612f0a856"}],"nova/tests/virt/libvirt/fakelibvirt.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"60dcfc47da4560e9171492612a209c08f9e09d65","unresolved":false,"context_lines":[{"line_number":93,"context_line":"VIR_DOMAIN_AFFECT_LIVE \u003d 1"},{"line_number":94,"context_line":"VIR_DOMAIN_AFFECT_CONFIG \u003d 2"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"VIR_DOMAIN_BLOCK_REBASE_COPY \u003d 8"},{"line_number":97,"context_line":"VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT \u003d 2"},{"line_number":98,"context_line":"VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT \u003d 2"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9C%2FE%3D","line":96,"updated":"2013-12-17 10:40:27.000000000","message":"How is this realted to the change?","commit_id":"338c5db8e399af1198cdce825c5885eaa5a1160d"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"95c79f5cc0621ccd4df47e6bf99d705f585ce949","unresolved":false,"context_lines":[{"line_number":93,"context_line":"VIR_DOMAIN_AFFECT_LIVE \u003d 1"},{"line_number":94,"context_line":"VIR_DOMAIN_AFFECT_CONFIG \u003d 2"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"VIR_DOMAIN_BLOCK_REBASE_COPY \u003d 8"},{"line_number":97,"context_line":"VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT \u003d 2"},{"line_number":98,"context_line":"VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT \u003d 2"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9A2c%3D","line":96,"in_reply_to":"AAAATn%2F9C%2FE%3D","updated":"2013-12-17 17:41:49.000000000","message":"Thanks, thought that I\u0027ve kept the test that was using it.","commit_id":"338c5db8e399af1198cdce825c5885eaa5a1160d"}],"nova/tests/virt/test_virt_drivers.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"5e30ee23911751113a0323a6e16b4bc8d3aaf9f3","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import base64"},{"line_number":18,"context_line":"import fixtures"},{"line_number":19,"context_line":"from mock import Mock"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"import sys"},{"line_number":22,"context_line":"import traceback"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2Fij8%3D","line":19,"updated":"2013-10-14 19:37:45.000000000","message":"fixtures, mock, and netaddr are third-party and go after the buildins, separated by a newline","commit_id":"68e7975a4c7260af253d235cecad297c1a3b16a0"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"5e30ee23911751113a0323a6e16b4bc8d3aaf9f3","unresolved":false,"context_lines":[{"line_number":1108,"context_line":"        \"\"\"Swap existing disk with a new block device.\"\"\""},{"line_number":1109,"context_line":"        # Save a copy of the domain\u0027s running XML file"},{"line_number":1110,"context_line":"        xml \u003d domain.XMLDesc(0)"},{"line_number":1111,"context_line":"        swapException \u003d None"},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"        # Abort is an idempotent operation, so make sure any block"},{"line_number":1114,"context_line":"        # jobs which may have failed are ended."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FikQ%3D","line":1111,"updated":"2013-10-14 19:37:45.000000000","message":"Please call this swap_exception to comply with the coding standard","commit_id":"68e7975a4c7260af253d235cecad297c1a3b16a0"}]}
