)]}'
{"cinder/tests/unit/test_rbd.py":[{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"5c46f774f2fef2e873a82b4c7a661f789c4c3cf7","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"        driver \u003d self.volume.driver"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        with mock.patch.object(driver, \u0027_is_cloneable\u0027, lambda *args: False):"},{"line_number":1119,"context_line":"            image_loc \u003d (mock.Mock(), None)"},{"line_number":1120,"context_line":"            actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1121,"context_line":"                                        mock.Mock(),"},{"line_number":1122,"context_line":"                                        image_loc,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_78ffc6aa","line":1119,"updated":"2015-05-15 15:26:23.000000000","message":"Was this test failing with your change?","commit_id":"d0841a5a15e6ab5be31811b749c3149a8af63480"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"23169b21506fb3f2941058d1d7f8fba382c2a55b","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"        driver \u003d self.volume.driver"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        with mock.patch.object(driver, \u0027_is_cloneable\u0027, lambda *args: False):"},{"line_number":1119,"context_line":"            image_loc \u003d (mock.Mock(), None)"},{"line_number":1120,"context_line":"            actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1121,"context_line":"                                        mock.Mock(),"},{"line_number":1122,"context_line":"                                        image_loc,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_1ce1df9a","line":1119,"in_reply_to":"7a016987_78ffc6aa","updated":"2015-05-15 20:44:06.000000000","message":"Yes. image_loc[1] should be None or an iterable.","commit_id":"d0841a5a15e6ab5be31811b749c3149a8af63480"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"5c46f774f2fef2e873a82b4c7a661f789c4c3cf7","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1187,"context_line":"                    mock_clone.assert_called_once_with(volume,"},{"line_number":1188,"context_line":"                                                       \u0027fi\u0027, \u0027fo\u0027, \u0027fum\u0027)"},{"line_number":1189,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1190,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1191,"context_line":"                                                       \u0027id\u0027: \u0027id.foo\u0027})"},{"line_number":1192,"context_line":"                    mock_is_cloneable.assert_called_with(\u0027rbd://fee/fi/fo/fum\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_98bf22fb","line":1189,"updated":"2015-05-15 15:26:23.000000000","message":"I\u0027m not sure if this can be guaranteed because you are iterating over a set.","commit_id":"d0841a5a15e6ab5be31811b749c3149a8af63480"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"23169b21506fb3f2941058d1d7f8fba382c2a55b","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1187,"context_line":"                    mock_clone.assert_called_once_with(volume,"},{"line_number":1188,"context_line":"                                                       \u0027fi\u0027, \u0027fo\u0027, \u0027fum\u0027)"},{"line_number":1189,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1190,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1191,"context_line":"                                                       \u0027id\u0027: \u0027id.foo\u0027})"},{"line_number":1192,"context_line":"                    mock_is_cloneable.assert_called_with(\u0027rbd://fee/fi/fo/fum\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_50c0567c","line":1189,"in_reply_to":"7a016987_98bf22fb","updated":"2015-05-15 20:44:06.000000000","message":"right, I\u0027ll remove this assert","commit_id":"d0841a5a15e6ab5be31811b749c3149a8af63480"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"c5c786f35e10e4d408a802e8520765c12b0be5e6","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                                                mock.Mock())"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1186,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1187,"context_line":"                    mock_clone.assert_called_once_with(volume,"},{"line_number":1188,"context_line":"                                                       \u0027fi\u0027, \u0027fo\u0027, \u0027fum\u0027)"},{"line_number":1189,"context_line":"                    mock_is_cloneable.assert_called_with(\u0027rbd://fee/fi/fo/fum\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_8310ad02","line":1186,"updated":"2015-05-18 08:54:55.000000000","message":"Here the order of parameters is wrong. This should be (expected, actual)\n\nSo:\nself.assertEqual(2, mock_is_cloneable.call_count)","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9b0c56da2608af43b92f12f7cf689fa7fe8e11d3","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                                                mock.Mock())"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1186,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1187,"context_line":"                    mock_clone.assert_called_once_with(volume,"},{"line_number":1188,"context_line":"                                                       \u0027fi\u0027, \u0027fo\u0027, \u0027fum\u0027)"},{"line_number":1189,"context_line":"                    mock_is_cloneable.assert_called_with(\u0027rbd://fee/fi/fo/fum\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_9e3006a0","line":1186,"in_reply_to":"7a016987_8310ad02","updated":"2015-05-18 09:43:40.000000000","message":"Done","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"c5c786f35e10e4d408a802e8520765c12b0be5e6","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"                                                mock.Mock())"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1219,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1220,"context_line":"                    self.assertEqual(mock_clone.called, False)"},{"line_number":1221,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1222,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_23f699d7","line":1219,"updated":"2015-05-18 08:54:55.000000000","message":"Same as above.","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9b0c56da2608af43b92f12f7cf689fa7fe8e11d3","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"                                                mock.Mock())"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1219,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1220,"context_line":"                    self.assertEqual(mock_clone.called, False)"},{"line_number":1221,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1222,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_7e278a64","line":1219,"in_reply_to":"7a016987_23f699d7","updated":"2015-05-18 09:43:40.000000000","message":"Done","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"c5c786f35e10e4d408a802e8520765c12b0be5e6","unresolved":false,"context_lines":[{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1219,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1220,"context_line":"                    self.assertEqual(mock_clone.called, False)"},{"line_number":1221,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1222,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1223,"context_line":"                                                       \u0027id\u0027: \u0027id.foo\u0027})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_a330499f","line":1220,"updated":"2015-05-18 08:54:55.000000000","message":"Here the order of arguments is wrong. And better way is:\n\nself.assertFalse(mock_clone.called)","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9b0c56da2608af43b92f12f7cf689fa7fe8e11d3","unresolved":false,"context_lines":[{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1219,"context_line":"                    self.assertEqual(mock_is_cloneable.call_count, 2)"},{"line_number":1220,"context_line":"                    self.assertEqual(mock_clone.called, False)"},{"line_number":1221,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1222,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1223,"context_line":"                                                       \u0027id\u0027: \u0027id.foo\u0027})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_5e2a8e2d","line":1220,"in_reply_to":"7a016987_a330499f","updated":"2015-05-18 09:43:40.000000000","message":"Done","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"c5c786f35e10e4d408a802e8520765c12b0be5e6","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://fee/fi/fo/fum\u0027,"},{"line_number":1225,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1226,"context_line":"                                                       \u0027id\u0027: \u0027id.foo\u0027})"},{"line_number":1227,"context_line":"                    self.assertEqual(mock_resize.called, False)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_83278d63","line":1227,"updated":"2015-05-18 08:54:55.000000000","message":"Same as above.","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9b0c56da2608af43b92f12f7cf689fa7fe8e11d3","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                    mock_is_cloneable.assert_any_call(\u0027rbd://fee/fi/fo/fum\u0027,"},{"line_number":1225,"context_line":"                                                      {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1226,"context_line":"                                                       \u0027id\u0027: \u0027id.foo\u0027})"},{"line_number":1227,"context_line":"                    self.assertEqual(mock_resize.called, False)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_fe1b7a19","line":1227,"in_reply_to":"7a016987_83278d63","updated":"2015-05-18 09:43:40.000000000","message":"Done","commit_id":"f4eb1427fc5b0290699b77e94040cab12f1c4b09"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"        expected \u003d ({\u0027provider_location\u0027: None}, True)"},{"line_number":1158,"context_line":"        driver \u003d self.volume.driver"},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"        def cloneable_side_effect(*args, **kwargs):"},{"line_number":1161,"context_line":"            if args[0] \u003d\u003d \u0027rbd://fee/fi/fo/fum\u0027:"},{"line_number":1162,"context_line":"                return True"},{"line_number":1163,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_d100de68","line":1160,"updated":"2015-05-27 10:54:36.000000000","message":"It\u0027s not a good idea to leave this so unrestricted, as you could miss coding errors with the number of passed arguments - like passing extra arguments or missing arguments (I\u0027ve seen it before):\n\n def cloneable_side_effect(url_location, image_meta):","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"        expected \u003d ({\u0027provider_location\u0027: None}, True)"},{"line_number":1158,"context_line":"        driver \u003d self.volume.driver"},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"        def cloneable_side_effect(*args, **kwargs):"},{"line_number":1161,"context_line":"            if args[0] \u003d\u003d \u0027rbd://fee/fi/fo/fum\u0027:"},{"line_number":1162,"context_line":"                return True"},{"line_number":1163,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_c3435b12","line":1160,"in_reply_to":"7a016987_d100de68","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1161,"context_line":"            if args[0] \u003d\u003d \u0027rbd://fee/fi/fo/fum\u0027:"},{"line_number":1162,"context_line":"                return True"},{"line_number":1163,"context_line":"            else:"},{"line_number":1164,"context_line":"                return False"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"        with mock.patch.object(self.volume.driver, \u0027_is_cloneable\u0027) as \\"},{"line_number":1167,"context_line":"                mock_is_cloneable:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f10bda7b","line":1164,"updated":"2015-05-27 10:54:36.000000000","message":"You could just:\n\n return url_location \u003d\u003d \u0027rbd://fee/fi/fo/fum\u0027","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1161,"context_line":"            if args[0] \u003d\u003d \u0027rbd://fee/fi/fo/fum\u0027:"},{"line_number":1162,"context_line":"                return True"},{"line_number":1163,"context_line":"            else:"},{"line_number":1164,"context_line":"                return False"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"        with mock.patch.object(self.volume.driver, \u0027_is_cloneable\u0027) as \\"},{"line_number":1167,"context_line":"                mock_is_cloneable:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_8346831f","line":1164,"in_reply_to":"7a016987_f10bda7b","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"            with mock.patch.object(self.volume.driver, \u0027_clone\u0027) as \\"},{"line_number":1170,"context_line":"                    mock_clone:"},{"line_number":1171,"context_line":"                with mock.patch.object(self.volume.driver, \u0027_resize\u0027) as \\"},{"line_number":1172,"context_line":"                        mock_resize:"},{"line_number":1173,"context_line":"                    image_loc \u003d (\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1174,"context_line":"                                 [{\u0027url\u0027: \u0027rbd://bee/bi/bo/bum\u0027},"},{"line_number":1175,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f1119a5e","line":1172,"updated":"2015-05-27 10:54:36.000000000","message":"All these nested mocks are really hard to read. It\u0027s better to either use mock.patch.object as method decorator or include all mocking into the same with clause.\n\nOption 1:\n\n @mock.patch.object(self.volume.driver, \u0027_is_cloneable\u0027)\n @mock.patch.object(self.volume.driver, \u0027_clone\u0027)\n @mock.patch.object(self.volume.driver, \u0027_resize\u0027)\n def test_clone_multilocation_success(self, mock_resize, mock_clone, mock_is_cloneable):\n\nOption 2:\n\n with mock.patch.object(self.volume.driver, \u0027_is_cloneable\u0027) as mock_is_cloneable, \n        mock.patch.object(self.volume.driver, \u0027_clone\u0027) as mock_clone,\n        mock.patch.object(self.volume.driver, \u0027_resize\u0027) as mock_resize:","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"            with mock.patch.object(self.volume.driver, \u0027_clone\u0027) as \\"},{"line_number":1170,"context_line":"                    mock_clone:"},{"line_number":1171,"context_line":"                with mock.patch.object(self.volume.driver, \u0027_resize\u0027) as \\"},{"line_number":1172,"context_line":"                        mock_resize:"},{"line_number":1173,"context_line":"                    image_loc \u003d (\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1174,"context_line":"                                 [{\u0027url\u0027: \u0027rbd://bee/bi/bo/bum\u0027},"},{"line_number":1175,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_030853d8","line":1172,"in_reply_to":"7a016987_f1119a5e","updated":"2015-05-27 18:38:58.000000000","message":"Option 2 is easier to read, I guess.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"                    volume \u003d {\u0027name\u0027: \u0027vol1\u0027}"},{"line_number":1178,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1179,"context_line":"                                                volume,"},{"line_number":1180,"context_line":"                                                image_loc,"},{"line_number":1181,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_946db49b","line":1178,"updated":"2015-05-27 10:54:36.000000000","message":"Better if you pass a real context (self.context) or at least a sentinel (mock.sentinel.context)","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"                    volume \u003d {\u0027name\u0027: \u0027vol1\u0027}"},{"line_number":1178,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1179,"context_line":"                                                volume,"},{"line_number":1180,"context_line":"                                                image_loc,"},{"line_number":1181,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_e30e57e4","line":1178,"in_reply_to":"7a016987_946db49b","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1179,"context_line":"                                                volume,"},{"line_number":1180,"context_line":"                                                image_loc,"},{"line_number":1181,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1182,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1183,"context_line":"                                                mock.Mock())"},{"line_number":1184,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_54d61cf2","line":1181,"updated":"2015-05-27 10:54:36.000000000","message":"Can be replaced with a sentinel (mock.sentinel.image_meta) and then checked against it in line 1190, or at lease assign it to a variable and use it in both places like you did with volume.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1179,"context_line":"                                                volume,"},{"line_number":1180,"context_line":"                                                image_loc,"},{"line_number":1181,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1182,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1183,"context_line":"                                                mock.Mock())"},{"line_number":1184,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_c3111b06","line":1181,"in_reply_to":"7a016987_54d61cf2","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1180,"context_line":"                                                image_loc,"},{"line_number":1181,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1182,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1183,"context_line":"                                                mock.Mock())"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1186,"context_line":"                    self.assertEqual(2, mock_is_cloneable.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_d4b68cf8","line":1183,"updated":"2015-05-27 10:54:36.000000000","message":"Nicer with a sentinel: mock.sentinel.image_service","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1180,"context_line":"                                                image_loc,"},{"line_number":1181,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1182,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1183,"context_line":"                                                mock.Mock())"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1186,"context_line":"                    self.assertEqual(2, mock_is_cloneable.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_a3f97fca","line":1183,"in_reply_to":"7a016987_d4b68cf8","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        with mock.patch.object(driver, \u0027_is_cloneable\u0027) as \\"},{"line_number":1199,"context_line":"                mock_is_cloneable:"},{"line_number":1200,"context_line":"            mock_is_cloneable.return_value \u003d False"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"            with mock.patch.object(self.volume.driver, \u0027_clone\u0027) as \\"},{"line_number":1203,"context_line":"                    mock_clone:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_b43f9024","line":1200,"updated":"2015-05-27 10:54:36.000000000","message":"This can be included when doing the mock: mock.patch.object(driver, \u0027_is_cloneable\u0027, return_value\u003dFalse)","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        with mock.patch.object(driver, \u0027_is_cloneable\u0027) as \\"},{"line_number":1199,"context_line":"                mock_is_cloneable:"},{"line_number":1200,"context_line":"            mock_is_cloneable.return_value \u003d False"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"            with mock.patch.object(self.volume.driver, \u0027_clone\u0027) as \\"},{"line_number":1203,"context_line":"                    mock_clone:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_43fe4baf","line":1200,"in_reply_to":"7a016987_b43f9024","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"            with mock.patch.object(self.volume.driver, \u0027_clone\u0027) as \\"},{"line_number":1203,"context_line":"                    mock_clone:"},{"line_number":1204,"context_line":"                with mock.patch.object(self.volume.driver, \u0027_resize\u0027) as \\"},{"line_number":1205,"context_line":"                        mock_resize:"},{"line_number":1206,"context_line":"                    image_loc \u003d (\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1207,"context_line":"                                 [{\u0027url\u0027: \u0027rbd://bee/bi/bo/bum\u0027},"},{"line_number":1208,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_148b0420","line":1205,"updated":"2015-05-27 10:54:36.000000000","message":"Same as in the other test about the nested withs.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"            with mock.patch.object(self.volume.driver, \u0027_clone\u0027) as \\"},{"line_number":1203,"context_line":"                    mock_clone:"},{"line_number":1204,"context_line":"                with mock.patch.object(self.volume.driver, \u0027_resize\u0027) as \\"},{"line_number":1205,"context_line":"                        mock_resize:"},{"line_number":1206,"context_line":"                    image_loc \u003d (\u0027rbd://bee/bi/bo/bum\u0027,"},{"line_number":1207,"context_line":"                                 [{\u0027url\u0027: \u0027rbd://bee/bi/bo/bum\u0027},"},{"line_number":1208,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_232c6f49","line":1205,"in_reply_to":"7a016987_148b0420","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1208,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"                    volume \u003d {\u0027name\u0027: \u0027vol1\u0027}"},{"line_number":1211,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1212,"context_line":"                                                volume,"},{"line_number":1213,"context_line":"                                                image_loc,"},{"line_number":1214,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f48188fc","line":1211,"updated":"2015-05-27 10:54:36.000000000","message":"Same as in the other test.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1208,"context_line":"                                  {\u0027url\u0027: \u0027rbd://fee/fi/fo/fum\u0027}])"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"                    volume \u003d {\u0027name\u0027: \u0027vol1\u0027}"},{"line_number":1211,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1212,"context_line":"                                                volume,"},{"line_number":1213,"context_line":"                                                image_loc,"},{"line_number":1214,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_032f333f","line":1211,"in_reply_to":"7a016987_f48188fc","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1212,"context_line":"                                                volume,"},{"line_number":1213,"context_line":"                                                image_loc,"},{"line_number":1214,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1215,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1216,"context_line":"                                                mock.Mock())"},{"line_number":1217,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f4fd086f","line":1214,"updated":"2015-05-27 10:54:36.000000000","message":"Same as in the other test.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"                    actual \u003d driver.clone_image(mock.Mock(),"},{"line_number":1212,"context_line":"                                                volume,"},{"line_number":1213,"context_line":"                                                image_loc,"},{"line_number":1214,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1215,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1216,"context_line":"                                                mock.Mock())"},{"line_number":1217,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_e325375c","line":1214,"in_reply_to":"7a016987_f4fd086f","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                                                image_loc,"},{"line_number":1214,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1215,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1216,"context_line":"                                                mock.Mock())"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1219,"context_line":"                    self.assertEqual(2, mock_is_cloneable.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_7476b83f","line":1216,"updated":"2015-05-27 10:54:36.000000000","message":"Same as in the other test.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                                                image_loc,"},{"line_number":1214,"context_line":"                                                {\u0027disk_format\u0027: \u0027raw\u0027,"},{"line_number":1215,"context_line":"                                                 \u0027id\u0027: \u0027id.foo\u0027},"},{"line_number":1216,"context_line":"                                                mock.Mock())"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"                    self.assertEqual(expected, actual)"},{"line_number":1219,"context_line":"                    self.assertEqual(2, mock_is_cloneable.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_c328fb35","line":1216,"in_reply_to":"7a016987_7476b83f","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f5810d9b93641aba1d814636f4e6897189f445ae","unresolved":false,"context_lines":[{"line_number":841,"context_line":"    def clone_image(self, context, volume,"},{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location :"},{"line_number":845,"context_line":"            url_locations \u003d [image_location[0]]"},{"line_number":846,"context_line":"            for location in image_location[1] if image_location[1] else []:"},{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_80ac3536","line":844,"updated":"2015-05-13 18:57:17.000000000","message":"extra space","commit_id":"8c84b55032fdc7d7ed9dd5a9b9b93145fc718de6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f5810d9b93641aba1d814636f4e6897189f445ae","unresolved":false,"context_lines":[{"line_number":849,"context_line":"            for url_location in set(url_locations):"},{"line_number":850,"context_line":"                if url_location is not None and self._is_cloneable("},{"line_number":851,"context_line":"                        url_location, image_meta):"},{"line_number":852,"context_line":"                    prefix, pool, image, snapshot \u003d \\"},{"line_number":853,"context_line":"                        self._parse_location(url_location)"},{"line_number":854,"context_line":"                    self._clone(volume, pool, image, snapshot)"},{"line_number":855,"context_line":"                    self._resize(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_40a63d54","line":852,"updated":"2015-05-13 18:57:17.000000000","message":"Variable should remain named as \"_prefix\" which indicates that it isn\u0027t used.","commit_id":"8c84b55032fdc7d7ed9dd5a9b9b93145fc718de6"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"5c46f774f2fef2e873a82b4c7a661f789c4c3cf7","unresolved":false,"context_lines":[{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            url_locations \u003d [image_location[0]]"},{"line_number":846,"context_line":"            for location in image_location[1] if image_location[1] else []:"},{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_35cb9720","line":845,"updated":"2015-05-15 15:26:23.000000000","message":"nit: Is this necessary? Isn\u0027t image_location[0] always a member of image_location[1]?","commit_id":"d0841a5a15e6ab5be31811b749c3149a8af63480"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"23169b21506fb3f2941058d1d7f8fba382c2a55b","unresolved":false,"context_lines":[{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            url_locations \u003d [image_location[0]]"},{"line_number":846,"context_line":"            for location in image_location[1] if image_location[1] else []:"},{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_1c1c3fc0","line":845,"in_reply_to":"7a016987_35cb9720","updated":"2015-05-15 20:44:06.000000000","message":"If glance is configured with show_multiple_locations\u003dFalse (default option) image_location[0] is direct_url and image_location[1] is None.","commit_id":"d0841a5a15e6ab5be31811b749c3149a8af63480"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            url_locations \u003d [image_location[0]]"},{"line_number":846,"context_line":"            for location in image_location[1] if image_location[1] else []:"},{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f4d068cb","line":845,"updated":"2015-05-27 10:54:36.000000000","message":"If you have image_location[1] then you don\u0027t need image_location[1] because it will be included there.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            url_locations \u003d [image_location[0]]"},{"line_number":846,"context_line":"            for location in image_location[1] if image_location[1] else []:"},{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"            for url_location in set(url_locations):"},{"line_number":850,"context_line":"                if url_location is not None and self._is_cloneable("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_d111fe05","line":847,"updated":"2015-05-27 10:54:36.000000000","message":"I would change these 3 lines for something a little more readable and efficient (since \nyou are going to use url_locations as a set later on):\n\n url_locations \u003d [location[\u0027url\u0027] for location in image_location[1] or []]\n url_locations \u003d url_locations or [image_location[0]]\n\nOr if you prefer a clearer path:\n\n if image_location[1]:\n     url_locations \u003d [location[\u0027url\u0027] for location in image_location[1]]\n else:\n     url_locations \u003d [image_location[0]]\n\nThen you can remove `set` from the for loop because you will not have repeated locations.","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            url_locations \u003d [image_location[0]]"},{"line_number":846,"context_line":"            for location in image_location[1] if image_location[1] else []:"},{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"            for url_location in set(url_locations):"},{"line_number":850,"context_line":"                if url_location is not None and self._is_cloneable("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_43152be3","line":847,"in_reply_to":"7a016987_d111fe05","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"66699a9771f7c238a018b8d3e06bdde190d632bb","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"            for url_location in set(url_locations):"},{"line_number":850,"context_line":"                if url_location is not None and self._is_cloneable("},{"line_number":851,"context_line":"                        url_location, image_meta):"},{"line_number":852,"context_line":"                    _prefix, pool, image, snapshot \u003d \\"},{"line_number":853,"context_line":"                        self._parse_location(url_location)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_51c3ce57","line":850,"updated":"2015-05-27 10:54:36.000000000","message":"I would change it so it can handle empty strings as well:\n\n if url_location and self._is_cloneable(","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"37896880047352fa735932a18220333e8d1752c0","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                url_locations.append(location[\"url\"])"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"            for url_location in set(url_locations):"},{"line_number":850,"context_line":"                if url_location is not None and self._is_cloneable("},{"line_number":851,"context_line":"                        url_location, image_meta):"},{"line_number":852,"context_line":"                    _prefix, pool, image, snapshot \u003d \\"},{"line_number":853,"context_line":"                        self._parse_location(url_location)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_23d34f3a","line":850,"in_reply_to":"7a016987_51c3ce57","updated":"2015-05-27 18:38:58.000000000","message":"Done","commit_id":"8b2e2a8db336e0823b10516ec8fee0e185e7351c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b69a031b4ffd8e331825864680090a6bb87bc1d0","unresolved":false,"context_lines":[{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            if image_location[1]:"},{"line_number":846,"context_line":"                url_locations \u003d [location[\u0027url\u0027] for"},{"line_number":847,"context_line":"                                 location in image_location[1]]"},{"line_number":848,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_c0a57847","line":845,"updated":"2015-05-28 09:57:53.000000000","message":"Maybe it\u0027d be a good idea to add some comment here explaining what we are doing and what image_location[0] and [1] contain.","commit_id":"73e7e99cda5aa91bb37de53291744725ebb767ff"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"fbd36c2043c05fac9c812da2be721ab2729d4b64","unresolved":false,"context_lines":[{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            if image_location[1]:"},{"line_number":846,"context_line":"                url_locations \u003d [location[\u0027url\u0027] for"},{"line_number":847,"context_line":"                                 location in image_location[1]]"},{"line_number":848,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_c8ee6821","line":845,"in_reply_to":"7a016987_a2002302","updated":"2015-05-31 14:02:42.000000000","message":"Added comments about image_location","commit_id":"73e7e99cda5aa91bb37de53291744725ebb767ff"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"c5f4bdd40085e08fefe79e713dc2337048a742bf","unresolved":false,"context_lines":[{"line_number":842,"context_line":"                    image_location, image_meta,"},{"line_number":843,"context_line":"                    image_service):"},{"line_number":844,"context_line":"        if image_location:"},{"line_number":845,"context_line":"            if image_location[1]:"},{"line_number":846,"context_line":"                url_locations \u003d [location[\u0027url\u0027] for"},{"line_number":847,"context_line":"                                 location in image_location[1]]"},{"line_number":848,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_a2002302","line":845,"in_reply_to":"7a016987_c0a57847","updated":"2015-05-28 22:47:30.000000000","message":"+1","commit_id":"73e7e99cda5aa91bb37de53291744725ebb767ff"}]}
