)]}'
{"nova/tests/unit/virt/xenapi/test_vmops.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"efe473630436a71ad472bdbdbc1eee2d13c1484b","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"                                                 \"sr_uuid\")"},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"class RollbackLiveMigrateDestinationTestCase(VMOpsTestBase):"},{"line_number":1178,"context_line":"    @mock.patch.object(volume_utils, \u0027find_sr_by_uuid\u0027, return_value\u003d\u0027sr_ref\u0027)"},{"line_number":1179,"context_line":"    @mock.patch.object(volume_utils, \u0027forget_sr\u0027)"},{"line_number":1180,"context_line":"    def test_rollback_dest_calls_sr_forget(self, forget_sr, sr_ref):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_4441b40a","line":1177,"updated":"2015-08-27 07:58:46.000000000","message":"Should we have test cases for exception paths?","commit_id":"24357679bd8566a8659b5e41e43827e398efc02f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"94ef87abace3548f51906ab8e245e12d9c9508bf","unresolved":false,"context_lines":[{"line_number":1187,"context_line":"    @mock.patch.object(volume_utils, \u0027forget_sr\u0027)"},{"line_number":1188,"context_line":"    @mock.patch.object(volume_utils, \u0027find_sr_by_uuid\u0027,"},{"line_number":1189,"context_line":"                       side_effect\u003dtest.TestingException)"},{"line_number":1190,"context_line":"    def test_rollback_dest_handles_exception(self, find_sr_ref, forget_sr):"},{"line_number":1191,"context_line":"        self.assertRaises(test.TestingException, find_sr_ref,"},{"line_number":1192,"context_line":"                          self.vmops._session, \u0027Fake-SR-UUID\u0027)"},{"line_number":1193,"context_line":"        self.assertFalse(forget_sr.called)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e8fd5b09","line":1190,"updated":"2015-09-01 15:07:48.000000000","message":"What\u0027s being tested here?  Looks like a mock being called?","commit_id":"10c29ede13677f068a1213948afad639957d60e5"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"895ba546ced0901e94537fcfe032ae58fb021ca0","unresolved":false,"context_lines":[{"line_number":1187,"context_line":"    @mock.patch.object(volume_utils, \u0027forget_sr\u0027)"},{"line_number":1188,"context_line":"    @mock.patch.object(volume_utils, \u0027find_sr_by_uuid\u0027,"},{"line_number":1189,"context_line":"                       side_effect\u003dtest.TestingException)"},{"line_number":1190,"context_line":"    def test_rollback_dest_handles_exception(self, find_sr_ref, forget_sr):"},{"line_number":1191,"context_line":"        self.assertRaises(test.TestingException, find_sr_ref,"},{"line_number":1192,"context_line":"                          self.vmops._session, \u0027Fake-SR-UUID\u0027)"},{"line_number":1193,"context_line":"        self.assertFalse(forget_sr.called)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_ffa84e79","line":1190,"in_reply_to":"da20952f_e8fd5b09","updated":"2015-09-03 11:43:11.000000000","message":"Thanks Brian, for catching this. Sorry this is not the right test at all, no wondering its failing tests, i think i pushed the wrong commit.\nWill fix in next patch.","commit_id":"10c29ede13677f068a1213948afad639957d60e5"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"efe473630436a71ad472bdbdbc1eee2d13c1484b","unresolved":false,"context_lines":[{"line_number":2276,"context_line":"    def rollback_live_migration_at_destination(self, instance,"},{"line_number":2277,"context_line":"                                               block_device_info):"},{"line_number":2278,"context_line":"        bdms \u003d block_device_info[\u0027block_device_mapping\u0027] or []"},{"line_number":2279,"context_line":"        if not bdms:"},{"line_number":2280,"context_line":"            return"},{"line_number":2281,"context_line":""},{"line_number":2282,"context_line":"        for bdm in bdms:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a2af847c","line":2279,"updated":"2015-08-27 07:58:46.000000000","message":"Not necessary since bdms can\u0027t be None and so can only be [] which would not go through any loops below.\nIs it worth having this?","commit_id":"24357679bd8566a8659b5e41e43827e398efc02f"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"d776fd5de51d5b5d7db231c2d81f6bd1b63b4ca5","unresolved":false,"context_lines":[{"line_number":2276,"context_line":"    def rollback_live_migration_at_destination(self, instance,"},{"line_number":2277,"context_line":"                                               block_device_info):"},{"line_number":2278,"context_line":"        bdms \u003d block_device_info[\u0027block_device_mapping\u0027] or []"},{"line_number":2279,"context_line":"        if not bdms:"},{"line_number":2280,"context_line":"            return"},{"line_number":2281,"context_line":""},{"line_number":2282,"context_line":"        for bdm in bdms:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_b2887fc6","line":2279,"in_reply_to":"da20952f_a2af847c","updated":"2015-08-31 09:57:55.000000000","message":"Will remove","commit_id":"24357679bd8566a8659b5e41e43827e398efc02f"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"efe473630436a71ad472bdbdbc1eee2d13c1484b","unresolved":false,"context_lines":[{"line_number":2287,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"},{"line_number":2288,"context_line":"                                                      sr_uuid)"},{"line_number":2289,"context_line":"            except Exception:"},{"line_number":2290,"context_line":"                LOG.exception(_LE(\u0027Failed to find an SR for volume %s\u0027),"},{"line_number":2291,"context_line":"                              volume_id, instance\u003dinstance)"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"            if sr_ref:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_e249fc8f","line":2290,"updated":"2015-08-27 07:58:46.000000000","message":"I think this is the wrong error message; note that find_sr_by_uuid will squash the XAPI failure if the SR does not exist.  As such, any other failure is probably more severe.\n\nI\u0027d suggest just having both commands in a single exception block, e.g.:\ntry:\n  sr_ref \u003d volume_utils.find...\n  if sr_ref:\n    volume_utils.forget_sr(...)\nexcept Exception:\n   LOG.exception(_LE(\u0027Failed to forget the SR for volume...\n\nIf find_sr_by_uuid fails then the exception that gets logged should contain all the information we need?","commit_id":"24357679bd8566a8659b5e41e43827e398efc02f"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"d776fd5de51d5b5d7db231c2d81f6bd1b63b4ca5","unresolved":false,"context_lines":[{"line_number":2287,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"},{"line_number":2288,"context_line":"                                                      sr_uuid)"},{"line_number":2289,"context_line":"            except Exception:"},{"line_number":2290,"context_line":"                LOG.exception(_LE(\u0027Failed to find an SR for volume %s\u0027),"},{"line_number":2291,"context_line":"                              volume_id, instance\u003dinstance)"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"            if sr_ref:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_928bfbc2","line":2290,"in_reply_to":"da20952f_e249fc8f","updated":"2015-08-31 09:57:55.000000000","message":"Yes that make perfect sense. Will change. Thanks !","commit_id":"24357679bd8566a8659b5e41e43827e398efc02f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"94ef87abace3548f51906ab8e245e12d9c9508bf","unresolved":false,"context_lines":[{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"        for bdm in bdms:"},{"line_number":2281,"context_line":"            volume_id \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027][\u0027volume_id\u0027]"},{"line_number":2282,"context_line":"            sr_uuid \u003d \u0027FA15E-D15C-%s\u0027 % volume_id"},{"line_number":2283,"context_line":"            sr_ref \u003d None"},{"line_number":2284,"context_line":"            try:"},{"line_number":2285,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_edd1ed30","line":2282,"updated":"2015-09-01 15:07:48.000000000","message":"What\u0027s this constant?","commit_id":"10c29ede13677f068a1213948afad639957d60e5"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"895ba546ced0901e94537fcfe032ae58fb021ca0","unresolved":false,"context_lines":[{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"        for bdm in bdms:"},{"line_number":2281,"context_line":"            volume_id \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027][\u0027volume_id\u0027]"},{"line_number":2282,"context_line":"            sr_uuid \u003d \u0027FA15E-D15C-%s\u0027 % volume_id"},{"line_number":2283,"context_line":"            sr_ref \u003d None"},{"line_number":2284,"context_line":"            try:"},{"line_number":2285,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_7febde78","line":2282,"in_reply_to":"da20952f_edd1ed30","updated":"2015-09-03 11:43:11.000000000","message":"thats whats is getting tagged to sr. I am just keeping the format that already existed in the code. I am not sure what this exactly represents.","commit_id":"10c29ede13677f068a1213948afad639957d60e5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5e2e3af9781c060c58bfafb612e7e3965464e171","unresolved":false,"context_lines":[{"line_number":2280,"context_line":"        for bdm in bdms:"},{"line_number":2281,"context_line":"            volume_id \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027][\u0027volume_id\u0027]"},{"line_number":2282,"context_line":"            sr_uuid \u003d \u0027FA15E-D15C-%s\u0027 % volume_id"},{"line_number":2283,"context_line":"            sr_ref \u003d None"},{"line_number":2284,"context_line":"            try:"},{"line_number":2285,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"},{"line_number":2286,"context_line":"                                                      sr_uuid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_9f34a9fb","line":2283,"updated":"2015-09-03 14:55:15.000000000","message":"I think you should really use this:\nhttps://github.com/openstack/nova/blob/master/nova/virt/xenapi/volume_utils.py#L44","commit_id":"10c29ede13677f068a1213948afad639957d60e5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"012bcdac3b13304c85e86461f02d26b232f245ae","unresolved":false,"context_lines":[{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"        for bdm in bdms:"},{"line_number":2281,"context_line":"            conn_data \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027]"},{"line_number":2282,"context_line":"            uuid, _, params \u003d volume_utils.parse_sr_info(conn_data)"},{"line_number":2283,"context_line":"            try:"},{"line_number":2284,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"},{"line_number":2285,"context_line":"                                                      uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_a8c6e799","line":2282,"updated":"2015-09-04 13:05:31.000000000","message":"we shouldn\u0027t really use _ here, due to the translation.","commit_id":"c4697a0990fa67bd5b78f7cfc5e123a9b13c2d5f"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"5c2f35c49707b257782b89698f5f6f8685d1f651","unresolved":false,"context_lines":[{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"        for bdm in bdms:"},{"line_number":2281,"context_line":"            conn_data \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027]"},{"line_number":2282,"context_line":"            uuid, _, params \u003d volume_utils.parse_sr_info(conn_data)"},{"line_number":2283,"context_line":"            try:"},{"line_number":2284,"context_line":"                sr_ref \u003d volume_utils.find_sr_by_uuid(self._session,"},{"line_number":2285,"context_line":"                                                      uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_08f4b358","line":2282,"in_reply_to":"da20952f_a8c6e799","updated":"2015-09-04 13:17:36.000000000","message":"ah ok. will change.","commit_id":"c4697a0990fa67bd5b78f7cfc5e123a9b13c2d5f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"012bcdac3b13304c85e86461f02d26b232f245ae","unresolved":false,"context_lines":[{"line_number":2287,"context_line":"                if sr_ref:"},{"line_number":2288,"context_line":"                    volume_utils.forget_sr(self._session, sr_ref)"},{"line_number":2289,"context_line":"            except Exception:"},{"line_number":2290,"context_line":"                    LOG.exception(_LE(\u0027Failed to forget the SR for volume %s\u0027),"},{"line_number":2291,"context_line":"                                  params[\u0027id\u0027], instance\u003dinstance)"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"    def get_per_instance_usage(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_a83d878f","line":2290,"updated":"2015-09-04 13:05:31.000000000","message":"we are past string freeze, so we can\u0027t add this change.","commit_id":"c4697a0990fa67bd5b78f7cfc5e123a9b13c2d5f"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"5c2f35c49707b257782b89698f5f6f8685d1f651","unresolved":false,"context_lines":[{"line_number":2287,"context_line":"                if sr_ref:"},{"line_number":2288,"context_line":"                    volume_utils.forget_sr(self._session, sr_ref)"},{"line_number":2289,"context_line":"            except Exception:"},{"line_number":2290,"context_line":"                    LOG.exception(_LE(\u0027Failed to forget the SR for volume %s\u0027),"},{"line_number":2291,"context_line":"                                  params[\u0027id\u0027], instance\u003dinstance)"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"    def get_per_instance_usage(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_a89b4716","line":2290,"in_reply_to":"da20952f_a83d878f","updated":"2015-09-04 13:17:36.000000000","message":"what is string freeze ? so should i be just logging normally exception normally ?","commit_id":"c4697a0990fa67bd5b78f7cfc5e123a9b13c2d5f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6e1bdb707160326ba3cdb605277b1cc9067f39c5","unresolved":false,"context_lines":[{"line_number":2289,"context_line":"            except Exception:"},{"line_number":2290,"context_line":"                    # TODO(sulo): Change LOG level to exception after"},{"line_number":2291,"context_line":"                    # string freeze (release Mitaka)."},{"line_number":2292,"context_line":"                    LOG.debug(\u0027Failed to forget the SR for volume %s\u0027,"},{"line_number":2293,"context_line":"                              params[\u0027id\u0027], instance\u003dinstance)"},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"    def get_per_instance_usage(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_6ead32e8","line":2292,"updated":"2015-09-14 11:34:52.000000000","message":"maybe we should just let these exceptions happen?\n\nAnyways, I have relaxed string freeze now, so we can add this string back in if we wanted.\n\nBut honestly, lets just let the exception get raised, oh wait, that would break it with multiple BDMs, maybe save the exception a re-raise at the end? eww, maybe the log message is best.","commit_id":"824f2235468d445ef43036477b3fa9836ae6385c"},{"author":{"_account_id":4340,"name":"Sulochan Acharya","email":"sulochan@gmail.com","username":"sulochan-acharya"},"change_message_id":"dbbddcf0b3923ba649f36f95fb3876e5c295347e","unresolved":false,"context_lines":[{"line_number":2289,"context_line":"            except Exception:"},{"line_number":2290,"context_line":"                    # TODO(sulo): Change LOG level to exception after"},{"line_number":2291,"context_line":"                    # string freeze (release Mitaka)."},{"line_number":2292,"context_line":"                    LOG.debug(\u0027Failed to forget the SR for volume %s\u0027,"},{"line_number":2293,"context_line":"                              params[\u0027id\u0027], instance\u003dinstance)"},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"    def get_per_instance_usage(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_200ef534","line":2292,"in_reply_to":"da20952f_6ead32e8","updated":"2015-09-14 11:54:57.000000000","message":"I would just like to log the exception and keep it consistent really. I\u0027ll send a new PR now. thanks.","commit_id":"824f2235468d445ef43036477b3fa9836ae6385c"}]}
