)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"be7f089f2d837e63089227d5b6db712824abb2af","unresolved":false,"context_lines":[{"line_number":11,"context_line":"on overlay which is costly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When this functionality is enabled, the OVS flows logic evolves to [1]."},{"line_number":14,"context_line":"This functionnality was introduce in 2.1 OVS branch [2]."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder"},{"line_number":17,"context_line":"[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p\u003dopenvswitch;a\u003dcommitdiff;h\u003df6c8a6b163af343c66aea54953553d84863835f7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"AAAAUH%2F%2FOwI%3D","line":14,"updated":"2014-01-16 05:47:48.000000000","message":"typo on line 14: should be functionality","commit_id":"29e4f1e6e6924085feac86b8fca9df0429932853"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ec6f11303066d39c990b2deb31eac9a997858cc8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"on overlay which is costly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When this functionality is enabled, the OVS flows logic evolves to [1]."},{"line_number":14,"context_line":"This functionnality was introduce in 2.1 OVS branch [2]."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder"},{"line_number":17,"context_line":"[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p\u003dopenvswitch;a\u003dcommitdiff;h\u003df6c8a6b163af343c66aea54953553d84863835f7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"AAAAUH%2F%2FOVs%3D","line":14,"in_reply_to":"AAAAUH%2F%2FOwI%3D","updated":"2014-01-16 07:44:41.000000000","message":"Done","commit_id":"29e4f1e6e6924085feac86b8fca9df0429932853"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":19,"context_line":"[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder"},{"line_number":20,"context_line":"[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p\u003dopenvswitch;a\u003dcommitdiff;h\u003df6c8a6b163af343c66aea54953553d84863835f7"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact: New OVS agent flag \u0027arp_respnder\u0027 set to true by default"},{"line_number":23,"context_line":"Closes-Bug: #1237427"},{"line_number":24,"context_line":"Change-Id: Ic28610faf2df6566d8d876fcd7aed333647970e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"AAAAW3%2F%2Fz%2FU%3D","line":22,"updated":"2014-04-10 08:55:39.000000000","message":"responder","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":19,"context_line":"[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder"},{"line_number":20,"context_line":"[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p\u003dopenvswitch;a\u003dcommitdiff;h\u003df6c8a6b163af343c66aea54953553d84863835f7"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact: New OVS agent flag \u0027arp_respnder\u0027 set to true by default"},{"line_number":23,"context_line":"Closes-Bug: #1237427"},{"line_number":24,"context_line":"Change-Id: Ic28610faf2df6566d8d876fcd7aed333647970e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"AAAAW3%2F%2FrGw%3D","line":22,"in_reply_to":"AAAAW3%2F%2Fz%2FU%3D","updated":"2014-04-11 09:39:34.000000000","message":"Done","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"187d3f76274c794fc96f0692b7eede377fd2d718","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder"},{"line_number":20,"context_line":"[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p\u003dopenvswitch;a\u003dcommitdiff;h\u003df6c8a6b163af343c66aea54953553d84863835f7"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact: New OVS agent flag \u0027arp_responder\u0027 set to true by default"},{"line_number":23,"context_line":"Closes-Bug: #1237427"},{"line_number":24,"context_line":"Change-Id: Ic28610faf2df6566d8d876fcd7aed333647970e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"7adec928_a6570325","line":21,"updated":"2014-05-19 06:44:50.000000000","message":"set to False by default, sadly :(","commit_id":"eb23b35e32fdc777fab3c6fe58b35c4cbb1ee611"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"e063fdd8b505af6dac826fc61bb62c6f2dc4b121","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder"},{"line_number":20,"context_line":"[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p\u003dopenvswitch;a\u003dcommitdiff;h\u003df6c8a6b163af343c66aea54953553d84863835f7"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact: New OVS agent flag \u0027arp_responder\u0027 set to true by default"},{"line_number":23,"context_line":"Closes-Bug: #1237427"},{"line_number":24,"context_line":"Change-Id: Ic28610faf2df6566d8d876fcd7aed333647970e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"7adec928_31179346","line":21,"in_reply_to":"7adec928_a6570325","updated":"2014-05-19 19:44:14.000000000","message":"Yes, I saw that after I get some reviews.\nI said nothing not to lose them :(","commit_id":"eb23b35e32fdc777fab3c6fe58b35c4cbb1ee611"}],"etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini":[{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"cda850793d77c129f12464ed12b8bab5be21f667","unresolved":false,"context_lines":[{"line_number":128,"context_line":"#"},{"line_number":129,"context_line":"# l2_population \u003d False"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"# Enable local ARP responder if it is supported (OVS 2.1) by the OVS to avoid"},{"line_number":132,"context_line":"# ARP broadcasting emulation on overlay which is costly."},{"line_number":133,"context_line":"# Actually, it\u0027s only supported with ML2 plugin and l2 population mechanism"},{"line_number":134,"context_line":"# driver."}],"source_content_type":"text/x-properties","patch_set":39,"id":"AAAAXX%2F%2F0r8%3D","line":131,"updated":"2014-04-26 02:16:21.000000000","message":"This reads like the second sentence was tacked on. How about this:\n\nEnable local ARP responder. Requires OVS 2.1. This is only used by the L2 population ML2 MechanismDriver.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"#"},{"line_number":129,"context_line":"# l2_population \u003d False"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"# Enable local ARP responder if it is supported (OVS 2.1) by the OVS to avoid"},{"line_number":132,"context_line":"# ARP broadcasting emulation on overlay which is costly."},{"line_number":133,"context_line":"# Actually, it\u0027s only supported with ML2 plugin and l2 population mechanism"},{"line_number":134,"context_line":"# driver."}],"source_content_type":"text/x-properties","patch_set":39,"id":"7adec928_653bc63a","line":131,"in_reply_to":"AAAAXX%2F%2F0r8%3D","updated":"2014-05-09 10:11:08.000000000","message":"Done","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"c6068d05f05ee336e333ad541d2a750f7518c810","unresolved":false,"context_lines":[{"line_number":133,"context_line":"# Actually, it\u0027s only supported with ML2 plugin and l2 population mechanism"},{"line_number":134,"context_line":"# driver."},{"line_number":135,"context_line":"#"},{"line_number":136,"context_line":"# arp_responder \u003d False"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"[securitygroup]"},{"line_number":139,"context_line":"# Firewall driver for realizing neutron security group function."}],"source_content_type":"text/x-properties","patch_set":39,"id":"9ad9bd40_4c413ea8","line":136,"updated":"2014-05-05 22:49:18.000000000","message":"Why default False?  Why not True?\n\nAlso, why have an option at all?\n\nThe question is really \"Why would someone choose to disable this feature?\"  Are there trade-offs to consider?  If so, maybe those trade-offs should be discussed here in the comment.  If not, maybe we don\u0027t need an option and we can rely on detection of the feature and opportunistic usage.\n\nMy $0.02.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":133,"context_line":"# Actually, it\u0027s only supported with ML2 plugin and l2 population mechanism"},{"line_number":134,"context_line":"# driver."},{"line_number":135,"context_line":"#"},{"line_number":136,"context_line":"# arp_responder \u003d False"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"[securitygroup]"},{"line_number":139,"context_line":"# Firewall driver for realizing neutron security group function."}],"source_content_type":"text/x-properties","patch_set":39,"id":"7adec928_65abc6d8","line":136,"in_reply_to":"9ad9bd40_4c413ea8","updated":"2014-05-09 10:11:08.000000000","message":"I added that option after discussion we added with Assaf and Robert in reviews 25 and 29.\n\nWe don\u0027t know how that we scale in production. I asked the OVS team if they known limits in the flow mechanism [1].\n\nI added the flag to be able to disable the functionality if problems are found.\n\n[1] http://openvswitch.org/pipermail/discuss/2014-February/012968.html","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"}],"neutron/agent/linux/ovs_lib.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"def ofctl_arg_supported(root_helper, cmd, args):"},{"line_number":488,"context_line":"    \u0027\u0027\u0027Verify if ovs-vsctl binary supports command with specific args."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    :param root_helper: utility to use when running shell cmds."}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9qo%3D","line":487,"updated":"2014-02-23 13:50:34.000000000","message":"ovs-vsctl -\u003e ovs-ofctl","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"def ofctl_arg_supported(root_helper, cmd, args):"},{"line_number":488,"context_line":"    \u0027\u0027\u0027Verify if ovs-vsctl binary supports command with specific args."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    :param root_helper: utility to use when running shell cmds."}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2FsCA%3D","line":487,"in_reply_to":"AAAAU3%2F%2F9qo%3D","updated":"2014-02-25 09:23:36.000000000","message":"Done","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"cda850793d77c129f12464ed12b8bab5be21f667","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    :returns: a boolean if the args supported."},{"line_number":593,"context_line":"    \u0027\u0027\u0027"},{"line_number":594,"context_line":"    supported \u003d True"},{"line_number":595,"context_line":"    test_br \u003d OVSBridge(\u0027br-test\u0027, root_helper)"},{"line_number":596,"context_line":"    test_br.reset_bridge()"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    full_args \u003d [\"ovs-ofctl\", cmd, test_br.br_name] + args"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAAXX%2F%2F0rg%3D","line":595,"updated":"2014-04-26 02:16:21.000000000","message":"Should we use a random name for the bridge here instead of br-test?","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"d1ffdae4a5da9da7cfff90a03dedf5405b7231a1","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    :returns: a boolean if the args supported."},{"line_number":593,"context_line":"    \u0027\u0027\u0027"},{"line_number":594,"context_line":"    supported \u003d True"},{"line_number":595,"context_line":"    test_br \u003d OVSBridge(\u0027br-test\u0027, root_helper)"},{"line_number":596,"context_line":"    test_br.reset_bridge()"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    full_args \u003d [\"ovs-ofctl\", cmd, test_br.br_name] + args"}],"source_content_type":"text/x-python","patch_set":39,"id":"9ad9bd40_f04e856e","line":595,"in_reply_to":"9ad9bd40_a455ec1e","updated":"2014-05-04 22:41:39.000000000","message":"Yes, this needs to change to a randomly named bridge. Anything executing a functional test like this can\u0027t use a human readable name as the risk of conflict goes up significantly.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    :returns: a boolean if the args supported."},{"line_number":593,"context_line":"    \u0027\u0027\u0027"},{"line_number":594,"context_line":"    supported \u003d True"},{"line_number":595,"context_line":"    test_br \u003d OVSBridge(\u0027br-test\u0027, root_helper)"},{"line_number":596,"context_line":"    test_br.reset_bridge()"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    full_args \u003d [\"ovs-ofctl\", cmd, test_br.br_name] + args"}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_65882620","line":595,"in_reply_to":"9ad9bd40_f04e856e","updated":"2014-05-09 10:11:08.000000000","message":"Done","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ef9856c9aff22ddae7d01036bfce36bb43b4c5b2","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    :returns: a boolean if the args supported."},{"line_number":593,"context_line":"    \u0027\u0027\u0027"},{"line_number":594,"context_line":"    supported \u003d True"},{"line_number":595,"context_line":"    test_br \u003d OVSBridge(\u0027br-test\u0027, root_helper)"},{"line_number":596,"context_line":"    test_br.reset_bridge()"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    full_args \u003d [\"ovs-ofctl\", cmd, test_br.br_name] + args"}],"source_content_type":"text/x-python","patch_set":39,"id":"9ad9bd40_a455ec1e","line":595,"in_reply_to":"AAAAXX%2F%2F0rg%3D","updated":"2014-05-01 01:24:26.000000000","message":"just FYI, one of my systems has a bridge named \u0027br-test\u0027. :-)","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"}],"neutron/common/utils.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"44fe4f7e0b5d9d0e0cc00d40e731718ae536bc0b","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    return q_const.MIN_VLAN_TAG \u003c\u003d vlan \u003c\u003d q_const.MAX_VLAN_TAG"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"def get_random_string(length):"},{"line_number":208,"context_line":"    \"\"\"Get a random hex string of the specified length."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    based on Cinder library"}],"source_content_type":"text/x-python","patch_set":41,"id":"7adec928_9515a141","line":207,"updated":"2014-05-20 14:03:25.000000000","message":"Nit: get_random_hex_string looks better.","commit_id":"befa0b9184eb0c6248d06efa5b02be8217f1722e"}],"neutron/plugins/ml2/drivers/l2pop/README":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"5b324af4650271e66740caf6ad833038670c797e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"-------------------"},{"line_number":12,"context_line":"The VXLAN Linux kernel module provide all necessary functionalities to populate"},{"line_number":13,"context_line":"the forwarding table and local ARP responder tables. This module appears on"},{"line_number":14,"context_line":"release 3.7 of the Linux kernel in experimental:"},{"line_number":15,"context_line":"- 3.8: first stable release, no edge replication (multicast necessary),"},{"line_number":16,"context_line":"- 3.9: edge replication only for the broadcasted packets,"},{"line_number":17,"context_line":"- 3.11: edge replication for broadcast, multicast and unknown packets."}],"source_content_type":"application/octet-stream","patch_set":25,"id":"AAAAUH%2F9ig0%3D","line":14,"updated":"2014-02-06 07:18:02.000000000","message":"if should consider the below issue here ?\nhttps://review.openstack.org/#/c/65902/","commit_id":"ebc27934a79c208474872c8a36a0adec28df0be5"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"0c11401d836e5fdc236b7ff1790d45c99aea38c3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"-------------------"},{"line_number":12,"context_line":"The VXLAN Linux kernel module provide all necessary functionalities to populate"},{"line_number":13,"context_line":"the forwarding table and local ARP responder tables. This module appears on"},{"line_number":14,"context_line":"release 3.7 of the Linux kernel in experimental:"},{"line_number":15,"context_line":"- 3.8: first stable release, no edge replication (multicast necessary),"},{"line_number":16,"context_line":"- 3.9: edge replication only for the broadcasted packets,"},{"line_number":17,"context_line":"- 3.11: edge replication for broadcast, multicast and unknown packets."}],"source_content_type":"application/octet-stream","patch_set":25,"id":"AAAAUH%2F9iSc%3D","line":14,"in_reply_to":"AAAAUH%2F9ig0%3D","updated":"2014-02-06 08:37:10.000000000","message":"Done","commit_id":"ebc27934a79c208474872c8a36a0adec28df0be5"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      kernel version."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OpenvSwitch:"},{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":"The OVS open flow tables provide all necessary functionalities to populate the"},{"line_number":25,"context_line":"forwarding table and local ARP responder tables."},{"line_number":26,"context_line":"A wiki page describe how the flow tables did evolved on OVS agents:"}],"source_content_type":"application/octet-stream","patch_set":29,"id":"AAAAU3%2F%2F9rI%3D","line":23,"updated":"2014-02-23 13:50:34.000000000","message":"provide all of the necessary functionality","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      kernel version."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OpenvSwitch:"},{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":"The OVS open flow tables provide all necessary functionalities to populate the"},{"line_number":25,"context_line":"forwarding table and local ARP responder tables."},{"line_number":26,"context_line":"A wiki page describe how the flow tables did evolved on OVS agents:"}],"source_content_type":"application/octet-stream","patch_set":29,"id":"AAAAU3%2F%2FsBU%3D","line":23,"in_reply_to":"AAAAU3%2F%2F9rI%3D","updated":"2014-02-25 09:23:36.000000000","message":"Done","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Note: A difference persists between the LB and OVS agents when they are used"},{"line_number":33,"context_line":"      with the l2-pop mechanism driver (and local ARP responder available). The"},{"line_number":34,"context_line":"      LB agent will drop unknown unicast (VXLAN bridge mode) if none of fdb"},{"line_number":35,"context_line":"      entries match. Whereas the OVS agent broadcast that unknown uniscast."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"[1] https://docs.google.com/document/d/1sUrvOQ9GIl9IWMGg3qbx2mX0DdXvMiyvCw2Lm6snaWQ/edit"}],"source_content_type":"application/octet-stream","patch_set":29,"id":"AAAAU3%2F%2F9rM%3D","line":34,"updated":"2014-02-23 13:50:34.000000000","message":"uniscast -\u003e unicast\n\"will drop unknown unicast if none of the fdb entries match. Whereas...\" -\u003e \"will drop unknown unicast, whereas the OVS agent will flood it.\"","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Note: A difference persists between the LB and OVS agents when they are used"},{"line_number":33,"context_line":"      with the l2-pop mechanism driver (and local ARP responder available). The"},{"line_number":34,"context_line":"      LB agent will drop unknown unicast (VXLAN bridge mode) if none of fdb"},{"line_number":35,"context_line":"      entries match. Whereas the OVS agent broadcast that unknown uniscast."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"[1] https://docs.google.com/document/d/1sUrvOQ9GIl9IWMGg3qbx2mX0DdXvMiyvCw2Lm6snaWQ/edit"}],"source_content_type":"application/octet-stream","patch_set":29,"id":"AAAAU3%2F%2FsAE%3D","line":34,"in_reply_to":"AAAAU3%2F%2F9rM%3D","updated":"2014-02-25 09:23:36.000000000","message":"Done","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":5,"context_line":"GRE/VXLAN with OVS). This mechanism driver is implemented in ML2 to propagate"},{"line_number":6,"context_line":"the forwarding information among agents using a common RPC API."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"More informations could be found in a Google document [1]."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"VXLAN Linux kernel:"},{"line_number":11,"context_line":"-------------------"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"AAAAW3%2F%2F0UI%3D","line":8,"updated":"2014-04-10 08:55:39.000000000","message":"I\u0027d rather refer to openstack official documentation or any other sort of more permanent URL.","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":5,"context_line":"GRE/VXLAN with OVS). This mechanism driver is implemented in ML2 to propagate"},{"line_number":6,"context_line":"the forwarding information among agents using a common RPC API."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"More informations could be found in a Google document [1]."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"VXLAN Linux kernel:"},{"line_number":11,"context_line":"-------------------"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"AAAAW3%2F%2FrG0%3D","line":8,"in_reply_to":"AAAAW3%2F%2F0UI%3D","updated":"2014-04-11 09:39:34.000000000","message":"Done","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":"The OVS open flow tables provide all of the necessary functionality to populate"},{"line_number":25,"context_line":"the forwarding table and local ARP responder tables."},{"line_number":26,"context_line":"A wiki page describe how the flow tables did evolved on OVS agents:"},{"line_number":27,"context_line":"- [2] without local ARP responder"},{"line_number":28,"context_line":"- [3] with local ARP responder. /!\\ This functionality is only available since"},{"line_number":29,"context_line":"                                    the development branch 2.1. It\u0027s possbile"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"AAAAW3%2F%2F0T0%3D","line":26,"updated":"2014-04-10 08:55:39.000000000","message":"probably \u0027did evolve\u0027?\n\nSorry for being a grammar nazi","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":"The OVS open flow tables provide all of the necessary functionality to populate"},{"line_number":25,"context_line":"the forwarding table and local ARP responder tables."},{"line_number":26,"context_line":"A wiki page describe how the flow tables did evolved on OVS agents:"},{"line_number":27,"context_line":"- [2] without local ARP responder"},{"line_number":28,"context_line":"- [3] with local ARP responder. /!\\ This functionality is only available since"},{"line_number":29,"context_line":"                                    the development branch 2.1. It\u0027s possbile"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"AAAAW3%2F%2FrGs%3D","line":26,"in_reply_to":"AAAAW3%2F%2F0T0%3D","updated":"2014-04-11 09:39:34.000000000","message":"Done, this is important.","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":27,"context_line":"- [2] without local ARP responder"},{"line_number":28,"context_line":"- [3] with local ARP responder. /!\\ This functionality is only available since"},{"line_number":29,"context_line":"                                    the development branch 2.1. It\u0027s possbile"},{"line_number":30,"context_line":"                                    to disable (enable by default) it thorugh"},{"line_number":31,"context_line":"                                    the flag \u0027arp_responder\u0027. /!\\"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":37,"id":"AAAAW3%2F%2F0To%3D","line":30,"updated":"2014-04-10 08:55:39.000000000","message":"grammar nazi again --- trough","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":27,"context_line":"- [2] without local ARP responder"},{"line_number":28,"context_line":"- [3] with local ARP responder. /!\\ This functionality is only available since"},{"line_number":29,"context_line":"                                    the development branch 2.1. It\u0027s possbile"},{"line_number":30,"context_line":"                                    to disable (enable by default) it thorugh"},{"line_number":31,"context_line":"                                    the flag \u0027arp_responder\u0027. /!\\"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":37,"id":"AAAAW3%2F%2FrGA%3D","line":30,"in_reply_to":"AAAAW3%2F%2F0To%3D","updated":"2014-04-11 09:39:34.000000000","message":"Done","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"cda850793d77c129f12464ed12b8bab5be21f667","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Neutron ML2 l2 population Mechanism Drivers"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"l2 population (l2pop) mechanism drivers implements the ML2 driver to improve"},{"line_number":4,"context_line":"open source plugins overlay implementations (VXLAN with Linux bridge and"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"AAAAXX%2F%2F0rQ%3D","line":1,"updated":"2014-04-26 02:16:21.000000000","message":"This is a very well written README!","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Neutron ML2 l2 population Mechanism Drivers"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"l2 population (l2pop) mechanism drivers implements the ML2 driver to improve"},{"line_number":4,"context_line":"open source plugins overlay implementations (VXLAN with Linux bridge and"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"7adec928_e546f6be","line":1,"in_reply_to":"AAAAXX%2F%2F0rQ%3D","updated":"2014-05-09 10:11:08.000000000","message":"Thanks","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ef9856c9aff22ddae7d01036bfce36bb43b4c5b2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"- 3.9: edge replication only for the broadcasted packets,"},{"line_number":17,"context_line":"- 3.11: edge replication for broadcast, multicast and unknown packets."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Note: Some distributions (like RHEL) have backpored this module on precedent"},{"line_number":20,"context_line":"      kernel version."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OpenvSwitch:"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"9ad9bd40_c431100d","line":19,"updated":"2014-05-01 01:24:26.000000000","message":"backported","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"- 3.9: edge replication only for the broadcasted packets,"},{"line_number":17,"context_line":"- 3.11: edge replication for broadcast, multicast and unknown packets."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Note: Some distributions (like RHEL) have backpored this module on precedent"},{"line_number":20,"context_line":"      kernel version."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OpenvSwitch:"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"7adec928_459a4a64","line":19,"in_reply_to":"9ad9bd40_c431100d","updated":"2014-05-09 10:11:08.000000000","message":"Done","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ef9856c9aff22ddae7d01036bfce36bb43b4c5b2","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OpenvSwitch:"},{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":"The OVS open flow tables provide all of the necessary functionality to populate"},{"line_number":25,"context_line":"the forwarding table and local ARP responder tables."},{"line_number":26,"context_line":"A wiki page describe how the flow tables did evolve on OVS agents:"},{"line_number":27,"context_line":"- [2] without local ARP responder"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"9ad9bd40_842f08a1","line":24,"updated":"2014-05-01 01:24:26.000000000","message":"\"OpenFlow\" is one word.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OpenvSwitch:"},{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":"The OVS open flow tables provide all of the necessary functionality to populate"},{"line_number":25,"context_line":"the forwarding table and local ARP responder tables."},{"line_number":26,"context_line":"A wiki page describe how the flow tables did evolve on OVS agents:"},{"line_number":27,"context_line":"- [2] without local ARP responder"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"7adec928_a5a06e91","line":24,"in_reply_to":"9ad9bd40_842f08a1","updated":"2014-05-09 10:11:08.000000000","message":"Done","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"44fe4f7e0b5d9d0e0cc00d40e731718ae536bc0b","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Note: A difference persists between the LB and OVS agents when they are used"},{"line_number":35,"context_line":"      with the l2-pop mechanism driver (and local ARP responder available). The"},{"line_number":36,"context_line":"      LB agent will drop unknown unicast (VXLAN bridge mode), whereas the OVS"},{"line_number":37,"context_line":"      agent will flood it."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[1] https://wiki.openstack.org/wiki/L2population_blueprint"}],"source_content_type":"application/octet-stream","patch_set":41,"id":"7adec928_2263b142","line":36,"updated":"2014-05-20 14:03:25.000000000","message":"Nit: It is better to avoid using \"LB\" for \"Linux Bridge\" in documents.","commit_id":"befa0b9184eb0c6248d06efa5b02be8217f1722e"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"246e7f4f8158fffd47e72d399a251f67cec6c224","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            check_ovs_version(constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":240,"context_line":"                              self.root_helper)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def _check_arp_responder_support(self):"},{"line_number":243,"context_line":"        \u0027\u0027\u0027Check if OVS supports to modify ARP headers.\u0027\u0027\u0027"},{"line_number":244,"context_line":"        args \u003d [\u0027arp,action\u003dload:0x2-\u003eNXM_OF_ARP_OP[],\u0027"},{"line_number":245,"context_line":"                \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FUfQ%3D","line":242,"updated":"2014-01-15 03:35:34.000000000","message":"Good idea to check if it\u0027s supported or not.","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"246e7f4f8158fffd47e72d399a251f67cec6c224","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"                before \u003d state.get(\u0027before\u0027)"},{"line_number":465,"context_line":"                for mac, ip in before:"},{"line_number":466,"context_line":"                    self._set_arp_responder(\u0027remove\u0027, lvm.vlan, mac, ip)"},{"line_number":467,"context_line":"        self.tun_br.defer_apply_off()"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def fdb_update(self, context, fdb_entries):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FUfM%3D","line":466,"updated":"2014-01-15 03:35:34.000000000","message":"This del-flow removes the flow which was installed above add-flow.\nmod-flow does what is needed here with single OF message.,","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"c9942efb742f826a35184808c90d7337a0a623b1","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"                before \u003d state.get(\u0027before\u0027)"},{"line_number":465,"context_line":"                for mac, ip in before:"},{"line_number":466,"context_line":"                    self._set_arp_responder(\u0027remove\u0027, lvm.vlan, mac, ip)"},{"line_number":467,"context_line":"        self.tun_br.defer_apply_off()"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def fdb_update(self, context, fdb_entries):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FQiY%3D","line":466,"in_reply_to":"AAAAUH%2F%2FUfM%3D","updated":"2014-01-15 20:45:42.000000000","message":"Yes, but description flow contains the resolved IP in their fields (nw_dst) and the IP change between the added and removed flow. So we cannot use mod-flow to match and modify flow in the same time.","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"246e7f4f8158fffd47e72d399a251f67cec6c224","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                       \u0027load:%(ip)#x-\u003eNXM_OF_ARP_SPA[],\u0027"},{"line_number":504,"context_line":"                       \u0027in_port\u0027 % {\u0027mac\u0027: mac, \u0027ip\u0027: ip})"},{"line_number":505,"context_line":"            self.tun_br.add_flow(table\u003dconstants.ARP_RESPONDER,"},{"line_number":506,"context_line":"                                 priority\u003d1,"},{"line_number":507,"context_line":"                                 proto\u003d\u0027arp\u0027,"},{"line_number":508,"context_line":"                                 dl_vlan\u003dlvid,"},{"line_number":509,"context_line":"                                 nw_dst\u003d\u0027%s\u0027 % ip,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FUe0%3D","line":506,"updated":"2014-01-15 03:35:34.000000000","message":"I\u0027d like to introduce symbolic names for priority.\nBut I found the imidiate values are sprinkled in this file.\nOkay, such clean up should be done with another patch.","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"246e7f4f8158fffd47e72d399a251f67cec6c224","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        if self.l2_pop and self.arp_resp_supported:"},{"line_number":802,"context_line":"            # ARP broadcast-ed request go to the local ARP_RESPONDER table to"},{"line_number":803,"context_line":"            # be locally resolved"},{"line_number":804,"context_line":"            self.tun_br.add_flow(table\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":805,"context_line":"                                 priority\u003d1,"},{"line_number":806,"context_line":"                                 proto\u003d\u0027arp\u0027,"},{"line_number":807,"context_line":"                                 dl_dst\u003d\"ff:ff:ff:ff:ff:ff\","}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FUeo%3D","line":804,"updated":"2014-01-15 03:35:34.000000000","message":"The counterpart of this should be in reclaim_in_local_vlan","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"c9942efb742f826a35184808c90d7337a0a623b1","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        if self.l2_pop and self.arp_resp_supported:"},{"line_number":802,"context_line":"            # ARP broadcast-ed request go to the local ARP_RESPONDER table to"},{"line_number":803,"context_line":"            # be locally resolved"},{"line_number":804,"context_line":"            self.tun_br.add_flow(table\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":805,"context_line":"                                 priority\u003d1,"},{"line_number":806,"context_line":"                                 proto\u003d\u0027arp\u0027,"},{"line_number":807,"context_line":"                                 dl_dst\u003d\"ff:ff:ff:ff:ff:ff\","}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FQVo%3D","line":804,"in_reply_to":"AAAAUH%2F%2FUeo%3D","updated":"2014-01-15 20:45:42.000000000","message":"Sorry, I don\u0027t understand your comment.\n\nThis flow is created at the initialization of the tunnel bridge (if l2 pop MD is activated and OVS supports to modify ARP fields) to redirect ARP broadcast to the ARP responder table. If none of the entry in the ARP responder table match the resolved IP, the ARP broadcast is sent to the flooding table (line 856).\n\nI updated the OVS flows logic schema on the wiki: https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"be7f089f2d837e63089227d5b6db712824abb2af","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                                     dl_vlan\u003dlvm.vlan,"},{"line_number":445,"context_line":"                                     dl_dst\u003dport_info[0])"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    def _fdb_chg_ip(self, context, fdb_entries):"},{"line_number":448,"context_line":"        LOG.debug(_(\"update chg_ip received\"))"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        self.tun_br.defer_apply_on()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FOvg%3D","line":447,"updated":"2014-01-16 05:47:48.000000000","message":"where is the usage of this method?","commit_id":"29e4f1e6e6924085feac86b8fca9df0429932853"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ec6f11303066d39c990b2deb31eac9a997858cc8","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                                     dl_vlan\u003dlvm.vlan,"},{"line_number":445,"context_line":"                                     dl_dst\u003dport_info[0])"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    def _fdb_chg_ip(self, context, fdb_entries):"},{"line_number":448,"context_line":"        LOG.debug(_(\"update chg_ip received\"))"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        self.tun_br.defer_apply_on()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FOVw%3D","line":447,"in_reply_to":"AAAAUH%2F%2FOvg%3D","updated":"2014-01-16 07:44:41.000000000","message":"I forget it!\nDone.","commit_id":"29e4f1e6e6924085feac86b8fca9df0429932853"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"78581ec7fe51f5fedf2537d165259067241b5ec6","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                before \u003d state.get(\u0027before\u0027)"},{"line_number":483,"context_line":"                for mac, ip in before:"},{"line_number":484,"context_line":"                    self._set_arp_responder(\u0027remove\u0027, lvm.vlan, mac, ip)"},{"line_number":485,"context_line":"        self.tun_br.defer_apply_off()"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def fdb_update(self, context, fdb_entries):"},{"line_number":488,"context_line":"        LOG.debug(_(\"fdb_update received\"))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Bhic%3D","line":485,"updated":"2014-01-24 19:05:40.000000000","message":"The current implementation of ovs_lib doesn\u0027t honor the order of add/del-flow.\n\nSo the above order of add, then remove can be reordered.\nBut I don\u0027t think it\u0027s your intention.(correct me if I\u0027m wrong)\n\nSo the option would be \n  - abandon deferred apply for now (and add some comment)\n  - fix ovs_lib.","commit_id":"becc8f7eba1231d7e42129ec192b8d628a581896"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"597e5b753b494385e19264cf76b9b2434f8f8cf0","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                before \u003d state.get(\u0027before\u0027)"},{"line_number":483,"context_line":"                for mac, ip in before:"},{"line_number":484,"context_line":"                    self._set_arp_responder(\u0027remove\u0027, lvm.vlan, mac, ip)"},{"line_number":485,"context_line":"        self.tun_br.defer_apply_off()"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def fdb_update(self, context, fdb_entries):"},{"line_number":488,"context_line":"        LOG.debug(_(\"fdb_update received\"))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2BaTs%3D","line":485,"in_reply_to":"AAAAUH%2F%2Bhic%3D","updated":"2014-01-27 08:14:28.000000000","message":"Yes, I thought to add rule before removing oldest one.\n\nThe modify OVS command will be the best way to accomplish that. But as explained before (patch set #19), we cannot use it.\n\nI already proposed a fix [1] on defer apply methods of OVS lib to correct a concurrency problem. I could modify this fix to also ordered actions flow?\n\n[1] https://review.openstack.org/#/c/63917/","commit_id":"becc8f7eba1231d7e42129ec192b8d628a581896"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"e017d5dc0c8d41444b90ed2b54c3338bb7b638ba","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                              self.root_helper)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def _check_arp_responder_support(self):"},{"line_number":243,"context_line":"        \u0027\u0027\u0027Check if OVS supports to modify ARP headers.\u0027\u0027\u0027"},{"line_number":244,"context_line":"        args \u003d [\u0027arp,action\u003dload:0x2-\u003eNXM_OF_ARP_OP[],\u0027"},{"line_number":245,"context_line":"                \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":246,"context_line":"                \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[]\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2BFsk%3D","line":243,"updated":"2014-01-30 08:46:48.000000000","message":"could you just add a note to tell the earlier version version of ovs which supports this feature","commit_id":"7cd749a795eed0f91b9d9e5b25f0242b0726b539"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"95fc105d6a42b626993719c69dd479f5fd7c268f","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                              self.root_helper)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def _check_arp_responder_support(self):"},{"line_number":243,"context_line":"        \u0027\u0027\u0027Check if OVS supports to modify ARP headers.\u0027\u0027\u0027"},{"line_number":244,"context_line":"        args \u003d [\u0027arp,action\u003dload:0x2-\u003eNXM_OF_ARP_OP[],\u0027"},{"line_number":245,"context_line":"                \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":246,"context_line":"                \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[]\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9%2FmQ%3D","line":243,"in_reply_to":"AAAAUH%2F%2BFsk%3D","updated":"2014-01-31 08:33:41.000000000","message":"Done","commit_id":"7cd749a795eed0f91b9d9e5b25f0242b0726b539"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.l2_pop \u003d l2_population"},{"line_number":188,"context_line":"        self.agent_state \u003d {"},{"line_number":189,"context_line":"            \u0027binary\u0027: \u0027neutron-openvswitch-agent\u0027,"},{"line_number":190,"context_line":"            \u0027host\u0027: cfg.CONF.host,"},{"line_number":191,"context_line":"            \u0027topic\u0027: q_const.L2_AGENT_TOPIC,"},{"line_number":192,"context_line":"            \u0027configurations\u0027: {\u0027bridge_mappings\u0027: bridge_mappings,"},{"line_number":193,"context_line":"                               \u0027tunnel_types\u0027: self.tunnel_types,"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9mc%3D","line":190,"updated":"2014-02-23 13:50:34.000000000","message":"Would you consider adding an ARP_responder option config option? Bob mentioned this in a previous review. I don\u0027t know the performance effects of having a large amount of flows added to the ARP flow table (Linear with the amount of VMs of all tenants), and I suspect this won\u0027t be tested before the Icehouse release. Adding an option (Which defaults to True!) would add an easy way out if we find a performance regression in deployments after this patch is merged.","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.l2_pop \u003d l2_population"},{"line_number":188,"context_line":"        self.agent_state \u003d {"},{"line_number":189,"context_line":"            \u0027binary\u0027: \u0027neutron-openvswitch-agent\u0027,"},{"line_number":190,"context_line":"            \u0027host\u0027: cfg.CONF.host,"},{"line_number":191,"context_line":"            \u0027topic\u0027: q_const.L2_AGENT_TOPIC,"},{"line_number":192,"context_line":"            \u0027configurations\u0027: {\u0027bridge_mappings\u0027: bridge_mappings,"},{"line_number":193,"context_line":"                               \u0027tunnel_types\u0027: self.tunnel_types,"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F36E%3D","line":190,"in_reply_to":"AAAAU3%2F%2F9mc%3D","updated":"2014-02-25 09:23:36.000000000","message":"As I said to Bob:\n\n\u0027In the worth case, if the compute node is defined to support around 50 ports (50 VM) and if each port bind one different network with around 255 IPs (/24), the flow table contains 50 * (255 - 3) flows, ie. 12 600 flows.\u0027\n\nAnd the number of flows in ARP responder table (21) will be identical as number of flows in table \u0027unicast to tunnel\u0027 (20). So if OVS have a flows limit, the Neutron implementation will have problem even if the ARP responder is disabled.\n\nFurthermore, the \u0027ovs-vswitchd\u0027 man say that OVS are limited only by available memory.\nhttp://openvswitch.org/cgi-bin/ovsman.cgi?page\u003dvswitchd/ovs-vswitchd.8\n\nBut I agree to add configuration flag set to True by default. I\u0027ll push a new patch set.","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":220,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":221,"context_line":"        self._check_ovs_version()"},{"line_number":222,"context_line":"        if self.enable_tunneling:"},{"line_number":223,"context_line":"            self.arp_resp_supported \u003d self._check_arp_responder_support()"},{"line_number":224,"context_line":"            self.setup_tunnel_br(tun_br)"},{"line_number":225,"context_line":"        # Collect additional bridges to monitor"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9pU%3D","line":222,"updated":"2014-02-23 13:50:34.000000000","message":"self.arp_resp_supported \u003d self._check_arp_responder_support() -\u003e\n\nself.arp_resp_supported \u003d self.l2_pop and self._check_arp_responder_support()\n\nYou\u0027ll be able to remove the two self.l2_pop checks in setup_tunnel_bridge. arp_responder is reliant on l2_pop anyway.","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"56824961c67dc07e7f02079475d325e0203c6042","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":220,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":221,"context_line":"        self._check_ovs_version()"},{"line_number":222,"context_line":"        if self.enable_tunneling:"},{"line_number":223,"context_line":"            self.arp_resp_supported \u003d self._check_arp_responder_support()"},{"line_number":224,"context_line":"            self.setup_tunnel_br(tun_br)"},{"line_number":225,"context_line":"        # Collect additional bridges to monitor"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2FrWU%3D","line":222,"in_reply_to":"AAAAU3%2F%2F3zo%3D","updated":"2014-02-25 10:08:43.000000000","message":"Ok - Very enlightening!","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":220,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":221,"context_line":"        self._check_ovs_version()"},{"line_number":222,"context_line":"        if self.enable_tunneling:"},{"line_number":223,"context_line":"            self.arp_resp_supported \u003d self._check_arp_responder_support()"},{"line_number":224,"context_line":"            self.setup_tunnel_br(tun_br)"},{"line_number":225,"context_line":"        # Collect additional bridges to monitor"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F3zo%3D","line":222,"in_reply_to":"AAAAU3%2F%2F9pU%3D","updated":"2014-02-25 09:23:36.000000000","message":"In fact, I don\u0027t want to make the ARP responder reliant on the l2-pop MD.\n\nWe though to re-factor the l2-pop MD in the next release and propose an independent  ARP responder MD that could be use with more type drivers (ie. VLAN, not only tunneling).\n\nI\u0027ll remove the l2_pop checks in \u0027setup_tunnel_br\u0027. Initially, the ARP responder table (21) will be only used by the l2-pop MD.","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                                     actions\u003d\"strip_vlan,\""},{"line_number":414,"context_line":"                                     \"set_tunnel:%s,output:%s\" %"},{"line_number":415,"context_line":"                                     (lvm.segmentation_id, ofports))"},{"line_number":416,"context_line":"            else:"},{"line_number":417,"context_line":"                # This local vlan doesn\u0027t require any more tunnelling"},{"line_number":418,"context_line":"                self.tun_br.delete_flows(table\u003dconstants.FLOOD_TO_TUN,"},{"line_number":419,"context_line":"                                         dl_vlan\u003dlvm.vlan)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9qY%3D","line":416,"updated":"2014-02-23 13:50:34.000000000","message":"tunnelling -\u003e tunneling","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                                     actions\u003d\"strip_vlan,\""},{"line_number":414,"context_line":"                                     \"set_tunnel:%s,output:%s\" %"},{"line_number":415,"context_line":"                                     (lvm.segmentation_id, ofports))"},{"line_number":416,"context_line":"            else:"},{"line_number":417,"context_line":"                # This local vlan doesn\u0027t require any more tunnelling"},{"line_number":418,"context_line":"                self.tun_br.delete_flows(table\u003dconstants.FLOOD_TO_TUN,"},{"line_number":419,"context_line":"                                         dl_vlan\u003dlvm.vlan)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2Fr80%3D","line":416,"in_reply_to":"AAAAU3%2F%2F9qY%3D","updated":"2014-02-25 09:23:36.000000000","message":"Done","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        LOG.debug(_(\"update chg_ip received\"))"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        # TODO(ethuleau): Use OVS defer apply flows for all rules will be an"},{"line_number":451,"context_line":"        # interesting improvement here. But actually, OVS lib defer apply flows"},{"line_number":452,"context_line":"        # methods doesn\u0027t ensure the add flows will be applyed before delete."},{"line_number":453,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":454,"context_line":"            lvm \u003d self.local_vlan_map.get(network_id)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9qI%3D","line":451,"updated":"2014-02-23 13:50:34.000000000","message":"applyed -\u003e applied","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        LOG.debug(_(\"update chg_ip received\"))"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        # TODO(ethuleau): Use OVS defer apply flows for all rules will be an"},{"line_number":451,"context_line":"        # interesting improvement here. But actually, OVS lib defer apply flows"},{"line_number":452,"context_line":"        # methods doesn\u0027t ensure the add flows will be applyed before delete."},{"line_number":453,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":454,"context_line":"            lvm \u003d self.local_vlan_map.get(network_id)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2Fr8E%3D","line":451,"in_reply_to":"AAAAU3%2F%2F9qI%3D","updated":"2014-02-25 09:23:36.000000000","message":"Done","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        if action \u003d\u003d \u0027add\u0027:"},{"line_number":498,"context_line":"            actions \u003d (\u0027move:NXM_OF_ETH_SRC[]-\u003eNXM_OF_ETH_DST[],\u0027"},{"line_number":499,"context_line":"                       \u0027mod_dl_src:%(mac)s,\u0027"},{"line_number":500,"context_line":"                       \u0027load:0x2-\u003eNXM_OF_ARP_OP[],\u0027"},{"line_number":501,"context_line":"                       \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":502,"context_line":"                       \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[],\u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9b0%3D","line":499,"updated":"2014-02-23 13:50:34.000000000","message":"You don\u0027t change dl_dst, so the destination of the Ethernet frame will still be broadcast, so all of the VMs connected to br-int in the same network will get the reply. ARP replies are traditionally unicast, was this intentional? Keeping it broadcast would aid other local VMs to learn the MAC address of the port and prevent future ARP requests for east/west (local) traffic. Still, in this specific case I would mimic traditional physical networks and change the dl_dst to be the incoming frame\u0027s source.","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"30a83422108e385e58223652da2c50d1ba573735","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        if action \u003d\u003d \u0027add\u0027:"},{"line_number":498,"context_line":"            actions \u003d (\u0027move:NXM_OF_ETH_SRC[]-\u003eNXM_OF_ETH_DST[],\u0027"},{"line_number":499,"context_line":"                       \u0027mod_dl_src:%(mac)s,\u0027"},{"line_number":500,"context_line":"                       \u0027load:0x2-\u003eNXM_OF_ARP_OP[],\u0027"},{"line_number":501,"context_line":"                       \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":502,"context_line":"                       \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[],\u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9Wg%3D","line":499,"in_reply_to":"AAAAU3%2F%2F9b0%3D","updated":"2014-02-23 14:09:23.000000000","message":"Going over this again you move the MAC source to destination. Disregard the previous lengthy comment...","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ee36da003e93cab941323501e6b8b20e2955f48","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"            return 0"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"        self.tun_br_ofports[tunnel_type][remote_ip] \u003d ofport"},{"line_number":1009,"context_line":"        # Add flow in default table to resubmit to the right"},{"line_number":1010,"context_line":"        # tunnelling table (lvid will be set in the latter)"},{"line_number":1011,"context_line":"        self.tun_br.add_flow(priority\u003d1,"},{"line_number":1012,"context_line":"                             in_port\u003dofport,"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2F9q0%3D","line":1009,"updated":"2014-02-23 13:50:34.000000000","message":"tunnelling -\u003e tunneling","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a09a2c3a45f2765b6bd7732f5bec32a28fb51d9e","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"            return 0"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"        self.tun_br_ofports[tunnel_type][remote_ip] \u003d ofport"},{"line_number":1009,"context_line":"        # Add flow in default table to resubmit to the right"},{"line_number":1010,"context_line":"        # tunnelling table (lvid will be set in the latter)"},{"line_number":1011,"context_line":"        self.tun_br.add_flow(priority\u003d1,"},{"line_number":1012,"context_line":"                             in_port\u003dofport,"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAU3%2F%2Fr7Q%3D","line":1009,"in_reply_to":"AAAAU3%2F%2F9q0%3D","updated":"2014-02-25 09:23:36.000000000","message":"Done","commit_id":"804ba27dca05b6d3c6cb68a67180ecdbffde5886"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6941ad1699aa243ffb5a072f18f440f45eb20658","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        :param action: add or remove ARP entry."},{"line_number":494,"context_line":"        :param lvid: local VLAN map of network\u0027s ARP entry."},{"line_number":495,"context_line":"        :param mac_str: MAC string value."},{"line_number":496,"context_line":"        :param mac_str: IP string value."},{"line_number":497,"context_line":"        \u0027\u0027\u0027"},{"line_number":498,"context_line":"        if not self.arp_responder_enabled:"},{"line_number":499,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAWH%2F%2B0To%3D","line":496,"updated":"2014-03-24 03:50:59.000000000","message":"ip_str?","commit_id":"4fad10b8a9a428e40ab89f993155ccba2ec452de"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"c687bda9e3de58978213cdbb58f197a2fc23aca9","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        :param action: add or remove ARP entry."},{"line_number":494,"context_line":"        :param lvid: local VLAN map of network\u0027s ARP entry."},{"line_number":495,"context_line":"        :param mac_str: MAC string value."},{"line_number":496,"context_line":"        :param mac_str: IP string value."},{"line_number":497,"context_line":"        \u0027\u0027\u0027"},{"line_number":498,"context_line":"        if not self.arp_responder_enabled:"},{"line_number":499,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAWH%2F%2BB1Y%3D","line":496,"in_reply_to":"AAAAWH%2F%2B0To%3D","updated":"2014-03-31 13:09:12.000000000","message":"Done","commit_id":"4fad10b8a9a428e40ab89f993155ccba2ec452de"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":253,"context_line":"                \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[]\u0027]"},{"line_number":254,"context_line":"        supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027add-flow\u0027,"},{"line_number":255,"context_line":"                                                args)"},{"line_number":256,"context_line":"        if not supported:"},{"line_number":257,"context_line":"            LOG.warning(\u0027OVS local version can not support ARP responder.\u0027)"},{"line_number":258,"context_line":"        return supported"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2F0HM%3D","line":255,"updated":"2014-04-10 08:55:39.000000000","message":"rather than testing it the \u0027hard way\u0027, would it be possible to check OVS version as the agent does for the VxLAN support?","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":253,"context_line":"                \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[]\u0027]"},{"line_number":254,"context_line":"        supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027add-flow\u0027,"},{"line_number":255,"context_line":"                                                args)"},{"line_number":256,"context_line":"        if not supported:"},{"line_number":257,"context_line":"            LOG.warning(\u0027OVS local version can not support ARP responder.\u0027)"},{"line_number":258,"context_line":"        return supported"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2FrFw%3D","line":255,"in_reply_to":"AAAAW3%2F%2F0HM%3D","updated":"2014-04-11 09:39:34.000000000","message":"When I coded it, I was not sure all attributes flow will be available in the same release. It\u0027s why I test it like this.\n\nBut I still prefer tested it like this. And LB agent also use that method [1] to test VXLAN/iproute2 commands.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/agent/linux/ip_lib.py#L485","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027add-flow\u0027,"},{"line_number":255,"context_line":"                                                args)"},{"line_number":256,"context_line":"        if not supported:"},{"line_number":257,"context_line":"            LOG.warning(\u0027OVS local version can not support ARP responder.\u0027)"},{"line_number":258,"context_line":"        return supported"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def _report_state(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2F0FM%3D","line":257,"updated":"2014-04-10 08:55:39.000000000","message":"More pedantry: wrap in _(...)\nalso, \u0027local\u0027 seems redundant","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027add-flow\u0027,"},{"line_number":255,"context_line":"                                                args)"},{"line_number":256,"context_line":"        if not supported:"},{"line_number":257,"context_line":"            LOG.warning(\u0027OVS local version can not support ARP responder.\u0027)"},{"line_number":258,"context_line":"        return supported"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def _report_state(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2FrDU%3D","line":257,"in_reply_to":"AAAAW3%2F%2F0FM%3D","updated":"2014-04-11 09:39:34.000000000","message":"Done","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"                before \u003d state.get(\u0027before\u0027)"},{"line_number":472,"context_line":"                for mac, ip in before:"},{"line_number":473,"context_line":"                    self._set_arp_responder(\u0027remove\u0027, lvm.vlan, mac, ip)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def fdb_update(self, context, fdb_entries):"},{"line_number":476,"context_line":"        LOG.debug(_(\"fdb_update received\"))"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2F0Ag%3D","line":473,"updated":"2014-04-10 08:55:39.000000000","message":"should removal of the old responder precede addition of the new one?","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"                before \u003d state.get(\u0027before\u0027)"},{"line_number":472,"context_line":"                for mac, ip in before:"},{"line_number":473,"context_line":"                    self._set_arp_responder(\u0027remove\u0027, lvm.vlan, mac, ip)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def fdb_update(self, context, fdb_entries):"},{"line_number":476,"context_line":"        LOG.debug(_(\"fdb_update received\"))"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2FrAM%3D","line":473,"in_reply_to":"AAAAW3%2F%2F0Ag%3D","updated":"2014-04-11 09:39:34.000000000","message":"No, I prefer to add before remove so that the transition is as smooth.\n\nThe best solution will to use modify flow, but to do that I need to be able to filter flows also on the action attributes. For what I know, it\u0027s not possible.","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0db7adfe633b1a38738ba06c5f901909212b2aa2","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":459,"context_line":"            lvm \u003d self.local_vlan_map.get(network_id)"},{"line_number":460,"context_line":"            if not lvm:"},{"line_number":461,"context_line":"                return"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            for agent_ip, state in agent_ports.items():"},{"line_number":464,"context_line":"                if agent_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAXH%2F%2FQu0%3D","line":461,"updated":"2014-04-22 22:57:13.000000000","message":"continue?","commit_id":"d4fe813b125a3a1e9a99aac695ba16b054cde190"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"7c78614588cb8b7e7cf969e268a5ba60b9a5f4f5","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":459,"context_line":"            lvm \u003d self.local_vlan_map.get(network_id)"},{"line_number":460,"context_line":"            if not lvm:"},{"line_number":461,"context_line":"                return"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            for agent_ip, state in agent_ports.items():"},{"line_number":464,"context_line":"                if agent_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAXH%2F%2FLcU%3D","line":461,"in_reply_to":"AAAAXH%2F%2FQu0%3D","updated":"2014-04-23 14:50:31.000000000","message":"Done.\nIt\u0027s not a bug actually because a change IP is link to an update port so only one network will be impacted. But the fdb_entries could contains more than one networks entry (as line 351 and 379).","commit_id":"d4fe813b125a3a1e9a99aac695ba16b054cde190"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"fc9460201846fceabc9bc10545d0784aa6e4f69a","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":459,"context_line":"            lvm \u003d self.local_vlan_map.get(network_id)"},{"line_number":460,"context_line":"            if not lvm:"},{"line_number":461,"context_line":"                return"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            for agent_ip, state in agent_ports.items():"},{"line_number":464,"context_line":"                if agent_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAXH%2F%2FNHU%3D","line":461,"in_reply_to":"AAAAXH%2F%2FQu0%3D","updated":"2014-04-23 12:28:21.000000000","message":"Good point.","commit_id":"d4fe813b125a3a1e9a99aac695ba16b054cde190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"cda850793d77c129f12464ed12b8bab5be21f667","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[]\u0027]"},{"line_number":254,"context_line":"        supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027add-flow\u0027,"},{"line_number":255,"context_line":"                                                args)"},{"line_number":256,"context_line":"        if not supported:"},{"line_number":257,"context_line":"            LOG.warning(_(\u0027OVS version can not support ARP responder.\u0027))"},{"line_number":258,"context_line":"        return supported"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAAXX%2F%2F0rI%3D","line":256,"updated":"2014-04-26 02:16:21.000000000","message":"For things which OVS may or may not support, we may be moving down a path of having a separate script which runs to verify these arguments. But for now, this approach is ok for me.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"c6068d05f05ee336e333ad541d2a750f7518c810","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                     \"set_tunnel:%s,output:%s\" %"},{"line_number":420,"context_line":"                                     (lvm.segmentation_id, ofports))"},{"line_number":421,"context_line":"            else:"},{"line_number":422,"context_line":"                # This local vlan doesn\u0027t require any more tunneling"},{"line_number":423,"context_line":"                self.tun_br.delete_flows(table\u003dconstants.FLOOD_TO_TUN,"},{"line_number":424,"context_line":"                                         dl_vlan\u003dlvm.vlan)"},{"line_number":425,"context_line":"            # Check if this tunnel port is still used"}],"source_content_type":"text/x-python","patch_set":39,"id":"9ad9bd40_acb48a35","line":422,"updated":"2014-05-05 22:49:18.000000000","message":"This isn\u0027t really related to this patch.  Not that it isn\u0027t mispelled in the original.  I\u0027m just pretty pedantic about patches only containing relevant changes.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                     \"set_tunnel:%s,output:%s\" %"},{"line_number":420,"context_line":"                                     (lvm.segmentation_id, ofports))"},{"line_number":421,"context_line":"            else:"},{"line_number":422,"context_line":"                # This local vlan doesn\u0027t require any more tunneling"},{"line_number":423,"context_line":"                self.tun_br.delete_flows(table\u003dconstants.FLOOD_TO_TUN,"},{"line_number":424,"context_line":"                                         dl_vlan\u003dlvm.vlan)"},{"line_number":425,"context_line":"            # Check if this tunnel port is still used"}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_25bc5ebb","line":422,"in_reply_to":"9ad9bd40_acb48a35","updated":"2014-05-09 10:11:08.000000000","message":"Done","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"c6068d05f05ee336e333ad541d2a750f7518c810","unresolved":false,"context_lines":[{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        self.tun_br_ofports[tunnel_type][remote_ip] \u003d ofport"},{"line_number":1040,"context_line":"        # Add flow in default table to resubmit to the right"},{"line_number":1041,"context_line":"        # tunneling table (lvid will be set in the latter)"},{"line_number":1042,"context_line":"        self.tun_br.add_flow(priority\u003d1,"},{"line_number":1043,"context_line":"                             in_port\u003dofport,"},{"line_number":1044,"context_line":"                             actions\u003d\"resubmit(,%s)\" %"}],"source_content_type":"text/x-python","patch_set":39,"id":"9ad9bd40_ec893276","line":1041,"updated":"2014-05-05 22:49:18.000000000","message":"See above.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        self.tun_br_ofports[tunnel_type][remote_ip] \u003d ofport"},{"line_number":1040,"context_line":"        # Add flow in default table to resubmit to the right"},{"line_number":1041,"context_line":"        # tunneling table (lvid will be set in the latter)"},{"line_number":1042,"context_line":"        self.tun_br.add_flow(priority\u003d1,"},{"line_number":1043,"context_line":"                             in_port\u003dofport,"},{"line_number":1044,"context_line":"                             actions\u003d\"resubmit(,%s)\" %"}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_c5dbba19","line":1041,"in_reply_to":"9ad9bd40_ec893276","updated":"2014-05-09 10:11:08.000000000","message":"Done","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"44fe4f7e0b5d9d0e0cc00d40e731718ae536bc0b","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                                      q_const.MAX_VLAN_TAG))"},{"line_number":181,"context_line":"        self.tunnel_types \u003d tunnel_types or []"},{"line_number":182,"context_line":"        self.l2_pop \u003d l2_population"},{"line_number":183,"context_line":"        # TODO(ethuleau): Initially, local ARP responder is be dependent to the"},{"line_number":184,"context_line":"        #                 ML2 l2 population mechanism driver."},{"line_number":185,"context_line":"        self.arp_responder_enabled \u003d (arp_responder and"},{"line_number":186,"context_line":"                                      self._check_arp_responder_support() and"}],"source_content_type":"text/x-python","patch_set":41,"id":"7adec928_6298596a","line":183,"updated":"2014-05-20 14:03:25.000000000","message":"nit: \"is be\" -\u003e \"is\"?","commit_id":"befa0b9184eb0c6248d06efa5b02be8217f1722e"}],"neutron/plugins/openvswitch/common/config.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"16c21d91046d8c0286b062f828b2d1730a1ac441","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    cfg.BoolOpt(\u0027l2_population\u0027, default\u003dFalse,"},{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2Fz%2Bo%3D","line":83,"updated":"2014-04-10 08:55:39.000000000","message":"as the gate is not running OVS 2.1, it is probably advisable to default this to False.\nOtherwise Neutron would be shipping with an untested configuration","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d9c9926dce52061e89fc4463130e2475410504df","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    cfg.BoolOpt(\u0027l2_population\u0027, default\u003dFalse,"},{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAW3%2F%2Fq4c%3D","line":83,"in_reply_to":"AAAAW3%2F%2Fz%2Bo%3D","updated":"2014-04-11 09:39:34.000000000","message":"Yes, that\u0027s better to put it as False until the gate use OVS 2.1","commit_id":"f1c6fd683d6471ef4cb1191f8bd7519bcc6d7fe1"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ef9856c9aff22ddae7d01036bfce36bb43b4c5b2","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dFalse,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9ad9bd40_a4032c0e","line":84,"updated":"2014-05-01 01:24:26.000000000","message":"why do you want to make it optional?","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"c897967807926c9ac6e56c9bb50cbec79731ce31","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dFalse,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_88ba6608","line":84,"in_reply_to":"7adec928_0822e1a3","updated":"2014-05-14 16:30:28.000000000","message":"I mean the comment about the same subject \u0027why do you want to make it optional?\u0027 discussed in the precedent file \u0027etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini\u0027 with Carl in the same patch set (#39).","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"b735253d64e2742966b3cc897fd67184a5197765","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dFalse,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_0822e1a3","line":84,"in_reply_to":"7adec928_a5f5ce84","updated":"2014-05-13 21:49:32.000000000","message":"are you talking about the comment about OVS version gate uses?\n_check_arp_responder_support is supposed to handle the cases, isn\u0027t it?","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"67e5b3011003385f9dba9ad07770781ddd2c7c2c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dFalse,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_a5f5ce84","line":84,"in_reply_to":"9ad9bd40_4c985ec0","updated":"2014-05-09 10:11:08.000000000","message":"See previous comment.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"c6068d05f05ee336e333ad541d2a750f7518c810","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                help\u003d_(\"Use ml2 l2population mechanism driver to learn \""},{"line_number":82,"context_line":"                       \"remote mac and IPs and improve tunnel scalability\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027arp_responder\u0027, default\u003dFalse,"},{"line_number":84,"context_line":"                help\u003d_(\"Enable local ARP responder if it is supported\")),"},{"line_number":85,"context_line":"]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9ad9bd40_4c985ec0","line":84,"in_reply_to":"9ad9bd40_a4032c0e","updated":"2014-05-05 22:49:18.000000000","message":"-1 on adding an unnecessary option.","commit_id":"8acd138ff03405d58c1ceb7046bef6ad9ab06d69"}],"neutron/plugins/openvswitch/common/constants.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"246e7f4f8158fffd47e72d399a251f67cec6c224","unresolved":false,"context_lines":[{"line_number":43,"context_line":"LEARN_FROM_TUN \u003d 10"},{"line_number":44,"context_line":"UCAST_TO_TUN \u003d 20"},{"line_number":45,"context_line":"ARP_RESPONDER \u003d 21"},{"line_number":46,"context_line":"FLOOD_TO_TUN \u003d 22"},{"line_number":47,"context_line":"# Map tunnel types to tables number"},{"line_number":48,"context_line":"TUN_TABLE \u003d {p_const.TYPE_GRE: GRE_TUN_TO_LV,"},{"line_number":49,"context_line":"             p_const.TYPE_VXLAN: VXLAN_TUN_TO_LV}"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FUek%3D","line":46,"updated":"2014-01-15 03:35:34.000000000","message":"nitpick: blank line","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"c9942efb742f826a35184808c90d7337a0a623b1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"LEARN_FROM_TUN \u003d 10"},{"line_number":44,"context_line":"UCAST_TO_TUN \u003d 20"},{"line_number":45,"context_line":"ARP_RESPONDER \u003d 21"},{"line_number":46,"context_line":"FLOOD_TO_TUN \u003d 22"},{"line_number":47,"context_line":"# Map tunnel types to tables number"},{"line_number":48,"context_line":"TUN_TABLE \u003d {p_const.TYPE_GRE: GRE_TUN_TO_LV,"},{"line_number":49,"context_line":"             p_const.TYPE_VXLAN: VXLAN_TUN_TO_LV}"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2FQUE%3D","line":46,"in_reply_to":"AAAAUH%2F%2FUek%3D","updated":"2014-01-15 20:45:42.000000000","message":"Done","commit_id":"b0ee2d5ddf03ef2f862fe5b93fbac43be0b22e49"}],"neutron/tests/unit/agent/linux/test_ovs_lib.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"44fe4f7e0b5d9d0e0cc00d40e731718ae536bc0b","unresolved":false,"context_lines":[{"line_number":916,"context_line":"        self._check_ovs_vxlan_version(min_vxlan_ver, min_vxlan_ver,"},{"line_number":917,"context_line":"                                      min_kernel_ver, expecting_ok\u003dTrue)"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_ofctl_arg_supported(self):"},{"line_number":920,"context_line":"        with mock.patch(\u0027neutron.common.utils.get_random_string\u0027) as utils:"},{"line_number":921,"context_line":"            utils.return_value \u003d \u0027test\u0027"},{"line_number":922,"context_line":"            supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027cmd\u0027,"}],"source_content_type":"text/x-python","patch_set":41,"id":"7adec928_82eac571","line":919,"updated":"2014-05-20 14:03:25.000000000","message":"Tests for supported and unsupported cases should be split from the point of view of code maintainability and the comment below.","commit_id":"befa0b9184eb0c6248d06efa5b02be8217f1722e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"44fe4f7e0b5d9d0e0cc00d40e731718ae536bc0b","unresolved":false,"context_lines":[{"line_number":936,"context_line":"            self.execute.side_effect \u003d Exception"},{"line_number":937,"context_line":"            supported \u003d ovs_lib.ofctl_arg_supported(self.root_helper, \u0027cmd\u0027,"},{"line_number":938,"context_line":"                                                    [\u0027args\u0027])"},{"line_number":939,"context_line":"            self.execute.assert_has_calls(["},{"line_number":940,"context_line":"                mock.call([\u0027ovs-vsctl\u0027, self.TO, \u0027--\u0027, \u0027--if-exists\u0027, \u0027del-br\u0027,"},{"line_number":941,"context_line":"                           \u0027br-test-test\u0027], root_helper\u003dself.root_helper),"},{"line_number":942,"context_line":"                mock.call([\u0027ovs-vsctl\u0027, self.TO, \u0027--\u0027, \u0027--may-exist\u0027, \u0027add-br\u0027,"}],"source_content_type":"text/x-python","patch_set":41,"id":"7adec928_629e9908","line":939,"updated":"2014-05-20 14:03:25.000000000","message":"L.939-947 is same as L.924-933. It means this assert_has_calls at L.939 always succeed if assert_has_calls at L.924 succeeds.","commit_id":"befa0b9184eb0c6248d06efa5b02be8217f1722e"}]}
