)]}'
{"neutron/db/migration/alembic_migrations/versions/pike/expand/336a33872f59_add_bum_traffic_attributes_to_.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ff3ce993ab82fd80240f7f3a7426177e5ac15ca4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                            sa.Boolean(),"},{"line_number":36,"context_line":"                            nullable\u003dTrue))"},{"line_number":37,"context_line":"    op.add_column(\u0027securitygrouprules\u0027,"},{"line_number":38,"context_line":"                  sa.Column(\u0027unknown_multicast_allow\u0027,"},{"line_number":39,"context_line":"                            sa.Boolean(),"},{"line_number":40,"context_line":"                            nullable\u003dTrue))"},{"line_number":41,"context_line":"    op.add_column(\u0027securitygrouprules\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_5939d2a1","line":38,"range":{"start_line":38,"start_character":29,"end_line":38,"end_character":52},"updated":"2017-05-11 07:56:12.000000000","message":"In BUM, the \"M\" means only \"multicast\". I think you mixed U and M.\nAm I right?","commit_id":"16a422af7917d6afbe1055eb7299b95142fed395"}],"neutron/db/models/securitygroup.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ff3ce993ab82fd80240f7f3a7426177e5ac15ca4","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    remote_ip_prefix \u003d sa.Column(sa.String(255))"},{"line_number":87,"context_line":"    broadcast_allow \u003d sa.Column(sa.Boolean())"},{"line_number":88,"context_line":"    unknown_unicast_allow \u003d sa.Column(sa.Boolean())"},{"line_number":89,"context_line":"    unknown_multicast_allow \u003d sa.Column(sa.Boolean())"},{"line_number":90,"context_line":"    security_group \u003d orm.relationship("},{"line_number":91,"context_line":"        SecurityGroup, load_on_pending\u003dTrue,"},{"line_number":92,"context_line":"        backref\u003dorm.backref(\u0027rules\u0027, cascade\u003d\u0027all,delete\u0027, lazy\u003d\u0027subquery\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_d975e265","line":89,"range":{"start_line":89,"start_character":4,"end_line":89,"end_character":21},"updated":"2017-05-11 07:56:12.000000000","message":"Is this \"unknown_multicast\" or just \"multicast\"?","commit_id":"16a422af7917d6afbe1055eb7299b95142fed395"}],"neutron/extensions/securitygroup.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ff3ce993ab82fd80240f7f3a7426177e5ac15ca4","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                      \u0027validate\u0027: {"},{"line_number":265,"context_line":"                          \u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":266,"context_line":"                      \u0027is_visible\u0027: True},"},{"line_number":267,"context_line":"        \u0027broadcast_allow\u0027: {\u0027allow_post\u0027: True,"},{"line_number":268,"context_line":"                            \u0027allow_put\u0027: False,"},{"line_number":269,"context_line":"                            \u0027is_visible\u0027: True,"},{"line_number":270,"context_line":"                            \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_79fdaeaf","line":267,"updated":"2017-05-11 07:56:12.000000000","message":"Please, ask Kevin or Ihar.\n\nIf you are updating an existing extension API, you should write this in a new file.\n\nPlease, take a look at [1] or [2].\n\n[1] https://review.openstack.org/#/c/428304/\n[2] https://review.openstack.org/#/c/449831/ --\u003e this one is already merged (good example)","commit_id":"16a422af7917d6afbe1055eb7299b95142fed395"}],"neutron/tests/unit/db/test_securitygroups_db.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ff3ce993ab82fd80240f7f3a7426177e5ac15ca4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":2,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":3,"context_line":"# You may obtain a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_d996024d","line":1,"updated":"2017-05-11 07:56:12.000000000","message":"Sorry, but the following tests are very very similar:\n\ntest__check_for_duplicate_rules_in_db_ignores_rule_id\ntest_check_for_duplicate_diff_rules_remote_ip_prefix_ipv4\ntest_check_for_duplicate_diff_rules_remote_ip_prefix_ipv6\ntest_check_for_duplicate_diff_rules_broadcast_allow (new)\ntest_check_for_duplicate_diff_rules_unknown_unicast_allow (new)\ntest_check_for_duplicate_diff_rules_unknown_multicast_allow (new)\n\nCan you refactor them to use a common function and just pass as parameters \"db_rules\" and \"rule_dict\"?","commit_id":"16a422af7917d6afbe1055eb7299b95142fed395"}]}
