)]}'
{"etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":28,"context_line":"#"},{"line_number":29,"context_line":"# WARNING: This option will be deprecated in the Icehouse release, and will"},{"line_number":30,"context_line":"#          be replaced by specifying one or more \u0027tunnel_types\u0027 in the"},{"line_number":31,"context_line":"#          \"agent\" section of the configuration file below."},{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"# enable_tunneling \u003d False"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-properties","patch_set":18,"id":"AAAAP3%2F%2Fz%2BY%3D","line":31,"updated":"2013-07-11 03:08:20.000000000","message":"This warning needs to be reworded since the tunnel_types agent config variable is already implemented, and since tunnel_types is only relevant to the agent. How about something like the following?:\n\nWARNING: This option will be deprecated in the Icehouse release, at which point setting tunnel_type below will be required to enable tunneling.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":28,"context_line":"#"},{"line_number":29,"context_line":"# WARNING: This option will be deprecated in the Icehouse release, and will"},{"line_number":30,"context_line":"#          be replaced by specifying one or more \u0027tunnel_types\u0027 in the"},{"line_number":31,"context_line":"#          \"agent\" section of the configuration file below."},{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"# enable_tunneling \u003d False"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-properties","patch_set":18,"id":"AAAAP3%2F%2Fx3M%3D","line":31,"in_reply_to":"AAAAP3%2F%2Fz%2BY%3D","updated":"2013-07-11 15:52:24.000000000","message":"Done","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"# enable_tunneling \u003d False"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"# (StrOpt) The tunnel type to create for tunnel_networks. If this is set,"},{"line_number":36,"context_line":"# it will cause tunneling to be enabled. If this is not set and the option"},{"line_number":37,"context_line":"# enable_tunneling is set, this will default to \u0027gre\u0027."},{"line_number":38,"context_line":"#"}],"source_content_type":"text/x-properties","patch_set":18,"id":"AAAAP3%2F%2Fz%2Bc%3D","line":35,"updated":"2013-07-11 03:08:20.000000000","message":"The first sentence seems kind of confusing to me. How about something like \"The type of tunnel network, if any, supported by the plugin.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"# enable_tunneling \u003d False"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"# (StrOpt) The tunnel type to create for tunnel_networks. If this is set,"},{"line_number":36,"context_line":"# it will cause tunneling to be enabled. If this is not set and the option"},{"line_number":37,"context_line":"# enable_tunneling is set, this will default to \u0027gre\u0027."},{"line_number":38,"context_line":"#"}],"source_content_type":"text/x-properties","patch_set":18,"id":"AAAAP3%2F%2Fx2Y%3D","line":35,"in_reply_to":"AAAAP3%2F%2Fz%2Bc%3D","updated":"2013-07-11 15:52:24.000000000","message":"Done","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":88,"context_line":"# polling_interval \u003d 2"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# (ListOpt) The types of tenant network tunnels to create. Setting this"},{"line_number":91,"context_line":"# will enable tunneling support. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027"},{"line_number":92,"context_line":"# currently. If this is unset, it will default to [] and disable tunneling"},{"line_number":93,"context_line":"# support in the agent. Note, the agent currently enforces a single value"}],"source_content_type":"text/x-properties","patch_set":18,"id":"AAAAP3%2F%2Fz98%3D","line":90,"updated":"2013-07-11 03:08:20.000000000","message":"I\u0027d replace \"to create\" with \"supported by the agent\" since the agent doesn\u0027t really create the networks or determine their types.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":87,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":88,"context_line":"# polling_interval \u003d 2"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# (ListOpt) The types of tenant network tunnels to create. Setting this"},{"line_number":91,"context_line":"# will enable tunneling support. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027"},{"line_number":92,"context_line":"# currently. If this is unset, it will default to [] and disable tunneling"},{"line_number":93,"context_line":"# support in the agent. Note, the agent currently enforces a single value"}],"source_content_type":"text/x-properties","patch_set":18,"id":"AAAAP3%2F%2Fx2M%3D","line":90,"in_reply_to":"AAAAP3%2F%2Fz98%3D","updated":"2013-07-11 15:52:24.000000000","message":"Done","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"#"},{"line_number":39,"context_line":"# tunnel_type \u003d"},{"line_number":40,"context_line":"# Example: tunnel_type \u003d gre"},{"line_number":41,"context_line":"# Example: tunnel_type \u003d vxlan"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# (ListOpt) Comma-separated list of \u003ctun_min\u003e:\u003ctun_max\u003e tuples"},{"line_number":44,"context_line":"# enumerating ranges of GRE or VXLAN tunnel IDs that are available for"}],"source_content_type":"text/x-properties","patch_set":19,"id":"AAAAP3%2F%2Fvi8%3D","line":41,"updated":"2013-07-12 03:26:21.000000000","message":"if can we use ones in [agent]? it is duplicated.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"#"},{"line_number":39,"context_line":"# tunnel_type \u003d"},{"line_number":40,"context_line":"# Example: tunnel_type \u003d gre"},{"line_number":41,"context_line":"# Example: tunnel_type \u003d vxlan"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# (ListOpt) Comma-separated list of \u003ctun_min\u003e:\u003ctun_max\u003e tuples"},{"line_number":44,"context_line":"# enumerating ranges of GRE or VXLAN tunnel IDs that are available for"}],"source_content_type":"text/x-properties","patch_set":19,"id":"AAAAP3%2F%2Ft%2Fo%3D","line":41,"in_reply_to":"AAAAP3%2F%2Fvi8%3D","updated":"2013-07-12 14:13:25.000000000","message":"We need a separate one in [ovs] and [agent]. The one in [agent] is a ListOpt, while this one is a StrOpt, owing to the fact the OVS plugin supports a single tunnel_type at a time.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":92,"context_line":"# \u0027gre\u0027 or \u0027vxlan\u0027 currently. If this is unset, it will default to [] and"},{"line_number":93,"context_line":"# disable tunneling support in the agent. Note, the agent currently enforces"},{"line_number":94,"context_line":"# a single value for tunnel_types until the ML2 support for multiple"},{"line_number":95,"context_line":"# tunnel_types is merged."},{"line_number":96,"context_line":"#"},{"line_number":97,"context_line":"# tunnel_types \u003d"},{"line_number":98,"context_line":"# Example: tunnel_types \u003d gre"}],"source_content_type":"text/x-properties","patch_set":19,"id":"AAAAP3%2F%2Fvjw%3D","line":95,"updated":"2013-07-12 03:26:21.000000000","message":"when OVS plugin is used, all of the agents must use the same tunnel type as ovs plugin as defined in [ovs] section. ML2 plugin is needed to support multiple tunnel types. right?\nif it is, please write the note as such.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":92,"context_line":"# \u0027gre\u0027 or \u0027vxlan\u0027 currently. If this is unset, it will default to [] and"},{"line_number":93,"context_line":"# disable tunneling support in the agent. Note, the agent currently enforces"},{"line_number":94,"context_line":"# a single value for tunnel_types until the ML2 support for multiple"},{"line_number":95,"context_line":"# tunnel_types is merged."},{"line_number":96,"context_line":"#"},{"line_number":97,"context_line":"# tunnel_types \u003d"},{"line_number":98,"context_line":"# Example: tunnel_types \u003d gre"}],"source_content_type":"text/x-properties","patch_set":19,"id":"AAAAP3%2F%2Ft%2Bs%3D","line":95,"in_reply_to":"AAAAP3%2F%2Fvjw%3D","updated":"2013-07-12 14:13:25.000000000","message":"Done","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"}],"etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":108,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":109,"context_line":"# this is unset, it will default to \u0027None\u0027. Currently, only a single"},{"line_number":110,"context_line":"# tunnel_types is supported."},{"line_number":111,"context_line":"#"},{"line_number":112,"context_line":"# tunnel_types \u003d"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAPn%2F%2F%2BtU%3D","line":109,"updated":"2013-06-16 04:25:48.000000000","message":"empty or an empty list looks better than None since it is ListOpt.","commit_id":"c24aca652a5e6f797abfffbb4de3d269db1dfe04"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":112,"context_line":"# tunnel_types \u003d"},{"line_number":113,"context_line":"# Example: tunnel_types \u003d gre"},{"line_number":114,"context_line":"# Example: tunnel_types \u003d vxlan"},{"line_number":115,"context_line":"# Example: tunnel_types \u003d vxlan:gre"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"# (IntOpt) The port number to utilize if tunnel_types includes \u0027vxlan\u0027. By"},{"line_number":118,"context_line":"# default, this will make use of the Open vSwitch default value of \u00274789\u0027 if"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAPn%2F%2F%2Btc%3D","line":115,"updated":"2013-06-16 04:25:48.000000000","message":"element separator is a comma.","commit_id":"c24aca652a5e6f797abfffbb4de3d269db1dfe04"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"99952a1fc8cd54b60c8084deac85a87bb6ebdc06","unresolved":false,"context_lines":[{"line_number":112,"context_line":"# tunnel_types \u003d"},{"line_number":113,"context_line":"# Example: tunnel_types \u003d gre"},{"line_number":114,"context_line":"# Example: tunnel_types \u003d vxlan"},{"line_number":115,"context_line":"# Example: tunnel_types \u003d vxlan:gre"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"# (IntOpt) The port number to utilize if tunnel_types includes \u0027vxlan\u0027. By"},{"line_number":118,"context_line":"# default, this will make use of the Open vSwitch default value of \u00274789\u0027 if"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAPn%2F%2F9RQ%3D","line":115,"in_reply_to":"AAAAPn%2F%2F%2Btc%3D","updated":"2013-06-17 13:20:18.000000000","message":"Done","commit_id":"c24aca652a5e6f797abfffbb4de3d269db1dfe04"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":108,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":109,"context_line":"# this is unset, it will default to \u0027None\u0027. Currently, only a single"},{"line_number":110,"context_line":"# tunnel_types is supported."},{"line_number":111,"context_line":"#"},{"line_number":112,"context_line":"# tunnel_types \u003d"}],"source_content_type":"text/x-properties","patch_set":5,"id":"AAAAPn%2F%2FyOg%3D","line":109,"updated":"2013-06-21 11:17:31.000000000","message":"It\u0027s now defaulting to []","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":108,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":109,"context_line":"# this is unset, it will default to \u0027None\u0027. Currently, only a single"},{"line_number":110,"context_line":"# tunnel_types is supported."},{"line_number":111,"context_line":"#"},{"line_number":112,"context_line":"# tunnel_types \u003d"}],"source_content_type":"text/x-properties","patch_set":5,"id":"AAAAPn%2F%2Fx4Q%3D","line":109,"in_reply_to":"AAAAPn%2F%2FyOg%3D","updated":"2013-06-21 13:15:59.000000000","message":"Done","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":79,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":80,"context_line":"# polling_interval \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":83,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":84,"context_line":"# this is unset, it will default to []. Currently, only a single"},{"line_number":85,"context_line":"# tunnel_types is supported."}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2Fblg%3D","line":82,"updated":"2013-07-02 04:45:32.000000000","message":"the type -\u003e types?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":79,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":80,"context_line":"# polling_interval \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":83,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":84,"context_line":"# this is unset, it will default to []. Currently, only a single"},{"line_number":85,"context_line":"# tunnel_types is supported."}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FaVY%3D","line":82,"in_reply_to":"AAAAPn%2F%2Fblg%3D","updated":"2013-07-02 14:31:06.000000000","message":"Done","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"# polling_interval \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":83,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":84,"context_line":"# this is unset, it will default to []. Currently, only a single"},{"line_number":85,"context_line":"# tunnel_types is supported."},{"line_number":86,"context_line":"#"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FblY%3D","line":83,"updated":"2013-07-02 04:45:32.000000000","message":"enabled? do we still need this concept since we have removed the enable_tunneling?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"# polling_interval \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":83,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":84,"context_line":"# this is unset, it will default to []. Currently, only a single"},{"line_number":85,"context_line":"# tunnel_types is supported."},{"line_number":86,"context_line":"#"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FaVM%3D","line":83,"in_reply_to":"AAAAPn%2F%2FblY%3D","updated":"2013-07-02 14:31:06.000000000","message":"Will reword this, good catch!","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":82,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":83,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":84,"context_line":"# this is unset, it will default to []. Currently, only a single"},{"line_number":85,"context_line":"# tunnel_types is supported."},{"line_number":86,"context_line":"#"},{"line_number":87,"context_line":"# tunnel_types \u003d"},{"line_number":88,"context_line":"# Example: tunnel_types \u003d gre"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FblI%3D","line":85,"updated":"2013-07-02 04:45:32.000000000","message":"isn\u0027t supporting multipe tunnel_types the behaviour of ListOpt?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":82,"context_line":"# (ListOpt) The type of tenant network tunnels to utilize when tunneling"},{"line_number":83,"context_line":"# is enabled. This can be set to either \u0027gre\u0027 or \u0027vxlan\u0027 currently. If"},{"line_number":84,"context_line":"# this is unset, it will default to []. Currently, only a single"},{"line_number":85,"context_line":"# tunnel_types is supported."},{"line_number":86,"context_line":"#"},{"line_number":87,"context_line":"# tunnel_types \u003d"},{"line_number":88,"context_line":"# Example: tunnel_types \u003d gre"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FaU8%3D","line":85,"in_reply_to":"AAAAPn%2F%2FblI%3D","updated":"2013-07-02 14:31:06.000000000","message":"The option type supports this, but for now the agent enforces a single value in tunnel_types. I agree this is confusing, and the ML2 work will rectify this.","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":87,"context_line":"# tunnel_types \u003d"},{"line_number":88,"context_line":"# Example: tunnel_types \u003d gre"},{"line_number":89,"context_line":"# Example: tunnel_types \u003d vxlan"},{"line_number":90,"context_line":"# Example: tunnel_types \u003d vxlan,gre"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"# (IntOpt) The port number to utilize if tunnel_types includes \u0027vxlan\u0027. By"},{"line_number":93,"context_line":"# default, this will make use of the Open vSwitch default value of \u00274789\u0027 if"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FblE%3D","line":90,"updated":"2013-07-02 04:45:32.000000000","message":"we also need to say: empty tunnel_types will disable the tunnel support. ?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":87,"context_line":"# tunnel_types \u003d"},{"line_number":88,"context_line":"# Example: tunnel_types \u003d gre"},{"line_number":89,"context_line":"# Example: tunnel_types \u003d vxlan"},{"line_number":90,"context_line":"# Example: tunnel_types \u003d vxlan,gre"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"# (IntOpt) The port number to utilize if tunnel_types includes \u0027vxlan\u0027. By"},{"line_number":93,"context_line":"# default, this will make use of the Open vSwitch default value of \u00274789\u0027 if"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAPn%2F%2FaU4%3D","line":90,"in_reply_to":"AAAAPn%2F%2FblE%3D","updated":"2013-07-02 14:31:06.000000000","message":"Nice catch! Fixing this.","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027)"},{"line_number":294,"context_line":"        if not tunnel_type:"},{"line_number":295,"context_line":"            LOG.error(_(\"No tunnel_type specified, cannot create tunnels\"))"},{"line_number":296,"context_line":"            return"},{"line_number":297,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":298,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAP3%2F%2F0AM%3D","line":295,"updated":"2013-07-11 03:08:20.000000000","message":"Did we want the agent to default to the first item in tunnel_types so that a new agent would work with an old server that doesn\u0027t send tunnel_type? Or is that not workable?","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":292,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027)"},{"line_number":294,"context_line":"        if not tunnel_type:"},{"line_number":295,"context_line":"            LOG.error(_(\"No tunnel_type specified, cannot create tunnels\"))"},{"line_number":296,"context_line":"            return"},{"line_number":297,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":298,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAP3%2F%2Fz4Q%3D","line":295,"in_reply_to":"AAAAP3%2F%2F0AM%3D","updated":"2013-07-11 15:52:24.000000000","message":"I think Yong had previously expressed some concern about this, because we could hit a case where the server and agent may not support the same tunnel_types.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":705,"context_line":"            for tunnel in tunnels:"},{"line_number":706,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":707,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"},{"line_number":708,"context_line":"                    if not tunnel_type:"},{"line_number":709,"context_line":"                        msg \u003d _(\u0027No tunnel_type specified, cannot add tunnel \u0027"},{"line_number":710,"context_line":"                                \u0027port\u0027)"},{"line_number":711,"context_line":"                        raise ValueError(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAP3%2F%2F0AA%3D","line":708,"updated":"2013-07-11 03:08:20.000000000","message":"Same question regarding compatibility with old servers here.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":705,"context_line":"            for tunnel in tunnels:"},{"line_number":706,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":707,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"},{"line_number":708,"context_line":"                    if not tunnel_type:"},{"line_number":709,"context_line":"                        msg \u003d _(\u0027No tunnel_type specified, cannot add tunnel \u0027"},{"line_number":710,"context_line":"                                \u0027port\u0027)"},{"line_number":711,"context_line":"                        raise ValueError(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAP3%2F%2Fx1c%3D","line":708,"in_reply_to":"AAAAP3%2F%2F0AA%3D","updated":"2013-07-11 15:52:24.000000000","message":"Same reply here as the previous one.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":704,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":705,"context_line":"            for tunnel in tunnels:"},{"line_number":706,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":707,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"},{"line_number":708,"context_line":"                    if not tunnel_type:"},{"line_number":709,"context_line":"                        msg \u003d _(\u0027No tunnel_type specified, cannot add tunnel \u0027"},{"line_number":710,"context_line":"                                \u0027port\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FviM%3D","line":707,"updated":"2013-07-12 03:26:21.000000000","message":"maybe tunnel.get(\u0027tunnel_type\u0027) is safer.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":704,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":705,"context_line":"            for tunnel in tunnels:"},{"line_number":706,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":707,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"},{"line_number":708,"context_line":"                    if not tunnel_type:"},{"line_number":709,"context_line":"                        msg \u003d _(\u0027No tunnel_type specified, cannot add tunnel \u0027"},{"line_number":710,"context_line":"                                \u0027port\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FuA8%3D","line":707,"in_reply_to":"AAAAP3%2F%2FviM%3D","updated":"2013-07-12 14:13:25.000000000","message":"Done","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":708,"context_line":"                    if not tunnel_type:"},{"line_number":709,"context_line":"                        msg \u003d _(\u0027No tunnel_type specified, cannot add tunnel \u0027"},{"line_number":710,"context_line":"                                \u0027port\u0027)"},{"line_number":711,"context_line":"                        raise ValueError(msg)"},{"line_number":712,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":713,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":714,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FviY%3D","line":711,"updated":"2013-07-12 03:26:21.000000000","message":"how about just ignoring the tunnel endpoint?  we do the same thing at line 294.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":708,"context_line":"                    if not tunnel_type:"},{"line_number":709,"context_line":"                        msg \u003d _(\u0027No tunnel_type specified, cannot add tunnel \u0027"},{"line_number":710,"context_line":"                                \u0027port\u0027)"},{"line_number":711,"context_line":"                        raise ValueError(msg)"},{"line_number":712,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":713,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":714,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FuAM%3D","line":711,"in_reply_to":"AAAAP3%2F%2FviY%3D","updated":"2013-07-12 14:13:25.000000000","message":"Done","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":826,"context_line":""},{"line_number":827,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":828,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":829,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"    # Verify the tunnel_types specified are valid"},{"line_number":832,"context_line":"    for tun in kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Fvis%3D","line":829,"updated":"2013-07-12 03:26:21.000000000","message":"we can use a common code to do the same logic in both plugin and agent.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":826,"context_line":""},{"line_number":827,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":828,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":829,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"    # Verify the tunnel_types specified are valid"},{"line_number":832,"context_line":"    for tun in kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Ft%2F8%3D","line":829,"in_reply_to":"AAAAP3%2F%2Fvis%3D","updated":"2013-07-12 14:13:25.000000000","message":"I don\u0027t understand this comment, can you elaborate further?","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":790,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":791,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":792,"context_line":"                          min_required_version)"},{"line_number":793,"context_line":"                sys.exit(1)"},{"line_number":794,"context_line":"        else:"},{"line_number":795,"context_line":"            LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":796,"context_line":"                          \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FrZg%3D","line":793,"updated":"2013-07-13 17:54:07.000000000","message":"sys.exit() can break test runner... please use:\n\nraise SystemExit(1)","commit_id":"8e1a285e2f129bd6f80b6bc28f4265c34d1dd9d2"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":790,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":791,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":792,"context_line":"                          min_required_version)"},{"line_number":793,"context_line":"                sys.exit(1)"},{"line_number":794,"context_line":"        else:"},{"line_number":795,"context_line":"            LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":796,"context_line":"                          \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FrOw%3D","line":793,"in_reply_to":"AAAAP3%2F%2FrZg%3D","updated":"2013-07-13 23:22:01.000000000","message":"Done","commit_id":"8e1a285e2f129bd6f80b6bc28f4265c34d1dd9d2"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":800,"context_line":"        LOG.warning(_(\u0027Unable to determine Open vSwitch version. Please \u0027"},{"line_number":801,"context_line":"                      \u0027ensure that its version is %s or newer to use VXLAN \u0027"},{"line_number":802,"context_line":"                      \u0027tunnels with OVS.\u0027), min_required_version)"},{"line_number":803,"context_line":"        sys.exit(1)"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"def create_agent_config_map(config):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FrZc%3D","line":803,"updated":"2013-07-13 17:54:07.000000000","message":"same as above","commit_id":"8e1a285e2f129bd6f80b6bc28f4265c34d1dd9d2"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":800,"context_line":"        LOG.warning(_(\u0027Unable to determine Open vSwitch version. Please \u0027"},{"line_number":801,"context_line":"                      \u0027ensure that its version is %s or newer to use VXLAN \u0027"},{"line_number":802,"context_line":"                      \u0027tunnels with OVS.\u0027), min_required_version)"},{"line_number":803,"context_line":"        sys.exit(1)"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"def create_agent_config_map(config):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FrOs%3D","line":803,"in_reply_to":"AAAAP3%2F%2FrZc%3D","updated":"2013-07-13 23:22:01.000000000","message":"Done","commit_id":"8e1a285e2f129bd6f80b6bc28f4265c34d1dd9d2"}],"neutron/plugins/openvswitch/common/config.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":64,"context_line":"               help\u003d_(\"The number of seconds the agent will wait between \""},{"line_number":65,"context_line":"                      \"polling for local device changes.\")),"},{"line_number":66,"context_line":"    cfg.ListOpt(\u0027tunnel_types\u0027, default\u003dDEFAULT_TUNNEL_TYPES,"},{"line_number":67,"context_line":"                help\u003d_(\"Network types for agent tunnel networks \""},{"line_number":68,"context_line":"                       \"(gre and/or vxlan)\")),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027vxlan_udp_port\u0027, default\u003dconstants.VXLAN_UDP_PORT,"},{"line_number":70,"context_line":"               help\u003d_(\"The UDP port to use for VXLAN tunnels.\")),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAP3%2F%2Fz8s%3D","line":67,"updated":"2013-07-11 03:08:20.000000000","message":"How about \"Network types supported by the agent ...\" or something like that.","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"               help\u003d_(\"The number of seconds the agent will wait between \""},{"line_number":65,"context_line":"                      \"polling for local device changes.\")),"},{"line_number":66,"context_line":"    cfg.ListOpt(\u0027tunnel_types\u0027, default\u003dDEFAULT_TUNNEL_TYPES,"},{"line_number":67,"context_line":"                help\u003d_(\"Network types for agent tunnel networks \""},{"line_number":68,"context_line":"                       \"(gre and/or vxlan)\")),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027vxlan_udp_port\u0027, default\u003dconstants.VXLAN_UDP_PORT,"},{"line_number":70,"context_line":"               help\u003d_(\"The UDP port to use for VXLAN tunnels.\")),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAP3%2F%2Fx1g%3D","line":67,"in_reply_to":"AAAAP3%2F%2Fz8s%3D","updated":"2013-07-11 15:52:24.000000000","message":"Done","commit_id":"390343072c8aba2a3fcff3ce9f56e233887fb411"}],"neutron/plugins/openvswitch/ovs_neutron_plugin.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, cfg.CONF.OVS.tunnel_type)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Fvi4%3D","line":164,"updated":"2013-07-12 03:26:21.000000000","message":"use plugin.tunnel_type","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, cfg.CONF.OVS.tunnel_type)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Ft3k%3D","line":164,"in_reply_to":"AAAAP3%2F%2Fvi4%3D","updated":"2013-07-12 14:45:50.000000000","message":"Actually, I don\u0027t understand this comment either, there is no \"plugin\" data member in the RPC class here.","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, cfg.CONF.OVS.tunnel_type)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FuBA%3D","line":164,"in_reply_to":"AAAAP3%2F%2Fvi4%3D","updated":"2013-07-12 14:13:25.000000000","message":"Done","commit_id":"2b2965c2cc09bb8816b5d35de29de5ce9885ed85"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":6670,"name":"Amir Sadoughi","email":"amir.sadoughi@rackspace.com","username":"amir-sadoughi"},"change_message_id":"52886ce3284ad7cb1fd0d15aaf44a84bcfad0438","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003d[]):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F%2F%2Bk%3D","line":152,"updated":"2013-06-14 20:33:53.000000000","message":"Using None instead of an empty list is preferable and less bug-prone.","commit_id":"9854b979f8a79ea26f75e42ff8d6ede163e640af"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"99952a1fc8cd54b60c8084deac85a87bb6ebdc06","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003d[]):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F%2Buw%3D","line":152,"in_reply_to":"AAAAPn%2F%2F%2B18%3D","updated":"2013-06-16 02:39:40.000000000","message":"Yes, changing to \"None\" per comments from Amir.","commit_id":"9854b979f8a79ea26f75e42ff8d6ede163e640af"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"99952a1fc8cd54b60c8084deac85a87bb6ebdc06","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003d[]):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F%2FYo%3D","line":152,"in_reply_to":"AAAAPn%2F%2F%2F%2Bk%3D","updated":"2013-06-15 01:46:44.000000000","message":"Thanks for the pointer Amir, will make this change. Waiting to get some feedback from Bob as well, then will resubmit with this folded in.","commit_id":"9854b979f8a79ea26f75e42ff8d6ede163e640af"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003d[]):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F%2B18%3D","line":152,"in_reply_to":"AAAAPn%2F%2F%2FYo%3D","updated":"2013-06-15 19:16:26.000000000","message":"Should it be None or [\u0027gre\u0027]?","commit_id":"9854b979f8a79ea26f75e42ff8d6ede163e640af"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        self.polling_interval \u003d polling_interval"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if len(tunnel_types):"},{"line_number":176,"context_line":"            # create_agent_cfg_map() will catch the case of tunnel_types being"},{"line_number":177,"context_line":"            # greater than one. For now, save the single tunnel_type here."},{"line_number":178,"context_line":"            self.tunnel_type \u003d tunnel_types[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F%2B2I%3D","line":175,"updated":"2013-06-15 19:16:26.000000000","message":"if tunnel_types:","commit_id":"9854b979f8a79ea26f75e42ff8d6ede163e640af"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"99952a1fc8cd54b60c8084deac85a87bb6ebdc06","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        self.polling_interval \u003d polling_interval"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if len(tunnel_types):"},{"line_number":176,"context_line":"            # create_agent_cfg_map() will catch the case of tunnel_types being"},{"line_number":177,"context_line":"            # greater than one. For now, save the single tunnel_type here."},{"line_number":178,"context_line":"            self.tunnel_type \u003d tunnel_types[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F%2Bu0%3D","line":175,"in_reply_to":"AAAAPn%2F%2F%2B2I%3D","updated":"2013-06-16 02:39:40.000000000","message":"Done","commit_id":"9854b979f8a79ea26f75e42ff8d6ede163e640af"},{"author":{"_account_id":6670,"name":"Amir Sadoughi","email":"amir.sadoughi@rackspace.com","username":"amir-sadoughi"},"unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003dNone):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F%2BXo%3D","line":152,"updated":"2013-06-16 19:35:11.000000000","message":"Looks good. For clarity, I was trying to avoid the following type of bug in the future where an append is invoked:\n\nclass A:\n    def __init__(self, l\u003d[]):\n        l.append(0)\n        self.l \u003d l\n\nprint A().l, A().l\n\n\u003e\u003e [0] [0, 0]\n\nIf you would still like to default to a list, you could do:\n\nclass B:\n    def __init__(self, l\u003dNone):\n        if l is None:\n            l \u003d []\n        l.append(0)\n        self.l \u003d l\n\nprint B().l, B().l\n\n\u003e\u003e [0] [0]","commit_id":"c24aca652a5e6f797abfffbb4de3d269db1dfe04"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003dNone):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F9PM%3D","line":152,"updated":"2013-06-17 13:34:09.000000000","message":"Internally, should we assign tunnel_types to [gre], if None, so that there is no change to the clients (e.g. no need to specify in test functions).","commit_id":"ead1a99ee1308584b9f2a43f613ba6559a2ff511"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"99952a1fc8cd54b60c8084deac85a87bb6ebdc06","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"},{"line_number":152,"context_line":"                 polling_interval, tunnel_types\u003dNone):"},{"line_number":153,"context_line":"        \u0027\u0027\u0027Constructor."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        :param integ_br: name of the integration bridge."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F8aU%3D","line":152,"in_reply_to":"AAAAPn%2F%2F9PM%3D","updated":"2013-06-17 18:17:16.000000000","message":"No, we don\u0027t want to do that, because we\u0027ve removed the checking for enable_tunneling and instead are keying off of this value being set to check for tunneling.","commit_id":"ead1a99ee1308584b9f2a43f613ba6559a2ff511"},{"author":{"_account_id":6820,"name":"Francois Eleouet","email":"f.eleouet@gmail.com","username":"fanchon"},"unresolved":false,"context_lines":[{"line_number":195,"context_line":"            \u0027topic\u0027: q_const.L2_AGENT_TOPIC,"},{"line_number":196,"context_line":"            \u0027configurations\u0027: bridge_mappings,"},{"line_number":197,"context_line":"            \u0027agent_type\u0027: q_const.AGENT_TYPE_OVS,"},{"line_number":198,"context_line":"            \u0027tunnel_types\u0027: tunnel_types,"},{"line_number":199,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":200,"context_line":"        self.setup_rpc()"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F3BI%3D","line":198,"updated":"2013-06-19 16:30:20.000000000","message":"Shouldn\u0027t it be stored in configurations dict?\n\nOn the one hand, tunnel_type will be meaningless regarding dhcp and l3 agents in agent_db\n\nOn the other, storing dict in DB is not great (except, maybe, if stored values are only read and not used for querying)\n\nI had the exact same question (but no obvious answer) to store local_ip as part of initial work for l2-population:\nhttps://github.com/zioc/quantum/commit/51d22656a001b2f771806f68bbbc32df05cf2069#L2L191","commit_id":"ead1a99ee1308584b9f2a43f613ba6559a2ff511"},{"author":{"_account_id":6820,"name":"Francois Eleouet","email":"f.eleouet@gmail.com","username":"fanchon"},"unresolved":false,"context_lines":[{"line_number":784,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":785,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":786,"context_line":"                          min_required_version)"},{"line_number":787,"context_line":"                sys.exti(1)"},{"line_number":788,"context_line":"            else:"},{"line_number":789,"context_line":"                LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":790,"context_line":"                              \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F3DQ%3D","line":787,"updated":"2013-06-19 16:30:20.000000000","message":"Typo in your previous commit","commit_id":"ead1a99ee1308584b9f2a43f613ba6559a2ff511"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"99952a1fc8cd54b60c8084deac85a87bb6ebdc06","unresolved":false,"context_lines":[{"line_number":784,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":785,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":786,"context_line":"                          min_required_version)"},{"line_number":787,"context_line":"                sys.exti(1)"},{"line_number":788,"context_line":"            else:"},{"line_number":789,"context_line":"                LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":790,"context_line":"                              \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F290%3D","line":787,"in_reply_to":"AAAAPn%2F%2F3DQ%3D","updated":"2013-06-19 16:44:28.000000000","message":"Done","commit_id":"ead1a99ee1308584b9f2a43f613ba6559a2ff511"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c6e583145f4498dbbf1f118f2d993da5bd0ad5a7","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            return"},{"line_number":291,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":292,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027)"},{"line_number":294,"context_line":"        if not tunnel_type:"},{"line_number":295,"context_line":"            for tunnel in self.tunnel_types:"},{"line_number":296,"context_line":"                # If no tunnel specified, use the first one from the"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F0iw%3D","line":293,"updated":"2013-06-20 13:12:21.000000000","message":"I think you can do this instead of lines 293-299:\n\n    tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types.itervalues().next()\n\nProbably a good idea to keep the comment.","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":290,"context_line":"            return"},{"line_number":291,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":292,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027)"},{"line_number":294,"context_line":"        if not tunnel_type:"},{"line_number":295,"context_line":"            for tunnel in self.tunnel_types:"},{"line_number":296,"context_line":"                # If no tunnel specified, use the first one from the"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fzhw%3D","line":293,"in_reply_to":"AAAAPn%2F%2F0iw%3D","updated":"2013-06-20 20:22:12.000000000","message":"Done","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":297,"context_line":"                # configuration file"},{"line_number":298,"context_line":"                tunnel_type \u003d tunnel"},{"line_number":299,"context_line":"                break"},{"line_number":300,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":301,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":302,"context_line":"            return"},{"line_number":303,"context_line":"        if tunnel_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F0nI%3D","line":300,"updated":"2013-06-20 12:34:43.000000000","message":"This could be in an elsif clause, because if there is no tunnel_type above it will be one from the config.","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":297,"context_line":"                # configuration file"},{"line_number":298,"context_line":"                tunnel_type \u003d tunnel"},{"line_number":299,"context_line":"                break"},{"line_number":300,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":301,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":302,"context_line":"            return"},{"line_number":303,"context_line":"        if tunnel_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fzhs%3D","line":300,"in_reply_to":"AAAAPn%2F%2F0nI%3D","updated":"2013-06-20 20:22:12.000000000","message":"Done","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":707,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":708,"context_line":"            for tunnel in tunnels:"},{"line_number":709,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":710,"context_line":"                    if not tunnel[\u0027tunnel_type\u0027]:"},{"line_number":711,"context_line":"                        # If not specified, grab the first tunnel_type from the"},{"line_number":712,"context_line":"                        # configuration file."},{"line_number":713,"context_line":"                        for tunnel in self.tunnel_types:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F0m4%3D","line":710,"updated":"2013-06-20 12:34:43.000000000","message":"This logic appears twice. Put in a helper function?","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":707,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":708,"context_line":"            for tunnel in tunnels:"},{"line_number":709,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":710,"context_line":"                    if not tunnel[\u0027tunnel_type\u0027]:"},{"line_number":711,"context_line":"                        # If not specified, grab the first tunnel_type from the"},{"line_number":712,"context_line":"                        # configuration file."},{"line_number":713,"context_line":"                        for tunnel in self.tunnel_types:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2FzhM%3D","line":710,"in_reply_to":"AAAAPn%2F%2F0ig%3D","updated":"2013-06-20 20:22:12.000000000","message":"Done","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c6e583145f4498dbbf1f118f2d993da5bd0ad5a7","unresolved":false,"context_lines":[{"line_number":707,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":708,"context_line":"            for tunnel in tunnels:"},{"line_number":709,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":710,"context_line":"                    if not tunnel[\u0027tunnel_type\u0027]:"},{"line_number":711,"context_line":"                        # If not specified, grab the first tunnel_type from the"},{"line_number":712,"context_line":"                        # configuration file."},{"line_number":713,"context_line":"                        for tunnel in self.tunnel_types:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F0ig%3D","line":710,"in_reply_to":"AAAAPn%2F%2F0m4%3D","updated":"2013-06-20 13:12:21.000000000","message":"See my comment at line 293.","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c6e583145f4498dbbf1f118f2d993da5bd0ad5a7","unresolved":false,"context_lines":[{"line_number":711,"context_line":"                        # If not specified, grab the first tunnel_type from the"},{"line_number":712,"context_line":"                        # configuration file."},{"line_number":713,"context_line":"                        for tunnel in self.tunnel_types:"},{"line_number":714,"context_line":"                            tunnel_type \u003d tunnel"},{"line_number":715,"context_line":"                            break"},{"line_number":716,"context_line":"                    else:"},{"line_number":717,"context_line":"                        tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F0kQ%3D","line":714,"updated":"2013-06-20 13:12:21.000000000","message":"This tunnel shadows the outer tunnel. Better to pick a different name for the loop variable here.","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":715,"context_line":"                            break"},{"line_number":716,"context_line":"                    else:"},{"line_number":717,"context_line":"                        tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"},{"line_number":718,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel[\u0027tunnel_type\u0027], tunnel[\u0027id\u0027])"},{"line_number":719,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":720,"context_line":"                                                tunnel_type,"},{"line_number":721,"context_line":"                                                self.vxlan_udp_port)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F0oE%3D","line":718,"updated":"2013-06-20 12:34:43.000000000","message":"Shouldn\u0027t this be tunnel_type, instead of tunnel[\u0027tunnel_type\u0027]?","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":715,"context_line":"                            break"},{"line_number":716,"context_line":"                    else:"},{"line_number":717,"context_line":"                        tunnel_type \u003d tunnel[\u0027tunnel_type\u0027]"},{"line_number":718,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel[\u0027tunnel_type\u0027], tunnel[\u0027id\u0027])"},{"line_number":719,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":720,"context_line":"                                                tunnel_type,"},{"line_number":721,"context_line":"                                                self.vxlan_udp_port)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fzg0%3D","line":718,"in_reply_to":"AAAAPn%2F%2F0oE%3D","updated":"2013-06-20 20:22:12.000000000","message":"Done","commit_id":"28b9c3941b52da7a53840b5c52a0373316931126"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":776,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":777,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":778,"context_line":"                          min_required_version)"},{"line_number":779,"context_line":"                sys.exti(1)"},{"line_number":780,"context_line":"            else:"},{"line_number":781,"context_line":"                LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":782,"context_line":"                              \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FyOE%3D","side":"PARENT","line":779,"updated":"2013-06-21 11:17:31.000000000","message":"Oh, my goodness!!!!","commit_id":"b1858b4e8c85b277aa9395a010c3138f3f9fc3d5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":188,"context_line":"            \u0027topic\u0027: q_const.L2_AGENT_TOPIC,"},{"line_number":189,"context_line":"            \u0027configurations\u0027: bridge_mappings,"},{"line_number":190,"context_line":"            \u0027agent_type\u0027: q_const.AGENT_TYPE_OVS,"},{"line_number":191,"context_line":"            \u0027tunnel_types\u0027: tunnel_types,"},{"line_number":192,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":193,"context_line":"        self.setup_rpc()"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FyMo%3D","line":191,"updated":"2013-06-21 11:17:31.000000000","message":"This change is acceptable as this bit of information in the agent state is not used at all at the moment","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":821,"context_line":"    )"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        if not kwargs[\u0027local_ip\u0027]:"},{"line_number":825,"context_line":"            msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"},{"line_number":826,"context_line":"                    \u0027local_ip.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FyNg%3D","line":823,"updated":"2013-06-21 11:17:31.000000000","message":"Is this true for all typs of tunnels (I guess so), or should we check for GRE, VxLAN?","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":821,"context_line":"    )"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        if not kwargs[\u0027local_ip\u0027]:"},{"line_number":825,"context_line":"            msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"},{"line_number":826,"context_line":"                    \u0027local_ip.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fx3k%3D","line":823,"in_reply_to":"AAAAPn%2F%2FyNg%3D","updated":"2013-06-21 13:15:59.000000000","message":"This is a very valid point Salvatore! For example, when we introduce LISP here, it may not be a requirement to have remote IP. I\u0027ll add a check for GRE and VXLAN now to plan for that.","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":776,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":777,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":778,"context_line":"                          min_required_version)"},{"line_number":779,"context_line":"                sys.exti(1)"},{"line_number":780,"context_line":"            else:"},{"line_number":781,"context_line":"                LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":782,"context_line":"                              \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FwVA%3D","side":"PARENT","line":779,"updated":"2013-06-22 01:07:46.000000000","message":"This highlights the fact that this code path is not covered by any unit test.","commit_id":"dffb130a4d23aa8e584f6a16707d30c6693e3736"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":776,"context_line":"                            \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":777,"context_line":"                            \u0027the OVS version is %s or newer!\u0027),"},{"line_number":778,"context_line":"                          min_required_version)"},{"line_number":779,"context_line":"                sys.exti(1)"},{"line_number":780,"context_line":"            else:"},{"line_number":781,"context_line":"                LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":782,"context_line":"                              \u0027please ensure your Open vSwitch kernel module \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvtE%3D","side":"PARENT","line":779,"in_reply_to":"AAAAPn%2F%2FwVA%3D","updated":"2013-06-23 02:28:10.000000000","message":"Done","commit_id":"dffb130a4d23aa8e584f6a16707d30c6693e3736"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":292,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":293,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":294,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":295,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":296,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":297,"context_line":"            return"},{"line_number":298,"context_line":"        if tunnel_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FwUs%3D","line":295,"updated":"2013-06-22 01:07:46.000000000","message":"This condition is not covered by a unit test.","commit_id":"ce39254499acf2f60d02ae5081c098cc744c302f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":292,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":293,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":294,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":295,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":296,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":297,"context_line":"            return"},{"line_number":298,"context_line":"        if tunnel_ip \u003d\u003d self.local_ip:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvtA%3D","line":295,"in_reply_to":"AAAAPn%2F%2FwUs%3D","updated":"2013-06-23 02:28:10.000000000","message":"I looked at adding a unit test for this, but currently, if you don\u0027t specify \"tunnel_types\" when creating the Agent, \"enable_tunneling\" is not set, so the code won\u0027t even make it here. Maybe this check isn\u0027t even necessary in this case.","commit_id":"ce39254499acf2f60d02ae5081c098cc744c302f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":821,"context_line":"    )"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        # GRE and VXLAN tunnels require a local_ip to be set"},{"line_number":825,"context_line":"        for tunnel in kwargs[\u0027tunnel_types\u0027]:"},{"line_number":826,"context_line":"            if ((tunnel in [constants.TYPE_GRE, constants.TYPE_VXLAN])"},{"line_number":827,"context_line":"                and not kwargs[\u0027local_ip\u0027]):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FvsQ%3D","line":824,"updated":"2013-06-23 03:00:29.000000000","message":"We also need to check that each tunnel_type is a valid type.","commit_id":"d176c68a9dfa5a37c253c50a2a5bcb04af82eaf8"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":821,"context_line":"    )"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        # GRE and VXLAN tunnels require a local_ip to be set"},{"line_number":825,"context_line":"        for tunnel in kwargs[\u0027tunnel_types\u0027]:"},{"line_number":826,"context_line":"            if ((tunnel in [constants.TYPE_GRE, constants.TYPE_VXLAN])"},{"line_number":827,"context_line":"                and not kwargs[\u0027local_ip\u0027]):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FvsI%3D","line":824,"in_reply_to":"AAAAPn%2F%2FvsQ%3D","updated":"2013-06-23 03:01:58.000000000","message":"Done, and adding unit tests for the invalid case as well.","commit_id":"d176c68a9dfa5a37c253c50a2a5bcb04af82eaf8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self.enable_tunneling \u003d True"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":181,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FvZg%3D","line":178,"updated":"2013-06-23 15:53:42.000000000","message":"should there not be a local ip per tunnel?\nhow will this work with more than one tunnel type?","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self.enable_tunneling \u003d True"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":181,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FvAU%3D","line":178,"in_reply_to":"AAAAPn%2F%2FvHM%3D","updated":"2013-06-24 05:38:25.000000000","message":"ok, understood.\ni was thinking that maybe port X would have a GRE tunnel and port Y a VXLAN tunnel. Hence the questions about the IP\u0027s.\nIn addition to that the GRE tunnels could also be on different networks if there is more than one GRE tunnel. \nMaybe I have just misunderstood the use case.","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self.enable_tunneling \u003d True"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":181,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FvHM%3D","line":178,"in_reply_to":"AAAAPn%2F%2FvKg%3D","updated":"2013-06-24 02:32:38.000000000","message":"I agree with Kyle.","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self.enable_tunneling \u003d True"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":181,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FvKg%3D","line":178,"in_reply_to":"AAAAPn%2F%2FvZg%3D","updated":"2013-06-24 01:09:08.000000000","message":"Gary, each tunnel_type uses a different TCP or UDP port, so the same IP is used for all tunnel_types, and there is no protocol conflict.","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":181,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":182,"context_line":"        self._check_ovs_version()"},{"line_number":183,"context_line":"        if self.enable_tunneling:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FvHQ%3D","line":180,"updated":"2013-06-24 02:32:38.000000000","message":"The codes in this class expect self.tunnel_types as a list (e.g., _check_ovs_version below), but the default valus of tunnel_types is None. It is better to handle such a case.\n\nActually there is no case where tunnel_types is None since tunnel_types is always passed in the constructor of OVSQuantumAgent (create_agent_config_map always ensures  a list is set to tunnel_types). As a result an error never happens.\nHowever, this behavior depends on the behavior outside of the class and it is better to ensure self.tunnel_types is a list here.\n\nif tunnel_types is None:\n  tunnel_types \u003d None\nself.tunnel_types \u003d tunnel_types","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":181,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":182,"context_line":"        self._check_ovs_version()"},{"line_number":183,"context_line":"        if self.enable_tunneling:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FuNQ%3D","line":180,"in_reply_to":"AAAAPn%2F%2FvHQ%3D","updated":"2013-06-24 16:11:18.000000000","message":"Done","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _check_ovs_version(self):"},{"line_number":201,"context_line":"        for tunnel in self.tunnel_types:"},{"line_number":202,"context_line":"            if tunnel \u003d\u003d constants.TYPE_VXLAN:"},{"line_number":203,"context_line":"                check_ovs_version(constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":204,"context_line":"                                  self.root_helper)"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FvHE%3D","line":202,"updated":"2013-06-24 02:32:38.000000000","message":"L.201-202 can be:\n\nif constants.TYPE_VXLAN in self.tunnel_types:","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _check_ovs_version(self):"},{"line_number":201,"context_line":"        for tunnel in self.tunnel_types:"},{"line_number":202,"context_line":"            if tunnel \u003d\u003d constants.TYPE_VXLAN:"},{"line_number":203,"context_line":"                check_ovs_version(constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":204,"context_line":"                                  self.root_helper)"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FuNg%3D","line":202,"in_reply_to":"AAAAPn%2F%2FvHE%3D","updated":"2013-06-24 16:11:18.000000000","message":"Done","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"unresolved":false,"context_lines":[{"line_number":335,"context_line":"            if self.enable_tunneling:"},{"line_number":336,"context_line":"                # outbound"},{"line_number":337,"context_line":"                self.tun_br.add_flow(priority\u003d4, in_port\u003dself.patch_int_ofport,"},{"line_number":338,"context_line":"                                     dl_vlan\u003dlvid,"},{"line_number":339,"context_line":"                                     actions\u003d\"set_tunnel:%s,normal\" %"},{"line_number":340,"context_line":"                                     segmentation_id)"},{"line_number":341,"context_line":"                # inbound bcast/mcast"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2Fuw4%3D","line":338,"updated":"2013-06-24 09:15:06.000000000","message":"it seems that you may have the same tunnel id for two tunnels (one for GRE and one for VXLan). I didn\u0027t test exactly how OVS will behave in this case but it could result in forwarding traffic in two tunnels. As I did in partial-mesh BP, you may have to specify the exact port-id instead of \"normal\"","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":335,"context_line":"            if self.enable_tunneling:"},{"line_number":336,"context_line":"                # outbound"},{"line_number":337,"context_line":"                self.tun_br.add_flow(priority\u003d4, in_port\u003dself.patch_int_ofport,"},{"line_number":338,"context_line":"                                     dl_vlan\u003dlvid,"},{"line_number":339,"context_line":"                                     actions\u003d\"set_tunnel:%s,normal\" %"},{"line_number":340,"context_line":"                                     segmentation_id)"},{"line_number":341,"context_line":"                # inbound bcast/mcast"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FuIo%3D","line":338,"in_reply_to":"AAAAPn%2F%2Fuw4%3D","updated":"2013-06-24 16:11:18.000000000","message":"Done","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"unresolved":false,"context_lines":[{"line_number":340,"context_line":"                                     segmentation_id)"},{"line_number":341,"context_line":"                # inbound bcast/mcast"},{"line_number":342,"context_line":"                self.tun_br.add_flow("},{"line_number":343,"context_line":"                    priority\u003d3,"},{"line_number":344,"context_line":"                    tun_id\u003dsegmentation_id,"},{"line_number":345,"context_line":"                    dl_dst\u003d\"01:00:00:00:00:00/01:00:00:00:00:00\","},{"line_number":346,"context_line":"                    actions\u003d\"mod_vlan_vid:%s,output:%s\" %"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2Fuw0%3D","line":343,"updated":"2013-06-24 09:15:06.000000000","message":"same thing, you might use the inbound port-id instead of tun-id","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":340,"context_line":"                                     segmentation_id)"},{"line_number":341,"context_line":"                # inbound bcast/mcast"},{"line_number":342,"context_line":"                self.tun_br.add_flow("},{"line_number":343,"context_line":"                    priority\u003d3,"},{"line_number":344,"context_line":"                    tun_id\u003dsegmentation_id,"},{"line_number":345,"context_line":"                    dl_dst\u003d\"01:00:00:00:00:00/01:00:00:00:00:00\","},{"line_number":346,"context_line":"                    actions\u003d\"mod_vlan_vid:%s,output:%s\" %"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FuIc%3D","line":343,"in_reply_to":"AAAAPn%2F%2Fuw0%3D","updated":"2013-06-24 16:11:18.000000000","message":"Done","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"unresolved":false,"context_lines":[{"line_number":704,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":705,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":706,"context_line":"                    # configuration file."},{"line_number":707,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":708,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":709,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":710,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FuvQ%3D","line":707,"updated":"2013-06-24 09:15:06.000000000","message":"you should check that specified tunnel_type is supported by this agent","commit_id":"39009a0339379d1637032dc35b33ac7c494da823"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        if tunnel_types is None:"},{"line_number":181,"context_line":"            tunnel_types \u003d {}"},{"line_number":182,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":183,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":184,"context_line":"        self._check_ovs_version()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fsc0%3D","line":181,"updated":"2013-06-25 04:15:52.000000000","message":"It\u0027s a list, not a dict. It can be done like this instead:\n\n    tunnel_types \u003d tunnel_types or []","commit_id":"3740e3f060d32a90e8103dce7bfaccf76eeb0d38"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        if tunnel_types is None:"},{"line_number":181,"context_line":"            tunnel_types \u003d {}"},{"line_number":182,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":183,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"},{"line_number":184,"context_line":"        self._check_ovs_version()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2FrhY%3D","line":181,"in_reply_to":"AAAAPn%2F%2Fsc0%3D","updated":"2013-06-25 12:57:26.000000000","message":"Done, though I like the explicit \"if\" clause here and will retain it\u0027s structure.","commit_id":"3740e3f060d32a90e8103dce7bfaccf76eeb0d38"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":830,"context_line":""},{"line_number":831,"context_line":"        # GRE and VXLAN tunnels require a local_ip to be set"},{"line_number":832,"context_line":"        for tunnel in kwargs[\u0027tunnel_types\u0027]:"},{"line_number":833,"context_line":"            if ((tunnel in [constants.TYPE_GRE, constants.TYPE_VXLAN])"},{"line_number":834,"context_line":"                and not kwargs[\u0027local_ip\u0027]):"},{"line_number":835,"context_line":"                    msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"},{"line_number":836,"context_line":"                            \u0027local_ip.\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2FnHA%3D","line":833,"updated":"2013-06-26 19:29:34.000000000","message":"Minor coding nit - this if statement could be moved into the for loop on line 826, eliminating the for loop on line 832.","commit_id":"c8f43b81de84d075c7669c5a187f9be6e8fd6951"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":827,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":828,"context_line":"                msg \u003d _(\u0027Invalid tunnel type specificed: %s\u0027), tun"},{"line_number":829,"context_line":"                raise ValueError(msg)"},{"line_number":830,"context_line":"            elif ((tun in [constants.TYPE_GRE, constants.TYPE_VXLAN])"},{"line_number":831,"context_line":"                  and not kwargs[\u0027local_ip\u0027]):"},{"line_number":832,"context_line":"                # GRE and VXLAN tunnels require a local_ip to be set"},{"line_number":833,"context_line":"                msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2Fho0%3D","line":830,"updated":"2013-06-28 14:48:04.000000000","message":"nit: doesn\u0027t need to be an elif, due to the raise. Can just be an if.","commit_id":"36fba651c99bf30df51585057e49ca936663a608"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":827,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":828,"context_line":"                msg \u003d _(\u0027Invalid tunnel type specificed: %s\u0027), tun"},{"line_number":829,"context_line":"                raise ValueError(msg)"},{"line_number":830,"context_line":"            elif ((tun in [constants.TYPE_GRE, constants.TYPE_VXLAN])"},{"line_number":831,"context_line":"                  and not kwargs[\u0027local_ip\u0027]):"},{"line_number":832,"context_line":"                # GRE and VXLAN tunnels require a local_ip to be set"},{"line_number":833,"context_line":"                msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2Fg%2BI%3D","line":830,"in_reply_to":"AAAAPn%2F%2Fho0%3D","updated":"2013-06-28 17:54:11.000000000","message":"Done","commit_id":"36fba651c99bf30df51585057e49ca936663a608"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        if tunnel_types is None:"},{"line_number":181,"context_line":"            tunnel_types \u003d []"},{"line_number":182,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":183,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FgXU%3D","line":180,"updated":"2013-06-28 22:07:39.000000000","message":"self.tunnel_types \u003d tunnel_types or []","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":"            self.enable_tunneling \u003d False"},{"line_number":178,"context_line":"        self.local_ip \u003d local_ip"},{"line_number":179,"context_line":"        self.tunnel_count \u003d 0"},{"line_number":180,"context_line":"        if tunnel_types is None:"},{"line_number":181,"context_line":"            tunnel_types \u003d []"},{"line_number":182,"context_line":"        self.tunnel_types \u003d tunnel_types"},{"line_number":183,"context_line":"        self.vxlan_udp_port \u003d cfg.CONF.AGENT.vxlan_udp_port"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FeqU%3D","line":180,"in_reply_to":"AAAAPn%2F%2FgXU%3D","updated":"2013-07-01 02:04:47.000000000","message":"Done","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027topic\u0027: q_const.L2_AGENT_TOPIC,"},{"line_number":191,"context_line":"            \u0027configurations\u0027: bridge_mappings,"},{"line_number":192,"context_line":"            \u0027agent_type\u0027: q_const.AGENT_TYPE_OVS,"},{"line_number":193,"context_line":"            \u0027tunnel_types\u0027: tunnel_types,"},{"line_number":194,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":195,"context_line":"        self.setup_rpc()"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FgXQ%3D","line":193,"updated":"2013-06-28 22:07:39.000000000","message":"self.tunnel_types,","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027topic\u0027: q_const.L2_AGENT_TOPIC,"},{"line_number":191,"context_line":"            \u0027configurations\u0027: bridge_mappings,"},{"line_number":192,"context_line":"            \u0027agent_type\u0027: q_const.AGENT_TYPE_OVS,"},{"line_number":193,"context_line":"            \u0027tunnel_types\u0027: tunnel_types,"},{"line_number":194,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":195,"context_line":"        self.setup_rpc()"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FeqQ%3D","line":193,"in_reply_to":"AAAAPn%2F%2FgXQ%3D","updated":"2013-07-01 02:04:47.000000000","message":"Done","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":292,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":293,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":294,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":295,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":296,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":297,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":298,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FgW4%3D","line":295,"updated":"2013-06-28 22:07:39.000000000","message":"Won\u0027t this raise an exception if tunnel_type is None or \u0027\u0027 and  line 181 executes?","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":292,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":293,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":294,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":295,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":296,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":297,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":298,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FgJI%3D","line":295,"in_reply_to":"AAAAPn%2F%2FgW4%3D","updated":"2013-06-29 00:25:03.000000000","message":"self.enable_tunneling is False if self.tunnel_types is empty. There is a check on line 290, so this should be OK.","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":705,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":706,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":707,"context_line":"                    # configuration file."},{"line_number":708,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":709,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":710,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":711,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FgWw%3D","line":708,"updated":"2013-06-28 22:07:39.000000000","message":"same as above?","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":705,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":706,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":707,"context_line":"                    # configuration file."},{"line_number":708,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":709,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":710,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":711,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FgJA%3D","line":708,"in_reply_to":"AAAAPn%2F%2FgWw%3D","updated":"2013-06-29 00:25:03.000000000","message":"There is a check for self.enable_tunneling before calling tunnel_sync (lines 733-735), so this should be OK too.","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"unresolved":false,"context_lines":[{"line_number":827,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":828,"context_line":"                msg \u003d _(\u0027Invalid tunnel type specificed: %s\u0027), tun"},{"line_number":829,"context_line":"                raise ValueError(msg)"},{"line_number":830,"context_line":"            if not kwargs[\u0027local_ip\u0027]:"},{"line_number":831,"context_line":"                msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"},{"line_number":832,"context_line":"                        \u0027local_ip.\u0027)"},{"line_number":833,"context_line":"                raise ValueError(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2Fg3c%3D","line":830,"updated":"2013-06-28 18:38:54.000000000","message":"Did you mean to eliminate the tunnel type check?  If type VLAN is this test needed too?","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":827,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":828,"context_line":"                msg \u003d _(\u0027Invalid tunnel type specificed: %s\u0027), tun"},{"line_number":829,"context_line":"                raise ValueError(msg)"},{"line_number":830,"context_line":"            if not kwargs[\u0027local_ip\u0027]:"},{"line_number":831,"context_line":"                msg \u003d _(\u0027Tunneling cannot be enabled without a valid \u0027"},{"line_number":832,"context_line":"                        \u0027local_ip.\u0027)"},{"line_number":833,"context_line":"                raise ValueError(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2Fg3E%3D","line":830,"in_reply_to":"AAAAPn%2F%2Fg3c%3D","updated":"2013-06-28 18:42:06.000000000","message":"local_ip is only required for tunnel network types.","commit_id":"fb9c84bd0ff86f95adb36fb5d9fa6fc63ad5c57c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":290,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":291,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":292,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":294,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":295,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":296,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fehs%3D","line":293,"updated":"2013-07-01 03:49:02.000000000","message":"The default to grab the first is bad. the tunnel_id could be not compatible among GRE and vxlan.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":291,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":292,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":294,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":295,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":296,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdYE%3D","line":293,"in_reply_to":"AAAAPn%2F%2FdsI%3D","updated":"2013-07-01 15:59:18.000000000","message":"I think Kyle\u0027s response should address Yong\u0027s concern.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":290,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":291,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":292,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":294,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":295,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":296,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdsI%3D","line":293,"in_reply_to":"AAAAPn%2F%2Fehs%3D","updated":"2013-07-01 12:51:38.000000000","message":"The agent will only work with a single tunnel_type for now. As part of the ML2 work, the agent will be modified to suport multiple tunnel_types concurrently.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":697,"context_line":"    def tunnel_sync(self):"},{"line_number":698,"context_line":"        resync \u003d False"},{"line_number":699,"context_line":"        try:"},{"line_number":700,"context_line":"            details \u003d self.plugin_rpc.tunnel_sync(self.context, self.local_ip)"},{"line_number":701,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":702,"context_line":"            for tunnel in tunnels:"},{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Feho%3D","line":700,"updated":"2013-07-01 03:49:02.000000000","message":"I think we should change the RPC interface to add tunnel type.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":697,"context_line":"    def tunnel_sync(self):"},{"line_number":698,"context_line":"        resync \u003d False"},{"line_number":699,"context_line":"        try:"},{"line_number":700,"context_line":"            details \u003d self.plugin_rpc.tunnel_sync(self.context, self.local_ip)"},{"line_number":701,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":702,"context_line":"            for tunnel in tunnels:"},{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fdr4%3D","line":700,"in_reply_to":"AAAAPn%2F%2Feho%3D","updated":"2013-07-01 12:51:38.000000000","message":"This is done, please see tunnel_sync.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"    )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Feis%3D","line":823,"updated":"2013-07-01 03:49:02.000000000","message":"I think we need to keep the previous OVS.enable_tunneling\u0027s meaning:\n1. if  OVS.enable_tunneling is true, user has to set AGENT.tunnel_types, else we complain and exit.\n2. if OVS.enable_tunneling is False, we disable all of the tunnel features.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"    )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FczI%3D","line":823,"in_reply_to":"AAAAPn%2F%2FdTU%3D","updated":"2013-07-01 18:18:13.000000000","message":"Bob, I missed your comment about enforcing a single tunnel_type in the configuration file. Will add that and resubmit.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"    )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fc0Y%3D","line":823,"in_reply_to":"AAAAPn%2F%2FdTU%3D","updated":"2013-07-01 18:07:47.000000000","message":"I like the idea of adding (or moving) tunnel_types from the AGENT to the OVS section, and having the server utilize this and deprecating enable_tunneling in the server as well. I\u0027ll file a bug for that and track that change separately if you\u0027re ok with this Bob.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":820,"context_line":"    )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdTU%3D","line":823,"in_reply_to":"AAAAPn%2F%2FdpQ%3D","updated":"2013-07-01 15:59:18.000000000","message":"First, I\u0027m OK with the current logic as-is. \n\nI was thinking we could make the deprecation of enable_tunneling (in the agent) a little more clear by changing its default value from False to None: \n\n1) If enable_tunneling is None, then only tunnel_types would be used to determine if tunneling is enabled, and which type(s). \n\n2) If enable_tunneling is explicitly set to False, then tunneling is disabled regardless of the tunnel_types value. Maybe a warning should be logged if tunnel_types is not also empty.\n\n3) If enable_tunneling is explicitly set to True and tunnel_types is its default value of empty, then GRE tunneling is enabled.\n\n4) If enable_tunneling is explicitly set to True and tunnel_types is not empty, then the specified tunnel type(s) is enabled.\n\nAlthough the above might make sense for the agent, tunnel_types has not (yet) been deprecated in the openvswitch plugin, so changing the default value to None might add rather than reduce confusion. \n\nBut maybe we need to do something similar in the openvswitch plugin - I don\u0027t see anything that prevents both GRE and VXLAN provider networks from being created even though only one can be supported at a time. I\u0027m now thinking maybe the openvswitch plugin should use a tunnel_type config variable (in the OVS section, since tunnel_types is in the AGENT section, or maybe both should use tunnel_types in the OVS section) and deprecate enable_tunneling in the same way as the agent, using logic similar to the above. Any thoughts on this?\n\n\nAlso, until support for multiple concurrent tunnel types is fully implemented, didn\u0027t we want the agent to log an error and exit if tunnel_types contains more than one value? I don\u0027t see any code in the agent that enforces this current limitation.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"    )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdpQ%3D","line":823,"in_reply_to":"AAAAPn%2F%2Fdrw%3D","updated":"2013-07-01 13:11:30.000000000","message":"My vote is the current code proposed in this patch. In Grizzly we have only enable_tunneling config option and no tunnel_type. If a user has the config file with Grizzly, GRE tunneling is enabled.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":820,"context_line":"    )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fdrw%3D","line":823,"in_reply_to":"AAAAPn%2F%2Feis%3D","updated":"2013-07-01 12:51:38.000000000","message":"Bob and I decided we should deprecate enable_tunneling, because it is redundant to have that and then specify tunnel_types. The fact the user enables tunnel_types means tunneling is enabled. But I am open to what others think here as well.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":827,"context_line":"        # Verify the tunnel_types specified are valid"},{"line_number":828,"context_line":"        for tun in kwargs[\u0027tunnel_types\u0027]:"},{"line_number":829,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FeiI%3D","line":826,"updated":"2013-07-01 03:49:02.000000000","message":"I think we have set kwargs[\u0027tunnel_types\u0027] \u003d config.AGENT.tunnel_types, which should be [] by default or list of stuff. so there is no need for this \u0027if\u0027.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":827,"context_line":"        # Verify the tunnel_types specified are valid"},{"line_number":828,"context_line":"        for tun in kwargs[\u0027tunnel_types\u0027]:"},{"line_number":829,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fc1A%3D","line":826,"in_reply_to":"AAAAPn%2F%2FdS4%3D","updated":"2013-07-01 18:07:47.000000000","message":"Done","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    if kwargs[\u0027tunnel_types\u0027]:"},{"line_number":827,"context_line":"        # Verify the tunnel_types specified are valid"},{"line_number":828,"context_line":"        for tun in kwargs[\u0027tunnel_types\u0027]:"},{"line_number":829,"context_line":"            if tun not in constants.TUNNEL_NETWORK_TYPES:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdS4%3D","line":826,"in_reply_to":"AAAAPn%2F%2FeiI%3D","updated":"2013-07-01 15:59:18.000000000","message":"Agreed that the if statement should not be needed.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":704,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":705,"context_line":"                    # configuration file."},{"line_number":706,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":707,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":708,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":709,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAPn%2F%2FbhM%3D","line":706,"updated":"2013-07-02 06:22:10.000000000","message":"I think it is a bad idea to grab it without considering the true tunnel type","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":704,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":705,"context_line":"                    # configuration file."},{"line_number":706,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":707,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":708,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"},{"line_number":709,"context_line":"                                                tunnel_type,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAPn%2F%2FaWA%3D","line":706,"in_reply_to":"AAAAPn%2F%2FbhM%3D","updated":"2013-07-02 14:31:06.000000000","message":"I\u0027m not following. The server code will not pass a tunnel_type into tunnel_sync at this point. Once we add that (in the context of ML2), we will validate it here. For now, we enforce a single tunnel_type when building the agent config map.","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":827,"context_line":"    # TODO(mestery) - Update this when the agent supports multiple tunnel_types"},{"line_number":828,"context_line":"    if len(kwargs[\u0027tunnel_types\u0027]) \u003e 1:"},{"line_number":829,"context_line":"        msg \u003d _(\u0027Only a single value for tunnel_types is currently supported.\u0027)"},{"line_number":830,"context_line":"        raise ValueError(msg)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"    # Verify the tunnel_types specified are valid"},{"line_number":833,"context_line":"    for tun in kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAPn%2F%2FbhY%3D","line":830,"updated":"2013-07-02 06:22:10.000000000","message":"why do this if we just support only one type?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":827,"context_line":"    # TODO(mestery) - Update this when the agent supports multiple tunnel_types"},{"line_number":828,"context_line":"    if len(kwargs[\u0027tunnel_types\u0027]) \u003e 1:"},{"line_number":829,"context_line":"        msg \u003d _(\u0027Only a single value for tunnel_types is currently supported.\u0027)"},{"line_number":830,"context_line":"        raise ValueError(msg)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"    # Verify the tunnel_types specified are valid"},{"line_number":833,"context_line":"    for tun in kwargs[\u0027tunnel_types\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAPn%2F%2FaWo%3D","line":830,"in_reply_to":"AAAAPn%2F%2FbhY%3D","updated":"2013-07-02 14:31:06.000000000","message":"We do this to explicitly ensure only a single tunnel_type is added by the user.","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":145,"context_line":"    # history"},{"line_number":146,"context_line":"    #   1.0 Initial version"},{"line_number":147,"context_line":"    #   1.1 Support Security Group RPC"},{"line_number":148,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7VA%3D","line":148,"updated":"2013-07-09 03:03:08.000000000","message":"if not \u00272.0\u0027 , at least we bump to 1.2","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":145,"context_line":"    # history"},{"line_number":146,"context_line":"    #   1.0 Initial version"},{"line_number":147,"context_line":"    #   1.1 Support Security Group RPC"},{"line_number":148,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, integ_br, tun_br, local_ip,"},{"line_number":151,"context_line":"                 bridge_mappings, root_helper,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F570%3D","line":148,"in_reply_to":"AAAAP3%2F%2F7VA%3D","updated":"2013-07-09 13:41:10.000000000","message":"I think rkukura was against an RPC bump here, as was I. Are you strongly in favor of bumping it here? I\u0027ll bring it up with rkukura during the ml2 meeting tomorrow.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":290,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":291,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":292,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":294,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":295,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":296,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7Vw%3D","line":293,"updated":"2013-07-09 03:03:08.000000000","message":"I am not fan of the default tunnel_types[0] way, but we at least have a LOG.warn()","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":290,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":291,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027)"},{"line_number":292,"context_line":"        # If no tunnel specified, use the first one from the configuration file"},{"line_number":293,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027) or self.tunnel_types[0]"},{"line_number":294,"context_line":"        if tunnel_type not in self.tunnel_types:"},{"line_number":295,"context_line":"            LOG.error(_(\"tunnel_type %s not supported by agent\"), tunnel_type)"},{"line_number":296,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F57s%3D","line":293,"in_reply_to":"AAAAP3%2F%2F7Vw%3D","updated":"2013-07-09 13:41:10.000000000","message":"I am adding support to the server to pass the tunnel_type. Once that is done, I will validate it here and fail if the agent doesn\u0027t support the tunnel_type passed by the server.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":697,"context_line":"    def tunnel_sync(self):"},{"line_number":698,"context_line":"        resync \u003d False"},{"line_number":699,"context_line":"        try:"},{"line_number":700,"context_line":"            details \u003d self.plugin_rpc.tunnel_sync(self.context, self.local_ip)"},{"line_number":701,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":702,"context_line":"            for tunnel in tunnels:"},{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7Ws%3D","line":700,"updated":"2013-07-09 03:03:08.000000000","message":"why not tell the server what is your tunnel type?","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":697,"context_line":"    def tunnel_sync(self):"},{"line_number":698,"context_line":"        resync \u003d False"},{"line_number":699,"context_line":"        try:"},{"line_number":700,"context_line":"            details \u003d self.plugin_rpc.tunnel_sync(self.context, self.local_ip)"},{"line_number":701,"context_line":"            tunnels \u003d details[\u0027tunnels\u0027]"},{"line_number":702,"context_line":"            for tunnel in tunnels:"},{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F57c%3D","line":700,"in_reply_to":"AAAAP3%2F%2F7Ws%3D","updated":"2013-07-09 13:41:10.000000000","message":"That is an option for sure. However, as my design document indicated, I will instead allow the server to configure it\u0027s own tunnel_type and validate in the agent RPC calls.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":702,"context_line":"            for tunnel in tunnels:"},{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":704,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":705,"context_line":"                    # configuration file."},{"line_number":706,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":707,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":708,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7XE%3D","line":705,"updated":"2013-07-09 03:03:08.000000000","message":"to grab a randomly first type is a bad idea, which many cause wrong pair of tunnel type and id.\n\nand at least put a LOG.warn()","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":702,"context_line":"            for tunnel in tunnels:"},{"line_number":703,"context_line":"                if self.local_ip !\u003d tunnel[\u0027ip_address\u0027]:"},{"line_number":704,"context_line":"                    # If not specified, grab the first tunnel_type from the"},{"line_number":705,"context_line":"                    # configuration file."},{"line_number":706,"context_line":"                    tunnel_type \u003d tunnel[\u0027tunnel_type\u0027] or self.tunnel_types[0]"},{"line_number":707,"context_line":"                    tun_name \u003d \u0027%s-%s\u0027 % (tunnel_type, tunnel[\u0027id\u0027])"},{"line_number":708,"context_line":"                    self.tun_br.add_tunnel_port(tun_name, tunnel[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F57I%3D","line":705,"in_reply_to":"AAAAP3%2F%2F7XE%3D","updated":"2013-07-09 13:41:10.000000000","message":"I agree, and in fact we will fail if the server does not specify the tunnel_type.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    # Enforce a single tunnel in tunnel_types for now."},{"line_number":827,"context_line":"    # TODO(mestery) - Update this when the agent supports multiple tunnel_types"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7YM%3D","line":824,"updated":"2013-07-09 03:03:08.000000000","message":"not to be nice here. we just exit and complain what is needed.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"},{"line_number":823,"context_line":"    if config.OVS.enable_tunneling and not kwargs[\u0027tunnel_types\u0027]:"},{"line_number":824,"context_line":"        kwargs[\u0027tunnel_types\u0027] \u003d [constants.TYPE_GRE]"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    # Enforce a single tunnel in tunnel_types for now."},{"line_number":827,"context_line":"    # TODO(mestery) - Update this when the agent supports multiple tunnel_types"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F56w%3D","line":824,"in_reply_to":"AAAAP3%2F%2F7YM%3D","updated":"2013-07-09 13:41:10.000000000","message":"This is for backwards compatibility, and is documented in the configuration file as well. Someone on the mailing list already hit this particular issue. In Icehouse, we will fully deprecate \"enable_tunneling\" in the configuration file and then we can error out here. Do you agree?","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":826,"context_line":"    # Enforce a single tunnel in tunnel_types for now."},{"line_number":827,"context_line":"    # TODO(mestery) - Update this when the agent supports multiple tunnel_types"},{"line_number":828,"context_line":"    if len(kwargs[\u0027tunnel_types\u0027]) \u003e 1:"},{"line_number":829,"context_line":"        msg \u003d _(\u0027Only a single value for tunnel_types is currently supported.\u0027)"},{"line_number":830,"context_line":"        raise ValueError(msg)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"    # Verify the tunnel_types specified are valid"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7YE%3D","line":829,"updated":"2013-07-09 03:03:08.000000000","message":"I cannot understand it: you commit msg:\nModify the OVS agent to support multiple tunnel_types concurrently.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":826,"context_line":"    # Enforce a single tunnel in tunnel_types for now."},{"line_number":827,"context_line":"    # TODO(mestery) - Update this when the agent supports multiple tunnel_types"},{"line_number":828,"context_line":"    if len(kwargs[\u0027tunnel_types\u0027]) \u003e 1:"},{"line_number":829,"context_line":"        msg \u003d _(\u0027Only a single value for tunnel_types is currently supported.\u0027)"},{"line_number":830,"context_line":"        raise ValueError(msg)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"    # Verify the tunnel_types specified are valid"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F56o%3D","line":829,"in_reply_to":"AAAAP3%2F%2F7YE%3D","updated":"2013-07-09 13:41:10.000000000","message":"I am fixing this with the next rev of my patch.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"}],"quantum/plugins/openvswitch/common/config.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d []"},{"line_number":25,"context_line":"DEFAULT_VLAN_RANGES \u003d []"},{"line_number":26,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":27,"context_line":"DEFAULT_TUNNEL_TYPES \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ovs_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fehc%3D","line":26,"updated":"2013-07-01 03:49:02.000000000","message":"Different tunnel should have their own ranges.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d []"},{"line_number":25,"context_line":"DEFAULT_VLAN_RANGES \u003d []"},{"line_number":26,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":27,"context_line":"DEFAULT_TUNNEL_TYPES \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ovs_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdcU%3D","line":26,"in_reply_to":"AAAAPn%2F%2Fdro%3D","updated":"2013-07-01 15:59:18.000000000","message":"To clarify, the tunnel_ranges config variable is only used by the server/plugin, not by the agent. There is no plan to change the openvswitch plugin to support multiple tunnel types concurrently, so there is no need for its tunnel_ranges to be type-specific. Eventually, the openvswitch agent will be enhanced to support multiple tunnel types concurrently, but only when used with the ml2 plugin, not when used with the openvswitch plugin. The ml2 plugin\u0027s GreTypeDriver and VxlanTypeDriver will each use their own independent configuration variable to control the ranges from which their tunnel IDs are allocated.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d []"},{"line_number":25,"context_line":"DEFAULT_VLAN_RANGES \u003d []"},{"line_number":26,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":27,"context_line":"DEFAULT_TUNNEL_TYPES \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ovs_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fdro%3D","line":26,"in_reply_to":"AAAAPn%2F%2Fehc%3D","updated":"2013-07-01 12:51:38.000000000","message":"The agent currently supports a single tunnel_type even with these changes, but when it does support multiple as part of ML2, this will be modified, I agree.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d []"},{"line_number":25,"context_line":"DEFAULT_VLAN_RANGES \u003d []"},{"line_number":26,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":27,"context_line":"DEFAULT_TUNNEL_TYPES \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ovs_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7Tk%3D","line":26,"updated":"2013-07-09 03:03:08.000000000","message":"why we use the same range for all tunnel type? why not vxlan_range and gre_range?","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d []"},{"line_number":25,"context_line":"DEFAULT_VLAN_RANGES \u003d []"},{"line_number":26,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":27,"context_line":"DEFAULT_TUNNEL_TYPES \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ovs_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F58U%3D","line":26,"in_reply_to":"AAAAP3%2F%2F7Tk%3D","updated":"2013-07-09 13:41:10.000000000","message":"Because the OVS plugin will only support GRE or VXLAN tunnels, not both at the same time.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"}],"quantum/plugins/openvswitch/ovs_quantum_plugin.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c6e583145f4498dbbf1f118f2d993da5bd0ad5a7","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":207,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def tunnel_update(self, context, tunnel_ip, tunnel_id, tunnel_type):"},{"line_number":210,"context_line":"        self.fanout_cast(context,"},{"line_number":211,"context_line":"                         self.make_msg(\u0027tunnel_update\u0027,"},{"line_number":212,"context_line":"                                       tunnel_ip\u003dtunnel_ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FyDg%3D","line":209,"updated":"2013-06-21 12:02:22.000000000","message":"I am unable to imagine how a tunnel update could change the tunnel type, so it feels to me like this argument shouldn\u0027t be here. Can you just pass None in the fanout_cast?","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c6e583145f4498dbbf1f118f2d993da5bd0ad5a7","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":207,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def tunnel_update(self, context, tunnel_ip, tunnel_id, tunnel_type):"},{"line_number":210,"context_line":"        self.fanout_cast(context,"},{"line_number":211,"context_line":"                         self.make_msg(\u0027tunnel_update\u0027,"},{"line_number":212,"context_line":"                                       tunnel_ip\u003dtunnel_ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FxpU%3D","line":209,"in_reply_to":"AAAAPn%2F%2Fx4A%3D","updated":"2013-06-21 14:41:20.000000000","message":"Thanks, that makes sense.","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":207,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def tunnel_update(self, context, tunnel_ip, tunnel_id, tunnel_type):"},{"line_number":210,"context_line":"        self.fanout_cast(context,"},{"line_number":211,"context_line":"                         self.make_msg(\u0027tunnel_update\u0027,"},{"line_number":212,"context_line":"                                       tunnel_ip\u003dtunnel_ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FxFw%3D","line":209,"in_reply_to":"AAAAPn%2F%2FxNE%3D","updated":"2013-06-21 18:17:58.000000000","message":"Bob, you\u0027re right, though the possible use case of allowing a tunnel to change types remains feasible, though unclear as to how useful.","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":207,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def tunnel_update(self, context, tunnel_ip, tunnel_id, tunnel_type):"},{"line_number":210,"context_line":"        self.fanout_cast(context,"},{"line_number":211,"context_line":"                         self.make_msg(\u0027tunnel_update\u0027,"},{"line_number":212,"context_line":"                                       tunnel_ip\u003dtunnel_ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FxNE%3D","line":209,"in_reply_to":"AAAAPn%2F%2FxpU%3D","updated":"2013-06-21 17:54:40.000000000","message":"I don\u0027t necessarily seeing the tunnel_type changing for an existing tunnel. Isn\u0027t the tunnel_type here, and in tunnel_sync(), so that in ml2, the GreTypeDriver and VxlanTypeDriver can each maintain separate independent tunnel endpoint tables? Eventually, the openvswitch agent can be enhanced to handle both types simultaneously, and will need to know which tunnel type the tunnel_update() applies to.","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                       physical_network\u003dphysical_network),"},{"line_number":207,"context_line":"                         topic\u003dself.topic_port_update)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def tunnel_update(self, context, tunnel_ip, tunnel_id, tunnel_type):"},{"line_number":210,"context_line":"        self.fanout_cast(context,"},{"line_number":211,"context_line":"                         self.make_msg(\u0027tunnel_update\u0027,"},{"line_number":212,"context_line":"                                       tunnel_ip\u003dtunnel_ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fx4A%3D","line":209,"in_reply_to":"AAAAPn%2F%2FyDg%3D","updated":"2013-06-21 13:15:59.000000000","message":"There is a chance where this could change, though how realistic is questionable. In the case where the admin or tenant changes the type of tunnel they have (most likely the admin). This change here would allow for that from an RPC perspective.","commit_id":"0bfa96464626022c71f7c77d40d96c8f4334a18f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027\u0027\u0027Agent side of the openvswitch rpc API."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    API version history:"},{"line_number":174,"context_line":"        1.0 - Initial version."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0027\u0027\u0027"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FehY%3D","line":174,"updated":"2013-07-01 03:49:02.000000000","message":"bump version","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027\u0027\u0027Agent side of the openvswitch rpc API."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    API version history:"},{"line_number":174,"context_line":"        1.0 - Initial version."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0027\u0027\u0027"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdZU%3D","line":174,"in_reply_to":"AAAAPn%2F%2FdoI%3D","updated":"2013-07-01 15:59:18.000000000","message":"I think we can and should avoid bumping the RPC version here. The RPC versions need to remain compatible across the ml2, openvswitch, linuxbridge, and hyperv plugins and all the agents these plugins support. Ideally, the tunnel management RPC interface would be broken out as a separate mixin with its own version number. For now I think we can avoid bumping the version here.\n\nIn bringing the linuxbridge RPC message formats into sync with the other plugins\u0027 formats, we avoided bumping the version (everywhere) by making sure the receiver always could interpret both the old and new versions of the messages, and that the sender could be configured to generate the fields needed for both old and new receivers simultaneously.\n\nIn this case, I think we can simply have the sender always send the tunnel_type (old receivers will ignore it), and have the receiver use a sensible default (first in tunnel_types list) when the tunnel_type is not set in the RPC message. This should handle mixing all combinations of new and old sender and receiver. No old fields are being deprecated as in linuxbridge.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027\u0027\u0027Agent side of the openvswitch rpc API."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    API version history:"},{"line_number":174,"context_line":"        1.0 - Initial version."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0027\u0027\u0027"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FdoI%3D","line":174,"in_reply_to":"AAAAPn%2F%2Fdrg%3D","updated":"2013-07-01 13:11:30.000000000","message":"What is the new version? The new version is 1.2?\nSecurityGroupAgentRpcAPI already uses 1.1. I am not sure version increment policy in such case.","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027\u0027\u0027Agent side of the openvswitch rpc API."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    API version history:"},{"line_number":174,"context_line":"        1.0 - Initial version."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0027\u0027\u0027"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fdrg%3D","line":174,"in_reply_to":"AAAAPn%2F%2FehY%3D","updated":"2013-07-01 12:51:38.000000000","message":"Done","commit_id":"189fc4fd399a77b808c406d2457210c3affa4892"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"ec8b4940826e783b1654bb66e840e7170301f093","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027\u0027\u0027Agent side of the openvswitch rpc API."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    API version history:"},{"line_number":174,"context_line":"        1.1 - Initial version."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0027\u0027\u0027"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAPn%2F%2Fcg4%3D","line":174,"updated":"2013-07-01 19:54:31.000000000","message":"The comment (1.1) needs to match the code (1.0).\n\nDid we agree that the RPC version does not need to be bumped? If so, fix the comment.","commit_id":"6665e194e3e0315925e01fad90c554fc117f60bb"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027\u0027\u0027Agent side of the openvswitch rpc API."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    API version history:"},{"line_number":174,"context_line":"        1.1 - Initial version."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0027\u0027\u0027"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAPn%2F%2FcdM%3D","line":174,"in_reply_to":"AAAAPn%2F%2Fcg4%3D","updated":"2013-07-01 20:16:48.000000000","message":"I\u0027ll bump this down, apologies, I had thought this was already complete. I agree we do not need to bump the RPC version here.","commit_id":"6665e194e3e0315925e01fad90c554fc117f60bb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, None)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAPn%2F%2FbbQ%3D","line":164,"updated":"2013-07-02 06:22:10.000000000","message":"what will happen if the agent is using different tunnel_type?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, None)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAPn%2F%2FaWs%3D","line":164,"in_reply_to":"AAAAPn%2F%2FbbQ%3D","updated":"2013-07-02 14:31:06.000000000","message":"Are you saying what happens if \"tenant_network_type\" is different than the configured values in \"tunnel_types\" in the agent?","commit_id":"d179c14f2aa8f55cc1857bc1f2d3728c71e334b3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, None)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F7VI%3D","line":164,"updated":"2013-07-09 03:03:08.000000000","message":"we should get the tunnel_type from agent instead of passing None to all other agents.\nImagine, if agent \u0027a\u0027 is configured to use \u0027gre\u0027, agent b is \u0027vxlan\u0027, what will happen.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        entry[\u0027tunnels\u0027] \u003d tunnels"},{"line_number":162,"context_line":"        # Notify all other listening agents"},{"line_number":163,"context_line":"        self.notifier.tunnel_update(rpc_context, tunnel.ip_address,"},{"line_number":164,"context_line":"                                    tunnel.id, None)"},{"line_number":165,"context_line":"        # Return the list of tunnels IP\u0027s to the agent"},{"line_number":166,"context_line":"        return entry"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAP3%2F%2F58E%3D","line":164,"in_reply_to":"AAAAP3%2F%2F7VI%3D","updated":"2013-07-09 13:41:10.000000000","message":"I am adding support to the config file for a \"tunnel_type\" option in the OVS section of the config file now. Once that is added, I will be passing that value here.","commit_id":"60ea92d775f8df64b18eb1b8b07d4a8bdace2a20"}],"quantum/tests/unit/openvswitch/test_ovs_quantum_agent.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def test_create_agent_config_map_fails_for_invalid_tunnel_config(self):"},{"line_number":42,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":43,"context_line":"        # An ip address is required for tunneling but there is no default"},{"line_number":44,"context_line":"        cfg.CONF.set_override(\u0027tunnel_types\u0027, [constants.TYPE_GRE],"},{"line_number":45,"context_line":"                              group\u003d\u0027AGENT\u0027)"},{"line_number":46,"context_line":"        with testtools.ExpectedException(ValueError):"},{"line_number":47,"context_line":"            ovs_quantum_agent.create_agent_config_map(cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FwT0%3D","line":44,"updated":"2013-06-22 01:07:46.000000000","message":"Repeat this test with TYPE_VXLAN for better coverage.","commit_id":"ce39254499acf2f60d02ae5081c098cc744c302f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def test_create_agent_config_map_fails_for_invalid_tunnel_config(self):"},{"line_number":42,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":43,"context_line":"        # An ip address is required for tunneling but there is no default"},{"line_number":44,"context_line":"        cfg.CONF.set_override(\u0027tunnel_types\u0027, [constants.TYPE_GRE],"},{"line_number":45,"context_line":"                              group\u003d\u0027AGENT\u0027)"},{"line_number":46,"context_line":"        with testtools.ExpectedException(ValueError):"},{"line_number":47,"context_line":"            ovs_quantum_agent.create_agent_config_map(cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvtU%3D","line":44,"in_reply_to":"AAAAPn%2F%2FwT0%3D","updated":"2013-06-23 02:28:10.000000000","message":"Done","commit_id":"ce39254499acf2f60d02ae5081c098cc744c302f"}]}
