)]}'
{"nova/tests/test_migrations.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"35e28dbb8f86839f8f5b8c112964a429521ce75f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    return present.lower() in (\u0027\u0027, \u0027true\u0027)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"def safe_getattr(obj, attr):"},{"line_number":91,"context_line":"    try:"},{"line_number":92,"context_line":"        return getattr(obj, attr)"},{"line_number":93,"context_line":"    except AttributeError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUcA%3D","line":90,"updated":"2013-01-29 03:55:57.000000000","message":"This function is unnecessary. getattr() already takes a third argument that is a default if the attribute doesn\u0027t already exist:\n\n  \u003e\u003e\u003e obj \u003d object()\n  \u003e\u003e\u003e getattr(obj, \u0027foo\u0027)\n  Traceback (most recent call last):\n    File \"\u003cstdin\u003e\", line 1, in ?\n  AttributeError: \u0027object\u0027 object has no attribute \u0027foo\u0027\n  \u003e\u003e\u003e getattr(obj, \u0027foo\u0027, None)\n  \u003e\u003e\u003e getattr(obj, \u0027foo\u0027, 123)\n  123","commit_id":"9f372cdb2089eb5478ef9bf28a2cecbd412b3215"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b915923125877e3d8f020616d9a80675d29b5b2e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    return present.lower() in (\u0027\u0027, \u0027true\u0027)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"def safe_getattr(obj, attr):"},{"line_number":91,"context_line":"    try:"},{"line_number":92,"context_line":"        return getattr(obj, attr)"},{"line_number":93,"context_line":"    except AttributeError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUas%3D","line":90,"in_reply_to":"AAAAM3%2F%2FUcA%3D","updated":"2013-01-29 04:23:23.000000000","message":"great, didn\u0027t know that","commit_id":"9f372cdb2089eb5478ef9bf28a2cecbd412b3215"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"987816b8aa5abc77af744d9966ac78708788b233","unresolved":false,"context_lines":[{"line_number":428,"context_line":"        host1 \u003d \u0027compute-host1\u0027"},{"line_number":429,"context_line":"        host2 \u003d \u0027compute-host2\u0027"},{"line_number":430,"context_line":"        # NOTE(sdague): start at #4 because services data already in table"},{"line_number":431,"context_line":"        # from 147"},{"line_number":432,"context_line":"        services_data \u003d ["},{"line_number":433,"context_line":"            {\u0027id\u0027: 4, \u0027host\u0027: host1, \u0027binary\u0027: \u0027nova-compute\u0027,"},{"line_number":434,"context_line":"             \u0027report_count\u0027: 0, \u0027topic\u0027: \u0027compute\u0027, \u0027deleted\u0027: False},"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUbo%3D","line":431,"updated":"2013-01-29 04:06:51.000000000","message":"This is little bit confusing for me, probably we should drop all data before running next test?","commit_id":"9f372cdb2089eb5478ef9bf28a2cecbd412b3215"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b915923125877e3d8f020616d9a80675d29b5b2e","unresolved":false,"context_lines":[{"line_number":428,"context_line":"        host1 \u003d \u0027compute-host1\u0027"},{"line_number":429,"context_line":"        host2 \u003d \u0027compute-host2\u0027"},{"line_number":430,"context_line":"        # NOTE(sdague): start at #4 because services data already in table"},{"line_number":431,"context_line":"        # from 147"},{"line_number":432,"context_line":"        services_data \u003d ["},{"line_number":433,"context_line":"            {\u0027id\u0027: 4, \u0027host\u0027: host1, \u0027binary\u0027: \u0027nova-compute\u0027,"},{"line_number":434,"context_line":"             \u0027report_count\u0027: 0, \u0027topic\u0027: \u0027compute\u0027, \u0027deleted\u0027: False},"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUao%3D","line":431,"in_reply_to":"AAAAM3%2F%2FUbo%3D","updated":"2013-01-29 04:23:23.000000000","message":"actually, dropping prior data is what let through the 147 migration bug. It\u0027s kind of important we actually build up data over time, otherwise the data migrations can miss something.","commit_id":"9f372cdb2089eb5478ef9bf28a2cecbd412b3215"}]}
