)]}'
{"horizon/karma.conf.js":[{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"c81b5593f3f33c751ff589a28b41d3d8b88deb0d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"      // from jasmine_tests.py; only those that are deps for others"},{"line_number":68,"context_line":"      \u0027horizon/js/horizon.js\u0027,"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"      // modules"},{"line_number":71,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"      // other sources"}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_8134824a","line":70,"updated":"2015-06-22 04:19:33.000000000","message":"\"modules first, to ensure they are correctly created before the module contents are loaded\" (I know, it\u0027s long, but it\u0027s much better than just \"modules\" :)","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"41a99b24aee5950ce9c857924e75576d7a01548d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"      // from jasmine_tests.py; only those that are deps for others"},{"line_number":68,"context_line":"      \u0027horizon/js/horizon.js\u0027,"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"      // modules"},{"line_number":71,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"      // other sources"}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_6fe26831","line":70,"in_reply_to":"fa32b979_8134824a","updated":"2015-06-22 17:59:45.000000000","message":"Thanks Richard. Done","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"c81b5593f3f33c751ff589a28b41d3d8b88deb0d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"      \u0027horizon/js/horizon.js\u0027,"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"      // modules"},{"line_number":71,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"      // other sources"},{"line_number":74,"context_line":"      \u0027framework/**/!(*.spec).js\u0027,"}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_c12a8ae7","line":71,"updated":"2015-06-22 04:19:33.000000000","message":"This shouldn\u0027t be pulling in modules from openstack_dashboard. The app move to openstack_dashboard patch fixes this - perhaps this patch should extend that patch (https://review.openstack.org/#/c/185191/)","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"41a99b24aee5950ce9c857924e75576d7a01548d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"      \u0027horizon/js/horizon.js\u0027,"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"      // modules"},{"line_number":71,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"      // other sources"},{"line_number":74,"context_line":"      \u0027framework/**/!(*.spec).js\u0027,"}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_8fcecc81","line":71,"in_reply_to":"fa32b979_c12a8ae7","updated":"2015-06-22 17:59:45.000000000","message":"Yes I see the your patch. If your patch get merged first, I will change this to include modules from framework only.","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":14307,"name":"Tyr Johanson","email":"tyr@hpe.com","username":"tyr"},"change_message_id":"3afcd3df8411b852cd0314476ec642aa42f4f964","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"      // modules first, to ensure they are correctly created before the module"},{"line_number":71,"context_line":"      // contents are loaded."},{"line_number":72,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      // other sources"},{"line_number":75,"context_line":"      \u0027framework/**/!(*.spec).js\u0027,"}],"source_content_type":"text/javascript","patch_set":3,"id":"fa32b979_b9251a5d","line":72,"updated":"2015-06-22 20:07:46.000000000","message":"Why are you pulling in modules from all of horizon? I expected this to be restricted to horizon/horizon/static only.","commit_id":"a166bc1d038eb956b04b938fdf388386f0d8e130"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"319b6f0464eb906a3df5039999bdcd61c358a18a","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"      // modules first, to ensure they are correctly created before the module"},{"line_number":71,"context_line":"      // contents are loaded."},{"line_number":72,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      // other sources"},{"line_number":75,"context_line":"      \u0027framework/**/!(*.spec).js\u0027,"}],"source_content_type":"text/javascript","patch_set":3,"id":"fa32b979_d40b0323","line":72,"in_reply_to":"fa32b979_b9251a5d","updated":"2015-06-22 21:03:10.000000000","message":"Please notice in the replaced line, there is:\n\n\u0027../../openstack_dashboard/static/openstack-service-api/openstack-service-api.module.js\u0027,\n\nsome of code in framework is couple with code in openstack_dashboard. This shouldn\u0027t happen, but I wan\u0027t fix it in the patch. Richard is going to remove the coupling. After that we can narrow the scope to horizon/horizon/static only.","commit_id":"a166bc1d038eb956b04b938fdf388386f0d8e130"},{"author":{"_account_id":14307,"name":"Tyr Johanson","email":"tyr@hpe.com","username":"tyr"},"change_message_id":"3afcd3df8411b852cd0314476ec642aa42f4f964","unresolved":false,"context_lines":[{"line_number":71,"context_line":"      // contents are loaded."},{"line_number":72,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      // other sources"},{"line_number":75,"context_line":"      \u0027framework/**/!(*.spec).js\u0027,"},{"line_number":76,"context_line":"      \u0027dashboard-app/**/!(*.spec).js\u0027,"},{"line_number":77,"context_line":"      \u0027auth/**/!(*.spec).js\u0027,"}],"source_content_type":"text/javascript","patch_set":3,"id":"fa32b979_b9e67ae6","line":74,"updated":"2015-06-22 20:07:46.000000000","message":"Please make this comment more descriptive. Something like \"Next, bring in all the non-test javascript files\"","commit_id":"a166bc1d038eb956b04b938fdf388386f0d8e130"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"319b6f0464eb906a3df5039999bdcd61c358a18a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"      // contents are loaded."},{"line_number":72,"context_line":"      \u0027../../**/*.module.js\u0027,"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      // other sources"},{"line_number":75,"context_line":"      \u0027framework/**/!(*.spec).js\u0027,"},{"line_number":76,"context_line":"      \u0027dashboard-app/**/!(*.spec).js\u0027,"},{"line_number":77,"context_line":"      \u0027auth/**/!(*.spec).js\u0027,"}],"source_content_type":"text/javascript","patch_set":3,"id":"fa32b979_f6064c1f","line":74,"in_reply_to":"fa32b979_b9e67ae6","updated":"2015-06-22 21:03:10.000000000","message":"Done","commit_id":"a166bc1d038eb956b04b938fdf388386f0d8e130"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"1c3bf4e80279bad616cff0468fe1a524999b7013","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"      \u0027**/*.module.js\u0027,"},{"line_number":77,"context_line":"      // TODO: remove once possible"},{"line_number":78,"context_line":"      \u0027../../openstack_dashboard/static/openstack-service-api/openstack-service-api.module.js\u0027,"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"      /**"},{"line_number":81,"context_line":"       * Followed by other files containing JavaScript source code. The order"}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_5f506b5e","line":78,"updated":"2015-06-22 22:11:51.000000000","message":"this should already be possible, just need a rebase.","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"e50de377e57004d397655b92dc42c108c9749aab","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"      \u0027**/*.module.js\u0027,"},{"line_number":77,"context_line":"      // TODO: remove once possible"},{"line_number":78,"context_line":"      \u0027../../openstack_dashboard/static/openstack-service-api/openstack-service-api.module.js\u0027,"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"      /**"},{"line_number":81,"context_line":"       * Followed by other files containing JavaScript source code. The order"}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_6ac6cb4a","line":78,"in_reply_to":"fa32b979_5f506b5e","updated":"2015-06-22 22:54:11.000000000","message":"Tried without it, tests get broken. Some hidden coupling still exist. :-(","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"1c3bf4e80279bad616cff0468fe1a524999b7013","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"      /**"},{"line_number":81,"context_line":"       * Followed by other files containing JavaScript source code. The order"},{"line_number":82,"context_line":"       * among them is not significant."},{"line_number":83,"context_line":"       */"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"      \u0027!(horizon)/**/!(*.spec|*.mock).js\u0027,"}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_9feb5378","line":82,"updated":"2015-06-22 22:11:51.000000000","message":"a bit more description here, it was not clear to me on first read through that this is OTHER javascript sources NOT spec and mock files.","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"e50de377e57004d397655b92dc42c108c9749aab","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"      /**"},{"line_number":81,"context_line":"       * Followed by other files containing JavaScript source code. The order"},{"line_number":82,"context_line":"       * among them is not significant."},{"line_number":83,"context_line":"       */"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"      \u0027!(horizon)/**/!(*.spec|*.mock).js\u0027,"}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_6a224b03","line":82,"in_reply_to":"fa32b979_9feb5378","updated":"2015-06-22 22:54:11.000000000","message":"Done","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"}],"openstack_dashboard/karma.conf.js":[{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"c81b5593f3f33c751ff589a28b41d3d8b88deb0d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      \u0027**/*.module.js\u0027,"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"      // TODO: separate to module and other source files and then"},{"line_number":78,"context_line":"      // it from here:"},{"line_number":79,"context_line":"      \u0027dashboard/workflow/workflow.js\u0027,"},{"line_number":80,"context_line":"      \u0027dashboard/launch-instance/launch-instance.js\u0027,"},{"line_number":81,"context_line":""}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_613cde2f","line":78,"updated":"2015-06-22 04:19:33.000000000","message":"The above comment makes no sense to me, I\u0027m afraid.","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"41a99b24aee5950ce9c857924e75576d7a01548d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      \u0027**/*.module.js\u0027,"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"      // TODO: separate to module and other source files and then"},{"line_number":78,"context_line":"      // it from here:"},{"line_number":79,"context_line":"      \u0027dashboard/workflow/workflow.js\u0027,"},{"line_number":80,"context_line":"      \u0027dashboard/launch-instance/launch-instance.js\u0027,"},{"line_number":81,"context_line":""}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_afc5d03d","line":78,"in_reply_to":"fa32b979_613cde2f","updated":"2015-06-22 17:59:45.000000000","message":"See the commentbelow.","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"2a08a1502d2a55051acb1e8a11c55587d29d20f5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      // TODO: separate to module and other source files and then"},{"line_number":78,"context_line":"      // it from here:"},{"line_number":79,"context_line":"      \u0027dashboard/workflow/workflow.js\u0027,"},{"line_number":80,"context_line":"      \u0027dashboard/launch-instance/launch-instance.js\u0027,"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"      // other source files"},{"line_number":83,"context_line":"      \"dashboard/**/!(*.spec).js\","}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_536f3192","line":80,"updated":"2015-06-22 05:43:15.000000000","message":"We\u0027ve lost \"dashboard/**/*.js\" along the way here, and retained only the above two special-case lines. Why? (I think this make speak more about the lack of test coverage in the dashboard code ;)","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"41a99b24aee5950ce9c857924e75576d7a01548d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      // TODO: separate to module and other source files and then"},{"line_number":78,"context_line":"      // it from here:"},{"line_number":79,"context_line":"      \u0027dashboard/workflow/workflow.js\u0027,"},{"line_number":80,"context_line":"      \u0027dashboard/launch-instance/launch-instance.js\u0027,"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"      // other source files"},{"line_number":83,"context_line":"      \"dashboard/**/!(*.spec).js\","}],"source_content_type":"text/javascript","patch_set":1,"id":"fa32b979_efb8b877","line":80,"in_reply_to":"fa32b979_536f3192","updated":"2015-06-22 17:59:45.000000000","message":"These two are actually modules and need to be either renamed to .module.js or break up to small pieces including a module file for each of the two. This is why I have a TODO up there to reminding the work.\n\n\u0027dashboard/**/!(*.spec).js\u0027 is about all the other source files.","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":14307,"name":"Tyr Johanson","email":"tyr@hpe.com","username":"tyr"},"change_message_id":"3afcd3df8411b852cd0314476ec642aa42f4f964","unresolved":false,"context_lines":[{"line_number":82,"context_line":"      \u0027dashboard/launch-instance/launch-instance.js\u0027,"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"      // other source files"},{"line_number":85,"context_line":"      \u0027dashboard/**/!(*.spec).js\u0027,"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"      // tests"},{"line_number":88,"context_line":"      \u0027**/*.spec.js\u0027,"}],"source_content_type":"text/javascript","patch_set":3,"id":"fa32b979_f91162b0","line":85,"updated":"2015-06-22 20:07:46.000000000","message":"Can you simplify this rule to **/!(*.spec).js, and remove the explicit openstack-service-api reference above? Basically, include all js files found in static.","commit_id":"a166bc1d038eb956b04b938fdf388386f0d8e130"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"319b6f0464eb906a3df5039999bdcd61c358a18a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"      \u0027dashboard/launch-instance/launch-instance.js\u0027,"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"      // other source files"},{"line_number":85,"context_line":"      \u0027dashboard/**/!(*.spec).js\u0027,"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"      // tests"},{"line_number":88,"context_line":"      \u0027**/*.spec.js\u0027,"}],"source_content_type":"text/javascript","patch_set":3,"id":"fa32b979_59ababd6","line":85,"in_reply_to":"fa32b979_f91162b0","updated":"2015-06-22 21:03:10.000000000","message":"Done","commit_id":"a166bc1d038eb956b04b938fdf388386f0d8e130"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"1c3bf4e80279bad616cff0468fe1a524999b7013","unresolved":false,"context_lines":[{"line_number":78,"context_line":"      // TODO:"},{"line_number":79,"context_line":"      // The below two files contains module definition and need to"},{"line_number":80,"context_line":"      // break up to small pieces with files dedicated to module definition,"},{"line_number":81,"context_line":"      // then we can remove this two lines."},{"line_number":82,"context_line":"      \u0027**/workflow.js\u0027,"},{"line_number":83,"context_line":"      \u0027**/launch-instance.js\u0027,"},{"line_number":84,"context_line":""}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_df98fb1d","line":81,"updated":"2015-06-22 22:11:51.000000000","message":"no comment needed, the jscs patches will update as needed.","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"e50de377e57004d397655b92dc42c108c9749aab","unresolved":false,"context_lines":[{"line_number":78,"context_line":"      // TODO:"},{"line_number":79,"context_line":"      // The below two files contains module definition and need to"},{"line_number":80,"context_line":"      // break up to small pieces with files dedicated to module definition,"},{"line_number":81,"context_line":"      // then we can remove this two lines."},{"line_number":82,"context_line":"      \u0027**/workflow.js\u0027,"},{"line_number":83,"context_line":"      \u0027**/launch-instance.js\u0027,"},{"line_number":84,"context_line":""}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_ea63bb3f","line":81,"in_reply_to":"fa32b979_df98fb1d","updated":"2015-06-22 22:54:11.000000000","message":"comments are removed.","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"1c3bf4e80279bad616cff0468fe1a524999b7013","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"      /**"},{"line_number":86,"context_line":"       * Followed by other files containing JavaScript source code. The order"},{"line_number":87,"context_line":"       * among them is not significant."},{"line_number":88,"context_line":"       */"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"      \u0027**/!(*.spec|*.mock).js\u0027,"}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_1ff8a348","line":87,"updated":"2015-06-22 22:11:51.000000000","message":"same comment as previous.","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"e50de377e57004d397655b92dc42c108c9749aab","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"      /**"},{"line_number":86,"context_line":"       * Followed by other files containing JavaScript source code. The order"},{"line_number":87,"context_line":"       * among them is not significant."},{"line_number":88,"context_line":"       */"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"      \u0027**/!(*.spec|*.mock).js\u0027,"}],"source_content_type":"text/javascript","patch_set":8,"id":"fa32b979_4a55074e","line":87,"in_reply_to":"fa32b979_1ff8a348","updated":"2015-06-22 22:54:11.000000000","message":"Done","commit_id":"69f6373651b6f95bb68a29a15a352bded23541c8"}]}
