)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"8ddeedd5221a131a3ee205a3b86fc3339b52837a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Angus Lees \u003cgus@inodes.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-10-21 15:49:50 +1100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rewrite two cases of using the loop variable outside the loop body"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".. and enable undefined-loop-variable pylint check."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9aa7fdbe_0b82d0c7","line":7,"updated":"2014-10-23 14:25:35.000000000","message":"First line (commit title) should be 50 chars or less.","commit_id":"0ac9ad4566208790334c77707d30d8068dd05147"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c00a1fce3c04f0f5dfe78fd8d59686a221fc980c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Angus Lees \u003cgus@inodes.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-10-21 15:49:50 +1100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rewrite two cases of using the loop variable outside the loop body"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".. and enable undefined-loop-variable pylint check."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9aa7fdbe_5a39f73f","line":7,"in_reply_to":"9aa7fdbe_0b82d0c7","updated":"2014-10-23 19:24:00.000000000","message":"Where is this rule? I see titles of up to 70 chars in the commit log.","commit_id":"0ac9ad4566208790334c77707d30d8068dd05147"},{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"4f1ea5d415cb472341feedb7e6fcf673b1a18447","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Angus Lees \u003cgus@inodes.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-10-21 15:49:50 +1100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rewrite two cases of using the loop variable outside the loop body"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".. and enable undefined-loop-variable pylint check."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9aa7fdbe_d7667429","line":7,"in_reply_to":"9aa7fdbe_5a39f73f","updated":"2014-10-26 23:44:58.000000000","message":"https://wiki.openstack.org/wiki/GitCommitMessages:\n\"The first line should be limited to 50 characters and should not end with a period (commit messages over 72 characters will be rejected by the gate).\"\n\nSo suggesting a change should not be submitted (ie: -1) based on \u003c50 is perhaps too strong ;-)  I had however forgotten about the 50char rule and will remove some information to make it shorter - thanks.","commit_id":"0ac9ad4566208790334c77707d30d8068dd05147"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"97a7cdc2efae55e79b08a76bc0606bf026bbe3df","unresolved":false,"context_lines":[{"line_number":9,"context_line":".. and enable undefined-loop-variable pylint check."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"These two cases were perfectly correct, but the check uncovered a 3rd"},{"line_number":12,"context_line":"case which was a real bug (fixed separately).  The new versions also"},{"line_number":13,"context_line":"make it clear that if the loop fails to break early then the \u0027result\u0027 is"},{"line_number":14,"context_line":"None (and thus an error) and not simply the last element.  On balance,"},{"line_number":15,"context_line":"it\u0027s probably worth enforcing this small inconvenience to coding style."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9aa7fdbe_b4df660c","line":12,"updated":"2014-10-23 13:20:25.000000000","message":"may be add link to it as a Related-bug?","commit_id":"0ac9ad4566208790334c77707d30d8068dd05147"}],"neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"c9020c7f019bba973c72bd3061c7e65d816e9d85","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                         \u0027command\u0027: \u0027bridge fdb\u0027,"},{"line_number":524,"context_line":"                         \u0027mode\u0027: \u0027VXLAN UCAST\u0027})"},{"line_number":525,"context_line":"            return False"},{"line_number":526,"context_line":"        segmentation_id \u003d None"},{"line_number":527,"context_line":"        for seg_id in range(1, constants.MAX_VXLAN_VNI + 1):"},{"line_number":528,"context_line":"            if not ip_lib.device_exists("},{"line_number":529,"context_line":"                    self.get_vxlan_device_name(seg_id)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_57da2879","line":526,"updated":"2014-11-10 23:37:29.000000000","message":"Why not just define test_iface here and do\ntest_iface \u003d self.ensure_vxlan(segmentation_id)\nbefore breaking?","commit_id":"648c867896df5569da19eafca6feaabbec154c18"},{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"fc62f858f62adeaa5e5875194cd5a2896f8d6c29","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                         \u0027command\u0027: \u0027bridge fdb\u0027,"},{"line_number":524,"context_line":"                         \u0027mode\u0027: \u0027VXLAN UCAST\u0027})"},{"line_number":525,"context_line":"            return False"},{"line_number":526,"context_line":"        segmentation_id \u003d None"},{"line_number":527,"context_line":"        for seg_id in range(1, constants.MAX_VXLAN_VNI + 1):"},{"line_number":528,"context_line":"            if not ip_lib.device_exists("},{"line_number":529,"context_line":"                    self.get_vxlan_device_name(seg_id)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_cbb9a316","line":526,"in_reply_to":"5a890539_57da2879","updated":"2014-11-14 03:24:26.000000000","message":"Done","commit_id":"648c867896df5569da19eafca6feaabbec154c18"}],"neutron/services/loadbalancer/drivers/haproxy/cfg.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"49acefd9c0c768300a09f2bea74989016f9f7d44","unresolved":false,"context_lines":[{"line_number":159,"context_line":"def _get_server_health_option(config):"},{"line_number":160,"context_line":"    \"\"\"return the first active health option.\"\"\""},{"line_number":161,"context_line":"    monitor \u003d None"},{"line_number":162,"context_line":"    for m in config[\u0027healthmonitors\u0027]:"},{"line_number":163,"context_line":"        # not checking the status of healthmonitor for two reasons:"},{"line_number":164,"context_line":"        # 1) status field is absent in HealthMonitor model"},{"line_number":165,"context_line":"        # 2) only active HealthMonitors are fetched with"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_4b3fddb5","line":162,"updated":"2014-11-27 17:04:06.000000000","message":"IMO, the following pattern is more explicit:\n\n  for  ...\n    if ...\n      monitor \u003d m\n      break\n  else:\n      monitor \u003d None","commit_id":"9d04b2e1a330fdc66e2bac84710818af58684526"},{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"6fcc8304b1143c8b9d287f6499f2baeb9f75df07","unresolved":false,"context_lines":[{"line_number":159,"context_line":"def _get_server_health_option(config):"},{"line_number":160,"context_line":"    \"\"\"return the first active health option.\"\"\""},{"line_number":161,"context_line":"    monitor \u003d None"},{"line_number":162,"context_line":"    for m in config[\u0027healthmonitors\u0027]:"},{"line_number":163,"context_line":"        # not checking the status of healthmonitor for two reasons:"},{"line_number":164,"context_line":"        # 1) status field is absent in HealthMonitor model"},{"line_number":165,"context_line":"        # 2) only active HealthMonitors are fetched with"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_73b9ef14","line":162,"in_reply_to":"5a890539_4b3fddb5","updated":"2014-11-28 00:40:01.000000000","message":"Indeed, in this case the `else` clause already just returns so an even clearer version would be just not set monitor\u003dNone anywhere.  I don\u0027t recall why I felt the initial monitor\u003dNone statement was necessary ...","commit_id":"9d04b2e1a330fdc66e2bac84710818af58684526"}]}
