)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"e05a08c48c1bf4e7cf9797e3b0547cd9799d21a9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"that is going to be deleted. This flag is analysed in"},{"line_number":17,"context_line":"_get_changed_ips_for_port to skip re-adding slaac subnets for the port."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"APIImpact"},{"line_number":20,"context_line":"Closes-Bug: #1564335"},{"line_number":21,"context_line":"Change-Id: Iec171efe8b64f8a6dc6cb003b97c11667c5e0048"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3aaa91ec_4ae19429","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":9},"updated":"2016-06-30 16:29:04.000000000","message":"I don\u0027t think we want to document this in the API.  It is just an internal detail.  Do you see a reason to document it in the API?","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"a063c119fd3a5eb9cc4c6b20011656ea55db5018","unresolved":false,"context_lines":[{"line_number":16,"context_line":"that is going to be deleted. This flag is analysed in"},{"line_number":17,"context_line":"_get_changed_ips_for_port to skip re-adding slaac subnets for the port."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"APIImpact"},{"line_number":20,"context_line":"Closes-Bug: #1564335"},{"line_number":21,"context_line":"Change-Id: Iec171efe8b64f8a6dc6cb003b97c11667c5e0048"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3aaa91ec_e9cb0e1c","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":9},"in_reply_to":"3aaa91ec_4ae19429","updated":"2016-07-01 08:36:39.000000000","message":"Users potentially can send specially prepared request via API to update_port to force deallocation from auto-addressed subnet.\n\nBut the purpose of that commit is not to provide such ability for users and just to use it for internal neutron communication.\n\nAdditional key \u0027delete_subnet\u0027 in \u0027fixed_ips\u0027 is not planned to be used by API users, so I don\u0027t see reason to document it in the API.\nI\u0027ll remove this flag then.","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"99e4f25199822d722ea37281fd02ab0435264159","unresolved":false,"context_lines":[{"line_number":16,"context_line":"that is going to be deleted. This flag is analysed in"},{"line_number":17,"context_line":"_get_changed_ips_for_port to skip re-adding slaac subnets for the port."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"APIImpact"},{"line_number":20,"context_line":"Closes-Bug: #1564335"},{"line_number":21,"context_line":"Change-Id: Iec171efe8b64f8a6dc6cb003b97c11667c5e0048"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1aa78d24_63dbc17c","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":9},"in_reply_to":"3aaa91ec_e9cb0e1c","updated":"2016-07-07 14:28:29.000000000","message":"removed in PS6","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8d5d9060b20d8b2852d94088b59457170d84719a","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                                  new_ips, device_owner):"},{"line_number":408,"context_line":"        \"\"\"Calculate changes in IPs for the port.\"\"\""},{"line_number":409,"context_line":"        # the new_ips contain all of the fixed_ips that are to be updated"},{"line_number":410,"context_line":"        self._validate_max_ips_per_port(new_ips, device_owner)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        add_ips \u003d []"},{"line_number":413,"context_line":"        remove_ips \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_06a98b7b","line":410,"range":{"start_line":410,"start_character":13,"end_line":410,"end_character":39},"updated":"2016-06-23 16:31:10.000000000","message":"doesn\u0027t this validation need a tweak to exclude delete_subnet entry?","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"e05a08c48c1bf4e7cf9797e3b0547cd9799d21a9","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                                  new_ips, device_owner):"},{"line_number":408,"context_line":"        \"\"\"Calculate changes in IPs for the port.\"\"\""},{"line_number":409,"context_line":"        # the new_ips contain all of the fixed_ips that are to be updated"},{"line_number":410,"context_line":"        self._validate_max_ips_per_port(new_ips, device_owner)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        add_ips \u003d []"},{"line_number":413,"context_line":"        remove_ips \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_6a33b0f6","line":410,"range":{"start_line":410,"start_character":13,"end_line":410,"end_character":39},"in_reply_to":"3aaa91ec_06a98b7b","updated":"2016-06-30 16:29:04.000000000","message":"Pretty good catch.  I think that would be good.  Otherwise, max ips could be capped too aggressively.","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"a063c119fd3a5eb9cc4c6b20011656ea55db5018","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                                  new_ips, device_owner):"},{"line_number":408,"context_line":"        \"\"\"Calculate changes in IPs for the port.\"\"\""},{"line_number":409,"context_line":"        # the new_ips contain all of the fixed_ips that are to be updated"},{"line_number":410,"context_line":"        self._validate_max_ips_per_port(new_ips, device_owner)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        add_ips \u003d []"},{"line_number":413,"context_line":"        remove_ips \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_89dd2ae2","line":410,"range":{"start_line":410,"start_character":13,"end_line":410,"end_character":39},"in_reply_to":"3aaa91ec_6a33b0f6","updated":"2016-07-01 08:36:39.000000000","message":"will fix","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"428e5283dba8bb253b49f066ca28015f0bd3d4a1","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        add_ips \u003d []"},{"line_number":418,"context_line":"        remove_ips \u003d []"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        ips_map \u003d {ip[\u0027ip_address\u0027]: ip"},{"line_number":421,"context_line":"                   for ip in itertools.chain(new_ips, original_ips)"},{"line_number":422,"context_line":"                   if \u0027ip_address\u0027 in ip}"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_49497f30","line":419,"updated":"2016-07-07 15:59:16.000000000","message":"nit:  Be careful not to add whitespace randomly.","commit_id":"dc19411ebf2cab7075dd5abe809797fb7253757c"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"d073048c34b9031a6b67f4c3ad5460c6721d3de7","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        add_ips \u003d []"},{"line_number":418,"context_line":"        remove_ips \u003d []"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        ips_map \u003d {ip[\u0027ip_address\u0027]: ip"},{"line_number":421,"context_line":"                   for ip in itertools.chain(new_ips, original_ips)"},{"line_number":422,"context_line":"                   if \u0027ip_address\u0027 in ip}"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_acbd6d04","line":419,"in_reply_to":"1aa78d24_49497f30","updated":"2016-07-08 08:45:32.000000000","message":"oops, sorry, will remove it if I have to respin this patch","commit_id":"dc19411ebf2cab7075dd5abe809797fb7253757c"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ed201f6e52e24614d67978bf18adbfee273056d0","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"                    # to force ip deallocation on port update."},{"line_number":1057,"context_line":"                    if is_auto_addr_subnet:"},{"line_number":1058,"context_line":"                        fixed_ips.append({\u0027subnet_id\u0027: id,"},{"line_number":1059,"context_line":"                                          \u0027delete_subnet\u0027: True})"},{"line_number":1060,"context_line":"                    data \u003d {attributes.PORT: {\u0027fixed_ips\u0027: fixed_ips}}"},{"line_number":1061,"context_line":"                    try:"},{"line_number":1062,"context_line":"                        self.update_port(context, a.port_id, data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_2b8f352b","line":1059,"range":{"start_line":1059,"start_character":43,"end_line":1059,"end_character":56},"updated":"2016-06-23 15:40:22.000000000","message":"is this exposed to api users?\nif so, this needs APIImpact?","commit_id":"294b7911bd24dab156b23a256d956ff6d9de54cb"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"e58eaedb021b75c3e9d8c04b46d37d49ad92f3e1","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"                    # to force ip deallocation on port update."},{"line_number":1057,"context_line":"                    if is_auto_addr_subnet:"},{"line_number":1058,"context_line":"                        fixed_ips.append({\u0027subnet_id\u0027: id,"},{"line_number":1059,"context_line":"                                          \u0027delete_subnet\u0027: True})"},{"line_number":1060,"context_line":"                    data \u003d {attributes.PORT: {\u0027fixed_ips\u0027: fixed_ips}}"},{"line_number":1061,"context_line":"                    try:"},{"line_number":1062,"context_line":"                        self.update_port(context, a.port_id, data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_aa84785d","line":1059,"range":{"start_line":1059,"start_character":43,"end_line":1059,"end_character":56},"in_reply_to":"3aaa91ec_2b8f352b","updated":"2016-06-30 16:23:02.000000000","message":"I don\u0027t think we want to expose this through the API.  This isn\u0027t coming in through the API and I don\u0027t see a reason why it ever would.  To me, this is an internal implementation detail.","commit_id":"294b7911bd24dab156b23a256d956ff6d9de54cb"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"caa8b0f09ce37f6b497eacc2f329e12f3ebf7bd1","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"                    # By default auto-addressed ips are not removed from port"},{"line_number":1055,"context_line":"                    # on port update, so mark subnet with \u0027delete_subnet\u0027 flag"},{"line_number":1056,"context_line":"                    # to force ip deallocation on port update."},{"line_number":1057,"context_line":"                    if is_auto_addr_subnet:"},{"line_number":1058,"context_line":"                        fixed_ips.append({\u0027subnet_id\u0027: id,"},{"line_number":1059,"context_line":"                                          \u0027delete_subnet\u0027: True})"},{"line_number":1060,"context_line":"                    data \u003d {attributes.PORT: {\u0027fixed_ips\u0027: fixed_ips}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_e887b3b2","line":1057,"range":{"start_line":1057,"start_character":20,"end_line":1057,"end_character":42},"updated":"2016-06-24 16:35:34.000000000","message":"Maybe I\u0027m missing something, but I don\u0027t see this if is_auto_addr_subnet path covered in the unit tests. Might be worth adding a test for this.","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"a063c119fd3a5eb9cc4c6b20011656ea55db5018","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"                    # By default auto-addressed ips are not removed from port"},{"line_number":1055,"context_line":"                    # on port update, so mark subnet with \u0027delete_subnet\u0027 flag"},{"line_number":1056,"context_line":"                    # to force ip deallocation on port update."},{"line_number":1057,"context_line":"                    if is_auto_addr_subnet:"},{"line_number":1058,"context_line":"                        fixed_ips.append({\u0027subnet_id\u0027: id,"},{"line_number":1059,"context_line":"                                          \u0027delete_subnet\u0027: True})"},{"line_number":1060,"context_line":"                    data \u003d {attributes.PORT: {\u0027fixed_ips\u0027: fixed_ips}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_a4b2cb46","line":1057,"range":{"start_line":1057,"start_character":20,"end_line":1057,"end_character":42},"in_reply_to":"3aaa91ec_0a3dcc2a","updated":"2016-07-01 08:36:39.000000000","message":"boden, tesing ml2_plugin part is indeed missed, I\u0027ll add corresponding UT.\ntest__get_changed_ips_for_port_remove_autoaddress validates only part of the change that belongs to update_port, but preparing right arguments in ml2 for it is not currently covered.","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"99e4f25199822d722ea37281fd02ab0435264159","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"                    # By default auto-addressed ips are not removed from port"},{"line_number":1055,"context_line":"                    # on port update, so mark subnet with \u0027delete_subnet\u0027 flag"},{"line_number":1056,"context_line":"                    # to force ip deallocation on port update."},{"line_number":1057,"context_line":"                    if is_auto_addr_subnet:"},{"line_number":1058,"context_line":"                        fixed_ips.append({\u0027subnet_id\u0027: id,"},{"line_number":1059,"context_line":"                                          \u0027delete_subnet\u0027: True})"},{"line_number":1060,"context_line":"                    data \u003d {attributes.PORT: {\u0027fixed_ips\u0027: fixed_ips}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_c3b8b52c","line":1057,"range":{"start_line":1057,"start_character":20,"end_line":1057,"end_character":42},"in_reply_to":"3aaa91ec_a4b2cb46","updated":"2016-07-07 14:28:29.000000000","message":"added UT to cover that in test_plugin.py","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"e05a08c48c1bf4e7cf9797e3b0547cd9799d21a9","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"                    # By default auto-addressed ips are not removed from port"},{"line_number":1055,"context_line":"                    # on port update, so mark subnet with \u0027delete_subnet\u0027 flag"},{"line_number":1056,"context_line":"                    # to force ip deallocation on port update."},{"line_number":1057,"context_line":"                    if is_auto_addr_subnet:"},{"line_number":1058,"context_line":"                        fixed_ips.append({\u0027subnet_id\u0027: id,"},{"line_number":1059,"context_line":"                                          \u0027delete_subnet\u0027: True})"},{"line_number":1060,"context_line":"                    data \u003d {attributes.PORT: {\u0027fixed_ips\u0027: fixed_ips}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_0a3dcc2a","line":1057,"range":{"start_line":1057,"start_character":20,"end_line":1057,"end_character":42},"in_reply_to":"3aaa91ec_e887b3b2","updated":"2016-06-30 16:29:04.000000000","message":"I think the whole point of test__get_changed_ips_for_port_remove_autoaddress is to hit this code path.  Right?","commit_id":"3f99ba780b371de278234062ff89c0f7c11575d7"}]}
