)]}'
{"nova/cmd/manage.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e369d2cb325343243c5c9c08ef9f670228c6cf91","unresolved":false,"context_lines":[{"line_number":1327,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":1328,"context_line":"                continue"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        if len(instances) \u003d\u003d 0 or len(instances) \u003c limit:"},{"line_number":1331,"context_line":"            # We\u0027ve hit the end of the instances table"},{"line_number":1332,"context_line":"            marker \u003d None"},{"line_number":1333,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_937258e4","line":1330,"range":{"start_line":1330,"start_character":34,"end_line":1330,"end_character":57},"updated":"2016-04-12 14:54:43.000000000","message":"There is a corner case where the number of instances you had to verify is exactly equals to the limit (eg. 50). In that case, you will add a marker with the last instance. That\u0027s okay because the next call (or loop if you have no limit set) will remove that marker and iterate over literally nothing.\nMy own logic prefers to enforce that in the code instead of putting a marker for nothing, but it seems your logic is better than mine.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ac9c7c30a4a4236ec8933597f751be4871a3f15","unresolved":false,"context_lines":[{"line_number":1327,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":1328,"context_line":"                continue"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        if len(instances) \u003d\u003d 0 or len(instances) \u003c limit:"},{"line_number":1331,"context_line":"            # We\u0027ve hit the end of the instances table"},{"line_number":1332,"context_line":"            marker \u003d None"},{"line_number":1333,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_138f6d24","line":1330,"range":{"start_line":1330,"start_character":34,"end_line":1330,"end_character":57},"in_reply_to":"5a18252c_937258e4","updated":"2016-04-15 20:42:41.000000000","message":"I\u0027ll think on this. I don\u0027t want to complicate the code too much to avoid one db query, but if it\u0027s easy enough to handle I\u0027ll add it in.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea85156a9a6c0265cb936cb15a339bb67b91d5de","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                 \u0027uuid provided.\u0027)"},{"line_number":1340,"context_line":"    @args(\u0027--max-count\u0027, metavar\u003d\u0027\u003cmax_count\u003e\u0027,"},{"line_number":1341,"context_line":"          help\u003d\u0027Maximum number of instances to map\u0027)"},{"line_number":1342,"context_line":"    def map_instances(self, cell_uuid, max_count\u003dNone):"},{"line_number":1343,"context_line":"        if max_count is not None:"},{"line_number":1344,"context_line":"            try:"},{"line_number":1345,"context_line":"                max_count \u003d int(max_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_135e4de9","line":1342,"updated":"2016-04-15 20:18:46.000000000","message":"We should probably have a docstring for the method since that\u0027s the help text for the command.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8397bf4a4973eef473ccec8e41632bb7dc7b11d","unresolved":false,"context_lines":[{"line_number":1347,"context_line":"                max_count \u003d -1"},{"line_number":1348,"context_line":"            map_all \u003d False"},{"line_number":1349,"context_line":"            if max_count \u003c 1:"},{"line_number":1350,"context_line":"                print(_(\u0027Must supply a positive value for max_number\u0027))"},{"line_number":1351,"context_line":"                return 127"},{"line_number":1352,"context_line":"        else:"},{"line_number":1353,"context_line":"            map_all \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_d8819291","line":1350,"range":{"start_line":1350,"start_character":58,"end_line":1350,"end_character":68},"updated":"2016-04-15 20:16:06.000000000","message":"--max-count","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8397bf4a4973eef473ccec8e41632bb7dc7b11d","unresolved":false,"context_lines":[{"line_number":1351,"context_line":"                return 127"},{"line_number":1352,"context_line":"        else:"},{"line_number":1353,"context_line":"            map_all \u003d True"},{"line_number":1354,"context_line":"            max_count \u003d 50"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":1357,"context_line":"        marker_project_id \u003d \u0027INSTANCE_MIGRATION_MARKER\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_3849a68c","line":1354,"updated":"2016-04-15 20:16:06.000000000","message":"Why 50? Why not use CONF.osapi_max_limit which is 1000 and thus the default limit in the DB API queries.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ac9c7c30a4a4236ec8933597f751be4871a3f15","unresolved":false,"context_lines":[{"line_number":1351,"context_line":"                return 127"},{"line_number":1352,"context_line":"        else:"},{"line_number":1353,"context_line":"            map_all \u003d True"},{"line_number":1354,"context_line":"            max_count \u003d 50"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":1357,"context_line":"        marker_project_id \u003d \u0027INSTANCE_MIGRATION_MARKER\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_f308f193","line":1354,"in_reply_to":"1a122d0e_3849a68c","updated":"2016-04-15 20:42:41.000000000","message":"This is the default for the online db migrations run from nova-manage. 1000 seems like a bit much to me.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8397bf4a4973eef473ccec8e41632bb7dc7b11d","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"            map_all \u003d True"},{"line_number":1354,"context_line":"            max_count \u003d 50"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":1357,"context_line":"        marker_project_id \u003d \u0027INSTANCE_MIGRATION_MARKER\u0027"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"        # Validate the cell exists, this will raise if not"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_73c18180","line":1356,"updated":"2016-04-15 20:16:06.000000000","message":"This was an admin context before (which you now elevate when needed), but was also reading deleted instances. Now you aren\u0027t reading deleted instances to map them...what happens if we don\u0027t map those bad boys and they are resurrected?","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ac9c7c30a4a4236ec8933597f751be4871a3f15","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"            map_all \u003d True"},{"line_number":1354,"context_line":"            max_count \u003d 50"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":1357,"context_line":"        marker_project_id \u003d \u0027INSTANCE_MIGRATION_MARKER\u0027"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"        # Validate the cell exists, this will raise if not"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_9326dd14","line":1356,"in_reply_to":"1a122d0e_73c18180","updated":"2016-04-15 20:42:41.000000000","message":"They would be invisible. Without a mapping they couldn\u0027t be resurrected from the API, and if done manually they wouldn\u0027t show up in the API. I didn\u0027t mean to remove the read_deleted thing, those bad boys should be mapped so I\u0027ll add that back in.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8397bf4a4973eef473ccec8e41632bb7dc7b11d","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"            max_count \u003d 50"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":1357,"context_line":"        marker_project_id \u003d \u0027INSTANCE_MIGRATION_MARKER\u0027"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"        # Validate the cell exists, this will raise if not"},{"line_number":1360,"context_line":"        cell_mapping \u003d objects.CellMapping.get_by_uuid(ctxt, cell_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_78095e31","line":1357,"updated":"2016-04-15 20:16:06.000000000","message":"What if Sean makes project id UUID only?! We could change it I guess.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ac9c7c30a4a4236ec8933597f751be4871a3f15","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"            max_count \u003d 50"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":1357,"context_line":"        marker_project_id \u003d \u0027INSTANCE_MIGRATION_MARKER\u0027"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"        # Validate the cell exists, this will raise if not"},{"line_number":1360,"context_line":"        cell_mapping \u003d objects.CellMapping.get_by_uuid(ctxt, cell_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_d377b500","line":1357,"in_reply_to":"1a122d0e_78095e31","updated":"2016-04-15 20:42:41.000000000","message":"Yeah, we could use an all 0 uuid like we do in other places. But this should be gone before any change like that would happen.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8397bf4a4973eef473ccec8e41632bb7dc7b11d","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"                break"},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"        if next_marker:"},{"line_number":1381,"context_line":"            # Don\u0027t judge me. There\u0027s already an InstanceMapping with this UUID"},{"line_number":1382,"context_line":"            # so the marker needs to be non destructively modified."},{"line_number":1383,"context_line":"            next_marker \u003d next_marker.replace(\u0027-\u0027, \u0027 \u0027)"},{"line_number":1384,"context_line":"            objects.InstanceMapping(ctxt, instance_uuid\u003dnext_marker,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_134dad72","line":1381,"range":{"start_line":1381,"start_character":14,"end_line":1381,"end_character":28},"updated":"2016-04-15 20:16:06.000000000","message":"Too late.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ac9c7c30a4a4236ec8933597f751be4871a3f15","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"                break"},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"        if next_marker:"},{"line_number":1381,"context_line":"            # Don\u0027t judge me. There\u0027s already an InstanceMapping with this UUID"},{"line_number":1382,"context_line":"            # so the marker needs to be non destructively modified."},{"line_number":1383,"context_line":"            next_marker \u003d next_marker.replace(\u0027-\u0027, \u0027 \u0027)"},{"line_number":1384,"context_line":"            objects.InstanceMapping(ctxt, instance_uuid\u003dnext_marker,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_f364714a","line":1381,"range":{"start_line":1381,"start_character":14,"end_line":1381,"end_character":28},"in_reply_to":"1a122d0e_134dad72","updated":"2016-04-15 20:42:41.000000000","message":"My shame is exposed for all to see.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea85156a9a6c0265cb936cb15a339bb67b91d5de","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"            next_marker \u003d next_marker.replace(\u0027-\u0027, \u0027 \u0027)"},{"line_number":1384,"context_line":"            objects.InstanceMapping(ctxt, instance_uuid\u003dnext_marker,"},{"line_number":1385,"context_line":"                    project_id\u003dmarker_project_id).create()"},{"line_number":1386,"context_line":"            return 1"},{"line_number":1387,"context_line":"        return 0"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"    # TODO(melwitt): Remove this when the oslo.messaging function"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_b352f9db","line":1386,"updated":"2016-04-15 20:18:46.000000000","message":"Why return 1? Just to indicate that there are more things to map but we hit the limit? Just wondering about the non-0 return code being considered an error.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b2f3d0a800b3df345bc04d0034c96990a6570a9","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"            next_marker \u003d next_marker.replace(\u0027-\u0027, \u0027 \u0027)"},{"line_number":1384,"context_line":"            objects.InstanceMapping(ctxt, instance_uuid\u003dnext_marker,"},{"line_number":1385,"context_line":"                    project_id\u003dmarker_project_id).create()"},{"line_number":1386,"context_line":"            return 1"},{"line_number":1387,"context_line":"        return 0"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"    # TODO(melwitt): Remove this when the oslo.messaging function"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_377ed4e4","line":1386,"in_reply_to":"1a122d0e_b34b19b0","updated":"2016-04-15 21:10:19.000000000","message":"I don\u0027t actually see online_data_migrations doing something like this...what am I missing? I think we should at least document the return code in this case in the docstring for the help text.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ac9c7c30a4a4236ec8933597f751be4871a3f15","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"            next_marker \u003d next_marker.replace(\u0027-\u0027, \u0027 \u0027)"},{"line_number":1384,"context_line":"            objects.InstanceMapping(ctxt, instance_uuid\u003dnext_marker,"},{"line_number":1385,"context_line":"                    project_id\u003dmarker_project_id).create()"},{"line_number":1386,"context_line":"            return 1"},{"line_number":1387,"context_line":"        return 0"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"    # TODO(melwitt): Remove this when the oslo.messaging function"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_b34b19b0","line":1386,"in_reply_to":"1a122d0e_b352f9db","updated":"2016-04-15 20:42:41.000000000","message":"I followed the precedent of the online db migration command. I agree it\u0027s a bit odd since normally nonzero would be an error. But it\u0027s all we\u0027ve got I guess.","commit_id":"e6b06e58305b5696d7b4ec5f82702a9efc68d3d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b856b76f85dae49c4e24a284dfafca109bddd71f","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"        will be queried from oldest to newest and mapped to the provided cell."},{"line_number":1349,"context_line":"        A max-count can be set on the number of instance to map in a single"},{"line_number":1350,"context_line":"        run. Repeated runs of the command will start from where the last run"},{"line_number":1351,"context_line":"        finished so it is not necessary to increase max-count to finish. An"},{"line_number":1352,"context_line":"        exit code of 0 indicates that all instances have been mapped."},{"line_number":1353,"context_line":"        \"\"\""},{"line_number":1354,"context_line":""},{"line_number":1355,"context_line":"        if max_count is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_5760b035","line":1352,"range":{"start_line":1351,"start_character":73,"end_line":1352,"end_character":69},"updated":"2016-04-15 21:16:03.000000000","message":"It\u0027s like you read my mind.","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b856b76f85dae49c4e24a284dfafca109bddd71f","unresolved":false,"context_lines":[{"line_number":1374,"context_line":"        # Check for a marker from a previous run"},{"line_number":1375,"context_line":"        marker_mapping \u003d objects.InstanceMappingList.get_by_project_id(ctxt,"},{"line_number":1376,"context_line":"                marker_project_id)"},{"line_number":1377,"context_line":"        if len(marker_mapping) \u003d\u003d 0:"},{"line_number":1378,"context_line":"            marker \u003d None"},{"line_number":1379,"context_line":"        else:"},{"line_number":1380,"context_line":"            # There should be only one here"},{"line_number":1381,"context_line":"            marker \u003d marker_mapping[0].instance_uuid.replace(\u0027 \u0027, \u0027-\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_179478e0","line":1378,"range":{"start_line":1377,"start_character":8,"end_line":1378,"end_character":25},"updated":"2016-04-15 21:16:03.000000000","message":"Would it be worth testing a case where we\u0027ve done one run using max_count less than how many total instances there are, then the marker instance mapping is deleted, and then we run it again and make sure the remaining gets mapped?","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"1d86a6d764738368c1b86b088c814734ce0713c4","unresolved":false,"context_lines":[{"line_number":1374,"context_line":"        # Check for a marker from a previous run"},{"line_number":1375,"context_line":"        marker_mapping \u003d objects.InstanceMappingList.get_by_project_id(ctxt,"},{"line_number":1376,"context_line":"                marker_project_id)"},{"line_number":1377,"context_line":"        if len(marker_mapping) \u003d\u003d 0:"},{"line_number":1378,"context_line":"            marker \u003d None"},{"line_number":1379,"context_line":"        else:"},{"line_number":1380,"context_line":"            # There should be only one here"},{"line_number":1381,"context_line":"            marker \u003d marker_mapping[0].instance_uuid.replace(\u0027 \u0027, \u0027-\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_50c5288c","line":1378,"range":{"start_line":1377,"start_character":8,"end_line":1378,"end_character":25},"in_reply_to":"1a122d0e_179478e0","updated":"2016-04-18 13:39:58.000000000","message":"There\u0027s no way to delete the marker except by direct db access, or by a bug in the code doing it. I could add a test for that, it should just start over at the beginning again.","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ac30c3697a8de600b1c7781a811a42a586c7c600","unresolved":false,"context_lines":[{"line_number":1374,"context_line":"        # Check for a marker from a previous run"},{"line_number":1375,"context_line":"        marker_mapping \u003d objects.InstanceMappingList.get_by_project_id(ctxt,"},{"line_number":1376,"context_line":"                marker_project_id)"},{"line_number":1377,"context_line":"        if len(marker_mapping) \u003d\u003d 0:"},{"line_number":1378,"context_line":"            marker \u003d None"},{"line_number":1379,"context_line":"        else:"},{"line_number":1380,"context_line":"            # There should be only one here"},{"line_number":1381,"context_line":"            marker \u003d marker_mapping[0].instance_uuid.replace(\u0027 \u0027, \u0027-\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_69b9dacb","line":1378,"range":{"start_line":1377,"start_character":8,"end_line":1378,"end_character":25},"in_reply_to":"1a122d0e_50c5288c","updated":"2016-04-20 18:15:23.000000000","message":"Yeah, that\u0027s my worry, which is why I think it would be worthwhile to test the behavior in case it happens.","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"a2c7027cfc2d2f015dd66c7bd2f196a2b920f361","unresolved":false,"context_lines":[{"line_number":1374,"context_line":"        # Check for a marker from a previous run"},{"line_number":1375,"context_line":"        marker_mapping \u003d objects.InstanceMappingList.get_by_project_id(ctxt,"},{"line_number":1376,"context_line":"                marker_project_id)"},{"line_number":1377,"context_line":"        if len(marker_mapping) \u003d\u003d 0:"},{"line_number":1378,"context_line":"            marker \u003d None"},{"line_number":1379,"context_line":"        else:"},{"line_number":1380,"context_line":"            # There should be only one here"},{"line_number":1381,"context_line":"            marker \u003d marker_mapping[0].instance_uuid.replace(\u0027 \u0027, \u0027-\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_fc4806b5","line":1378,"range":{"start_line":1377,"start_character":8,"end_line":1378,"end_character":25},"in_reply_to":"1a122d0e_69b9dacb","updated":"2016-04-20 18:43:19.000000000","message":"I added a test case for this in my update.","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"}],"nova/tests/unit/test_nova_manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b856b76f85dae49c4e24a284dfafca109bddd71f","unresolved":false,"context_lines":[{"line_number":885,"context_line":"            objects.Instance(ctxt, project_id\u003dctxt.project_id,"},{"line_number":886,"context_line":"                             uuid\u003duuid).create()"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        self.commands.map_instances(cell_uuid)"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        for uuid in instance_uuids:"},{"line_number":891,"context_line":"            inst_mapping \u003d objects.InstanceMapping.get_by_instance_uuid(ctxt,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_77d68cc6","line":888,"updated":"2016-04-15 21:16:03.000000000","message":"Verify you get 0 back?","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b856b76f85dae49c4e24a284dfafca109bddd71f","unresolved":false,"context_lines":[{"line_number":906,"context_line":"            objects.Instance(ctxt, project_id\u003dctxt.project_id,"},{"line_number":907,"context_line":"                             uuid\u003duuid).create()"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"        self.commands.map_instances(cell_uuid, max_count\u003d3)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        for uuid in instance_uuids[:2]:"},{"line_number":912,"context_line":"            inst_mapping \u003d objects.InstanceMapping.get_by_instance_uuid(ctxt,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_97d1a8d0","line":909,"updated":"2016-04-15 21:16:03.000000000","message":"Verify you get 1 back rather than 0?","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b856b76f85dae49c4e24a284dfafca109bddd71f","unresolved":false,"context_lines":[{"line_number":908,"context_line":""},{"line_number":909,"context_line":"        self.commands.map_instances(cell_uuid, max_count\u003d3)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        for uuid in instance_uuids[:2]:"},{"line_number":912,"context_line":"            inst_mapping \u003d objects.InstanceMapping.get_by_instance_uuid(ctxt,"},{"line_number":913,"context_line":"                    uuid)"},{"line_number":914,"context_line":"            self.assertEqual(ctxt.project_id, inst_mapping.project_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_f7f9fc4e","line":911,"updated":"2016-04-15 21:16:03.000000000","message":"Assert that the others aren\u0027t mapped?","commit_id":"c3394e143cc8bdf25c34ade324b47cb26a2446a3"}]}
