)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"7154199a89578328a026f286a1ab45aa63336dc7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"will use EUI64 as the address."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ie481cfb2f4313baf44bf1a838ebda374a5c74c6a"},{"line_number":17,"context_line":"Cloese-Bug: 1330826"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1ae5cdf2_c7c6914a","line":17,"updated":"2014-06-23 10:26:19.000000000","message":"Minor typo in \"Cloese-Bug:\". Due to this, URL is not pointing to the Bug.","commit_id":"ca63c923559f07905e48cc7f483faa36e41df1df"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"cd254269e5d3d3f62f24ccd1ef3e3a2f7ded951e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"will use EUI64 as the address."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ie481cfb2f4313baf44bf1a838ebda374a5c74c6a"},{"line_number":17,"context_line":"Cloese-Bug: 1330826"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1ae5cdf2_9e92f0fa","line":17,"in_reply_to":"1ae5cdf2_c7c6914a","updated":"2014-06-24 03:11:39.000000000","message":"Done","commit_id":"ca63c923559f07905e48cc7f483faa36e41df1df"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"50fcd085e692b6fd054738420f96a5f9334163f9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit uses EUI64 for SLAAC and stateless IPv6 address"},{"line_number":10,"context_line":"when subnet id in fixed_ip is specified."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"After this patch, all the port created on a subnet which has"},{"line_number":13,"context_line":"ipv6_address_mod\u003dslaac or ipv6_address_mod\u003ddhcpv6-stateless"},{"line_number":14,"context_line":"will use EUI64 as the address."},{"line_number":15,"context_line":"This patch also checks if fixed IP address is specified"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_19e2e7d3","line":12,"updated":"2014-08-11 13:12:45.000000000","message":"*all the ports\n\ninstead of:\n\nall the port","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit uses EUI64 for SLAAC and stateless IPv6 address"},{"line_number":10,"context_line":"when subnet id in fixed_ip is specified."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"After this patch, all the port created on a subnet which has"},{"line_number":13,"context_line":"ipv6_address_mod\u003dslaac or ipv6_address_mod\u003ddhcpv6-stateless"},{"line_number":14,"context_line":"will use EUI64 as the address."},{"line_number":15,"context_line":"This patch also checks if fixed IP address is specified"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_9fbed7ad","line":12,"in_reply_to":"baada198_19e2e7d3","updated":"2014-08-11 13:38:27.000000000","message":"Done","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"7154199a89578328a026f286a1ab45aa63336dc7","unresolved":false,"context_lines":[{"line_number":612,"context_line":"                    self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":613,"context_line":"                    mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":614,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":615,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":616,"context_line":"                        prefix, mac)"},{"line_number":617,"context_line":"                    ips.append({\u0027ip_address\u0027: ip_address.format(),"},{"line_number":618,"context_line":"                                \u0027subnet_id\u0027: subnet[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_07e239a0","line":615,"updated":"2014-06-23 10:26:19.000000000","message":"A Suggestion:\nAs we are calculating EUI-64 addresses even in the api \"_allocate_ips_for_port\", do you think we can move this code to self._generate_ip, so that it would be apt?\nI\u0027m fine if you want to do it in another patch as well. The current patch addresses the issue mentioned in the Bug report. Thanks.","commit_id":"ca63c923559f07905e48cc7f483faa36e41df1df"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"cd254269e5d3d3f62f24ccd1ef3e3a2f7ded951e","unresolved":false,"context_lines":[{"line_number":612,"context_line":"                    self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":613,"context_line":"                    mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":614,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":615,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":616,"context_line":"                        prefix, mac)"},{"line_number":617,"context_line":"                    ips.append({\u0027ip_address\u0027: ip_address.format(),"},{"line_number":618,"context_line":"                                \u0027subnet_id\u0027: subnet[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_41908d96","line":615,"in_reply_to":"1ae5cdf2_07e239a0","updated":"2014-06-24 03:11:39.000000000","message":"Sridhar, I\u0027ve also considered moving all the changes to _generate_ip. The problem is currently _generate_ip and _try_generate_ip, which is called by _generate_ip are designed for generating one ip from one subnet of the giving subnets. This doesn\u0027t fit the plan of generating both ipv6 and ipv4 address when both ipv4 and ipv6 subnets are given. Changing this behavior requires a lot of code change so I prefer to do this in another patch.","commit_id":"ca63c923559f07905e48cc7f483faa36e41df1df"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"3b219a9e2362a8d571fe052076eff152f8f4237c","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_42d2f800","line":601,"updated":"2014-07-03 03:44:53.000000000","message":"One question on this: what if the ip_address comes from a slaac subnet?","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"7171bd7ce6f54e22706a86b97a69edd9906134d4","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c54240aa","line":601,"in_reply_to":"baada198_2b467fc0","updated":"2014-07-15 14:24:34.000000000","message":"That\u0027s exactly my concern. How does the VM get the address specifically assigned to its port in the case of SLAAC?","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"dd2bf66547061ef3b891395331ccbd32c7dddba8","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_eb4392ac","line":601,"in_reply_to":"baada198_42d2f800","updated":"2014-07-07 05:31:19.000000000","message":"If ip_address comes from a slaac subnet, the code flow will go to the \"else\" branch at line 609","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"5bb428cdee103c453341197c90c3dadd1ed6869b","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_2b467fc0","line":601,"in_reply_to":"baada198_e2b4fe36","updated":"2014-07-14 03:07:31.000000000","message":"In this case you listed, the _allocate_specific_ip will be called and the specified IP will be used for the port. \n\n$ neutron port-create --fixed-ip ip_address\u003dfd00::200 private-ipv6\nCreated a new port:\n+-----------------------+----------------------------------------------------------------------------------+\n| Field                 | Value                                                                            |\n+-----------------------+----------------------------------------------------------------------------------+\n| admin_state_up        | True                                                                             |\n| allowed_address_pairs |                                                                                  |\n| binding:host_id       |                                                                                  |\n| binding:profile       | {}                                                                               |\n| binding:vif_details   | {}                                                                               |\n| binding:vif_type      | unbound                                                                          |\n| binding:vnic_type     | normal                                                                           |\n| device_id             |                                                                                  |\n| device_owner          |                                                                                  |\n| fixed_ips             | {\"subnet_id\": \"aef5f997-738e-4d37-9fe7-40396df0d27f\", \"ip_address\": \"fd00::200\"} |\n| id                    | dd856b23-2727-4e2c-8ac1-82db6b7d63f9                                             |\n| mac_address           | fa:16:3e:78:1c:ba                                                                |\n| name                  |                                                                                  |\n| network_id            | 270a2554-79d6-4394-bc08-36b6367e1ff3                                             |\n| security_groups       | b3ec2157-e02b-4f6c-be83-a3e9c6d853cc                                             |\n| status                | DOWN                                                                             |\n| tenant_id             | 789c88e4d095456eb363936f068534a9                                                 |\n+-----------------------+----------------------------------------------------------------------------------+\n\nxuhanp@ubuntu-server1:~/workspace/openstack/neutron$ neutron port-show dd856b23-2727-4e2c-8ac1-82db6b7d63f9\n+-----------------------+----------------------------------------------------------------------------------+\n| Field                 | Value                                                                            |\n+-----------------------+----------------------------------------------------------------------------------+\n| admin_state_up        | True                                                                             |\n| allowed_address_pairs |                                                                                  |\n| binding:host_id       |                                                                                  |\n| binding:profile       | {}                                                                               |\n| binding:vif_details   | {}                                                                               |\n| binding:vif_type      | unbound                                                                          |\n| binding:vnic_type     | normal                                                                           |\n| device_id             |                                                                                  |\n| device_owner          |                                                                                  |\n| extra_dhcp_opts       |                                                                                  |\n| fixed_ips             | {\"subnet_id\": \"aef5f997-738e-4d37-9fe7-40396df0d27f\", \"ip_address\": \"fd00::200\"} |\n| id                    | dd856b23-2727-4e2c-8ac1-82db6b7d63f9                                             |\n| mac_address           | fa:16:3e:78:1c:ba                                                                |\n| name                  |                                                                                  |\n| network_id            | 270a2554-79d6-4394-bc08-36b6367e1ff3                                             |\n| security_groups       | b3ec2157-e02b-4f6c-be83-a3e9c6d853cc                                             |\n| status                | DOWN                                                                             |\n| tenant_id             | 789c88e4d095456eb363936f068534a9                                                 |\n\n\nI guess this can answer your concern?","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"fb742d1147de9ca8b415b9ebf38d973313e06eaa","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e2b4fe36","line":601,"in_reply_to":"baada198_eb4392ac","updated":"2014-07-10 15:24:03.000000000","message":"I guess that my question was not clear enough. fixed_ips is a list of dictionaries that has \u0027ip_address\u0027 and/or \u0027subnet_id\u0027 as keys. For example, the user may enter \n\nneutron port-create --fixed-ip ip_address\u003dfd00::200  private-ipv6\n\nAnd the ip_address is from a slaac subnet in the network private-ipv6.\n\nIn the above case, the user will not get what he/she wanted since the address is from a slaac subnet.","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"3b219a9e2362a8d571fe052076eff152f8f4237c","unresolved":false,"context_lines":[{"line_number":610,"context_line":"                subnet \u003d self._get_subnet(context, fixed[\u0027subnet_id\u0027])"},{"line_number":611,"context_line":"                if (subnet[\u0027ip_version\u0027] \u003d\u003d 6 and"},{"line_number":612,"context_line":"                    self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":613,"context_line":"                    mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":614,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":615,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":616,"context_line":"                        prefix, mac)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a2c0342b","line":613,"updated":"2014-07-03 03:44:53.000000000","message":"in the case of update_port, mac_address may not be part of the port dictionary, and a key error will result","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"dd2bf66547061ef3b891395331ccbd32c7dddba8","unresolved":false,"context_lines":[{"line_number":610,"context_line":"                subnet \u003d self._get_subnet(context, fixed[\u0027subnet_id\u0027])"},{"line_number":611,"context_line":"                if (subnet[\u0027ip_version\u0027] \u003d\u003d 6 and"},{"line_number":612,"context_line":"                    self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":613,"context_line":"                    mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":614,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":615,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":616,"context_line":"                        prefix, mac)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_8b613607","line":613,"in_reply_to":"baada198_a2c0342b","updated":"2014-07-07 05:31:19.000000000","message":"will address in next patch","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"3b219a9e2362a8d571fe052076eff152f8f4237c","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1511,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1512,"context_line":"                    original[\"fixed_ips\"],"},{"line_number":1513,"context_line":"                    port)"},{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"                # Update ips if necessary"},{"line_number":1516,"context_line":"                for ip in added_ips:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_62fe1c3a","line":1513,"updated":"2014-07-03 03:44:53.000000000","message":"the existing arguments seem to make sense to me. What is required to come up with the slaac address is the mac address. I\u0027d suggest to add an additional argument to _update_ips_for_port() specifically for that purpose.","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"dd2bf66547061ef3b891395331ccbd32c7dddba8","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1511,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1512,"context_line":"                    original[\"fixed_ips\"],"},{"line_number":1513,"context_line":"                    port)"},{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"                # Update ips if necessary"},{"line_number":1516,"context_line":"                for ip in added_ips:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4b447e73","line":1513,"in_reply_to":"baada198_62fe1c3a","updated":"2014-07-07 05:31:19.000000000","message":"will address in next patch.","commit_id":"2e0013b31825e7818012489c4beb418d539d831e"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"18f971354f3704b6446336882d47ed6299175d7e","unresolved":false,"context_lines":[{"line_number":1508,"context_line":"                original \u003d self._make_port_dict(original_port,"},{"line_number":1509,"context_line":"                                                process_extensions\u003dFalse)"},{"line_number":1510,"context_line":"                mac \u003d p.get(\u0027mac_address\u0027) if p.get(\u0027mac_address\u0027) else ("},{"line_number":1511,"context_line":"                    original[\u0027mac_address\u0027])"},{"line_number":1512,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1513,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1514,"context_line":"                    original[\"fixed_ips\"], p[\u0027fixed_ips\u0027], mac)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_42f4caf1","line":1511,"updated":"2014-07-10 15:23:54.000000000","message":"is it equivalent to \n   mac \u003d p.get(\u0027mac_address\u0027) or original[\u0027mac_address\u0027]\n?","commit_id":"2080289e4dcdb3ee68be18291aa1261e1663f3a1"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"82eeb22b5f43a04de939b3092bcc59e5ad4f92d9","unresolved":false,"context_lines":[{"line_number":1508,"context_line":"                original \u003d self._make_port_dict(original_port,"},{"line_number":1509,"context_line":"                                                process_extensions\u003dFalse)"},{"line_number":1510,"context_line":"                mac \u003d p.get(\u0027mac_address\u0027) if p.get(\u0027mac_address\u0027) else ("},{"line_number":1511,"context_line":"                    original[\u0027mac_address\u0027])"},{"line_number":1512,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1513,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1514,"context_line":"                    original[\"fixed_ips\"], p[\u0027fixed_ips\u0027], mac)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_4bd690c4","line":1511,"in_reply_to":"baada198_42f4caf1","updated":"2014-07-11 02:54:25.000000000","message":"Done","commit_id":"2080289e4dcdb3ee68be18291aa1261e1663f3a1"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"3fa0d8b9454e0da5e1b639070d8f94810e533614","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_8155cb51","line":601,"updated":"2014-07-11 17:47:22.000000000","message":"Please take a look at patch set 2 comments in this area.","commit_id":"4f22e36a280d6f848f96db1ad28e041dbdfc0fc1"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"4bd708ac8f5e14b851e71e535daaaa8737242fcc","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":599,"context_line":"        ips \u003d []"},{"line_number":600,"context_line":"        for fixed in fixed_ips:"},{"line_number":601,"context_line":"            if \u0027ip_address\u0027 in fixed:"},{"line_number":602,"context_line":"                # Remove the IP address from the allocation pool"},{"line_number":603,"context_line":"                NeutronDbPluginV2._allocate_specific_ip("},{"line_number":604,"context_line":"                    context, fixed[\u0027subnet_id\u0027], fixed[\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_8b186bd4","line":601,"in_reply_to":"baada198_8155cb51","updated":"2014-07-14 03:07:21.000000000","message":"Robert, See my answer in comment 2.","commit_id":"4f22e36a280d6f848f96db1ad28e041dbdfc0fc1"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"40df4f4cb9d4d389a39c50475bcd5e125a7a3cb1","unresolved":false,"context_lines":[{"line_number":585,"context_line":"                            \u0027subnet\u0027) % fixed[\u0027ip_address\u0027]"},{"line_number":586,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":587,"context_line":"                if self._check_if_subnet_uses_eui64(subnet):"},{"line_number":588,"context_line":"                    msg \u003d (_(\"IP address %(address)s is not a valid IP for \""},{"line_number":589,"context_line":"                            \"IPv6 subnet with %(mode)s address mode\") %"},{"line_number":590,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":591,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_b1bae0bd","line":588,"updated":"2014-07-21 17:51:41.000000000","message":"To be more informative, I think that the message should say something like: IPv6 address can not be directly assigned to a port on a slaac subnet.","commit_id":"ce6254b49ff9ae4f4f28dbc644f4608b35d5ada7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea412986737797b0e4bab42b2de6330674dfebbe","unresolved":false,"context_lines":[{"line_number":585,"context_line":"                            \u0027subnet\u0027) % fixed[\u0027ip_address\u0027]"},{"line_number":586,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":587,"context_line":"                if self._check_if_subnet_uses_eui64(subnet):"},{"line_number":588,"context_line":"                    msg \u003d (_(\"IP address %(address)s is not a valid IP for \""},{"line_number":589,"context_line":"                            \"IPv6 subnet with %(mode)s address mode\") %"},{"line_number":590,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":591,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_61305e9e","line":588,"in_reply_to":"baada198_b1bae0bd","updated":"2014-07-22 05:15:43.000000000","message":"Will modify in next patch.","commit_id":"ce6254b49ff9ae4f4f28dbc644f4608b35d5ada7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"50fcd085e692b6fd054738420f96a5f9334163f9","unresolved":false,"context_lines":[{"line_number":589,"context_line":"                            \"assigned to a port on a subnet with %(mode)s \""},{"line_number":590,"context_line":"                            \"address mode\") %"},{"line_number":591,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":592,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"},{"line_number":593,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":594,"context_line":"                fixed_ip_set.append({\u0027subnet_id\u0027: subnet_id,"},{"line_number":595,"context_line":"                                     \u0027ip_address\u0027: fixed[\u0027ip_address\u0027]})"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_593d3f2b","line":592,"updated":"2014-08-11 13:12:45.000000000","message":"question: wouldn\u0027t it be also useful to log the subnet_id?","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":589,"context_line":"                            \"assigned to a port on a subnet with %(mode)s \""},{"line_number":590,"context_line":"                            \"address mode\") %"},{"line_number":591,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":592,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"},{"line_number":593,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":594,"context_line":"                fixed_ip_set.append({\u0027subnet_id\u0027: subnet_id,"},{"line_number":595,"context_line":"                                     \u0027ip_address\u0027: fixed[\u0027ip_address\u0027]})"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5f935f5b","line":592,"in_reply_to":"baada198_593d3f2b","updated":"2014-08-11 13:38:27.000000000","message":"Done","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"90d334bf618608ad92566b13540ed44b2726b89d","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                            \"address mode\") %"},{"line_number":591,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":592,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"},{"line_number":593,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":594,"context_line":"                fixed_ip_set.append({\u0027subnet_id\u0027: subnet_id,"},{"line_number":595,"context_line":"                                     \u0027ip_address\u0027: fixed[\u0027ip_address\u0027]})"},{"line_number":596,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_38b477d3","line":593,"updated":"2014-07-23 13:19:56.000000000","message":"Can we add a unit test case for this? There exists unit tests for the existing error conditions.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"0bc99c9d35a89e168994c1621d2f0f52c9b61935","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                            \"address mode\") %"},{"line_number":591,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":592,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"},{"line_number":593,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":594,"context_line":"                fixed_ip_set.append({\u0027subnet_id\u0027: subnet_id,"},{"line_number":595,"context_line":"                                     \u0027ip_address\u0027: fixed[\u0027ip_address\u0027]})"},{"line_number":596,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7def9de9","line":593,"in_reply_to":"baada198_38b477d3","updated":"2014-07-24 09:24:16.000000000","message":"Robert, you don\u0027t think the added unit test test_requested_invalid_fixed_ip_address_v6_slaac already cover this?","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"f2d7550aa52abb7a83cc2b87e988e6c76d81430e","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                            \"address mode\") %"},{"line_number":591,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"},{"line_number":592,"context_line":"                           \u0027mode\u0027: subnet[\u0027ipv6_address_mode\u0027]})"},{"line_number":593,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":594,"context_line":"                fixed_ip_set.append({\u0027subnet_id\u0027: subnet_id,"},{"line_number":595,"context_line":"                                     \u0027ip_address\u0027: fixed[\u0027ip_address\u0027]})"},{"line_number":596,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_c4c8cd23","line":593,"in_reply_to":"baada198_7def9de9","updated":"2014-07-24 13:14:34.000000000","message":"Sorry, my bad, I missed that somehow.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"50fcd085e692b6fd054738420f96a5f9334163f9","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            else:"},{"line_number":616,"context_line":"                subnet \u003d self._get_subnet(context, fixed[\u0027subnet_id\u0027])"},{"line_number":617,"context_line":"                if (subnet[\u0027ip_version\u0027] \u003d\u003d 6 and"},{"line_number":618,"context_line":"                    self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":619,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":620,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":621,"context_line":"                        prefix, mac_address)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_59245f0d","line":618,"updated":"2014-08-11 13:12:45.000000000","message":"could you indent this line once more? The if is not distinguishable from the rest of the code.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            else:"},{"line_number":616,"context_line":"                subnet \u003d self._get_subnet(context, fixed[\u0027subnet_id\u0027])"},{"line_number":617,"context_line":"                if (subnet[\u0027ip_version\u0027] \u003d\u003d 6 and"},{"line_number":618,"context_line":"                    self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":619,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":620,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":621,"context_line":"                        prefix, mac_address)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_df868f15","line":618,"in_reply_to":"baada198_59245f0d","updated":"2014-08-11 13:38:27.000000000","message":"Done","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"a76f04786b3b3740b7e78dc899044a53a33824f8","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"                changed_ips \u003d True"},{"line_number":1514,"context_line":"                original \u003d self._make_port_dict(original_port,"},{"line_number":1515,"context_line":"                                                process_extensions\u003dFalse)"},{"line_number":1516,"context_line":"                mac \u003d p.get(\u0027mac_address\u0027) or original[\u0027mac_address\u0027]"},{"line_number":1517,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1518,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1519,"context_line":"                    original[\"fixed_ips\"], p[\u0027fixed_ips\u0027], mac)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_fd80f0c1","line":1516,"updated":"2014-09-03 06:56:35.000000000","message":"+1. If there isn\u0027t a way to update the mac, we shouldn\u0027t make it look possible.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c858924227d9b789e44bb3ef6fe5a53e8495852a","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"                changed_ips \u003d True"},{"line_number":1514,"context_line":"                original \u003d self._make_port_dict(original_port,"},{"line_number":1515,"context_line":"                                                process_extensions\u003dFalse)"},{"line_number":1516,"context_line":"                mac \u003d p.get(\u0027mac_address\u0027) or original[\u0027mac_address\u0027]"},{"line_number":1517,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1518,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1519,"context_line":"                    original[\"fixed_ips\"], p[\u0027fixed_ips\u0027], mac)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7b06e91d","line":1516,"updated":"2014-07-30 20:18:13.000000000","message":"It there a case where mac_address is updated? Updating mac_address of a port is not allowed in the API layer (allow_put: False for mac_address attribute in api/v2/attributes.py).\n\nIf there is no such case, consider:\n\n  mac \u003d original[\u0027mac_address\u0027]\n\nor pass original[\u0027mac_address\u0027] to _update_ips_for_port directly.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"52296ad6062bc0803b685cd71ef8e00b66e68dac","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"                changed_ips \u003d True"},{"line_number":1514,"context_line":"                original \u003d self._make_port_dict(original_port,"},{"line_number":1515,"context_line":"                                                process_extensions\u003dFalse)"},{"line_number":1516,"context_line":"                mac \u003d p.get(\u0027mac_address\u0027) or original[\u0027mac_address\u0027]"},{"line_number":1517,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1518,"context_line":"                    context, original_port[\"network_id\"], id,"},{"line_number":1519,"context_line":"                    original[\"fixed_ips\"], p[\u0027fixed_ips\u0027], mac)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_27414b36","line":1516,"in_reply_to":"baada198_7b06e91d","updated":"2014-08-11 10:09:57.000000000","message":"I didn\u0027t find the place where mac can be changed. So I will use original[mac] directly.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"3d1958a1c78f3519d4b9923e9123ebc36f4f3ef8","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                            \u0027subnet\u0027) % fixed[\u0027ip_address\u0027]"},{"line_number":451,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":452,"context_line":"                if self._check_if_subnet_uses_eui64(subnet):"},{"line_number":453,"context_line":"                    msg \u003d (_(\"IPv6 address %(address)s can not be directly \""},{"line_number":454,"context_line":"                            \"assigned to a port on subnet %(id)s with \""},{"line_number":455,"context_line":"                            \"%(mode)s address mode\") %"},{"line_number":456,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_4d068a1e","line":453,"updated":"2014-10-06 19:44:11.000000000","message":"I\u0027m with Armando on this, I think this is a change affected by string freeze.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"7b4208202b8f0ba8cc6fd5abc5939b37e2db93c0","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                            \u0027subnet\u0027) % fixed[\u0027ip_address\u0027]"},{"line_number":451,"context_line":"                    raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":452,"context_line":"                if self._check_if_subnet_uses_eui64(subnet):"},{"line_number":453,"context_line":"                    msg \u003d (_(\"IPv6 address %(address)s can not be directly \""},{"line_number":454,"context_line":"                            \"assigned to a port on subnet %(id)s with \""},{"line_number":455,"context_line":"                            \"%(mode)s address mode\") %"},{"line_number":456,"context_line":"                           {\u0027address\u0027: fixed[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_4c0cb73b","line":453,"in_reply_to":"baa201ad_4d068a1e","updated":"2014-10-07 14:22:31.000000000","message":"Will this change preventing this patch from going into RC2?","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"3d1958a1c78f3519d4b9923e9123ebc36f4f3ef8","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":467,"context_line":"        return fixed_ip_set"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def _allocate_fixed_ips(self, context, fixed_ips, mac_address):"},{"line_number":470,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":471,"context_line":"        ips \u003d []"},{"line_number":472,"context_line":"        for fixed in fixed_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_cde51a0a","line":469,"updated":"2014-10-06 19:44:11.000000000","message":"Adding mac_address to this method gets me thinking that this method is covering too many use cases and this code could use some restructuring.  However, that is probably out of the scope of this patch.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"7b4208202b8f0ba8cc6fd5abc5939b37e2db93c0","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":467,"context_line":"        return fixed_ip_set"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def _allocate_fixed_ips(self, context, fixed_ips, mac_address):"},{"line_number":470,"context_line":"        \"\"\"Allocate IP addresses according to the configured fixed_ips.\"\"\""},{"line_number":471,"context_line":"        ips \u003d []"},{"line_number":472,"context_line":"        for fixed in fixed_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_41156047","line":469,"in_reply_to":"baa201ad_cde51a0a","updated":"2014-10-07 14:22:31.000000000","message":"Agree that restructuring this requires too many changes, especially for RC2. So I will just keep mac_address here.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"3d1958a1c78f3519d4b9923e9123ebc36f4f3ef8","unresolved":false,"context_lines":[{"line_number":568,"context_line":"                    # generated an IP."},{"line_number":569,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":570,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("},{"line_number":571,"context_line":"                        prefix, p[\u0027mac_address\u0027])"},{"line_number":572,"context_line":"                    if not self._check_unique_ip("},{"line_number":573,"context_line":"                        context, p[\u0027network_id\u0027],"},{"line_number":574,"context_line":"                        subnet[\u0027id\u0027], ip_address.format()):"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_d2ae952d","line":571,"updated":"2014-10-06 19:44:11.000000000","message":"(no change requested)  This isn\u0027t really needed for the current patch but it does promote consistency with L548 where p[\u0027mac_address\u0027] is newly referenced.  So, I\u0027m okay with this change here.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"3d1958a1c78f3519d4b9923e9123ebc36f4f3ef8","unresolved":false,"context_lines":[{"line_number":1363,"context_line":"        changed_ips \u003d False"},{"line_number":1364,"context_line":"        changed_device_id \u003d False"},{"line_number":1365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":1366,"context_line":"            original_port \u003d self._get_port(context, id)"},{"line_number":1367,"context_line":"            if \u0027device_owner\u0027 in p:"},{"line_number":1368,"context_line":"                current_device_owner \u003d p[\u0027device_owner\u0027]"},{"line_number":1369,"context_line":"                changed_device_owner \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_32c9a126","line":1366,"updated":"2014-10-06 19:44:11.000000000","message":"It was bad that the original code repurposed the \"port\" argument like it did.  So, I don\u0027t argue that this isn\u0027t a good thing to clean up.\n\nHowever, changing the name of port to original_port is really orthogonal to this patch and it means that reviewers have a lower signal to noise ratio.  We need to look through all of the name changing to pick out the change that really matters in this context.\n\nThe name change could be split out to a follow-on clean up patch.  Especially if there is still opportunity to get the in to RC2, it would help to minimize the diffs in the patch.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"7b4208202b8f0ba8cc6fd5abc5939b37e2db93c0","unresolved":false,"context_lines":[{"line_number":1363,"context_line":"        changed_ips \u003d False"},{"line_number":1364,"context_line":"        changed_device_id \u003d False"},{"line_number":1365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":1366,"context_line":"            original_port \u003d self._get_port(context, id)"},{"line_number":1367,"context_line":"            if \u0027device_owner\u0027 in p:"},{"line_number":1368,"context_line":"                current_device_owner \u003d p[\u0027device_owner\u0027]"},{"line_number":1369,"context_line":"                changed_device_owner \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_01519835","line":1366,"in_reply_to":"baa201ad_32c9a126","updated":"2014-10-07 14:22:31.000000000","message":"Ok. I will switch back to port from original_port in next patch.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"f3c99ee8fecc29139043d69966efb17220d36173","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"            if \u0027fixed_ips\u0027 in p:"},{"line_number":1401,"context_line":"                changed_ips \u003d True"},{"line_number":1402,"context_line":"                original \u003d self._make_port_dict(port,"},{"line_number":1403,"context_line":"                                                process_extensions\u003dFalse)"},{"line_number":1404,"context_line":"                added_ips, prev_ips \u003d self._update_ips_for_port("},{"line_number":1405,"context_line":"                    context, port[\"network_id\"], id,"},{"line_number":1406,"context_line":"                    original[\"fixed_ips\"], p[\u0027fixed_ips\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa201ad_f7dfd666","line":1403,"updated":"2014-10-08 12:03:47.000000000","message":"nit: no need to change. \nguess it\u0027s remnant from last version","commit_id":"3d2318b19db8777a2708099802477483d5620f77"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"f3c99ee8fecc29139043d69966efb17220d36173","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"            # Remove all attributes in p which are not in the port DB model"},{"line_number":1415,"context_line":"            # and then update the port"},{"line_number":1416,"context_line":"            port.update("},{"line_number":1417,"context_line":"                self._filter_non_model_columns(p, models_v2.Port))"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        result \u003d self._make_port_dict(port)"},{"line_number":1420,"context_line":"        # Keep up with fields that changed"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa201ad_b77b8e79","line":1417,"updated":"2014-10-08 12:03:47.000000000","message":"nit: no need to change","commit_id":"3d2318b19db8777a2708099802477483d5620f77"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"3dfd343f884e1ebd60ad26f9680c7a93889ba35e","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            # from subnet"},{"line_number":481,"context_line":"            else:"},{"line_number":482,"context_line":"                subnet \u003d self._get_subnet(context, fixed[\u0027subnet_id\u0027])"},{"line_number":483,"context_line":"                if (subnet[\u0027ip_version\u0027] \u003d\u003d 6 and"},{"line_number":484,"context_line":"                        self._check_if_subnet_uses_eui64(subnet)):"},{"line_number":485,"context_line":"                    prefix \u003d subnet[\u0027cidr\u0027]"},{"line_number":486,"context_line":"                    ip_address \u003d ipv6_utils.get_ipv6_addr_by_EUI64("}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_80b7b4f4","line":483,"updated":"2014-10-13 15:40:04.000000000","message":"As I mentioned in PS11, this still feels a bit funny to pass the mac_address to this routine.  It feels like this routine is making too many decisions at too low a level.  I wonder if this scenario should be handled at a higher level.\n\nI don\u0027t exactly what to suggest.  We could save this as a refactoring opportunity when we work on pluggable IPAM which will require some of this to be refactored to support that.","commit_id":"e9a54d5e65c85ebb63040cc71d5a8983b2966658"}],"neutron/tests/unit/oneconvergence/test_nvsd_plugin.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"a76f04786b3b3740b7e78dc899044a53a33824f8","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def test_requested_subnet_id_v4_and_v6(self):"},{"line_number":106,"context_line":"        self.skipTest(\"NVSD Plugin does not support IPV6.\")"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_update_port_update_slaac_ipv6(self):"},{"line_number":109,"context_line":"        self.skipTest(\"NVSD Plugin does not support IPV6.\")"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def test_port_vif_details(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_1d8214c8","line":108,"updated":"2014-09-03 06:56:35.000000000","message":"rebase and remove these test definitions. One convergence now skips all tests with v6 in the name.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"}],"neutron/tests/unit/test_db_plugin.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"50fcd085e692b6fd054738420f96a5f9334163f9","unresolved":false,"context_lines":[{"line_number":1270,"context_line":"                ips \u003d res[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1271,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1272,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], eui_addr)"},{"line_number":1273,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"    def test_requested_duplicate_mac(self):"},{"line_number":1276,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_c48886c5","line":1273,"updated":"2014-08-11 13:12:45.000000000","message":"nit: in asserts, the expected value should be put first. e,g.:\n\nself.assertEqual(1, len(ips))","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":1270,"context_line":"                ips \u003d res[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1271,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1272,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], eui_addr)"},{"line_number":1273,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"    def test_requested_duplicate_mac(self):"},{"line_number":1276,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7f6103d3","line":1273,"in_reply_to":"baada198_c48886c5","updated":"2014-08-11 13:38:27.000000000","message":"I didn\u0027t know the order matters here. Can you provide reference link?","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"50fcd085e692b6fd054738420f96a5f9334163f9","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"                         cidr\u003d\u00272607:f0d0:1002:51::/124\u0027,"},{"line_number":1436,"context_line":"                         ip_version\u003d6,"},{"line_number":1437,"context_line":"                         ipv6_address_mode\u003dconstants.IPV6_SLAAC) as subnet:"},{"line_number":1438,"context_line":"                kwargs \u003d {\"fixed_ips\": [{\u0027subnet_id\u0027: subnet[\u0027subnet\u0027][\u0027id\u0027],"},{"line_number":1439,"context_line":"                         \u0027ip_address\u0027: \u00272607:f0d0:1002:51::200\u0027}]}"},{"line_number":1440,"context_line":"                net_id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":1441,"context_line":"                res \u003d self._create_port(self.fmt, net_id\u003dnet_id, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_4481d6c0","line":1438,"updated":"2014-08-11 13:12:45.000000000","message":"i might be imagining it, but isn\u0027t the code block inside this \"with\" overindented?","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"                         cidr\u003d\u00272607:f0d0:1002:51::/124\u0027,"},{"line_number":1436,"context_line":"                         ip_version\u003d6,"},{"line_number":1437,"context_line":"                         ipv6_address_mode\u003dconstants.IPV6_SLAAC) as subnet:"},{"line_number":1438,"context_line":"                kwargs \u003d {\"fixed_ips\": [{\u0027subnet_id\u0027: subnet[\u0027subnet\u0027][\u0027id\u0027],"},{"line_number":1439,"context_line":"                         \u0027ip_address\u0027: \u00272607:f0d0:1002:51::200\u0027}]}"},{"line_number":1440,"context_line":"                net_id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":1441,"context_line":"                res \u003d self._create_port(self.fmt, net_id\u003dnet_id, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_dfe76f44","line":1438,"in_reply_to":"baada198_4481d6c0","updated":"2014-08-11 13:38:27.000000000","message":"It must be my copy and paste problem from the above code, will address in next patch.","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c858924227d9b789e44bb3ef6fe5a53e8495852a","unresolved":false,"context_lines":[{"line_number":1442,"context_line":"                self.assertEqual(res.status_int,"},{"line_number":1443,"context_line":"                                 webob.exc.HTTPClientError.code)"},{"line_number":1444,"context_line":""},{"line_number":1445,"context_line":"    def test_requested_subnet_id_v6_slaac(self):"},{"line_number":1446,"context_line":"        with self.subnet(gateway_ip\u003d\u0027fe80::1\u0027,"},{"line_number":1447,"context_line":"                         cidr\u003d\u00272607:f0d0:1002:51::/124\u0027,"},{"line_number":1448,"context_line":"                         ip_version\u003d6,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_db553520","line":1445,"updated":"2014-07-30 20:18:13.000000000","message":"We can write the test a bit simple by using self.port(). deserialize and _delete are no longer needed.\n\n        with self.subnet(gateway_ip\u003d\u0027fe80::1\u0027,\n                         cidr\u003d\u00272607:f0d0:1002:51::/124\u0027,\n                         ip_version\u003d6,\n                         ipv6_address_mode\u003dconstants.IPV6_SLAAC) as subnet:\n            with self.port(subnet,\n                           fixed_ips\u003d[{\u0027subnet_id\u0027:\n                                       subnet[\u0027subnet\u0027][\u0027id\u0027]}]) as port:\n                port_mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]\n                subnet_cidr \u003d subnet[\u0027subnet\u0027][\u0027cidr\u0027]\n                eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet_cidr,\n                                                                 port_mac))\n                self.assertEqual(port[\u0027port\u0027][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],\n                                 eui_addr)","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":1442,"context_line":"                self.assertEqual(res.status_int,"},{"line_number":1443,"context_line":"                                 webob.exc.HTTPClientError.code)"},{"line_number":1444,"context_line":""},{"line_number":1445,"context_line":"    def test_requested_subnet_id_v6_slaac(self):"},{"line_number":1446,"context_line":"        with self.subnet(gateway_ip\u003d\u0027fe80::1\u0027,"},{"line_number":1447,"context_line":"                         cidr\u003d\u00272607:f0d0:1002:51::/124\u0027,"},{"line_number":1448,"context_line":"                         ip_version\u003d6,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7f3ae3c4","line":1445,"in_reply_to":"baada198_db553520","updated":"2014-08-11 13:38:27.000000000","message":"Done","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c858924227d9b789e44bb3ef6fe5a53e8495852a","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"                                 eui_addr)"},{"line_number":1461,"context_line":"                self._delete(\u0027ports\u0027, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"    def test_requested_subnet_id_v4_and_v6_slaac(self):"},{"line_number":1464,"context_line":"        with self.subnet() as subnet:"},{"line_number":1465,"context_line":"                tenant_id \u003d subnet[\u0027subnet\u0027][\u0027tenant_id\u0027]"},{"line_number":1466,"context_line":"                net_id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5b184583","line":1463,"updated":"2014-07-30 20:18:13.000000000","message":"It can be written as follows. Though it doesn\u0027t become much simpler, operations for subnet2 and port are more clarified by \"with\" clause.\n\n        with self.network() as network:\n            with contextlib.nested(\n                self.subnet(network),\n                self.subnet(network,\n                            cidr\u003d\u00272607:f0d0:1002:51::/124\u0027,\n                            ip_version\u003d6,\n                            gateway_ip\u003d\u0027fe80::1\u0027,\n                            ipv6_address_mode\u003dconstants.IPV6_SLAAC)\n            ) as (subnet, subnet2):\n                with self.port(\n                    # subnet is used only to get network_id for the port.                                                                                                                                          \n                    subnet,\n                    fixed_ips\u003d[{\u0027subnet_id\u0027: subnet[\u0027subnet\u0027][\u0027id\u0027]},\n                               {\u0027subnet_id\u0027: subnet2[\u0027subnet\u0027][\u0027id\u0027]}]\n                ) as port:\n                    ips \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027]\n                    self.assertEqual(len(ips), 2)\n                    self.assertEqual(ips[0][\u0027ip_address\u0027], \u002710.0.0.2\u0027)\n                    port_mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]\n                    subnet_cidr \u003d subnet2[\u0027subnet\u0027][\u0027cidr\u0027]\n                    eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(\n                            subnet_cidr, port_mac))\n                    self.assertEqual(ips[1][\u0027ip_address\u0027], eui_addr)","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"                                 eui_addr)"},{"line_number":1461,"context_line":"                self._delete(\u0027ports\u0027, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"    def test_requested_subnet_id_v4_and_v6_slaac(self):"},{"line_number":1464,"context_line":"        with self.subnet() as subnet:"},{"line_number":1465,"context_line":"                tenant_id \u003d subnet[\u0027subnet\u0027][\u0027tenant_id\u0027]"},{"line_number":1466,"context_line":"                net_id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5f3fdfb4","line":1463,"in_reply_to":"baada198_5b184583","updated":"2014-08-11 13:38:27.000000000","message":"Done","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"50fcd085e692b6fd054738420f96a5f9334163f9","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"                subnet_cidr \u003d subnet2[\u0027subnet\u0027][\u0027cidr\u0027]"},{"line_number":1486,"context_line":"                eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet_cidr,"},{"line_number":1487,"context_line":"                                                                 port_mac))"},{"line_number":1488,"context_line":"                self.assertEqual(ips[1][\u0027ip_address\u0027], eui_addr)"},{"line_number":1489,"context_line":"                self._delete(\u0027ports\u0027, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def test_ip_allocation_for_ipv6_subnet_slaac_adddress_mode(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_84704edb","line":1488,"updated":"2014-08-11 13:12:45.000000000","message":"nit: in asserts, the expected value should be put first. e,g.:\n\nself.assertEqual(2, len(ips))","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ea42b908a271db2f4ab0c5bd6a933806fe61360e","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"                subnet_cidr \u003d subnet2[\u0027subnet\u0027][\u0027cidr\u0027]"},{"line_number":1486,"context_line":"                eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet_cidr,"},{"line_number":1487,"context_line":"                                                                 port_mac))"},{"line_number":1488,"context_line":"                self.assertEqual(ips[1][\u0027ip_address\u0027], eui_addr)"},{"line_number":1489,"context_line":"                self._delete(\u0027ports\u0027, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def test_ip_allocation_for_ipv6_subnet_slaac_adddress_mode(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_1fd80751","line":1488,"in_reply_to":"baada198_84704edb","updated":"2014-08-11 13:38:27.000000000","message":"I didn\u0027t know the order matters here. Can you provide reference link?","commit_id":"6a2b676f904031fd166a51e68fd2968127b15ce7"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"97d35ad04de5bbfca93c6624e7f2af4e41d32e81","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"            gateway_ip\u003dattributes.ATTR_NOT_SPECIFIED) as subnet:"},{"line_number":1238,"context_line":"            with self.port(subnet\u003dsubnet) as port:"},{"line_number":1239,"context_line":"                ips \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1240,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1241,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], \u00272607:f0d0:1002:51::2\u0027)"},{"line_number":1242,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1243,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027ipv6_address_mode\u0027: constants.IPV6_SLAAC,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_fcf910c9","line":1240,"updated":"2014-09-23 18:46:39.000000000","message":"Please swap the order of arguments for all calls to assertEqual. The arg order in the method definition is expected, actual.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"00565f302c9639513e44c6d8b9248cd8c4509f5f","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"            gateway_ip\u003dattributes.ATTR_NOT_SPECIFIED) as subnet:"},{"line_number":1238,"context_line":"            with self.port(subnet\u003dsubnet) as port:"},{"line_number":1239,"context_line":"                ips \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1240,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1241,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], \u00272607:f0d0:1002:51::2\u0027)"},{"line_number":1242,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1243,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027ipv6_address_mode\u0027: constants.IPV6_SLAAC,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_f47af2ef","line":1240,"in_reply_to":"da9df570_2fd42a1f","updated":"2014-09-24 13:27:45.000000000","message":"Sure, it makes sense to leave the new test cases consistent with the rest of the module for now.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"5995f0d6d4bf968d682acdbaa23ddb3a224ffade","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"            gateway_ip\u003dattributes.ATTR_NOT_SPECIFIED) as subnet:"},{"line_number":1238,"context_line":"            with self.port(subnet\u003dsubnet) as port:"},{"line_number":1239,"context_line":"                ips \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1240,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1241,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], \u00272607:f0d0:1002:51::2\u0027)"},{"line_number":1242,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1243,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027ipv6_address_mode\u0027: constants.IPV6_SLAAC,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_2fd42a1f","line":1240,"in_reply_to":"da9df570_c3ce1f83","updated":"2014-09-24 07:26:29.000000000","message":"We use assertEqual from testtools where signature is def assertEqual(self, expected, observed, message\u003d\u0027\u0027): [1], but usually if other tests in file follow the \"wrong\" convention (as it\u0027s seen here i.e. L1227, L1317) its not something that causes -1 (but its not a consensus - it would be best to fix it everywhere in some undecided future)\n\n[1] https://github.com/testing-cabal/testtools/blob/master/testtools/testcase.py#L340","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"aaee0b5667e6355916df156795e3cd99a77cf834","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"            gateway_ip\u003dattributes.ATTR_NOT_SPECIFIED) as subnet:"},{"line_number":1238,"context_line":"            with self.port(subnet\u003dsubnet) as port:"},{"line_number":1239,"context_line":"                ips \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1240,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1241,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], \u00272607:f0d0:1002:51::2\u0027)"},{"line_number":1242,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1243,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027ipv6_address_mode\u0027: constants.IPV6_SLAAC,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_c3ce1f83","line":1240,"in_reply_to":"da9df570_fcf910c9","updated":"2014-09-24 02:22:21.000000000","message":"https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertEqual\n\nFrom this documentation I don\u0027t see the difference between the first arg and the second one and which one is expected. Can you point me to the reference link?","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"97d35ad04de5bbfca93c6624e7f2af4e41d32e81","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"                res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":1256,"context_line":"                port_mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":1257,"context_line":"                subnet_cidr \u003d subnet[\u0027subnet\u0027][\u0027cidr\u0027]"},{"line_number":1258,"context_line":"                eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet_cidr,"},{"line_number":1259,"context_line":"                                                                 port_mac))"},{"line_number":1260,"context_line":"                ips \u003d res[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1261,"context_line":"                self.assertEqual(len(ips), 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_bca06844","line":1258,"updated":"2014-09-23 18:46:39.000000000","message":"Consider making a helper function for these 3 lines (port_mac, subnet_cider, eui_addr). These lines show up 3 times in the new test cases and once in a test case that exists before your changes.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"00565f302c9639513e44c6d8b9248cd8c4509f5f","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"                res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":1256,"context_line":"                port_mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":1257,"context_line":"                subnet_cidr \u003d subnet[\u0027subnet\u0027][\u0027cidr\u0027]"},{"line_number":1258,"context_line":"                eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet_cidr,"},{"line_number":1259,"context_line":"                                                                 port_mac))"},{"line_number":1260,"context_line":"                ips \u003d res[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1261,"context_line":"                self.assertEqual(len(ips), 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_b4078a1b","line":1258,"in_reply_to":"da9df570_43a22faf","updated":"2014-09-24 13:27:45.000000000","message":"No need to change this, the three lines are clearer than the combined one.","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"aaee0b5667e6355916df156795e3cd99a77cf834","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"                res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":1256,"context_line":"                port_mac \u003d port[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":1257,"context_line":"                subnet_cidr \u003d subnet[\u0027subnet\u0027][\u0027cidr\u0027]"},{"line_number":1258,"context_line":"                eui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet_cidr,"},{"line_number":1259,"context_line":"                                                                 port_mac))"},{"line_number":1260,"context_line":"                ips \u003d res[\u0027port\u0027][\u0027fixed_ips\u0027]"},{"line_number":1261,"context_line":"                self.assertEqual(len(ips), 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9df570_43a22faf","line":1258,"in_reply_to":"da9df570_bca06844","updated":"2014-09-24 02:22:21.000000000","message":"I don\u0027t really think it\u0027s necessary to make a helper for 3 lines. I can combine them to one line like this if it\u0027s better:\n\neui_addr \u003d str(ipv6_utils.get_ipv6_addr_by_EUI64(subnet[\u0027subnet\u0027][\u0027cidr\u0027],\n                     port[\u0027port\u0027][\u0027mac_address\u0027]))","commit_id":"c8dbbb0e65406510343a16ae31991077a02f167a"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"8495c128b15ad0b4a01243ddf869d120f3afcbc4","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1243,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], \u00272607:f0d0:1002:51::2\u0027)"},{"line_number":1244,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1245,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027ipv6_address_mode\u0027: constants.IPV6_SLAAC,"},{"line_number":1246,"context_line":"                                   \u0027ipv6_ra_mode\u0027: constants.IPV6_SLAAC}}"},{"line_number":1247,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":1248,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa201ad_a7879511","line":1245,"updated":"2014-10-10 18:38:42.000000000","message":"I believe that when this patchset gets rebased to latest, test_update_port_update_slaac_ipv6 will fail with \"HTTPBadRequest: Cannot update read-only attribute ipv6_ra_mode\". Consider changing the test to:\n- Create subnet with IPV6_SLAAC\n- Create port on that subnet, confirm EUI IP address and subnet ID\n- Modify subnet with a new \u0027name\u0027 attribute\n- Modify port using fixed_ips that includes the subnet ID, confirm EUI IPaddress","commit_id":"3d2318b19db8777a2708099802477483d5620f77"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"771f59fb55c502e5cf017b88422823ccfc54a2a3","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"                self.assertEqual(len(ips), 1)"},{"line_number":1243,"context_line":"                self.assertEqual(ips[0][\u0027ip_address\u0027], \u00272607:f0d0:1002:51::2\u0027)"},{"line_number":1244,"context_line":"                self.assertEqual(ips[0][\u0027subnet_id\u0027], subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":1245,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027ipv6_address_mode\u0027: constants.IPV6_SLAAC,"},{"line_number":1246,"context_line":"                                   \u0027ipv6_ra_mode\u0027: constants.IPV6_SLAAC}}"},{"line_number":1247,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":1248,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa201ad_f19dc258","line":1245,"in_reply_to":"baa201ad_a7879511","updated":"2014-10-13 02:48:14.000000000","message":"Update fixed_ip with only subnet ID will not change the EUI IPaddress, so it won\u0027t got to the line with self._allocate_fixed_ips(context, to_add, mac_address) which will make this test meaningless. I will change this test to trying to update slaac subnet by given fixed IPaddress and see if it can prompt error message like create_port.","commit_id":"3d2318b19db8777a2708099802477483d5620f77"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8f7eb125b6d6861c0d660cfd3ad501deba3142b2","unresolved":false,"context_lines":[{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"    def test_update_port_invalid_fixed_ip_address_v6_slaac(self):"},{"line_number":1237,"context_line":"        with self.subnet("},{"line_number":1238,"context_line":"            cidr\u003d\u00272607:f0d0:1002:51::/64\u0027,"},{"line_number":1239,"context_line":"            ip_version\u003d6,"},{"line_number":1240,"context_line":"            ipv6_address_mode\u003dconstants.IPV6_SLAAC,"},{"line_number":1241,"context_line":"            gateway_ip\u003dattributes.ATTR_NOT_SPECIFIED) as subnet:"}],"source_content_type":"text/x-python","patch_set":14,"id":"baa201ad_1de054f9","line":1238,"updated":"2014-10-15 04:25:04.000000000","message":"My only nit is this isn\u0027t an unused prefix, we should always try and use the documentation prefix, 2001:db8.  But it\u0027s only a test...","commit_id":"3ba06618f79fed899188aac87a8694b3344ee995"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"90691b8f1095f3edaaf6d4f89da2316e9f287ad5","unresolved":false,"context_lines":[{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"    def test_update_port_invalid_fixed_ip_address_v6_slaac(self):"},{"line_number":1237,"context_line":"        with self.subnet("},{"line_number":1238,"context_line":"            cidr\u003d\u00272607:f0d0:1002:51::/64\u0027,"},{"line_number":1239,"context_line":"            ip_version\u003d6,"},{"line_number":1240,"context_line":"            ipv6_address_mode\u003dconstants.IPV6_SLAAC,"},{"line_number":1241,"context_line":"            gateway_ip\u003dattributes.ATTR_NOT_SPECIFIED) as subnet:"}],"source_content_type":"text/x-python","patch_set":14,"id":"baa201ad_7dc5e05a","line":1238,"in_reply_to":"baa201ad_1de054f9","updated":"2014-10-15 04:31:15.000000000","message":"Yeah, no actual packets going around here.","commit_id":"3ba06618f79fed899188aac87a8694b3344ee995"}]}
