)]}'
{"app/js/controllers/home.js":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82437e9ea9823bf9ab53575a215a035832284e0c","unresolved":false,"context_lines":[{"line_number":109,"context_line":"      processData(response.data);"},{"line_number":110,"context_line":"      vm.loaded \u003d true;"},{"line_number":111,"context_line":"    });"},{"line_number":112,"context_line":"    healthService.getRecentFailedTests().then(function(response) {"},{"line_number":113,"context_line":"      vm.recentTests \u003d response.data;"},{"line_number":114,"context_line":"    });"},{"line_number":115,"context_line":"  };"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"  // ViewModel"}],"source_content_type":"text/javascript","patch_set":6,"id":"dae33548_4fe66be9","line":114,"range":{"start_line":112,"start_character":0,"end_line":114,"end_character":7},"updated":"2016-02-19 08:32:00.000000000","message":"This looks like the cause of the failure:\n\nhttp://logs.openstack.org/29/268329/6/check/gate-openstack-health-npm-run-test/6789ef7/console.html#_2016-02-19_07_41_16_014","commit_id":"5d4fa4eec5752e2c88c5322376e40d4a02d008f6"}],"app/views/home.html":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50352caf7513d760b329783c85faac2a3ab2591b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u003cdiv class\u003d\"col-lg-12\"\u003e"},{"line_number":38,"context_line":"        \u003cdiv class\u003d\"panel panel-default\"\u003e"},{"line_number":39,"context_line":"            \u003cdiv class\u003d\"panel-heading\"\u003e"},{"line_number":40,"context_line":"                \u003ch3 class\u003d\"panel-title\"\u003eFailed Tests in Recent Failed Runs\u003c/h3\u003e"},{"line_number":41,"context_line":"            \u003c/div\u003e"},{"line_number":42,"context_line":"            \u003cdiv class\u003d\"panel-body\"\u003e"},{"line_number":43,"context_line":"                \u003ctable class\u003d\"table\"\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"da6ed579_5d121b5a","line":40,"range":{"start_line":40,"start_character":40,"end_line":40,"end_character":74},"updated":"2016-01-15 20:59:37.000000000","message":"Failed Tests in Last 10 Recent Failed Runs","commit_id":"f8cbbbdf077b3028fb4cbd40c823e0c2d8334a32"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50352caf7513d760b329783c85faac2a3ab2591b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            \u003cth\u003eTest ID\u003c/th\u003e"},{"line_number":47,"context_line":"                            \u003cth\u003eRun Link\u003c/th\u003e"},{"line_number":48,"context_line":"                            \u003cth\u003eStart Time\u003c/th\u003e"},{"line_number":49,"context_line":"\t\t\t\t\t\t\t\u003cth\u003eStop Time\u003c/th\u003e"},{"line_number":50,"context_line":"                        \u003c/tr\u003e"},{"line_number":51,"context_line":"                    \u003c/thead\u003e"},{"line_number":52,"context_line":"                    \u003ctbody\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"da6ed579_fd02ef08","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":25},"updated":"2016-01-15 20:59:37.000000000","message":"holy tab fail batman!","commit_id":"f8cbbbdf077b3028fb4cbd40c823e0c2d8334a32"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82437e9ea9823bf9ab53575a215a035832284e0c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    \u003c/thead\u003e"},{"line_number":54,"context_line":"                    \u003ctbody\u003e"},{"line_number":55,"context_line":"                        \u003ctr ng-repeat\u003d\"testRun in home.recentTests\"\u003e"},{"line_number":56,"context_line":"                            \u003ctd\u003e\u003ca ui-sref\u003d\"test({ testId:  testRun.test_id })\"}\u003e{{ testRun.test_id | limitTo: 110 }}\u003c/td\u003e"},{"line_number":57,"context_line":"                            \u003ctd\u003e\u003ca href\u003d\"{{ testRun.link }}\"\u003e{{ testRun.link }}\u003c/a\u003e\u003c/td\u003e"},{"line_number":58,"context_line":"                            \u003ctd\u003e{{ testRun.start_time }}\u003c/td\u003e"},{"line_number":59,"context_line":"                            \u003ctd\u003e{{ testRun.stop_time }}\u003c/td\u003e"},{"line_number":60,"context_line":"                        \u003c/tr\u003e"}],"source_content_type":"text/html","patch_set":6,"id":"dae33548_cf071c80","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":88},"updated":"2016-02-19 08:32:00.000000000","message":"These will be very long row that exceed the panel width. (It seems ugly view.)\nSo how about like this?\n\n     \u003ctd\u003e\u003ca ui-sref\u003d\"test({ testId:  testRun.test_id })\"}\u003e{{ testRun.test_id | limitTo: 80 }}...\u003c/td\u003e\n     \u003ctd\u003e\u003ca href\u003d\"{{ testRun.link }}\"\u003e...{{ testRun.link | limitTo: -30 }}\u003c/a\u003e\u003c/td\u003e","commit_id":"5d4fa4eec5752e2c88c5322376e40d4a02d008f6"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"7d550a2fece0145b137076e62fd2eefdb4982294","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    \u003c/thead\u003e"},{"line_number":54,"context_line":"                    \u003ctbody\u003e"},{"line_number":55,"context_line":"                        \u003ctr ng-repeat\u003d\"testRun in home.recentTests\"\u003e"},{"line_number":56,"context_line":"                            \u003ctd\u003e\u003ca ui-sref\u003d\"test({ testId:  testRun.test_id })\"}\u003e{{ testRun.test_id | limitTo: 110 }}\u003c/td\u003e"},{"line_number":57,"context_line":"                            \u003ctd\u003e\u003ca href\u003d\"{{ testRun.link }}\"\u003e{{ testRun.link }}\u003c/a\u003e\u003c/td\u003e"},{"line_number":58,"context_line":"                            \u003ctd\u003e{{ testRun.start_time }}\u003c/td\u003e"},{"line_number":59,"context_line":"                            \u003ctd\u003e{{ testRun.stop_time }}\u003c/td\u003e"},{"line_number":60,"context_line":"                        \u003c/tr\u003e"}],"source_content_type":"text/html","patch_set":6,"id":"bae84128_dcbb3e0d","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":88},"in_reply_to":"dae33548_cf071c80","updated":"2016-02-19 22:09:38.000000000","message":"Done","commit_id":"5d4fa4eec5752e2c88c5322376e40d4a02d008f6"}],"openstack_health/api.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"520585e0642289e5b30cf6461fa78a47cbf13814","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"@app.route(\u0027/tests/recent/\u003cstring:status\u003e\u0027, methods\u003d[\u0027GET\u0027])"},{"line_number":295,"context_line":"def get_recent_test_failures(status):"},{"line_number":296,"context_line":"    session \u003d get_session()"},{"line_number":297,"context_line":"    num_runs \u003d flask.request.args.get(\u0027num_runs\u0027, 10)"},{"line_number":298,"context_line":"    failed_runs \u003d api.get_recent_failed_runs(num_runs, session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_89829dc7","line":295,"range":{"start_line":295,"start_character":20,"end_line":295,"end_character":29},"updated":"2016-01-27 10:04:34.000000000","message":"Method name should be \"_by_status\" not \"_failures\"","commit_id":"dba3833747a3964f5a301858344c3b5f3bc70cc0"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"71bfc00ef9242b916b9656352aa8c77634cffedf","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"@app.route(\u0027/tests/recent/\u003cstring:status\u003e\u0027, methods\u003d[\u0027GET\u0027])"},{"line_number":295,"context_line":"def get_recent_test_failures(status):"},{"line_number":296,"context_line":"    session \u003d get_session()"},{"line_number":297,"context_line":"    num_runs \u003d flask.request.args.get(\u0027num_runs\u0027, 10)"},{"line_number":298,"context_line":"    failed_runs \u003d api.get_recent_failed_runs(num_runs, session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_2cc5b75a","line":295,"range":{"start_line":295,"start_character":20,"end_line":295,"end_character":29},"in_reply_to":"7a5de9d1_89829dc7","updated":"2016-01-27 10:17:42.000000000","message":"Done","commit_id":"dba3833747a3964f5a301858344c3b5f3bc70cc0"}]}
