)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a7977931c8db8d98bfd0af38a17dca7e3a956d1e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"physical bridges for the openvswitch agent in order to increase"},{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1ae5cdf2_3ccaff1a","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":68},"updated":"2014-06-06 06:46:18.000000000","message":"do we still need to worry about such a case?\nwe unconditionally use patch ports to connect br-int and br-tun.","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"aaf27e6b01751df5853eb4267129598010db4ed1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1ae5cdf2_02c79e64","line":14,"range":{"start_line":14,"start_character":39,"end_line":14,"end_character":42},"updated":"2014-06-06 07:44:24.000000000","message":"wrong config section name","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ca1cfa8ceb05db6938ab46ce2fb582dd1e3fa956","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1ae5cdf2_2d980b1b","line":14,"in_reply_to":"1ae5cdf2_02c79e64","updated":"2014-06-06 08:25:57.000000000","message":"wrong config section name ?\n\nIf i remember correctly,  older OVS not supporting patch does not support gre or vxlan so need to support it for tunnels.","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"7c9e65893be51cbec252e43c4255a6434a260a10","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1ae5cdf2_bf27e1c8","line":14,"in_reply_to":"1ae5cdf2_3ccaff1a","updated":"2014-06-06 07:29:17.000000000","message":"patch ports are used to connect br-int/br-tun ... when using tunnels. If you only use flat/vlan patch port was not required.\n\nThe default option value enable patch ports because patch port support was added (iirc) around 1 year ago in redhat/centos distribs.","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"655b9b5deb5496515860fa6b724d8e7137d02d0f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1ae5cdf2_02023eb3","line":14,"in_reply_to":"1ae5cdf2_bf27e1c8","updated":"2014-06-06 07:42:26.000000000","message":"well, if you want to support older OVS, probably it\u0027s better to handle this option in ovs_lib transparently so that it can be used for tunnels too.","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"bf7517f1c268fce1ed32c7215b532ba44b18d459","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"1ae5cdf2_539b3617","line":14,"updated":"2014-06-06 09:28:47.000000000","message":"duplicated \"use\"","commit_id":"8d1f9d19f3cc98f75582a40b7e1390d045886295"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"4679a72afa9e896a97aab0d2d65d22f17a299617","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"1ae5cdf2_2e2f2140","line":14,"in_reply_to":"1ae5cdf2_539b3617","updated":"2014-06-06 09:37:49.000000000","message":"Done","commit_id":"8d1f9d19f3cc98f75582a40b7e1390d045886295"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f2223d436515a2e409867e682ea6fa5c784c9414","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"1ae5cdf2_e26c2039","line":14,"range":{"start_line":14,"start_character":35,"end_line":14,"end_character":67},"updated":"2014-06-09 21:51:27.000000000","message":"OVS.use_veth_interconnection ?","commit_id":"4498171081129a6ca9c3ffa8c9903b805316a2d1"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"097d0ef3a8af00600cae7b93ca15f5edb44a1b79","unresolved":false,"context_lines":[{"line_number":11,"context_line":"performance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"For ovs/kernel without ovs patch port support on kernel side, veths"},{"line_number":14,"context_line":"can be used through the new option OVS.use.use_veth_interconnection."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Patch port support can be tested using:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"1ae5cdf2_824d1c9c","line":14,"in_reply_to":"1ae5cdf2_e26c2039","updated":"2014-06-09 21:56:32.000000000","message":"sorry, patch 19 is based on patch 14 not 18 ... so this was the regression :)","commit_id":"4498171081129a6ca9c3ffa8c9903b805316a2d1"}],"etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b69ea4587481b9185147d911c2e87129272b0c4b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"# Example: vxlan_udp_port \u003d 8472"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"# (IntOpt) This is the MTU size of veth interfaces."},{"line_number":123,"context_line":"# Do not change unless you have a good reason to."},{"line_number":124,"context_line":"# The default MTU size of veth interfaces is 1500."},{"line_number":125,"context_line":"# veth_mtu \u003d"},{"line_number":126,"context_line":"# Example: veth_mtu \u003d 1504"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAVn%2F%2B%2F24%3D","line":123,"updated":"2014-03-10 19:43:38.000000000","message":"document that veth_mtu has no effect if not use_veth_interco","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5d2c1a24a38b5d6b79b2f9fa2c501974cad99a90","unresolved":false,"context_lines":[{"line_number":120,"context_line":"# Example: vxlan_udp_port \u003d 8472"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"# (IntOpt) This is the MTU size of veth interfaces."},{"line_number":123,"context_line":"# Do not change unless you have a good reason to."},{"line_number":124,"context_line":"# The default MTU size of veth interfaces is 1500."},{"line_number":125,"context_line":"# veth_mtu \u003d"},{"line_number":126,"context_line":"# Example: veth_mtu \u003d 1504"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAVn%2F%2B5Fo%3D","line":123,"in_reply_to":"AAAAVn%2F%2B%2F24%3D","updated":"2014-03-11 14:17:59.000000000","message":"Done","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"51c9f6f067c6d2ea98248630b017d7b11a6ee729","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# bridge to physical networks. Support kernel without ovs patch port support"},{"line_number":88,"context_line":"# so long as it is set to True."},{"line_number":89,"context_line":"# use_veth_interco \u003d False"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[agent]"},{"line_number":92,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":93,"context_line":"# polling_interval \u003d 2"}],"source_content_type":"text/x-properties","patch_set":3,"id":"AAAAWH%2F9%2FGI%3D","line":90,"updated":"2014-03-31 19:33:57.000000000","message":"Do we need a configuration option at all?  See my comment on ovs_neutron_agent.py:693 (and bug/1045613 for context).  Seems this agent creates patch ports already and simply exits if it fails.\n\nOtherwise, is there a way to detect this automatically?  If not, I\u0027m not sure that False is the appropriate default for this.  Are we reasonably sure that most everyone will have the kernel support for this?  If not, making this default to False may come as a surprise to them.","commit_id":"43e8222aef57d76bd1d25cb5c0da37418e5f53f4"},{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"a61157694ba081e3410c231e61afe5e0cfc192b6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# (BoolOpt) Use veths instead of patch ports to interconnect the integration"},{"line_number":87,"context_line":"# bridge to physical networks. Support kernel without ovs patch port support"},{"line_number":88,"context_line":"# so long as it is set to True."},{"line_number":89,"context_line":"# use_veth_interco \u003d False"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[agent]"},{"line_number":92,"context_line":"# Agent\u0027s polling interval in seconds"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F951g%3D","line":89,"updated":"2014-04-01 10:09:31.000000000","message":"As Carl said in the previous patch set, is this new parameter needed since ovs patch ports are already used between br-tun and br-int when tunneling is used? Why someone would prefer to use veth instead of patch ports ?\nAre you trying to address deployments without the tunneling enabled ?","commit_id":"e44d786924b2d7eaef9a1497df92ad8f2767f94a"},{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"7cb767dfb43ddb91f27897e382f3c7bec9f240cb","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# (BoolOpt) Use veths instead of patch ports to interconnect the integration"},{"line_number":87,"context_line":"# bridge to physical networks. Support kernel without ovs patch port support"},{"line_number":88,"context_line":"# so long as it is set to True."},{"line_number":89,"context_line":"# use_veth_interco \u003d False"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[agent]"},{"line_number":92,"context_line":"# Agent\u0027s polling interval in seconds"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F9wws%3D","line":89,"in_reply_to":"AAAAWH%2F922E%3D","updated":"2014-04-02 09:54:00.000000000","message":"There is already a check if the agent when creating the patch ports between br-tun/br-int. The detection could be done like in this patch https://review.openstack.org/#/c/65902/ at the start of the agent, and add a method to create interconnection interfaces which could leverage the detection using either the ovs patch ports or veth ?","commit_id":"e44d786924b2d7eaef9a1497df92ad8f2767f94a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5652e2a658f2ea790a44086f364bbc8c30468a83","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# (BoolOpt) Use veths instead of patch ports to interconnect the integration"},{"line_number":87,"context_line":"# bridge to physical networks. Support kernel without ovs patch port support"},{"line_number":88,"context_line":"# so long as it is set to True."},{"line_number":89,"context_line":"# use_veth_interco \u003d False"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[agent]"},{"line_number":92,"context_line":"# Agent\u0027s polling interval in seconds"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F95fw%3D","line":89,"in_reply_to":"AAAAWH%2F951g%3D","updated":"2014-04-01 10:45:47.000000000","message":"Currently patch ports are only required if tunneling is enabled. The aim of this option is to continue to support deployments without tunneling/patch port support. The induced question is do we want to continue to support them ?","commit_id":"e44d786924b2d7eaef9a1497df92ad8f2767f94a"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"27b45c46a63f635223f95c0db5ed599862ba6558","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# (BoolOpt) Use veths instead of patch ports to interconnect the integration"},{"line_number":87,"context_line":"# bridge to physical networks. Support kernel without ovs patch port support"},{"line_number":88,"context_line":"# so long as it is set to True."},{"line_number":89,"context_line":"# use_veth_interco \u003d False"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[agent]"},{"line_number":92,"context_line":"# Agent\u0027s polling interval in seconds"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F922E%3D","line":89,"in_reply_to":"AAAAWH%2F95fw%3D","updated":"2014-04-01 16:06:04.000000000","message":"If it is important to support this feature then I think that the default value of this option should be reconsidered.  Every case that needs veth because of the lack of patch support will break when they upgrade to this code unless they specifically see and understand this option.  They makes upgrades that much more difficult.\n\nWhat about auto-detection of this feature?  Is there a way to detect patch port capability?","commit_id":"e44d786924b2d7eaef9a1497df92ad8f2767f94a"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"38733fc95bfa330ab2b55c16dc551a19c1a87fe2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# (BoolOpt) Use veths instead of patch ports to interconnect the integration"},{"line_number":87,"context_line":"# bridge to physical networks. Support kernel without ovs patch port support"},{"line_number":88,"context_line":"# so long as it is set to True."},{"line_number":89,"context_line":"# use_veth_interco \u003d False"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[agent]"},{"line_number":92,"context_line":"# Agent\u0027s polling interval in seconds"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAW3%2F%2Fmr4%3D","line":89,"in_reply_to":"AAAAWH%2F9wws%3D","updated":"2014-04-11 20:00:01.000000000","message":"I agree with Sylvain and Carl here, this is going to break people who are currently using veths due to the option defaulting to False. Auto detection would be a better way to handle this.","commit_id":"e44d786924b2d7eaef9a1497df92ad8f2767f94a"}],"neutron/agent/linux/ovs_lib.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"fe3e7505209358922fefe42c3ebc82f18f553fde","unresolved":false,"context_lines":[{"line_number":571,"context_line":""},{"line_number":572,"context_line":"    # check kernel side"},{"line_number":573,"context_line":"    if dist_version.StrictVersion("},{"line_number":574,"context_line":"            installed_kernel_version) \u003c dist_version.StrictVersion("},{"line_number":575,"context_line":"            constants.MINIMUM_LINUX_KERNEL_OVS_PATCH):"},{"line_number":576,"context_line":"        LOG.debug(_(\"Kernel version (%(installed)s) not supporting \""},{"line_number":577,"context_line":"                    \"kernel side patch ports (\u003e%(required)s required)\") %"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FbGc%3D","line":574,"updated":"2014-04-21 22:12:13.000000000","message":"I\u0027m not sure this will work in all cases.  What happens if the necessary code is back ported to an older kernel.","commit_id":"4d354328faccf2a809a6dc59b2324a1c298eb664"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"4a6bd9754ae37401916ac4f3b613f2d58294779a","unresolved":false,"context_lines":[{"line_number":491,"context_line":"    with OVSBridge(name, root_helper) as br:"},{"line_number":492,"context_line":"        port \u003d br.add_patch_port(name + \u0027-source\u0027, name + \u0027-target\u0027)"},{"line_number":493,"context_line":"        if port \u003d\u003d -1:"},{"line_number":494,"context_line":"            LOG.warn(\u0027Open vSwitch does not support patch ports.\u0027)"},{"line_number":495,"context_line":"        return port !\u003d -1"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXX%2F%2FwM4%3D","line":494,"updated":"2014-04-28 08:55:30.000000000","message":"I\u0027d like put the string into _() to support i18n uniformly","commit_id":"e0d60868a78e410be548957a56cdd6c11ca65070"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"603f2bc8aaa14d1292a69b87201c7d745d0d954f","unresolved":false,"context_lines":[{"line_number":491,"context_line":"    with OVSBridge(name, root_helper) as br:"},{"line_number":492,"context_line":"        port \u003d br.add_patch_port(name + \u0027-source\u0027, name + \u0027-target\u0027)"},{"line_number":493,"context_line":"        if port \u003d\u003d -1:"},{"line_number":494,"context_line":"            LOG.warn(\u0027Open vSwitch does not support patch ports.\u0027)"},{"line_number":495,"context_line":"        return port !\u003d -1"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXX%2F%2FvFc%3D","line":494,"in_reply_to":"AAAAXX%2F%2FwM4%3D","updated":"2014-04-28 11:24:34.000000000","message":"will do","commit_id":"e0d60868a78e410be548957a56cdd6c11ca65070"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"d6bf14e9d84770833d6b9d8d5090db5d64b46060","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        else:"},{"line_number":439,"context_line":"            msg \u003d _(\u0027Unable to determine mac address for %s\u0027) % self.br_name"},{"line_number":440,"context_line":"            raise Exception(msg)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    def __enter__(self):"},{"line_number":443,"context_line":"        self.create()"},{"line_number":444,"context_line":"        return self"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_136a721a","line":441,"updated":"2014-05-30 09:42:04.000000000","message":"Please be aware of patch:\nhttps://review.openstack.org/#/c/94839/\n\nThat introduces a module function context manager for OVSBridge.","commit_id":"5569ded8c9edd3db102969210e617b6611a75ecf"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"f36de97730d89f30baa978ba3712edaf20ecb17d","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        else:"},{"line_number":439,"context_line":"            msg \u003d _(\u0027Unable to determine mac address for %s\u0027) % self.br_name"},{"line_number":440,"context_line":"            raise Exception(msg)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    def __enter__(self):"},{"line_number":443,"context_line":"        self.create()"},{"line_number":444,"context_line":"        return self"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_9663d0b0","line":441,"in_reply_to":"1ae5cdf2_136a721a","updated":"2014-05-30 10:21:08.000000000","message":"Always the same trouble, where should i respond in your or my change ? :)\n\nDefining __enter__/__exit__ in OVSBridge seems more pythonic (strategy used by open(), tempfile classes, Lock).","commit_id":"5569ded8c9edd3db102969210e617b6611a75ecf"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"d6bf14e9d84770833d6b9d8d5090db5d64b46060","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                                            min_required_version,"},{"line_number":557,"context_line":"                                            \u0027kernel\u0027, \u0027VXLAN\u0027)"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"def check_ovs_patch(root_helper):"},{"line_number":561,"context_line":"    \"\"\"Return true if patch ports are supported by Open vSwitch.\"\"\""},{"line_number":562,"context_line":"    name \u003d \"patchtest-\" + str(random.randint(1, 0x7fffffff))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_7379f6fb","line":559,"updated":"2014-05-30 09:42:04.000000000","message":"Please be aware of patch:\nhttps://review.openstack.org/#/c/96525/\n\nThat removes these start up checks and moves them to a script.","commit_id":"5569ded8c9edd3db102969210e617b6611a75ecf"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"f36de97730d89f30baa978ba3712edaf20ecb17d","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                                            min_required_version,"},{"line_number":557,"context_line":"                                            \u0027kernel\u0027, \u0027VXLAN\u0027)"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"def check_ovs_patch(root_helper):"},{"line_number":561,"context_line":"    \"\"\"Return true if patch ports are supported by Open vSwitch.\"\"\""},{"line_number":562,"context_line":"    name \u003d \"patchtest-\" + str(random.randint(1, 0x7fffffff))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_96bbd0c3","line":559,"in_reply_to":"1ae5cdf2_7379f6fb","updated":"2014-05-30 10:21:08.000000000","message":"First patchsets defined a new configuration option allowing to enable/disable change effects which could meet script testing. Based on comments, it was replaced by runtime (one time) check in order to avoid adding a new (non-trivial) configuration option ...  which can not use a script to check patch port support.","commit_id":"5569ded8c9edd3db102969210e617b6611a75ecf"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b69ea4587481b9185147d911c2e87129272b0c4b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    Hypervisors in the cloud. These tunnels originate and terminate on"},{"line_number":134,"context_line":"    the tunneling bridge of each hypervisor. Port patching is done to"},{"line_number":135,"context_line":"    connect local VLANs on the integration bridge to inter-hypervisor"},{"line_number":136,"context_line":"    tunnels on the tunnel bridge."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    For each virtual networks realized as a VLANs or flat network, a"},{"line_number":139,"context_line":"    veth is used to connect the local VLAN on the integration bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2F5k%3D","line":136,"updated":"2014-03-10 19:43:38.000000000","message":"docstring to update","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5d2c1a24a38b5d6b79b2f9fa2c501974cad99a90","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    Hypervisors in the cloud. These tunnels originate and terminate on"},{"line_number":134,"context_line":"    the tunneling bridge of each hypervisor. Port patching is done to"},{"line_number":135,"context_line":"    connect local VLANs on the integration bridge to inter-hypervisor"},{"line_number":136,"context_line":"    tunnels on the tunnel bridge."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    For each virtual networks realized as a VLANs or flat network, a"},{"line_number":139,"context_line":"    veth is used to connect the local VLAN on the integration bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B5C8%3D","line":136,"in_reply_to":"AAAAVn%2F%2B%2F5k%3D","updated":"2014-03-11 14:17:59.000000000","message":"Done","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"939970f8552113f2925dcf45264b72f88d10e5dc","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            br.add_flow(priority\u003d1, actions\u003d\"normal\")"},{"line_number":786,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":789,"context_line":"            int_if_name \u003d constants.VETH_INTEGRATION_PREFIX + bridge"},{"line_number":790,"context_line":"            self.int_br.delete_port(int_if_name)"},{"line_number":791,"context_line":"            phys_if_name \u003d constants.VETH_PHYSICAL_PREFIX + bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FCBw%3D","line":788,"updated":"2014-03-10 18:52:19.000000000","message":"I would prefer that you update comments","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5d2c1a24a38b5d6b79b2f9fa2c501974cad99a90","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            br.add_flow(priority\u003d1, actions\u003d\"normal\")"},{"line_number":786,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":789,"context_line":"            int_if_name \u003d constants.VETH_INTEGRATION_PREFIX + bridge"},{"line_number":790,"context_line":"            self.int_br.delete_port(int_if_name)"},{"line_number":791,"context_line":"            phys_if_name \u003d constants.VETH_PHYSICAL_PREFIX + bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B5EM%3D","line":788,"in_reply_to":"AAAAVn%2F%2FCBw%3D","updated":"2014-03-11 14:17:59.000000000","message":"Done","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b69ea4587481b9185147d911c2e87129272b0c4b","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            br.add_flow(priority\u003d1, actions\u003d\"normal\")"},{"line_number":786,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":789,"context_line":"            int_if_name \u003d constants.VETH_INTEGRATION_PREFIX + bridge"},{"line_number":790,"context_line":"            self.int_br.delete_port(int_if_name)"},{"line_number":791,"context_line":"            phys_if_name \u003d constants.VETH_PHYSICAL_PREFIX + bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2F5U%3D","line":788,"in_reply_to":"AAAAVn%2F%2FCBw%3D","updated":"2014-03-10 19:43:38.000000000","message":"good remark, i will also update class docstring","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"939970f8552113f2925dcf45264b72f88d10e5dc","unresolved":false,"context_lines":[{"line_number":810,"context_line":"            self.int_ofports[physical_network] \u003d int_ofport"},{"line_number":811,"context_line":"            self.phys_ofports[physical_network] \u003d phys_ofport"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            # block all untranslated traffic over veth between bridges"},{"line_number":814,"context_line":"            self.int_br.add_flow(priority\u003d2,"},{"line_number":815,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"},{"line_number":816,"context_line":"                                 actions\u003d\"drop\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FCBs%3D","line":813,"updated":"2014-03-10 18:52:19.000000000","message":"I would prefer that you update comments","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5d2c1a24a38b5d6b79b2f9fa2c501974cad99a90","unresolved":false,"context_lines":[{"line_number":810,"context_line":"            self.int_ofports[physical_network] \u003d int_ofport"},{"line_number":811,"context_line":"            self.phys_ofports[physical_network] \u003d phys_ofport"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            # block all untranslated traffic over veth between bridges"},{"line_number":814,"context_line":"            self.int_br.add_flow(priority\u003d2,"},{"line_number":815,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"},{"line_number":816,"context_line":"                                 actions\u003d\"drop\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B5EI%3D","line":813,"in_reply_to":"AAAAVn%2F%2FCBs%3D","updated":"2014-03-11 14:17:59.000000000","message":"Done","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b69ea4587481b9185147d911c2e87129272b0c4b","unresolved":false,"context_lines":[{"line_number":810,"context_line":"            self.int_ofports[physical_network] \u003d int_ofport"},{"line_number":811,"context_line":"            self.phys_ofports[physical_network] \u003d phys_ofport"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            # block all untranslated traffic over veth between bridges"},{"line_number":814,"context_line":"            self.int_br.add_flow(priority\u003d2,"},{"line_number":815,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"},{"line_number":816,"context_line":"                                 actions\u003d\"drop\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2F5M%3D","line":813,"in_reply_to":"AAAAVn%2F%2FCBs%3D","updated":"2014-03-10 19:43:38.000000000","message":"itto","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"51c9f6f067c6d2ea98248630b017d7b11a6ee729","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        :param tun_br: the name of the tunnel bridge."},{"line_number":690,"context_line":"        \u0027\u0027\u0027"},{"line_number":691,"context_line":"        self.tun_br \u003d ovs_lib.OVSBridge(tun_br, self.root_helper)"},{"line_number":692,"context_line":"        self.tun_br.reset_bridge()"},{"line_number":693,"context_line":"        self.patch_tun_ofport \u003d self.int_br.add_patch_port("},{"line_number":694,"context_line":"            cfg.CONF.OVS.int_peer_patch_port, cfg.CONF.OVS.tun_peer_patch_port)"},{"line_number":695,"context_line":"        self.patch_int_ofport \u003d self.tun_br.add_patch_port("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9%2Bv0%3D","line":692,"updated":"2014-03-31 19:33:57.000000000","message":"We\u0027re adding patch ports here without any way to configure otherwise.","commit_id":"43e8222aef57d76bd1d25cb5c0da37418e5f53f4"},{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"ddc80b982d5257dc2f4e85d518e262def3b300e9","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            # interconnect physical and integration bridges using veth/patchs"},{"line_number":789,"context_line":"            int_if_name \u003d constants.VETH_INTEGRATION_PREFIX + bridge"},{"line_number":790,"context_line":"            self.int_br.delete_port(int_if_name)"},{"line_number":791,"context_line":"            phys_if_name \u003d constants.VETH_PHYSICAL_PREFIX + bridge"},{"line_number":792,"context_line":"            br.delete_port(phys_if_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BOLs%3D","line":789,"updated":"2014-03-28 10:01:21.000000000","message":"I would prefer that you rename the constant since this is no more specifically a VETH","commit_id":"43e8222aef57d76bd1d25cb5c0da37418e5f53f4"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"51c9f6f067c6d2ea98248630b017d7b11a6ee729","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            # interconnect physical and integration bridges using veth/patchs"},{"line_number":789,"context_line":"            int_if_name \u003d constants.VETH_INTEGRATION_PREFIX + bridge"},{"line_number":790,"context_line":"            self.int_br.delete_port(int_if_name)"},{"line_number":791,"context_line":"            phys_if_name \u003d constants.VETH_PHYSICAL_PREFIX + bridge"},{"line_number":792,"context_line":"            br.delete_port(phys_if_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9%2FHg%3D","line":789,"in_reply_to":"AAAAWH%2F%2BOLs%3D","updated":"2014-03-31 19:33:57.000000000","message":"+1\nVETH_INTEGRATION_PREFIX as well.","commit_id":"43e8222aef57d76bd1d25cb5c0da37418e5f53f4"},{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"ddc80b982d5257dc2f4e85d518e262def3b300e9","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            # interconnect physical and integration bridges using veth/patchs"},{"line_number":789,"context_line":"            int_if_name \u003d constants.VETH_INTEGRATION_PREFIX + bridge"},{"line_number":790,"context_line":"            self.int_br.delete_port(int_if_name)"},{"line_number":791,"context_line":"            phys_if_name \u003d constants.VETH_PHYSICAL_PREFIX + bridge"},{"line_number":792,"context_line":"            br.delete_port(phys_if_name)"},{"line_number":793,"context_line":"            if self.use_veth_interco:"},{"line_number":794,"context_line":"                if ip_lib.device_exists(int_if_name, self.root_helper):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BOLc%3D","line":791,"updated":"2014-03-28 10:01:21.000000000","message":"same","commit_id":"43e8222aef57d76bd1d25cb5c0da37418e5f53f4"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"51c9f6f067c6d2ea98248630b017d7b11a6ee729","unresolved":false,"context_lines":[{"line_number":819,"context_line":"                        actions\u003d\"drop\")"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"            if self.use_veth_interco:"},{"line_number":822,"context_line":"               # enable veth to pass traffic"},{"line_number":823,"context_line":"                int_veth.link.set_up()"},{"line_number":824,"context_line":"                phys_veth.link.set_up()"},{"line_number":825,"context_line":"                if self.veth_mtu:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9%2Bso%3D","line":822,"updated":"2014-03-31 19:33:57.000000000","message":"nit:  Looks like this comment should be indented one more space.","commit_id":"43e8222aef57d76bd1d25cb5c0da37418e5f53f4"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"4a6bd9754ae37401916ac4f3b613f2d58294779a","unresolved":false,"context_lines":[{"line_number":1333,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":1334,"context_line":"        veth_mtu\u003dconfig.AGENT.veth_mtu,"},{"line_number":1335,"context_line":"        l2_population\u003dconfig.AGENT.l2_population,"},{"line_number":1336,"context_line":"        use_veth_interco\u003dnot has_patch_support,"},{"line_number":1337,"context_line":"    )"},{"line_number":1338,"context_line":""},{"line_number":1339,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXX%2F%2FwCQ%3D","line":1336,"updated":"2014-04-28 08:55:30.000000000","message":"will we consider changing behavior of ovs_use_veth option in OVSInterfaceDriver as well ?","commit_id":"e0d60868a78e410be548957a56cdd6c11ca65070"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"603f2bc8aaa14d1292a69b87201c7d745d0d954f","unresolved":false,"context_lines":[{"line_number":1333,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":1334,"context_line":"        veth_mtu\u003dconfig.AGENT.veth_mtu,"},{"line_number":1335,"context_line":"        l2_population\u003dconfig.AGENT.l2_population,"},{"line_number":1336,"context_line":"        use_veth_interco\u003dnot has_patch_support,"},{"line_number":1337,"context_line":"    )"},{"line_number":1338,"context_line":""},{"line_number":1339,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXX%2F%2FvFw%3D","line":1336,"in_reply_to":"AAAAXX%2F%2FwCQ%3D","updated":"2014-04-28 11:24:34.000000000","message":"My intention was/is to propose it in a separate change","commit_id":"e0d60868a78e410be548957a56cdd6c11ca65070"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"bf7517f1c268fce1ed32c7215b532ba44b18d459","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                                 actions\u003d\"drop\")"},{"line_number":949,"context_line":"            br.add_flow(priority\u003d2,"},{"line_number":950,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":951,"context_line":"                        actions\u003d\"drop\")"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"            if self.use_veth_interconnection:"},{"line_number":954,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_ee1b7970","line":951,"updated":"2014-06-06 09:28:47.000000000","message":"aren\u0027t these too late for patch ports case?","commit_id":"8d1f9d19f3cc98f75582a40b7e1390d045886295"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"a37ed1fece371854ca594e517c5cf3d3850fda43","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                                 actions\u003d\"drop\")"},{"line_number":949,"context_line":"            br.add_flow(priority\u003d2,"},{"line_number":950,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":951,"context_line":"                        actions\u003d\"drop\")"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"            if self.use_veth_interconnection:"},{"line_number":954,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_80fe1d04","line":951,"in_reply_to":"1ae5cdf2_05f85fc3","updated":"2014-06-08 15:02:02.000000000","message":"Ah indeed, i make a first proposal but i will update it, to create ports, block traffic and configure ports as patch ports.","commit_id":"8d1f9d19f3cc98f75582a40b7e1390d045886295"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e149746f02642c8660b11ce9f9ba510387679923","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                                 actions\u003d\"drop\")"},{"line_number":949,"context_line":"            br.add_flow(priority\u003d2,"},{"line_number":950,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":951,"context_line":"                        actions\u003d\"drop\")"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"            if self.use_veth_interconnection:"},{"line_number":954,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_05f85fc3","line":951,"in_reply_to":"1ae5cdf2_0efd05b1","updated":"2014-06-08 13:41:11.000000000","message":"in the case of veth, blocking flows are installed before the beth ports are made up in L.940-947.","commit_id":"8d1f9d19f3cc98f75582a40b7e1390d045886295"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"4679a72afa9e896a97aab0d2d65d22f17a299617","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                                 actions\u003d\"drop\")"},{"line_number":949,"context_line":"            br.add_flow(priority\u003d2,"},{"line_number":950,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":951,"context_line":"                        actions\u003d\"drop\")"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"            if self.use_veth_interconnection:"},{"line_number":954,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_0efd05b1","line":951,"in_reply_to":"1ae5cdf2_ee1b7970","updated":"2014-06-06 09:37:49.000000000","message":"I don\u0027t really see why it should be different for patch ports and veths ?\nresulting flows seem coherent","commit_id":"8d1f9d19f3cc98f75582a40b7e1390d045886295"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"435ca53df00c88f64f7f562ece2a1d176bf45b14","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    phys_veth.link.set_mtu(self.veth_mtu)"},{"line_number":953,"context_line":"            else:"},{"line_number":954,"context_line":"                int_ofport \u003d self.int_br.add_port(int_if_name)"},{"line_number":955,"context_line":"                phys_ofport \u003d br.add_port(phys_if_name)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"                # block all untranslated traffic before interconnection"},{"line_number":958,"context_line":"                self.int_br.add_flow(priority\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_22bb8c73","line":955,"updated":"2014-06-09 01:31:43.000000000","message":"these make OVS try to attach physical ports.\nit might not be harmful but better to avoid.\nprobably make type\u003dpatch without setting peer in a single transaction here?","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"60c2ab3631ba88a9327a86a67bdec3f6834f3589","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    phys_veth.link.set_mtu(self.veth_mtu)"},{"line_number":953,"context_line":"            else:"},{"line_number":954,"context_line":"                int_ofport \u003d self.int_br.add_port(int_if_name)"},{"line_number":955,"context_line":"                phys_ofport \u003d br.add_port(phys_if_name)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"                # block all untranslated traffic before interconnection"},{"line_number":958,"context_line":"                self.int_br.add_flow(priority\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_a88e9625","line":955,"in_reply_to":"1ae5cdf2_22bb8c73","updated":"2014-06-09 08:25:44.000000000","message":"The previous implementation of add_patch_port was\n\n  self.run_vsctl([\"add-port\", self.br_name, local_name])\n  self.set_db_attribute(\"Interface\", local_name, \"type\", \"patch\")\n  self.set_db_attribute(\"Interface\", local_name, \"options:peer\",\n                                 remote_name)\n\nwhich was changed because of https://bugs.launchpad.net/neutron/+bug/1257014 ... setting type\u003dpatch without a peer lead to an ERROR message in ovs logs","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ab73258395c476b9ae44d59017742667f3637469","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    phys_veth.link.set_mtu(self.veth_mtu)"},{"line_number":953,"context_line":"            else:"},{"line_number":954,"context_line":"                int_ofport \u003d self.int_br.add_port(int_if_name)"},{"line_number":955,"context_line":"                phys_ofport \u003d br.add_port(phys_if_name)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"                # block all untranslated traffic before interconnection"},{"line_number":958,"context_line":"                self.int_br.add_flow(priority\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_8e08f02e","line":955,"in_reply_to":"1ae5cdf2_5183f6cb","updated":"2014-06-09 17:52:16.000000000","message":"i did a test mistake (i created an internal port named \"nonexistent\") ... the following does not lead to an error log:\n\n  ovs add-port br-test patch2 -- set Interface patch2 type\u003dpatch options:peer\u003dnonexistent\n\n\nSo done !","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8f07d8bc603dc8b5ed67f66bcec9f7f3705524dd","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    phys_veth.link.set_mtu(self.veth_mtu)"},{"line_number":953,"context_line":"            else:"},{"line_number":954,"context_line":"                int_ofport \u003d self.int_br.add_port(int_if_name)"},{"line_number":955,"context_line":"                phys_ofport \u003d br.add_port(phys_if_name)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"                # block all untranslated traffic before interconnection"},{"line_number":958,"context_line":"                self.int_br.add_flow(priority\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_5183f6cb","line":955,"in_reply_to":"1ae5cdf2_9ec67015","updated":"2014-06-09 12:42:18.000000000","message":"even with the current code, the first add_patch_port() uses non-existent peer.\nhow can it be a problem?","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3ba9ea05c0a39498d442a690368ed3707905c658","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    phys_veth.link.set_mtu(self.veth_mtu)"},{"line_number":953,"context_line":"            else:"},{"line_number":954,"context_line":"                int_ofport \u003d self.int_br.add_port(int_if_name)"},{"line_number":955,"context_line":"                phys_ofport \u003d br.add_port(phys_if_name)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"                # block all untranslated traffic before interconnection"},{"line_number":958,"context_line":"                self.int_br.add_flow(priority\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_ebb5f87e","line":955,"in_reply_to":"1ae5cdf2_a88e9625","updated":"2014-06-09 09:15:09.000000000","message":"it makes sense.\nbut doesn\u0027t your add_port above involve similar errors?\n\nhow about having a dummy configuration eg. peer\u003dnonexistent?","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"7bedc334dbf7883190ec46165910d2337b49f883","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    phys_veth.link.set_mtu(self.veth_mtu)"},{"line_number":953,"context_line":"            else:"},{"line_number":954,"context_line":"                int_ofport \u003d self.int_br.add_port(int_if_name)"},{"line_number":955,"context_line":"                phys_ofport \u003d br.add_port(phys_if_name)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"                # block all untranslated traffic before interconnection"},{"line_number":958,"context_line":"                self.int_br.add_flow(priority\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_9ec67015","line":955,"in_reply_to":"1ae5cdf2_ebb5f87e","updated":"2014-06-09 09:57:03.000000000","message":"ovs add-port br-test patch1 -- set Interface patch1 type\u003dpatch\n  ovs add-port br-test patch2 -- set Interface patch2 type\u003dpatch options:peer\u003dnonexistent # or a non valid peer\n\nboth lead to an error log\n\n  2014-06-09T09:21:16.753Z|01389|netdev_vport|ERR|patch*: patch type requires valid \u0027peer\u0027 argument\n\n\nwhere \n\n  ovs add-port br-test patch3\n\nleads to warn logs","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"435ca53df00c88f64f7f562ece2a1d176bf45b14","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                br.add_flow(priority\u003d2,"},{"line_number":962,"context_line":"                            in_port\u003dphys_ofport,"},{"line_number":963,"context_line":"                            actions\u003d\"drop\")"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"                self.int_br.set_db_attributes(\u0027Interface\u0027, int_if_name,"},{"line_number":966,"context_line":"                                              (\u0027type\u0027, \u0027patch\u0027),"},{"line_number":967,"context_line":"                                              (\u0027options:peer\u0027, phys_if_name))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_42afb82b","line":964,"updated":"2014-06-09 01:31:43.000000000","message":"don\u0027t duplicate this flow logic.","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"630a374b9bfbf7a1adc3af672df8c121017f2ad4","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                br.add_flow(priority\u003d2,"},{"line_number":962,"context_line":"                            in_port\u003dphys_ofport,"},{"line_number":963,"context_line":"                            actions\u003d\"drop\")"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"                self.int_br.set_db_attributes(\u0027Interface\u0027, int_if_name,"},{"line_number":966,"context_line":"                                              (\u0027type\u0027, \u0027patch\u0027),"},{"line_number":967,"context_line":"                                              (\u0027options:peer\u0027, phys_if_name))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_cbed9c27","line":964,"in_reply_to":"1ae5cdf2_42afb82b","updated":"2014-06-09 08:47:56.000000000","message":"Done","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4589adf681e6d95314b61b41bc819b94d2ad2e72","unresolved":false,"context_lines":[{"line_number":909,"context_line":"                int_ofport \u003d self.int_br.add_port(int_veth)"},{"line_number":910,"context_line":"                phys_ofport \u003d br.add_port(phys_veth)"},{"line_number":911,"context_line":"            else:"},{"line_number":912,"context_line":"                # Create patch ports without associating them"},{"line_number":913,"context_line":"                int_ofport \u003d self.int_br.add_patch_port("},{"line_number":914,"context_line":"                    int_if_name, constants.NONEXISTENT_PEER)"},{"line_number":915,"context_line":"                phys_ofport \u003d br.add_patch_port("}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_83fdfd3d","line":912,"updated":"2014-06-10 16:03:07.000000000","message":"(suggestion only) It is better to add a comment why we can\u0027t specify the peer name. It will help us understand the code in the future.","commit_id":"3c0c6ab599b560240cdf0d423d438641b215b7b4"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"91927ac841e12734ca4ef80702fdc3a8b6ad47c4","unresolved":false,"context_lines":[{"line_number":909,"context_line":"                int_ofport \u003d self.int_br.add_port(int_veth)"},{"line_number":910,"context_line":"                phys_ofport \u003d br.add_port(phys_veth)"},{"line_number":911,"context_line":"            else:"},{"line_number":912,"context_line":"                # Create patch ports without associating them"},{"line_number":913,"context_line":"                int_ofport \u003d self.int_br.add_patch_port("},{"line_number":914,"context_line":"                    int_if_name, constants.NONEXISTENT_PEER)"},{"line_number":915,"context_line":"                phys_ofport \u003d br.add_patch_port("}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_6a26fe17","line":912,"in_reply_to":"1ae5cdf2_83fdfd3d","updated":"2014-06-10 17:49:51.000000000","message":"Done","commit_id":"3c0c6ab599b560240cdf0d423d438641b215b7b4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"deea83e210c5477185244465c7fd26884978a82d","unresolved":false,"context_lines":[{"line_number":867,"context_line":"        peer_name \u003d prefix + name"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"        if not self.use_veth_interconnection:"},{"line_number":870,"context_line":"            return peer_name"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"        # If name is too long, name is hashed to ensure uniqueness and respect"},{"line_number":873,"context_line":"        # the maximum length allowed for veth devices"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_d9350ef8","line":870,"updated":"2014-06-26 08:39:24.000000000","message":"doesn\u0027t patch ports have a similar name length limit?\nopenflow\u0027s protocol limit is 16, including a terminating nul.","commit_id":"895160164d86a3f8b24bd805a266d42203e56600"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"0dd2b429c10f1f6ecde10a3f337e2c31a83b8d82","unresolved":false,"context_lines":[{"line_number":867,"context_line":"        peer_name \u003d prefix + name"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"        if not self.use_veth_interconnection:"},{"line_number":870,"context_line":"            return peer_name"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"        # If name is too long, name is hashed to ensure uniqueness and respect"},{"line_number":873,"context_line":"        # the maximum length allowed for veth devices"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_200b16d6","line":870,"in_reply_to":"1ae5cdf2_d9350ef8","updated":"2014-06-26 09:03:11.000000000","message":"Done","commit_id":"895160164d86a3f8b24bd805a266d42203e56600"}],"neutron/plugins/openvswitch/common/config.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b69ea4587481b9185147d911c2e87129272b0c4b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                help\u003d_(\"Network types supported by the agent \""},{"line_number":78,"context_line":"                       \"(gre and/or vxlan)\")),"},{"line_number":79,"context_line":"    cfg.IntOpt(\u0027vxlan_udp_port\u0027, default\u003dconstants.VXLAN_UDP_PORT,"},{"line_number":80,"context_line":"               help\u003d_(\"The UDP port to use for VXLAN tunnels.\")),"},{"line_number":81,"context_line":"    cfg.IntOpt(\u0027veth_mtu\u0027, default\u003dNone,"},{"line_number":82,"context_line":"               help\u003d_(\"MTU size of veth interfaces\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027l2_population\u0027, default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2F3k%3D","line":80,"updated":"2014-03-10 19:43:38.000000000","message":"document that it has no effect if use_veth_interco \u003d\u003d False","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5d2c1a24a38b5d6b79b2f9fa2c501974cad99a90","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                help\u003d_(\"Network types supported by the agent \""},{"line_number":78,"context_line":"                       \"(gre and/or vxlan)\")),"},{"line_number":79,"context_line":"    cfg.IntOpt(\u0027vxlan_udp_port\u0027, default\u003dconstants.VXLAN_UDP_PORT,"},{"line_number":80,"context_line":"               help\u003d_(\"The UDP port to use for VXLAN tunnels.\")),"},{"line_number":81,"context_line":"    cfg.IntOpt(\u0027veth_mtu\u0027, default\u003dNone,"},{"line_number":82,"context_line":"               help\u003d_(\"MTU size of veth interfaces\")),"},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027l2_population\u0027, default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B5Bw%3D","line":80,"in_reply_to":"AAAAVn%2F%2B%2F3k%3D","updated":"2014-03-11 14:17:59.000000000","message":"Done","commit_id":"bb67f90eff80d7ede5ff5ca04653d725606f1a55"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"34f1a6f7ca32f1a515cfbff0a2506d8bc56e8bd4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027tunnel_type\u0027, default\u003d\u0027\u0027,"},{"line_number":57,"context_line":"               help\u003d_(\"The type of tunnels to use when utilizing tunnels, \""},{"line_number":58,"context_line":"                      \"either \u0027gre\u0027 or \u0027vxlan\u0027\")),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_veth_interco\u0027, default\u003dFalse,"},{"line_number":60,"context_line":"                help\u003d_(\"Use veths instead of patch ports to interconnect the \""},{"line_number":61,"context_line":"                       \"integration bridge to physical bridges\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_f5b28ee3","line":59,"updated":"2014-06-05 10:24:08.000000000","message":"The meaning of \"interco\" is not clear at the first look. How about non-abbreviated version: \u0027use_veth_bridge_interconnect\u0027 or \u0027use_veth_interconnect\u0027?","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2d0023d276ada62f3925934b9d982965095e7b60","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027tunnel_type\u0027, default\u003d\u0027\u0027,"},{"line_number":57,"context_line":"               help\u003d_(\"The type of tunnels to use when utilizing tunnels, \""},{"line_number":58,"context_line":"                      \"either \u0027gre\u0027 or \u0027vxlan\u0027\")),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_veth_interco\u0027, default\u003dFalse,"},{"line_number":60,"context_line":"                help\u003d_(\"Use veths instead of patch ports to interconnect the \""},{"line_number":61,"context_line":"                       \"integration bridge to physical bridges\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_68bdb801","line":59,"in_reply_to":"1ae5cdf2_db08612a","updated":"2014-06-06 07:29:58.000000000","message":"Done","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"6c7d6f76a31fd109a7ee4d93998aeec7937a048d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027tunnel_type\u0027, default\u003d\u0027\u0027,"},{"line_number":57,"context_line":"               help\u003d_(\"The type of tunnels to use when utilizing tunnels, \""},{"line_number":58,"context_line":"                      \"either \u0027gre\u0027 or \u0027vxlan\u0027\")),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_veth_interco\u0027, default\u003dFalse,"},{"line_number":60,"context_line":"                help\u003d_(\"Use veths instead of patch ports to interconnect the \""},{"line_number":61,"context_line":"                       \"integration bridge to physical bridges\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_db08612a","line":59,"in_reply_to":"1ae5cdf2_f5b28ee3","updated":"2014-06-05 11:08:35.000000000","message":"Will do","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"b968a445050ba8c3b6d0da154a07330469c0bdcf","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027tunnel_type\u0027, default\u003d\u0027\u0027,"},{"line_number":57,"context_line":"               help\u003d_(\"The type of tunnels to use when utilizing tunnels, \""},{"line_number":58,"context_line":"                      \"either \u0027gre\u0027 or \u0027vxlan\u0027\")),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_veth_interconnection\u0027, default\u003dFalse,"},{"line_number":60,"context_line":"                help\u003d_(\"Use veths instead of patch ports to interconnect the \""},{"line_number":61,"context_line":"                       \"integration bridge to physical bridges\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_f4ba3abf","line":59,"updated":"2014-06-09 07:53:28.000000000","message":"Isn\u0027t is possible to perform a version check or some other capability test to avoid yet another configuration option?","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"60c2ab3631ba88a9327a86a67bdec3f6834f3589","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027tunnel_type\u0027, default\u003d\u0027\u0027,"},{"line_number":57,"context_line":"               help\u003d_(\"The type of tunnels to use when utilizing tunnels, \""},{"line_number":58,"context_line":"                      \"either \u0027gre\u0027 or \u0027vxlan\u0027\")),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_veth_interconnection\u0027, default\u003dFalse,"},{"line_number":60,"context_line":"                help\u003d_(\"Use veths instead of patch ports to interconnect the \""},{"line_number":61,"context_line":"                       \"integration bridge to physical bridges\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_28d0c6f6","line":59,"in_reply_to":"1ae5cdf2_f4ba3abf","updated":"2014-06-09 08:25:44.000000000","message":"Based on https://review.openstack.org/96525 and my last discussion with kyle, an option should be preferred over runtime checks","commit_id":"6f4da01b4527b34b26216b7438f70f44487ba616"}],"neutron/plugins/openvswitch/common/constants.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a7977931c8db8d98bfd0af38a17dca7e3a956d1e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# Values for network_type"},{"line_number":26,"context_line":"VXLAN_UDP_PORT \u003d 4789"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Name prefixes for veth device pair linking the integration bridge"},{"line_number":29,"context_line":"# with the physical bridge for a physical network"},{"line_number":30,"context_line":"PEER_INTEGRATION_PREFIX \u003d \u0027int-\u0027"},{"line_number":31,"context_line":"PEER_PHYSICAL_PREFIX \u003d \u0027phy-\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_bc6fef29","line":28,"range":{"start_line":28,"start_character":20,"end_line":28,"end_character":24},"updated":"2014-06-06 06:46:18.000000000","message":"please update this comment","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ca1cfa8ceb05db6938ab46ce2fb582dd1e3fa956","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# Values for network_type"},{"line_number":26,"context_line":"VXLAN_UDP_PORT \u003d 4789"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Name prefixes for veth device pair linking the integration bridge"},{"line_number":29,"context_line":"# with the physical bridge for a physical network"},{"line_number":30,"context_line":"PEER_INTEGRATION_PREFIX \u003d \u0027int-\u0027"},{"line_number":31,"context_line":"PEER_PHYSICAL_PREFIX \u003d \u0027phy-\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_8da11f48","line":28,"in_reply_to":"1ae5cdf2_bc6fef29","updated":"2014-06-06 08:25:57.000000000","message":"Will do","commit_id":"07969c530613b9eab481f3b5503224d2e380072c"}],"neutron/tests/unit/agent/linux/test_ovs_lib.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"9c74d4deb141386a064ab5c5ac68f56875e1df1d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"import contextlib"},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    from collections import OrderedDict"}],"source_content_type":"text/x-python","patch_set":9,"id":"bad4c104_63691f8b","line":13,"updated":"2014-04-29 21:25:04.000000000","message":"Should probably preserve the blank line that was here.","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"058a570b931bba8231322dc11b4a0d11c8d2aae9","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"import contextlib"},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    from collections import OrderedDict"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_1cfc443e","line":13,"in_reply_to":"bad4c104_63691f8b","updated":"2014-04-30 09:54:37.000000000","message":"Done","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"9c74d4deb141386a064ab5c5ac68f56875e1df1d","unresolved":false,"context_lines":[{"line_number":811,"context_line":"            with contextlib.nested("},{"line_number":812,"context_line":"                mock.patch.object(ovs_lib.OVSBridge, \u0027create\u0027),"},{"line_number":813,"context_line":"                mock.patch.object(ovs_lib.OVSBridge, \u0027add_patch_port\u0027),"},{"line_number":814,"context_line":"                mock.patch.object(ovs_lib.OVSBridge, \u0027destroy\u0027)"},{"line_number":815,"context_line":"            ) as (create_fn, add_fn, destroy_fn):"},{"line_number":816,"context_line":"                add_fn.return_value \u003d value"},{"line_number":817,"context_line":"                observed \u003d ovs_lib.check_ovs_patch(self.root_helper)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bad4c104_a80a26d0","line":814,"updated":"2014-04-29 21:25:04.000000000","message":"With all of the important stuff mocked out here, I think this test adds very little value.  But, I\u0027m not sure of a better (yet reasonable) way to write the test.  So, I guess you could leave it in or not.","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"058a570b931bba8231322dc11b4a0d11c8d2aae9","unresolved":false,"context_lines":[{"line_number":811,"context_line":"            with contextlib.nested("},{"line_number":812,"context_line":"                mock.patch.object(ovs_lib.OVSBridge, \u0027create\u0027),"},{"line_number":813,"context_line":"                mock.patch.object(ovs_lib.OVSBridge, \u0027add_patch_port\u0027),"},{"line_number":814,"context_line":"                mock.patch.object(ovs_lib.OVSBridge, \u0027destroy\u0027)"},{"line_number":815,"context_line":"            ) as (create_fn, add_fn, destroy_fn):"},{"line_number":816,"context_line":"                add_fn.return_value \u003d value"},{"line_number":817,"context_line":"                observed \u003d ovs_lib.check_ovs_patch(self.root_helper)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_bced188e","line":814,"in_reply_to":"bad4c104_a80a26d0","updated":"2014-04-30 09:54:37.000000000","message":"That\u0027s the \"best\" test i found to check that the patchtest-* bridge is deleted..","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"}],"neutron/tests/unit/openvswitch/test_ovs_neutron_agent.py":[{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"be56ad4231ce0d03aed092cda4db7178a6b3ae14","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def setUp(self):"},{"line_number":42,"context_line":"        super(CreateAgentConfigMap, self).setUp()"},{"line_number":43,"context_line":"        mock.patch.object(ovs_lib, \u0027check_ovs_patch\u0027,"},{"line_number":44,"context_line":"                          return_value\u003dTrue).start()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_create_agent_config_map_succeeds(self):"},{"line_number":47,"context_line":"        self.assertTrue(ovs_neutron_agent.create_agent_config_map(cfg.CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXX%2F%2FuhI%3D","line":44,"updated":"2014-04-28 12:38:32.000000000","message":"Why this change ? could you elaborate ?","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"},{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"42d6450e6a37fe6e43a9dc858aca27863eb7249f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def setUp(self):"},{"line_number":42,"context_line":"        super(CreateAgentConfigMap, self).setUp()"},{"line_number":43,"context_line":"        mock.patch.object(ovs_lib, \u0027check_ovs_patch\u0027,"},{"line_number":44,"context_line":"                          return_value\u003dTrue).start()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_create_agent_config_map_succeeds(self):"},{"line_number":47,"context_line":"        self.assertTrue(ovs_neutron_agent.create_agent_config_map(cfg.CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"bad4c104_fa1c096d","line":44,"in_reply_to":"AAAAXX%2F%2FtoI%3D","updated":"2014-04-29 07:44:55.000000000","message":"Ok thx","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"99c84cea808d345dd60838e10dc4f091ba41955c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def setUp(self):"},{"line_number":42,"context_line":"        super(CreateAgentConfigMap, self).setUp()"},{"line_number":43,"context_line":"        mock.patch.object(ovs_lib, \u0027check_ovs_patch\u0027,"},{"line_number":44,"context_line":"                          return_value\u003dTrue).start()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_create_agent_config_map_succeeds(self):"},{"line_number":47,"context_line":"        self.assertTrue(ovs_neutron_agent.create_agent_config_map(cfg.CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXX%2F%2FtoI%3D","line":44,"in_reply_to":"AAAAXX%2F%2FuhI%3D","updated":"2014-04-28 14:23:32.000000000","message":"It is not allowed to execute system commands in UT (see the end of http://logs.openstack.org/85/76685/7/check/gate-neutron-python27/d22de92/console.html.gz).\nThat\u0027s why check_ovs_patch is mocked.","commit_id":"63ef39b1c842d3a2a289cb9c2c76634c4f94741f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"34f1a6f7ca32f1a515cfbff0a2506d8bc56e8bd4","unresolved":false,"context_lines":[{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def test_setup_physical_bridges_using_veth_interco(self):"},{"line_number":479,"context_line":"        with contextlib.nested("},{"line_number":480,"context_line":"            mock.patch.object(self.agent, \"use_veth_interco\", True),"},{"line_number":481,"context_line":"            mock.patch.object(ip_lib, \"device_exists\"),"},{"line_number":482,"context_line":"            mock.patch.object(sys, \"exit\"),"},{"line_number":483,"context_line":"            mock.patch.object(utils, \"execute\"),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_f50e0e8b","line":480,"updated":"2014-06-05 10:24:08.000000000","message":"I don\u0027t think we need to use patch because the agent instance will be deleted after the test. It is enough to use\n\n  self.agent.use_veth_interco \u003d True\n\nat the beginning of the test.","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2d0023d276ada62f3925934b9d982965095e7b60","unresolved":false,"context_lines":[{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def test_setup_physical_bridges_using_veth_interco(self):"},{"line_number":479,"context_line":"        with contextlib.nested("},{"line_number":480,"context_line":"            mock.patch.object(self.agent, \"use_veth_interco\", True),"},{"line_number":481,"context_line":"            mock.patch.object(ip_lib, \"device_exists\"),"},{"line_number":482,"context_line":"            mock.patch.object(sys, \"exit\"),"},{"line_number":483,"context_line":"            mock.patch.object(utils, \"execute\"),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_88b84412","line":480,"in_reply_to":"1ae5cdf2_dbb30108","updated":"2014-06-06 07:29:58.000000000","message":"Done","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"6c7d6f76a31fd109a7ee4d93998aeec7937a048d","unresolved":false,"context_lines":[{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def test_setup_physical_bridges_using_veth_interco(self):"},{"line_number":479,"context_line":"        with contextlib.nested("},{"line_number":480,"context_line":"            mock.patch.object(self.agent, \"use_veth_interco\", True),"},{"line_number":481,"context_line":"            mock.patch.object(ip_lib, \"device_exists\"),"},{"line_number":482,"context_line":"            mock.patch.object(sys, \"exit\"),"},{"line_number":483,"context_line":"            mock.patch.object(utils, \"execute\"),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_dbb30108","line":480,"in_reply_to":"1ae5cdf2_f50e0e8b","updated":"2014-06-05 11:08:35.000000000","message":"i don\u0027t remember why :)","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"}],"neutron/tests/unit/openvswitch/test_ovs_tunnel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"34f1a6f7ca32f1a515cfbff0a2506d8bc56e8bd4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.MAP_TUN_INT_OFPORT \u003d 33333"},{"line_number":89,"context_line":"        self.MAP_TUN_PHY_OFPORT \u003d 44444"},{"line_number":90,"context_line":"        self.VETH_MTU \u003d None"},{"line_number":91,"context_line":"        self.USE_VETH_INTERCO \u003d False"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.inta \u003d mock.Mock()"},{"line_number":94,"context_line":"        self.intb \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_75df5ed6","line":91,"updated":"2014-06-05 10:24:08.000000000","message":"It is better to define this as a class variable.\n\n  def TunnelTest(....):\n\n      USE_VETH_INTERCO \u003d False\n\n(The existing patterns looks inappropriate.)","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"6c7d6f76a31fd109a7ee4d93998aeec7937a048d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.MAP_TUN_INT_OFPORT \u003d 33333"},{"line_number":89,"context_line":"        self.MAP_TUN_PHY_OFPORT \u003d 44444"},{"line_number":90,"context_line":"        self.VETH_MTU \u003d None"},{"line_number":91,"context_line":"        self.USE_VETH_INTERCO \u003d False"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.inta \u003d mock.Mock()"},{"line_number":94,"context_line":"        self.intb \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_db406109","line":91,"in_reply_to":"1ae5cdf2_75df5ed6","updated":"2014-06-05 11:08:35.000000000","message":"Will do","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2d0023d276ada62f3925934b9d982965095e7b60","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.MAP_TUN_INT_OFPORT \u003d 33333"},{"line_number":89,"context_line":"        self.MAP_TUN_PHY_OFPORT \u003d 44444"},{"line_number":90,"context_line":"        self.VETH_MTU \u003d None"},{"line_number":91,"context_line":"        self.USE_VETH_INTERCO \u003d False"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.inta \u003d mock.Mock()"},{"line_number":94,"context_line":"        self.intb \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_e840e808","line":91,"in_reply_to":"1ae5cdf2_db406109","updated":"2014-06-06 07:29:58.000000000","message":"Done","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"34f1a6f7ca32f1a515cfbff0a2506d8bc56e8bd4","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._verify_mock_calls()"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class TunnelTestUseVethInterco(TunnelTest):"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def setUp(self):"},{"line_number":561,"context_line":"        super(TunnelTestUseVethInterco, self).setUp()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_18c72f97","line":558,"updated":"2014-06-05 10:24:08.000000000","message":"How about define a separate method to define expected calls?","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"6c7d6f76a31fd109a7ee4d93998aeec7937a048d","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._verify_mock_calls()"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class TunnelTestUseVethInterco(TunnelTest):"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def setUp(self):"},{"line_number":561,"context_line":"        super(TunnelTestUseVethInterco, self).setUp()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_bb32b5a4","line":558,"in_reply_to":"1ae5cdf2_18c72f97","updated":"2014-06-05 11:08:35.000000000","message":"will do","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2d0023d276ada62f3925934b9d982965095e7b60","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._verify_mock_calls()"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class TunnelTestUseVethInterco(TunnelTest):"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def setUp(self):"},{"line_number":561,"context_line":"        super(TunnelTestUseVethInterco, self).setUp()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_08443419","line":558,"in_reply_to":"1ae5cdf2_bb32b5a4","updated":"2014-06-06 07:29:58.000000000","message":"Done","commit_id":"6cd4c2ca49b36bc61e5c6e42f38ae1631b567b37"}]}
