)]}'
{"neutron/agent/linux/ovs_lib.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":460,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"},{"line_number":461,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":462,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":463,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support\""},{"line_number":464,"context_line":"                \"installed klm version is %(installed_klm_version)s \""},{"line_number":465,"context_line":"                \"installed usr version is %(installed_usr_version)s\"),"},{"line_number":466,"context_line":"              {\u0027installed_klm_version\u0027: installed_klm_version,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FjLs%3D","line":463,"updated":"2014-02-12 13:29:20.000000000","message":"Need a space at end of string on this line. Since LOG message will be on a single line, you may want to shorten message (or use multiple LOGs).","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":460,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"},{"line_number":461,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":462,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":463,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support\""},{"line_number":464,"context_line":"                \"installed klm version is %(installed_klm_version)s \""},{"line_number":465,"context_line":"                \"installed usr version is %(installed_usr_version)s\"),"},{"line_number":466,"context_line":"              {\u0027installed_klm_version\u0027: installed_klm_version,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FblE%3D","line":463,"in_reply_to":"AAAAUX%2F%2FjLs%3D","updated":"2014-02-13 09:31:38.000000000","message":"done","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":467,"context_line":"               \u0027installed_usr_version\u0027: installed_usr_version})"},{"line_number":468,"context_line":"    # First check the userspace version"},{"line_number":469,"context_line":"    if installed_usr_version:"},{"line_number":470,"context_line":"        if dist_version.StrictVersion("},{"line_number":471,"context_line":"                installed_usr_version) \u003c dist_version.StrictVersion("},{"line_number":472,"context_line":"                min_required_version):"},{"line_number":473,"context_line":"            msg \u003d (_(\u0027Failed userspace version check for Open \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FjIg%3D","line":470,"updated":"2014-02-12 13:29:20.000000000","message":"You may want to take the duplication in L470-478, L481-489 and put into function, passing version and type (\"userspace\"/\"kernel\").\n\nYou might be able to include the if clause and error msg too (L469, L495+)","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":467,"context_line":"               \u0027installed_usr_version\u0027: installed_usr_version})"},{"line_number":468,"context_line":"    # First check the userspace version"},{"line_number":469,"context_line":"    if installed_usr_version:"},{"line_number":470,"context_line":"        if dist_version.StrictVersion("},{"line_number":471,"context_line":"                installed_usr_version) \u003c dist_version.StrictVersion("},{"line_number":472,"context_line":"                min_required_version):"},{"line_number":473,"context_line":"            msg \u003d (_(\u0027Failed userspace version check for Open \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fbk0%3D","line":470,"in_reply_to":"AAAAUX%2F%2FjIg%3D","updated":"2014-02-13 09:31:38.000000000","message":"done","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                       min_required_version)"},{"line_number":489,"context_line":"                raise Exception(msg)"},{"line_number":490,"context_line":"        else:"},{"line_number":491,"context_line":"            LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":492,"context_line":"                          \u0027please ensure your Open vSwitch kernel module \u0027"},{"line_number":493,"context_line":"                          \u0027is at least version %s to support VXLAN \u0027"},{"line_number":494,"context_line":"                          \u0027tunnels.\u0027), min_required_version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FjIM%3D","line":491,"updated":"2014-02-12 13:29:20.000000000","message":"Is it OK to have a usr version, but no klm version (I see a warning, but no exception)?","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                       min_required_version)"},{"line_number":489,"context_line":"                raise Exception(msg)"},{"line_number":490,"context_line":"        else:"},{"line_number":491,"context_line":"            LOG.warning(_(\u0027Cannot determine kernel Open vSwitch version, \u0027"},{"line_number":492,"context_line":"                          \u0027please ensure your Open vSwitch kernel module \u0027"},{"line_number":493,"context_line":"                          \u0027is at least version %s to support VXLAN \u0027"},{"line_number":494,"context_line":"                          \u0027tunnels.\u0027), min_required_version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FbjE%3D","line":491,"in_reply_to":"AAAAUX%2F%2FjIM%3D","updated":"2014-02-13 09:31:38.000000000","message":"I modified to raise exception.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        raise Exception(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"},{"line_number":483,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":484,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":485,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZHk%3D","line":482,"updated":"2014-02-13 15:06:54.000000000","message":"It is copy-and-paste from ovs-agent. Please update ovs-agent code to use this code.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        raise Exception(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"},{"line_number":483,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":484,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":485,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSjQ%3D","line":482,"in_reply_to":"AAAAUX%2F%2FZHk%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"93f97fe4c67f45df927d98007a4ac56dfd14168a","unresolved":false,"context_lines":[{"line_number":487,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""},{"line_number":488,"context_line":"                \"installed usr version is %s\"), installed_usr_version)"},{"line_number":489,"context_line":"    # First check the userspace version"},{"line_number":490,"context_line":"    if installed_usr_version:"},{"line_number":491,"context_line":"        _compare_installed_and_required_version(installed_usr_version,"},{"line_number":492,"context_line":"                                                min_required_version,"},{"line_number":493,"context_line":"                                                \u0027userspace\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FT%2FE%3D","line":490,"updated":"2014-02-14 02:17:11.000000000","message":"Since both kernel and userspace throw exceptions, you could move the if clause and else/msg/exception, into the helper function.\n\nThey don\u0027t need to be nested, since they both appear to be required.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":487,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""},{"line_number":488,"context_line":"                \"installed usr version is %s\"), installed_usr_version)"},{"line_number":489,"context_line":"    # First check the userspace version"},{"line_number":490,"context_line":"    if installed_usr_version:"},{"line_number":491,"context_line":"        _compare_installed_and_required_version(installed_usr_version,"},{"line_number":492,"context_line":"                                                min_required_version,"},{"line_number":493,"context_line":"                                                \u0027userspace\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSjE%3D","line":490,"in_reply_to":"AAAAUX%2F%2FT%2FE%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"3635e77f1a041d41ebcbf21ba446daade9a034dc","unresolved":false,"context_lines":[{"line_number":487,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""},{"line_number":488,"context_line":"                \"installed usr version is %s\"), installed_usr_version)"},{"line_number":489,"context_line":"    # First check the userspace version"},{"line_number":490,"context_line":"    if installed_usr_version:"},{"line_number":491,"context_line":"        _compare_installed_and_required_version(installed_usr_version,"},{"line_number":492,"context_line":"                                                min_required_version,"},{"line_number":493,"context_line":"                                                \u0027userspace\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2FQwA%3D","line":490,"updated":"2014-02-14 12:53:12.000000000","message":"Sorry, I wasn\u0027t clear enough... you can put the if/else inside of _compare_installed_and_required_version().\n\ndef _compare_installed_and_required_version(...)\n    if installed_version:\n        ...\n    else:\n        msg \u003d (_(\u0027Unable to determine Open vSwitch version. Please \u0027\n                 \u0027ensure that its version is %s or newer to use VXLAN \u0027\n                \u0027tunnels with OVS.\u0027) % required_version)\n\t        raise Exception(msg)\n\nThen, the code here can just be:\n    _compare_installed_and_required_version(installed_usr_version,\n                                            min_required_version,\n                                            \u0027userspace\u0027)\n    _compare_installed_and_required_version(installed_klm_version,\n                                            min_required_version,\n                                            \u0027kernel\u0027)","commit_id":"15452a265c89e7bd3a2c466e5a73ca6119bcadf0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"8aee6fc06d7433af3fb50ae2712cdeb9e7a033ce","unresolved":false,"context_lines":[{"line_number":487,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""},{"line_number":488,"context_line":"                \"installed usr version is %s\"), installed_usr_version)"},{"line_number":489,"context_line":"    # First check the userspace version"},{"line_number":490,"context_line":"    if installed_usr_version:"},{"line_number":491,"context_line":"        _compare_installed_and_required_version(installed_usr_version,"},{"line_number":492,"context_line":"                                                min_required_version,"},{"line_number":493,"context_line":"                                                \u0027userspace\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2FPpk%3D","line":490,"in_reply_to":"AAAAUX%2F%2FQwA%3D","updated":"2014-02-14 15:23:10.000000000","message":"I should have thought a little more.\nDone","commit_id":"15452a265c89e7bd3a2c466e5a73ca6119bcadf0"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"12d27a76229945af5f339fa32dd3b06241d83090","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            raise Exception(msg)"},{"line_number":481,"context_line":"    else:"},{"line_number":482,"context_line":"        msg \u003d (_(\u0027Unable to determine %(type)s version for Open \u0027"},{"line_number":483,"context_line":"                 \u0027vSwitch cwwith VXLAN support. To use \u0027"},{"line_number":484,"context_line":"                 \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":485,"context_line":"                 \u0027the its version is %(required)s or newer!\u0027) %"},{"line_number":486,"context_line":"               {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2FPjo%3D","line":483,"updated":"2014-02-14 15:35:00.000000000","message":"cwwith -\u003e with","commit_id":"ea6217597a9fe49b8ca0b8a3bc525369c55b8489"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"6458f375adf747ce5ec2da3177fcd67d3dc996a7","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            raise Exception(msg)"},{"line_number":481,"context_line":"    else:"},{"line_number":482,"context_line":"        msg \u003d (_(\u0027Unable to determine %(type)s version for Open \u0027"},{"line_number":483,"context_line":"                 \u0027vSwitch cwwith VXLAN support. To use \u0027"},{"line_number":484,"context_line":"                 \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":485,"context_line":"                 \u0027the its version is %(required)s or newer!\u0027) %"},{"line_number":486,"context_line":"               {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2FPOs%3D","line":483,"in_reply_to":"AAAAUX%2F%2FPjo%3D","updated":"2014-02-14 16:24:18.000000000","message":"Oops, sorry for my easy miss.","commit_id":"ea6217597a9fe49b8ca0b8a3bc525369c55b8489"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"12d27a76229945af5f339fa32dd3b06241d83090","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        msg \u003d (_(\u0027Unable to determine %(type)s version for Open \u0027"},{"line_number":483,"context_line":"                 \u0027vSwitch cwwith VXLAN support. To use \u0027"},{"line_number":484,"context_line":"                 \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":485,"context_line":"                 \u0027the its version is %(required)s or newer!\u0027) %"},{"line_number":486,"context_line":"               {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"},{"line_number":487,"context_line":"        raise Exception(msg)"},{"line_number":488,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2FPjc%3D","line":485,"updated":"2014-02-14 15:35:00.000000000","message":"the its -\u003e that the","commit_id":"ea6217597a9fe49b8ca0b8a3bc525369c55b8489"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d0f1f698dfa95fec6c079e53c68a718719b3533","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            ofport \u003d data[ofport_idx]"},{"line_number":402,"context_line":"            # ofport must be integer otherwise return None"},{"line_number":403,"context_line":"            if not isinstance(ofport, int) or ofport \u003d\u003d -1:"},{"line_number":404,"context_line":"                LOG.warn(_(\"ofport: %(ofport)s for VIF: %(vif)s is not a\""},{"line_number":405,"context_line":"                           \"positive integer\"), {\u0027ofport\u0027: ofport,"},{"line_number":406,"context_line":"                                                 \u0027vif\u0027: port_id})"},{"line_number":407,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BZ4E%3D","line":404,"updated":"2014-02-21 11:55:54.000000000","message":"I know it\u0027s outside of the change set, but if you do another update, this is missing space at end of string.","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"05aab8360960a59af6847e748378079f35344ce0","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            ofport \u003d data[ofport_idx]"},{"line_number":402,"context_line":"            # ofport must be integer otherwise return None"},{"line_number":403,"context_line":"            if not isinstance(ofport, int) or ofport \u003d\u003d -1:"},{"line_number":404,"context_line":"                LOG.warn(_(\"ofport: %(ofport)s for VIF: %(vif)s is not a\""},{"line_number":405,"context_line":"                           \"positive integer\"), {\u0027ofport\u0027: ofport,"},{"line_number":406,"context_line":"                                                 \u0027vif\u0027: port_id})"},{"line_number":407,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BXxE%3D","line":404,"in_reply_to":"AAAAUX%2F%2BZ4E%3D","updated":"2014-02-21 15:37:52.000000000","message":"no problem. I did that.","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":496,"context_line":"                     \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":497,"context_line":"                     \u0027the OVS version is %(required)s or newer!\u0027) %"},{"line_number":498,"context_line":"                   {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"},{"line_number":499,"context_line":"            raise Exception(msg)"},{"line_number":500,"context_line":"    else:"},{"line_number":501,"context_line":"        msg \u003d (_(\u0027Unable to determine %(type)s version for Open \u0027"},{"line_number":502,"context_line":"                 \u0027vSwitch with VXLAN support. To use \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6uw%3D","line":499,"updated":"2014-02-24 04:13:01.000000000","message":"Raise more specific exception. It is not recommended to raise a generic exception.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":496,"context_line":"                     \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":497,"context_line":"                     \u0027the OVS version is %(required)s or newer!\u0027) %"},{"line_number":498,"context_line":"                   {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"},{"line_number":499,"context_line":"            raise Exception(msg)"},{"line_number":500,"context_line":"    else:"},{"line_number":501,"context_line":"        msg \u003d (_(\u0027Unable to determine %(type)s version for Open \u0027"},{"line_number":502,"context_line":"                 \u0027vSwitch with VXLAN support. To use \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqrY%3D","line":499,"in_reply_to":"AAAAU3%2F%2F6uw%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                 \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":504,"context_line":"                 \u0027that the version is %(required)s or newer!\u0027) %"},{"line_number":505,"context_line":"               {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"},{"line_number":506,"context_line":"        raise Exception(msg)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6us%3D","line":506,"updated":"2014-02-24 04:13:01.000000000","message":"Ditto","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                 \u0027VXLAN tunnels with OVS, please ensure \u0027"},{"line_number":504,"context_line":"                 \u0027that the version is %(required)s or newer!\u0027) %"},{"line_number":505,"context_line":"               {\u0027type\u0027: version_type, \u0027required\u0027: required_version})"},{"line_number":506,"context_line":"        raise Exception(msg)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqrU%3D","line":506,"in_reply_to":"AAAAU3%2F%2F6us%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3c5e932300bf6430a1bbe281866ebe8448416a98","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.run_vsctl(vsctl_command, check_error\u003dTrue)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def del_controller(self):"},{"line_number":121,"context_line":"        self.run_vsctl([\u0027--\u0027, \u0027del-controller\u0027, self.br_name])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_controller(self):"},{"line_number":124,"context_line":"        res \u003d self.run_vsctl([\u0027--\u0027, \u0027get-controller\u0027, self.br_name])"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Fpmo%3D","line":121,"updated":"2014-02-25 14:05:03.000000000","message":"Same as the below.","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ea76326ffb7542c7b8359fcae2af8ad965a2f3c1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.run_vsctl(vsctl_command, check_error\u003dTrue)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def del_controller(self):"},{"line_number":121,"context_line":"        self.run_vsctl([\u0027--\u0027, \u0027del-controller\u0027, self.br_name])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_controller(self):"},{"line_number":124,"context_line":"        res \u003d self.run_vsctl([\u0027--\u0027, \u0027get-controller\u0027, self.br_name])"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Fhj8%3D","line":121,"in_reply_to":"AAAAU3%2F%2Fpmo%3D","updated":"2014-02-26 05:38:42.000000000","message":"Done","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3c5e932300bf6430a1bbe281866ebe8448416a98","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        self.run_vsctl([\u0027--\u0027, \u0027del-controller\u0027, self.br_name])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_controller(self):"},{"line_number":124,"context_line":"        res \u003d self.run_vsctl([\u0027--\u0027, \u0027get-controller\u0027, self.br_name])"},{"line_number":125,"context_line":"        if res:"},{"line_number":126,"context_line":"            return res.strip().split(\u0027\\n\u0027)"},{"line_number":127,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2FpnI%3D","line":124,"updated":"2014-02-25 14:05:03.000000000","message":"Please use check_error\u003dTrue. IMO hiding an error to a caller is a bad convention in ovs_lib. All new methods should raise an error when an error occurs. (In this case we can know an error by checking the return value is None or not, but raising an exception is more clear.)","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ea76326ffb7542c7b8359fcae2af8ad965a2f3c1","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        self.run_vsctl([\u0027--\u0027, \u0027del-controller\u0027, self.br_name])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_controller(self):"},{"line_number":124,"context_line":"        res \u003d self.run_vsctl([\u0027--\u0027, \u0027get-controller\u0027, self.br_name])"},{"line_number":125,"context_line":"        if res:"},{"line_number":126,"context_line":"            return res.strip().split(\u0027\\n\u0027)"},{"line_number":127,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Fhj0%3D","line":124,"in_reply_to":"AAAAU3%2F%2FpnI%3D","updated":"2014-02-26 05:38:42.000000000","message":"Done","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3c5e932300bf6430a1bbe281866ebe8448416a98","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        raise SystemError(msg)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"},{"line_number":528,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":529,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":530,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2FpaU%3D","line":527,"updated":"2014-02-25 14:05:03.000000000","message":"The signature of this method is strange. VXLAN is embedded in the error message, but the required version is passed from a caller. I don\u0027t think the minimum OVS version of VXLAN varies depending on neutron plugins/drivers. I would suggest to define the required version in this method. (Or you should pass both a feature name and a required version to this method)","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ea76326ffb7542c7b8359fcae2af8ad965a2f3c1","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        raise SystemError(msg)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"def check_ovs_vxlan_version(min_required_version, root_helper):"},{"line_number":528,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":529,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":530,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Fhjw%3D","line":527,"in_reply_to":"AAAAU3%2F%2FpaU%3D","updated":"2014-02-26 05:38:42.000000000","message":"Done","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6adc24ff2c03d9b9a509c0c98a79e9ddb0eff7de","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"def check_ovs_vxlan_version("},{"line_number":532,"context_line":"        root_helper,"},{"line_number":533,"context_line":"        min_required_version\u003dconstants.MINIMUM_OVS_VXLAN_VERSION):"},{"line_number":534,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":535,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":536,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FhTE%3D","line":533,"updated":"2014-02-26 06:21:46.000000000","message":"One question: Why do we need min_required_version as an argument?\nI don\u0027t think the minimum version with VXLAN support varies by implemetations.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"4cb7c34b036fb890cdf1eb795f0c1b92ecc78890","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"def check_ovs_vxlan_version("},{"line_number":532,"context_line":"        root_helper,"},{"line_number":533,"context_line":"        min_required_version\u003dconstants.MINIMUM_OVS_VXLAN_VERSION):"},{"line_number":534,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":535,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":536,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAVX%2F%2F%2F4Q%3D","line":533,"in_reply_to":"AAAAU3%2F%2FfAM%3D","updated":"2014-02-26 22:59:19.000000000","message":"OK. I don\u0027t fixate using min_required_version argument.\nAnd currently I think we don\u0027t need some feature list.\nI will adopt:\n\ncheck_ovs_vxlan_version(root_helper).","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f1179f9376b2e20066fa045077dc6a97405a39c2","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"def check_ovs_vxlan_version("},{"line_number":532,"context_line":"        root_helper,"},{"line_number":533,"context_line":"        min_required_version\u003dconstants.MINIMUM_OVS_VXLAN_VERSION):"},{"line_number":534,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":535,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":536,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FfAM%3D","line":533,"in_reply_to":"AAAAU3%2F%2FhBY%3D","updated":"2014-02-26 11:04:40.000000000","message":"I think a feature and a minimum required version are a pair, so passing only minimum required version doesn\u0027t seem to make sense.\nIf we have more detail check of VXLAN functions, the signature of this method should be either of:\n\n- check_ovs_vxlan_version(root_helper)\n- check_ovs_vxlan_version(root_helper, a list of required features)\n\nIn any case, passing only min required version doesn\u0027t make sense to me.\n\nThought?","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"a7f2c833103859aa508463528ef1c729e09b0c5f","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"def check_ovs_vxlan_version("},{"line_number":532,"context_line":"        root_helper,"},{"line_number":533,"context_line":"        min_required_version\u003dconstants.MINIMUM_OVS_VXLAN_VERSION):"},{"line_number":534,"context_line":"    installed_klm_version \u003d get_installed_ovs_klm_version()"},{"line_number":535,"context_line":"    installed_usr_version \u003d get_installed_ovs_usr_version(root_helper)"},{"line_number":536,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support \""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FhBY%3D","line":533,"in_reply_to":"AAAAU3%2F%2FhTE%3D","updated":"2014-02-26 07:24:30.000000000","message":"I thought that we may want to specify a version support more functions of a vxlan.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"}],"neutron/common/constants.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"344dae750d645cc02f9638c41db0ae86541b4b02","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fh48%3D","line":70,"updated":"2014-02-12 15:37:21.000000000","message":"How about keeping it simple and readable:\n\n    AGENT_TYPE_OPENFLOW \u003d \u0027OpenFlow agent\u0027","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fbcc%3D","line":70,"in_reply_to":"AAAAUX%2F%2Fh48%3D","updated":"2014-02-13 09:31:38.000000000","message":"Yamamoto provides comments about a module name. Please see that.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FzsU%3D","line":70,"updated":"2014-02-24 17:47:06.000000000","message":"Nit: OpenFlow driver agent","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f1abae1987e2d02b23d7acaa0c3286e75822cc0f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fyx4%3D","line":70,"in_reply_to":"AAAAU3%2F%2FzsU%3D","updated":"2014-02-24 19:02:24.000000000","message":"\"OF Agent\" is the name of this driver.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"65ce51460037a8a15dd44f16f9e392c560c56f69","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Flg0%3D","line":70,"updated":"2014-02-25 19:40:10.000000000","message":"I still think this is redundant and reads clumsily.","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"7b406321ed4699884df45c3ea8ea8e8003dd92c6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2FcpE%3D","line":70,"in_reply_to":"AAAAU3%2F%2FkLs%3D","updated":"2014-02-26 15:36:34.000000000","message":"Much better!","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"c13e230a8b49f0052c4f351339271eb506f3b240","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2FkLs%3D","line":70,"in_reply_to":"AAAAU3%2F%2Flg0%3D","updated":"2014-02-25 22:05:52.000000000","message":"Thank you for your comment.\nActually I also feel it strange. How about \"OFA driver Agent\" ?","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"54558b7294b30fd05ebe6e6e9dd84413291e9164","unresolved":false,"context_lines":[{"line_number":67,"context_line":"AGENT_TYPE_LINUXBRIDGE \u003d \u0027Linux bridge agent\u0027"},{"line_number":68,"context_line":"AGENT_TYPE_HYPERV \u003d \u0027HyperV agent\u0027"},{"line_number":69,"context_line":"AGENT_TYPE_NEC \u003d \u0027NEC plugin agent\u0027"},{"line_number":70,"context_line":"AGENT_TYPE_OFA \u003d \u0027OF Agent driver agent\u0027"},{"line_number":71,"context_line":"AGENT_TYPE_L3 \u003d \u0027L3 agent\u0027"},{"line_number":72,"context_line":"AGENT_TYPE_LOADBALANCER \u003d \u0027Loadbalancer agent\u0027"},{"line_number":73,"context_line":"AGENT_TYPE_MLNX \u003d \u0027Mellanox plugin agent\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2Fcos%3D","line":70,"updated":"2014-02-26 15:37:04.000000000","message":"I like the \"OFA driver agent\" name here much better, per your comment on patch 13.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"}],"neutron/plugins/ml2/drivers/mech_ofagent.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"344dae750d645cc02f9638c41db0ae86541b4b02","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class OfagentMechanismDriver(mech_agent.AgentMechanismDriverBase):"},{"line_number":31,"context_line":"    \"\"\"Attach to networks using ofagent L2 agent."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    The OfagentMechanismDriver integrates the ml2 plugin with the"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fh4A%3D","line":30,"updated":"2014-02-12 15:37:21.000000000","message":"I suggest calling it just \u0027OpenflowMechanismDriver\u0027.\n\nSame with the name of this module, it should be mech_openflow.py","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class OfagentMechanismDriver(mech_agent.AgentMechanismDriverBase):"},{"line_number":31,"context_line":"    \"\"\"Attach to networks using ofagent L2 agent."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    The OfagentMechanismDriver integrates the ml2 plugin with the"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FbcE%3D","line":30,"in_reply_to":"AAAAUX%2F%2Fh4A%3D","updated":"2014-02-13 09:31:38.000000000","message":"Yamamoto provides comments about a module name. Please see that.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Based on openvswitch mechanism driver."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Copyright (c) 2013 OpenStack Foundation"},{"line_number":6,"context_line":"# All Rights Reserved."},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":9,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZEo%3D","line":6,"updated":"2014-02-13 15:06:54.000000000","message":"Is it required?","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Based on openvswitch mechanism driver."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Copyright (c) 2013 OpenStack Foundation"},{"line_number":6,"context_line":"# All Rights Reserved."},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":9,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSgQ%3D","line":6,"in_reply_to":"AAAAUX%2F%2FZEo%3D","updated":"2014-02-14 07:46:44.000000000","message":"This module is derived many codes from mech_openvswitch.py else class name.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bfbe2bf32eba4f93f08e43ececafebb87ea600e7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        super(OfagentMechanismDriver, self).__init__("},{"line_number":41,"context_line":"            constants.AGENT_TYPE_OFA,"},{"line_number":42,"context_line":"            portbindings.VIF_TYPE_OVS,"},{"line_number":43,"context_line":"            True)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def check_segment_for_agent(self, segment, agent):"},{"line_number":46,"context_line":"        mappings \u003d agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FsN4%3D","line":43,"updated":"2014-02-25 08:41:13.000000000","message":"vif_details patch has just been merged. Please follow it.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        super(OfagentMechanismDriver, self).__init__("},{"line_number":41,"context_line":"            constants.AGENT_TYPE_OFA,"},{"line_number":42,"context_line":"            portbindings.VIF_TYPE_OVS,"},{"line_number":43,"context_line":"            True)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def check_segment_for_agent(self, segment, agent):"},{"line_number":46,"context_line":"        mappings \u003d agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqq8%3D","line":43,"in_reply_to":"AAAAU3%2F%2FsN4%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  {\u0027segment\u0027: segment, \u0027mappings\u0027: mappings,"},{"line_number":52,"context_line":"                   \u0027tunnel_types\u0027: tunnel_types})"},{"line_number":53,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"},{"line_number":54,"context_line":"        if network_type \u003d\u003d \u0027local\u0027:"},{"line_number":55,"context_line":"            return True"},{"line_number":56,"context_line":"        elif network_type in tunnel_types:"},{"line_number":57,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6uI%3D","line":54,"updated":"2014-02-24 04:13:01.000000000","message":"Use a constant variable instead of using an immediate value.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  {\u0027segment\u0027: segment, \u0027mappings\u0027: mappings,"},{"line_number":52,"context_line":"                   \u0027tunnel_types\u0027: tunnel_types})"},{"line_number":53,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"},{"line_number":54,"context_line":"        if network_type \u003d\u003d \u0027local\u0027:"},{"line_number":55,"context_line":"            return True"},{"line_number":56,"context_line":"        elif network_type in tunnel_types:"},{"line_number":57,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqq4%3D","line":54,"in_reply_to":"AAAAU3%2F%2F5%2FM%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bba7002d16cc3fe89d323f8088c73637e30b60d3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  {\u0027segment\u0027: segment, \u0027mappings\u0027: mappings,"},{"line_number":52,"context_line":"                   \u0027tunnel_types\u0027: tunnel_types})"},{"line_number":53,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"},{"line_number":54,"context_line":"        if network_type \u003d\u003d \u0027local\u0027:"},{"line_number":55,"context_line":"            return True"},{"line_number":56,"context_line":"        elif network_type in tunnel_types:"},{"line_number":57,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F5%2FM%3D","line":54,"in_reply_to":"AAAAU3%2F%2F6kY%3D","updated":"2014-02-24 06:09:58.000000000","message":"Please see https://review.openstack.org/#/c/69775/11/neutron/plugins/ml2/drivers/mechanism_odl.py\nMy suggestion is to use plugin.common.constants unless you define a new network_type.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4b5354925c2609f95faa394a44715299c66984fa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  {\u0027segment\u0027: segment, \u0027mappings\u0027: mappings,"},{"line_number":52,"context_line":"                   \u0027tunnel_types\u0027: tunnel_types})"},{"line_number":53,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"},{"line_number":54,"context_line":"        if network_type \u003d\u003d \u0027local\u0027:"},{"line_number":55,"context_line":"            return True"},{"line_number":56,"context_line":"        elif network_type in tunnel_types:"},{"line_number":57,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6kY%3D","line":54,"in_reply_to":"AAAAU3%2F%2F6uI%3D","updated":"2014-02-24 04:35:55.000000000","message":"every other ml2 mech drivers in tree seem using immediates like this.\nare you suggesting to change all of them?\nit sounds beyond the scope of this proposal to me.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"b289adce9412e7379aaf7196777554cd516a024a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                  {\u0027segment\u0027: segment, \u0027mappings\u0027: mappings,"},{"line_number":53,"context_line":"                   \u0027tunnel_types\u0027: tunnel_types})"},{"line_number":54,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"},{"line_number":55,"context_line":"        if network_type \u003d\u003d p_const.TYPE_LOCAL:"},{"line_number":56,"context_line":"            return True"},{"line_number":57,"context_line":"        elif network_type in tunnel_types:"},{"line_number":58,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVX%2F%2FpxI%3D","line":55,"updated":"2014-03-01 22:48:47.000000000","message":"return (\n    network_type \u003d\u003d p_const.TYPE_LOCAL or\n    network_type in tunnel_types or\n    (network_type in [p_const.TYPE_FLAT, p_const.TYPE_VLAN] and segment[api.PHYSICAL_NETWORK] in mappings)\n)","commit_id":"ddcfbfd2492a12d43e57e3ae85b2796a71136b9c"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"be340b1176d74cef6a0c9ea9635d62c67382b27d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                  {\u0027segment\u0027: segment, \u0027mappings\u0027: mappings,"},{"line_number":53,"context_line":"                   \u0027tunnel_types\u0027: tunnel_types})"},{"line_number":54,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"},{"line_number":55,"context_line":"        if network_type \u003d\u003d p_const.TYPE_LOCAL:"},{"line_number":56,"context_line":"            return True"},{"line_number":57,"context_line":"        elif network_type in tunnel_types:"},{"line_number":58,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVX%2F%2FpU0%3D","line":55,"in_reply_to":"AAAAVX%2F%2FpxI%3D","updated":"2014-03-02 03:05:53.000000000","message":"Done","commit_id":"ddcfbfd2492a12d43e57e3ae85b2796a71136b9c"}],"neutron/plugins/ofagent/README":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"344dae750d645cc02f9638c41db0ae86541b4b02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"OpenFlow Agent ML2 mechanism driver"},{"line_number":2,"context_line":"This directory includes agent for OpenFlow Agent mechanism driver."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# -- Installation"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2Fh14%3D","line":1,"updated":"2014-02-12 15:37:21.000000000","message":"Remove. (The driver is not here.)","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":1,"context_line":"OpenFlow Agent ML2 mechanism driver"},{"line_number":2,"context_line":"This directory includes agent for OpenFlow Agent mechanism driver."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# -- Installation"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2FbZE%3D","line":1,"in_reply_to":"AAAAUX%2F%2Fh14%3D","updated":"2014-02-13 09:31:38.000000000","message":"Yes, but I forgot to fix for this comment. I will fix this at a next push.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"344dae750d645cc02f9638c41db0ae86541b4b02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"OpenFlow Agent ML2 mechanism driver"},{"line_number":2,"context_line":"This directory includes agent for OpenFlow Agent mechanism driver."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# -- Installation"},{"line_number":5,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2Fh1w%3D","line":2,"updated":"2014-02-12 15:37:21.000000000","message":"\u0027This directory includes agent for OpenFlow mechanism driver.\u0027\n\nI think it would be better to name this directory just \u0027openflow\u0027, since you have a subdirectory called \u0027agent\u0027 with the agent code.\n\n    neutron/plugins/openflow\n    neutron/plugins/openflow/agent","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":1,"context_line":"OpenFlow Agent ML2 mechanism driver"},{"line_number":2,"context_line":"This directory includes agent for OpenFlow Agent mechanism driver."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# -- Installation"},{"line_number":5,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2Fbbg%3D","line":2,"in_reply_to":"AAAAUX%2F%2Fh1w%3D","updated":"2014-02-13 09:31:38.000000000","message":"Yamamoto provides comments about a module name. Please see that.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"}],"neutron/plugins/ofagent/agent/ofa_neutron_agent.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":869,"context_line":"                                              out_port\u003dryu_ofp13.OFPP_ANY)"},{"line_number":870,"context_line":"        self.ryu_send_msg(msg)"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"        # Table 0 (default) will sort incoming traffic depending on in_port"},{"line_number":873,"context_line":"        self._tun_br_sort_incoming_traffic_depend_in_port(self.tun_br)"},{"line_number":874,"context_line":"        # PATCH_LV_TO_TUN table will handle packets coming from patch_int"},{"line_number":875,"context_line":"        # unicasts go to table UCAST_TO_TUN where remote adresses are learnt"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FjB4%3D","line":872,"updated":"2014-02-12 13:29:20.000000000","message":"Now that you have the functions extracted, the comments could be removed, or added as docstrings for the individual functions.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":869,"context_line":"                                              out_port\u003dryu_ofp13.OFPP_ANY)"},{"line_number":870,"context_line":"        self.ryu_send_msg(msg)"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"        # Table 0 (default) will sort incoming traffic depending on in_port"},{"line_number":873,"context_line":"        self._tun_br_sort_incoming_traffic_depend_in_port(self.tun_br)"},{"line_number":874,"context_line":"        # PATCH_LV_TO_TUN table will handle packets coming from patch_int"},{"line_number":875,"context_line":"        # unicasts go to table UCAST_TO_TUN where remote adresses are learnt"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fbiw%3D","line":872,"in_reply_to":"AAAAUX%2F%2FjB4%3D","updated":"2014-02-13 09:31:38.000000000","message":"done","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":879,"context_line":"        # Tables [tunnel_type]_TUN_TO_LV will set lvid depending on tun_id"},{"line_number":880,"context_line":"        # for each tunnel type, and resubmit to table LEARN_FROM_TUN where"},{"line_number":881,"context_line":"        # remote mac adresses will be learnt"},{"line_number":882,"context_line":"        for tunnel_type in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":883,"context_line":"            msg \u003d self.tun_br.ofparser.OFPFlowMod("},{"line_number":884,"context_line":"                self.tun_br.datapath,"},{"line_number":885,"context_line":"                table_id\u003dconstants.TUN_TABLE[tunnel_type],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FjAQ%3D","line":882,"updated":"2014-02-12 13:29:20.000000000","message":"This block could be extracted to a function too, with intention revealing name, and docstring in function for details.\n\nIdea is to have all the calls in setup_tunnel_br() at the same level of abstraction.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":879,"context_line":"        # Tables [tunnel_type]_TUN_TO_LV will set lvid depending on tun_id"},{"line_number":880,"context_line":"        # for each tunnel type, and resubmit to table LEARN_FROM_TUN where"},{"line_number":881,"context_line":"        # remote mac adresses will be learnt"},{"line_number":882,"context_line":"        for tunnel_type in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":883,"context_line":"            msg \u003d self.tun_br.ofparser.OFPFlowMod("},{"line_number":884,"context_line":"                self.tun_br.datapath,"},{"line_number":885,"context_line":"                table_id\u003dconstants.TUN_TABLE[tunnel_type],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fbik%3D","line":882,"in_reply_to":"AAAAUX%2F%2FjAQ%3D","updated":"2014-02-13 09:31:38.000000000","message":"done","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":893,"context_line":"        self._tun_br_goto_table_flood_unknown_unicast(self.tun_br)"},{"line_number":894,"context_line":"        # FLOOD_TO_TUN will handle flooding in tunnels based on lvid,"},{"line_number":895,"context_line":"        # for now, add a default drop action"},{"line_number":896,"context_line":"        msg \u003d self.tun_br.ofparser.OFPFlowMod("},{"line_number":897,"context_line":"            self.tun_br.datapath,"},{"line_number":898,"context_line":"            table_id\u003dconstants.FLOOD_TO_TUN,"},{"line_number":899,"context_line":"            priority\u003d0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FjAE%3D","line":896,"updated":"2014-02-12 13:29:20.000000000","message":"Ditto.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":893,"context_line":"        self._tun_br_goto_table_flood_unknown_unicast(self.tun_br)"},{"line_number":894,"context_line":"        # FLOOD_TO_TUN will handle flooding in tunnels based on lvid,"},{"line_number":895,"context_line":"        # for now, add a default drop action"},{"line_number":896,"context_line":"        msg \u003d self.tun_br.ofparser.OFPFlowMod("},{"line_number":897,"context_line":"            self.tun_br.datapath,"},{"line_number":898,"context_line":"            table_id\u003dconstants.FLOOD_TO_TUN,"},{"line_number":899,"context_line":"            priority\u003d0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fbig%3D","line":896,"in_reply_to":"AAAAUX%2F%2FjAE%3D","updated":"2014-02-13 09:31:38.000000000","message":"done","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2dceb1fd738177c04e863972a4ea1cbaa42c291f","unresolved":false,"context_lines":[{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":975,"context_line":"            (int_veth,"},{"line_number":976,"context_line":"             phys_veth) \u003d self._phys_br_create_veth_to_patch_phys_with_int_br("},{"line_number":977,"context_line":"                 br, physical_network, bridge, ip_wrapper"},{"line_number":978,"context_line":"             )"},{"line_number":979,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2Fi4s%3D","line":976,"updated":"2014-02-12 13:29:20.000000000","message":"Consider a function...\n\n    def patch_physical_bridge_with_integration_bridge():\n        create_veth_interface()\n        add_veth_to_bridges()\n        block_untranslated_traffic_over_veth()\n        enable_veth_to_pass_traffic()\n\nto encompass all the steps. Suggestion is to have functions at a similar level of abstraction, so that it\u0027s easier to read/understand.\n\nRight now, still have some at lower level (like L984-985) mixed with some at higher (L975-981).\n\nIn general setup_physical_bridges would be nicer, if it had functions that broke out the different tasks so that a higher level of abstraction is presented and it is easier to understands the steps it performs.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"0425d7c38a2357edfb4d5663f511f49b48493f79","unresolved":false,"context_lines":[{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":975,"context_line":"            (int_veth,"},{"line_number":976,"context_line":"             phys_veth) \u003d self._phys_br_create_veth_to_patch_phys_with_int_br("},{"line_number":977,"context_line":"                 br, physical_network, bridge, ip_wrapper"},{"line_number":978,"context_line":"             )"},{"line_number":979,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FbfY%3D","line":976,"in_reply_to":"AAAAUX%2F%2Fi4s%3D","updated":"2014-02-13 09:31:38.000000000","message":"Thank you for your detailed descriptions.\ndone.","commit_id":"e061a9569eb2481ba64f06b11d9e7782f1cb097f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Based on openvswitch agent."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Copyright 2011 Nicira Networks, Inc."},{"line_number":6,"context_line":"# All Rights Reserved."},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":9,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZCE%3D","line":6,"updated":"2014-02-13 15:06:54.000000000","message":"Is it required? It no longer seems a copy-and-modified version of ovs-agent.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Based on openvswitch agent."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Copyright 2011 Nicira Networks, Inc."},{"line_number":6,"context_line":"# All Rights Reserved."},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":9,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FScU%3D","line":6,"in_reply_to":"AAAAUX%2F%2FZCE%3D","updated":"2014-02-14 07:46:44.000000000","message":"This module still has original OVS codes.\ne.g.: LocalVLANMapping class, tunnel_update, ovsdb_monitor_loop, etc","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        self.local_vlan_map[net_uuid] \u003d LocalVLANMapping(lvid, network_type,"},{"line_number":443,"context_line":"                                                         physical_network,"},{"line_number":444,"context_line":"                                                         segmentation_id)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        if network_type in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":447,"context_line":"            if self.enable_tunneling:"},{"line_number":448,"context_line":"                # outbound broadcast/multicast"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZAc%3D","line":445,"updated":"2014-02-13 15:06:54.000000000","message":"It is better to make the logics for tunnel, flat and vlan separate methods.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        self.local_vlan_map[net_uuid] \u003d LocalVLANMapping(lvid, network_type,"},{"line_number":443,"context_line":"                                                         physical_network,"},{"line_number":444,"context_line":"                                                         segmentation_id)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        if network_type in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":447,"context_line":"            if self.enable_tunneling:"},{"line_number":448,"context_line":"                # outbound broadcast/multicast"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSYQ%3D","line":445,"in_reply_to":"AAAAUX%2F%2FZAc%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"93f97fe4c67f45df927d98007a4ac56dfd14168a","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        return ancillary_bridges"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    # Table 0 (default) will sort incoming traffic depending on in_port"},{"line_number":789,"context_line":"    def _tun_br_sort_incoming_traffic_depend_in_port(self, br):"},{"line_number":790,"context_line":"        match \u003d br.ofparser.OFPMatch("},{"line_number":791,"context_line":"            in_port\u003dint(self.patch_int_ofport))"},{"line_number":792,"context_line":"        instructions \u003d [br.ofparser.OFPInstructionGotoTable("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FT84%3D","line":789,"updated":"2014-02-14 02:17:11.000000000","message":"For each of these functions, rather than putting a comment block before. Consider using a docstring for the function, with a one line summary, and then additional lines for details on the function. Per PEP8/PEP257.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        return ancillary_bridges"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    # Table 0 (default) will sort incoming traffic depending on in_port"},{"line_number":789,"context_line":"    def _tun_br_sort_incoming_traffic_depend_in_port(self, br):"},{"line_number":790,"context_line":"        match \u003d br.ofparser.OFPMatch("},{"line_number":791,"context_line":"            in_port\u003dint(self.patch_int_ofport))"},{"line_number":792,"context_line":"        instructions \u003d [br.ofparser.OFPInstructionGotoTable("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSXU%3D","line":789,"in_reply_to":"AAAAUX%2F%2FT84%3D","updated":"2014-02-14 07:46:44.000000000","message":"Deleted comments because of descriptional method name.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d0f1f698dfa95fec6c079e53c68a718719b3533","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def __eq__(self, other):"},{"line_number":93,"context_line":"        \"\"\"Compare only fields that will cause us to re-wire.\"\"\""},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            return (self and other"},{"line_number":96,"context_line":"                    and self.id \u003d\u003d other.id"},{"line_number":97,"context_line":"                    and self.admin_state_up \u003d\u003d other.admin_state_up)"},{"line_number":98,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BZzY%3D","line":95,"updated":"2014-02-21 11:55:54.000000000","message":"When can self be false?","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"05aab8360960a59af6847e748378079f35344ce0","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def __eq__(self, other):"},{"line_number":93,"context_line":"        \"\"\"Compare only fields that will cause us to re-wire.\"\"\""},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            return (self and other"},{"line_number":96,"context_line":"                    and self.id \u003d\u003d other.id"},{"line_number":97,"context_line":"                    and self.admin_state_up \u003d\u003d other.admin_state_up)"},{"line_number":98,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BXwQ%3D","line":95,"in_reply_to":"AAAAUX%2F%2BZzY%3D","updated":"2014-02-21 15:37:52.000000000","message":"Done","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d0f1f698dfa95fec6c079e53c68a718719b3533","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            return"},{"line_number":399,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":400,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027, tunnel_ip)"},{"line_number":401,"context_line":"        if not tunnel_id:"},{"line_number":402,"context_line":"            tunnel_id \u003d tunnel_ip"},{"line_number":403,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027)"},{"line_number":404,"context_line":"        if not tunnel_type:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BZyU%3D","line":401,"updated":"2014-02-21 11:55:54.000000000","message":"Handled by L400","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"05aab8360960a59af6847e748378079f35344ce0","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            return"},{"line_number":399,"context_line":"        tunnel_ip \u003d kwargs.get(\u0027tunnel_ip\u0027)"},{"line_number":400,"context_line":"        tunnel_id \u003d kwargs.get(\u0027tunnel_id\u0027, tunnel_ip)"},{"line_number":401,"context_line":"        if not tunnel_id:"},{"line_number":402,"context_line":"            tunnel_id \u003d tunnel_ip"},{"line_number":403,"context_line":"        tunnel_type \u003d kwargs.get(\u0027tunnel_type\u0027)"},{"line_number":404,"context_line":"        if not tunnel_type:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BXuQ%3D","line":401,"in_reply_to":"AAAAUX%2F%2BZyU%3D","updated":"2014-02-21 15:37:52.000000000","message":"Oops, I was not aware.","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d0f1f698dfa95fec6c079e53c68a718719b3533","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"        if \u0027added\u0027 in port_info:"},{"line_number":1190,"context_line":"            start \u003d time.time()"},{"line_number":1191,"context_line":"            resync_a \u003d self.treat_devices_added(port_info[\u0027added\u0027])"},{"line_number":1192,"context_line":"            LOG.debug(_(\"process_network_ports - iteration:%(iter_num)d -\""},{"line_number":1193,"context_line":"                        \"treat_devices_added completed in %(elapsed).3f\"),"},{"line_number":1194,"context_line":"                      {\u0027iter_num\u0027: self.iter_num,"},{"line_number":1195,"context_line":"                       \u0027elapsed\u0027: time.time() - start})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BZwA%3D","line":1192,"updated":"2014-02-21 11:55:54.000000000","message":"space after dash at end of line.","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"05aab8360960a59af6847e748378079f35344ce0","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"        if \u0027added\u0027 in port_info:"},{"line_number":1190,"context_line":"            start \u003d time.time()"},{"line_number":1191,"context_line":"            resync_a \u003d self.treat_devices_added(port_info[\u0027added\u0027])"},{"line_number":1192,"context_line":"            LOG.debug(_(\"process_network_ports - iteration:%(iter_num)d -\""},{"line_number":1193,"context_line":"                        \"treat_devices_added completed in %(elapsed).3f\"),"},{"line_number":1194,"context_line":"                      {\u0027iter_num\u0027: self.iter_num,"},{"line_number":1195,"context_line":"                       \u0027elapsed\u0027: time.time() - start})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BXvk%3D","line":1192,"in_reply_to":"AAAAUX%2F%2BZwA%3D","updated":"2014-02-21 15:37:52.000000000","message":"Done","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d0f1f698dfa95fec6c079e53c68a718719b3533","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        if \u0027removed\u0027 in port_info:"},{"line_number":1197,"context_line":"            start \u003d time.time()"},{"line_number":1198,"context_line":"            resync_b \u003d self.treat_devices_removed(port_info[\u0027removed\u0027])"},{"line_number":1199,"context_line":"            LOG.debug(_(\"process_network_ports - iteration:%(iter_num)d -\""},{"line_number":1200,"context_line":"                        \"treat_devices_removed completed in %(elapsed).3f\"),"},{"line_number":1201,"context_line":"                      {\u0027iter_num\u0027: self.iter_num,"},{"line_number":1202,"context_line":"                       \u0027elapsed\u0027: time.time() - start})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BZvw%3D","line":1199,"updated":"2014-02-21 11:55:54.000000000","message":"ditto","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"05aab8360960a59af6847e748378079f35344ce0","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        if \u0027removed\u0027 in port_info:"},{"line_number":1197,"context_line":"            start \u003d time.time()"},{"line_number":1198,"context_line":"            resync_b \u003d self.treat_devices_removed(port_info[\u0027removed\u0027])"},{"line_number":1199,"context_line":"            LOG.debug(_(\"process_network_ports - iteration:%(iter_num)d -\""},{"line_number":1200,"context_line":"                        \"treat_devices_removed completed in %(elapsed).3f\"),"},{"line_number":1201,"context_line":"                      {\u0027iter_num\u0027: self.iter_num,"},{"line_number":1202,"context_line":"                       \u0027elapsed\u0027: time.time() - start})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BXvg%3D","line":1199,"in_reply_to":"AAAAUX%2F%2BZvw%3D","updated":"2014-02-21 15:37:52.000000000","message":"Done","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d0f1f698dfa95fec6c079e53c68a718719b3533","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"                        # If treat devices fails - must resync with plugin"},{"line_number":1295,"context_line":"                        sync \u003d self.process_network_ports(port_info)"},{"line_number":1296,"context_line":"                        LOG.debug(_(\"Agent ovsdb_monitor_loop - \""},{"line_number":1297,"context_line":"                                    \"iteration:%(iter_num)d -\""},{"line_number":1298,"context_line":"                                    \"ports processed. Elapsed:%(elapsed).3f\"),"},{"line_number":1299,"context_line":"                                  {\u0027iter_num\u0027: self.iter_num,"},{"line_number":1300,"context_line":"                                   \u0027elapsed\u0027: time.time() - start})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BZu8%3D","line":1297,"updated":"2014-02-21 11:55:54.000000000","message":"space after dash at end of line.","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"05aab8360960a59af6847e748378079f35344ce0","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"                        # If treat devices fails - must resync with plugin"},{"line_number":1295,"context_line":"                        sync \u003d self.process_network_ports(port_info)"},{"line_number":1296,"context_line":"                        LOG.debug(_(\"Agent ovsdb_monitor_loop - \""},{"line_number":1297,"context_line":"                                    \"iteration:%(iter_num)d -\""},{"line_number":1298,"context_line":"                                    \"ports processed. Elapsed:%(elapsed).3f\"),"},{"line_number":1299,"context_line":"                                  {\u0027iter_num\u0027: self.iter_num,"},{"line_number":1300,"context_line":"                                   \u0027elapsed\u0027: time.time() - start})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BXvU%3D","line":1297,"in_reply_to":"AAAAUX%2F%2BZu8%3D","updated":"2014-02-21 15:37:52.000000000","message":"Done","commit_id":"a65b3fdf13f17bc975a2c78fa721d1f626dacdc9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import time"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ryu.app.ofctl import api as ryu_api"},{"line_number":25,"context_line":"from ryu.base import app_manager"},{"line_number":26,"context_line":"from ryu.lib import hub"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6qs%3D","line":23,"updated":"2014-02-24 04:13:01.000000000","message":"No blank line here.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import time"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ryu.app.ofctl import api as ryu_api"},{"line_number":25,"context_line":"from ryu.base import app_manager"},{"line_number":26,"context_line":"from ryu.lib import hub"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqqQ%3D","line":23,"in_reply_to":"AAAAU3%2F%2F6qs%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from neutron.agent import securitygroups_rpc as sg_rpc"},{"line_number":35,"context_line":"from neutron.common import constants as q_const"},{"line_number":36,"context_line":"from neutron.common import topics"},{"line_number":37,"context_line":"from neutron.common import utils as q_utils"},{"line_number":38,"context_line":"from neutron import context"},{"line_number":39,"context_line":"from neutron.extensions import securitygroup as ext_sg"},{"line_number":40,"context_line":"from neutron.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6qk%3D","line":37,"updated":"2014-02-24 04:13:01.000000000","message":"n_utils?","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from neutron.agent import securitygroups_rpc as sg_rpc"},{"line_number":35,"context_line":"from neutron.common import constants as q_const"},{"line_number":36,"context_line":"from neutron.common import topics"},{"line_number":37,"context_line":"from neutron.common import utils as q_utils"},{"line_number":38,"context_line":"from neutron import context"},{"line_number":39,"context_line":"from neutron.extensions import securitygroup as ext_sg"},{"line_number":40,"context_line":"from neutron.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqqM%3D","line":37,"in_reply_to":"AAAAU3%2F%2F6qk%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        return hash(self.id)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class OVSBridge(ovs_lib.OVSBridge):"},{"line_number":105,"context_line":"    def __init__(self, br_name, root_helper, ryuapp):"},{"line_number":106,"context_line":"        super(OVSBridge, self).__init__(br_name, root_helper)"},{"line_number":107,"context_line":"        self.datapath_id \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6s8%3D","line":104,"updated":"2014-02-24 04:13:01.000000000","message":"I would suggest to implement this in ovs_lib. I am not which is better to add these methods to the existing OVSBridge or to define a new class which works as a openflow switch by extending OVSBridge, however anyway it is better to implement it in ovs_lib.\n\nI see the similar code in IBM SDNVE plugin.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        return hash(self.id)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class OVSBridge(ovs_lib.OVSBridge):"},{"line_number":105,"context_line":"    def __init__(self, br_name, root_helper, ryuapp):"},{"line_number":106,"context_line":"        super(OVSBridge, self).__init__(br_name, root_helper)"},{"line_number":107,"context_line":"        self.datapath_id \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqqI%3D","line":104,"in_reply_to":"AAAAU3%2F%2F6s8%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        return hash(self.id)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class OVSBridge(ovs_lib.OVSBridge):"},{"line_number":105,"context_line":"    def __init__(self, br_name, root_helper, ryuapp):"},{"line_number":106,"context_line":"        super(OVSBridge, self).__init__(br_name, root_helper)"},{"line_number":107,"context_line":"        self.datapath_id \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fzqs%3D","line":104,"in_reply_to":"AAAAU3%2F%2F6s8%3D","updated":"2014-02-24 17:47:06.000000000","message":"I agree with Akihiro here, this should be in ovs_lib.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        return hash(self.id)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class OVSBridge(ovs_lib.OVSBridge):"},{"line_number":105,"context_line":"    def __init__(self, br_name, root_helper, ryuapp):"},{"line_number":106,"context_line":"        super(OVSBridge, self).__init__(br_name, root_helper)"},{"line_number":107,"context_line":"        self.datapath_id \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqqA%3D","line":104,"in_reply_to":"AAAAU3%2F%2Fzqs%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        res \u003d self.run_vsctl([\"--\", \"get-controller\", self.br_name])"},{"line_number":122,"context_line":"        if res:"},{"line_number":123,"context_line":"            return res.strip().split(\"\\n\")"},{"line_number":124,"context_line":"        return []"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def set_protocols(self, protocols\u003d\u0027OpenFlow13\u0027):"},{"line_number":127,"context_line":"        self.run_vsctl([\u0027--\u0027, \u0027set\u0027, \u0027bridge\u0027, self.br_name,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6qE%3D","line":124,"updated":"2014-02-24 04:13:01.000000000","message":"Don\u0027t we need to distinguish an empty list from an error? run_vsctl retruns None when an error occurs.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        res \u003d self.run_vsctl([\"--\", \"get-controller\", self.br_name])"},{"line_number":122,"context_line":"        if res:"},{"line_number":123,"context_line":"            return res.strip().split(\"\\n\")"},{"line_number":124,"context_line":"        return []"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def set_protocols(self, protocols\u003d\u0027OpenFlow13\u0027):"},{"line_number":127,"context_line":"        self.run_vsctl([\u0027--\u0027, \u0027set\u0027, \u0027bridge\u0027, self.br_name,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqp8%3D","line":124,"in_reply_to":"AAAAU3%2F%2F6qE%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if not controller_names:"},{"line_number":150,"context_line":"            host \u003d cfg.CONF.ofp_listen_host"},{"line_number":151,"context_line":"            if not host:"},{"line_number":152,"context_line":"                host \u003d \u0027127.0.0.1\u0027"},{"line_number":153,"context_line":"            controller_names \u003d [\"tcp:%s:%d\" % (host,"},{"line_number":154,"context_line":"                                               cfg.CONF.ofp_tcp_listen_port)]"},{"line_number":155,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6pc%3D","line":152,"updated":"2014-02-24 04:13:01.000000000","message":"How about defining it as the default value of ofp_listen_host?","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"84978d368b4136dc23a8936af1d7e1ca4bc25ab7","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if not controller_names:"},{"line_number":150,"context_line":"            host \u003d cfg.CONF.ofp_listen_host"},{"line_number":151,"context_line":"            if not host:"},{"line_number":152,"context_line":"                host \u003d \u0027127.0.0.1\u0027"},{"line_number":153,"context_line":"            controller_names \u003d [\"tcp:%s:%d\" % (host,"},{"line_number":154,"context_line":"                                               cfg.CONF.ofp_tcp_listen_port)]"},{"line_number":155,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fun4%3D","line":152,"in_reply_to":"AAAAU3%2F%2F5%2FA%3D","updated":"2014-02-25 03:06:36.000000000","message":"Could you add commment on this \n127.0.0.1 is a default for agent style of controller","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bba7002d16cc3fe89d323f8088c73637e30b60d3","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if not controller_names:"},{"line_number":150,"context_line":"            host \u003d cfg.CONF.ofp_listen_host"},{"line_number":151,"context_line":"            if not host:"},{"line_number":152,"context_line":"                host \u003d \u0027127.0.0.1\u0027"},{"line_number":153,"context_line":"            controller_names \u003d [\"tcp:%s:%d\" % (host,"},{"line_number":154,"context_line":"                                               cfg.CONF.ofp_tcp_listen_port)]"},{"line_number":155,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F5%2FA%3D","line":152,"in_reply_to":"AAAAU3%2F%2F6iw%3D","updated":"2014-02-24 06:09:58.000000000","message":"I see. Let\u0027s keep it as-is.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4b5354925c2609f95faa394a44715299c66984fa","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if not controller_names:"},{"line_number":150,"context_line":"            host \u003d cfg.CONF.ofp_listen_host"},{"line_number":151,"context_line":"            if not host:"},{"line_number":152,"context_line":"                host \u003d \u0027127.0.0.1\u0027"},{"line_number":153,"context_line":"            controller_names \u003d [\"tcp:%s:%d\" % (host,"},{"line_number":154,"context_line":"                                               cfg.CONF.ofp_tcp_listen_port)]"},{"line_number":155,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6iw%3D","line":152,"in_reply_to":"AAAAU3%2F%2F6pc%3D","updated":"2014-02-24 04:35:55.000000000","message":"ofp_listen_host is came from the library (ryu), where 127.0.0.1 might not be a reasonable default.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if not controller_names:"},{"line_number":150,"context_line":"            host \u003d cfg.CONF.ofp_listen_host"},{"line_number":151,"context_line":"            if not host:"},{"line_number":152,"context_line":"                host \u003d \u0027127.0.0.1\u0027"},{"line_number":153,"context_line":"            controller_names \u003d [\"tcp:%s:%d\" % (host,"},{"line_number":154,"context_line":"                                               cfg.CONF.ofp_tcp_listen_port)]"},{"line_number":155,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqp4%3D","line":152,"in_reply_to":"AAAAU3%2F%2Fun4%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            self.set_protocols(protocols)"},{"line_number":157,"context_line":"            self.set_controller(controller_names)"},{"line_number":158,"context_line":"        except Exception:"},{"line_number":159,"context_line":"            LOG.exception(_(\"Agent terminated\"))"},{"line_number":160,"context_line":"            raise SystemExit(1)"},{"line_number":161,"context_line":"        self.find_datapath_id()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FzoA%3D","line":158,"updated":"2014-02-24 17:47:06.000000000","message":"Per Akihiro\u0027s comments in other files, do we want to capture a more specific exception here? There are a few other spots in this file where specific exceptions are not being caught as well.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            self.set_protocols(protocols)"},{"line_number":157,"context_line":"            self.set_controller(controller_names)"},{"line_number":158,"context_line":"        except Exception:"},{"line_number":159,"context_line":"            LOG.exception(_(\"Agent terminated\"))"},{"line_number":160,"context_line":"            raise SystemExit(1)"},{"line_number":161,"context_line":"        self.find_datapath_id()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqjw%3D","line":158,"in_reply_to":"AAAAU3%2F%2FzoA%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done.\nWill other cases have any problems?","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"84978d368b4136dc23a8936af1d7e1ca4bc25ab7","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        try:"},{"line_number":190,"context_line":"            agent_config \u003d create_agent_config_map(cfg.CONF)"},{"line_number":191,"context_line":"        except ValueError:"},{"line_number":192,"context_line":"            LOG.exception(_(\"Agent terminated\"))"},{"line_number":193,"context_line":"            raise SystemExit(1)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        is_xen_compute_host \u003d (\u0027rootwrap-xen-dom0\u0027 in"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fujg%3D","line":192,"updated":"2014-02-25 03:06:36.000000000","message":"Could you update exception message with more description?\n# failed to create agent config map or something","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        try:"},{"line_number":190,"context_line":"            agent_config \u003d create_agent_config_map(cfg.CONF)"},{"line_number":191,"context_line":"        except ValueError:"},{"line_number":192,"context_line":"            LOG.exception(_(\"Agent terminated\"))"},{"line_number":193,"context_line":"            raise SystemExit(1)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        is_xen_compute_host \u003d (\u0027rootwrap-xen-dom0\u0027 in"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqpo%3D","line":192,"in_reply_to":"AAAAU3%2F%2Fujg%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                 polling_interval, tunnel_types\u003dNone,"},{"line_number":226,"context_line":"                 veth_mtu\u003dNone, l2_population\u003dFalse,"},{"line_number":227,"context_line":"                 minimize_polling\u003dFalse,"},{"line_number":228,"context_line":"                 ovsdb_monitor_respawn_interval\u003d("},{"line_number":229,"context_line":"                     constants.MINIMUM_OVS_VXLAN_VERSION)):"},{"line_number":230,"context_line":"        \"\"\"Constructor."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FzpY%3D","line":228,"updated":"2014-02-24 17:47:06.000000000","message":"This is confusing, I don\u0027t see how assigning this to constants.MINIMUM_OVS_VXLAN_VERSION makes sense.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                 polling_interval, tunnel_types\u003dNone,"},{"line_number":226,"context_line":"                 veth_mtu\u003dNone, l2_population\u003dFalse,"},{"line_number":227,"context_line":"                 minimize_polling\u003dFalse,"},{"line_number":228,"context_line":"                 ovsdb_monitor_respawn_interval\u003d("},{"line_number":229,"context_line":"                     constants.MINIMUM_OVS_VXLAN_VERSION)):"},{"line_number":230,"context_line":"        \"\"\"Constructor."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqpc%3D","line":228,"in_reply_to":"AAAAU3%2F%2Fy1E%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f1abae1987e2d02b23d7acaa0c3286e75822cc0f","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                 polling_interval, tunnel_types\u003dNone,"},{"line_number":226,"context_line":"                 veth_mtu\u003dNone, l2_population\u003dFalse,"},{"line_number":227,"context_line":"                 minimize_polling\u003dFalse,"},{"line_number":228,"context_line":"                 ovsdb_monitor_respawn_interval\u003d("},{"line_number":229,"context_line":"                     constants.MINIMUM_OVS_VXLAN_VERSION)):"},{"line_number":230,"context_line":"        \"\"\"Constructor."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fy1E%3D","line":228,"in_reply_to":"AAAAU3%2F%2FzpY%3D","updated":"2014-02-24 19:02:24.000000000","message":"this looks like a bug. thanks for pointing out.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                ovs_lib.check_ovs_vxlan_version("},{"line_number":303,"context_line":"                    constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":304,"context_line":"                    self.root_helper)"},{"line_number":305,"context_line":"            except Exception:"},{"line_number":306,"context_line":"                LOG.exception(_(\"Agent terminated\"))"},{"line_number":307,"context_line":"                raise SystemExit(1)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6pI%3D","line":305,"updated":"2014-02-24 04:13:01.000000000","message":"Catch more specific exception.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                ovs_lib.check_ovs_vxlan_version("},{"line_number":303,"context_line":"                    constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":304,"context_line":"                    self.root_helper)"},{"line_number":305,"context_line":"            except Exception:"},{"line_number":306,"context_line":"                LOG.exception(_(\"Agent terminated\"))"},{"line_number":307,"context_line":"                raise SystemExit(1)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqoQ%3D","line":305,"in_reply_to":"AAAAU3%2F%2F6pI%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"84978d368b4136dc23a8936af1d7e1ca4bc25ab7","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        network_id \u003d kwargs.get(\u0027network_id\u0027)"},{"line_number":356,"context_line":"        LOG.debug(_(\"network_delete received network %s\"), network_id)"},{"line_number":357,"context_line":"        # The network may not be defined on this agent"},{"line_number":358,"context_line":"        lvm \u003d self.local_vlan_map.get(network_id)"},{"line_number":359,"context_line":"        if lvm:"},{"line_number":360,"context_line":"            self.reclaim_local_vlan(network_id)"},{"line_number":361,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fuig%3D","line":358,"updated":"2014-02-25 03:06:36.000000000","message":"What lvm stands for?","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9e3fdb250098b30124e747c00e20f6404724372d","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        network_id \u003d kwargs.get(\u0027network_id\u0027)"},{"line_number":356,"context_line":"        LOG.debug(_(\"network_delete received network %s\"), network_id)"},{"line_number":357,"context_line":"        # The network may not be defined on this agent"},{"line_number":358,"context_line":"        lvm \u003d self.local_vlan_map.get(network_id)"},{"line_number":359,"context_line":"        if lvm:"},{"line_number":360,"context_line":"            self.reclaim_local_vlan(network_id)"},{"line_number":361,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FuE8%3D","line":358,"in_reply_to":"AAAAU3%2F%2Fuig%3D","updated":"2014-02-25 04:09:05.000000000","message":"\"local vlan map\", i guess.\nit\u0027s inherited from OVS agent.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"84978d368b4136dc23a8936af1d7e1ca4bc25ab7","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        \"\"\""},{"line_number":418,"context_line":"        return dispatcher.RpcDispatcher([self])"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _provision_local_vlan_outbound_for_tunnel(self, lvid,"},{"line_number":421,"context_line":"                                                  segmentation_id, ofports):"},{"line_number":422,"context_line":"        br \u003d self.tun_br"},{"line_number":423,"context_line":"        match \u003d br.ofparser.OFPMatch("}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FuhY%3D","line":420,"updated":"2014-02-25 03:06:36.000000000","message":"nit: i prefer local_vlan_id here","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        \"\"\""},{"line_number":418,"context_line":"        return dispatcher.RpcDispatcher([self])"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _provision_local_vlan_outbound_for_tunnel(self, lvid,"},{"line_number":421,"context_line":"                                                  segmentation_id, ofports):"},{"line_number":422,"context_line":"        br \u003d self.tun_br"},{"line_number":423,"context_line":"        match \u003d br.ofparser.OFPMatch("}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqkk%3D","line":420,"in_reply_to":"AAAAU3%2F%2FuhY%3D","updated":"2014-02-25 11:46:53.000000000","message":"Sorry, I kept current name because local_vlan_id is a bit long and many lines use it.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"84978d368b4136dc23a8936af1d7e1ca4bc25ab7","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        return resync"},{"line_number":1182,"context_line":""},{"line_number":1183,"context_line":"    def process_network_ports(self, port_info):"},{"line_number":1184,"context_line":"        resync_a \u003d False"},{"line_number":1185,"context_line":"        resync_b \u003d False"},{"line_number":1186,"context_line":"        if \u0027added\u0027 in port_info:"},{"line_number":1187,"context_line":"            start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fufo%3D","line":1184,"updated":"2014-02-25 03:06:36.000000000","message":"_a, _b aren\u0027t self-described.\nHow about resync_add resync_removed ?","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        return resync"},{"line_number":1182,"context_line":""},{"line_number":1183,"context_line":"    def process_network_ports(self, port_info):"},{"line_number":1184,"context_line":"        resync_a \u003d False"},{"line_number":1185,"context_line":"        resync_b \u003d False"},{"line_number":1186,"context_line":"        if \u0027added\u0027 in port_info:"},{"line_number":1187,"context_line":"            start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqn0%3D","line":1184,"in_reply_to":"AAAAU3%2F%2Fufo%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":1382,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":1383,"context_line":"        veth_mtu\u003dconfig.AGENT.veth_mtu,"},{"line_number":1384,"context_line":"        l2_population\u003dFalse,"},{"line_number":1385,"context_line":"        ovsdb_monitor_respawn_interval\u003dconstants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":1386,"context_line":"    )"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FzpE%3D","line":1385,"updated":"2014-02-24 17:47:06.000000000","message":"This is confusing, I don\u0027t see how assigning this to constants.MINIMUM_OVS_VXLAN_VERSION makes sense.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":1382,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":1383,"context_line":"        veth_mtu\u003dconfig.AGENT.veth_mtu,"},{"line_number":1384,"context_line":"        l2_population\u003dFalse,"},{"line_number":1385,"context_line":"        ovsdb_monitor_respawn_interval\u003dconstants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":1386,"context_line":"    )"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqng%3D","line":1385,"in_reply_to":"AAAAU3%2F%2Fy04%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f1abae1987e2d02b23d7acaa0c3286e75822cc0f","unresolved":false,"context_lines":[{"line_number":1382,"context_line":"        tunnel_types\u003dconfig.AGENT.tunnel_types,"},{"line_number":1383,"context_line":"        veth_mtu\u003dconfig.AGENT.veth_mtu,"},{"line_number":1384,"context_line":"        l2_population\u003dFalse,"},{"line_number":1385,"context_line":"        ovsdb_monitor_respawn_interval\u003dconstants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":1386,"context_line":"    )"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"    # If enable_tunneling is TRUE, set tunnel_type to default to GRE"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fy04%3D","line":1385,"in_reply_to":"AAAAU3%2F%2FzpE%3D","updated":"2014-02-24 19:02:24.000000000","message":"this looks like a bug. thanks for pointing out.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3c5e932300bf6430a1bbe281866ebe8448416a98","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # set of tunnel ports on which packets should be flooded"},{"line_number":67,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __str__(self):"},{"line_number":70,"context_line":"        return (_(\"lv-id \u003d %(lv-id)s type \u003d %(type)s \""},{"line_number":71,"context_line":"                  \"phys-net \u003d %(phys-net)s phys-id \u003d %(phys-id)s\") %"},{"line_number":72,"context_line":"                {\u0027lv-id\u0027: self.vlan, \u0027type\u0027: self.network_type,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Fpkc%3D","line":69,"updated":"2014-02-25 14:05:03.000000000","message":"Does __str__ with unicode work?","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ea76326ffb7542c7b8359fcae2af8ad965a2f3c1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # set of tunnel ports on which packets should be flooded"},{"line_number":67,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __str__(self):"},{"line_number":70,"context_line":"        return (_(\"lv-id \u003d %(lv-id)s type \u003d %(type)s \""},{"line_number":71,"context_line":"                  \"phys-net \u003d %(phys-net)s phys-id \u003d %(phys-id)s\") %"},{"line_number":72,"context_line":"                {\u0027lv-id\u0027: self.vlan, \u0027type\u0027: self.network_type,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2FhjU%3D","line":69,"in_reply_to":"AAAAU3%2F%2Fpkc%3D","updated":"2014-02-26 05:38:42.000000000","message":"Done","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6adc24ff2c03d9b9a509c0c98a79e9ddb0eff7de","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # set of tunnel ports on which packets should be flooded"},{"line_number":67,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __str__(self):"},{"line_number":70,"context_line":"        return (\"lv-id \u003d %s type \u003d %s phys-net \u003d %s phys-id \u003d %s\" %"},{"line_number":71,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":72,"context_line":"                 self.segmentation_id))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FhRw%3D","line":69,"updated":"2014-02-26 06:21:46.000000000","message":"We need to take into account I18N too. This approach prevents I18N work (though I don\u0027t feel much need to translate such kind of messages :-))\n\nI think it looks better to use __unicode__ and restore _() instead.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"4cb7c34b036fb890cdf1eb795f0c1b92ecc78890","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # set of tunnel ports on which packets should be flooded"},{"line_number":67,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __str__(self):"},{"line_number":70,"context_line":"        return (\"lv-id \u003d %s type \u003d %s phys-net \u003d %s phys-id \u003d %s\" %"},{"line_number":71,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":72,"context_line":"                 self.segmentation_id))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAVX%2F%2F%2F2o%3D","line":69,"in_reply_to":"AAAAU3%2F%2Fe%2F4%3D","updated":"2014-02-26 22:59:19.000000000","message":"I think that in this message I don\u0027t need unicode.\nI will keep the current.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f1179f9376b2e20066fa045077dc6a97405a39c2","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # set of tunnel ports on which packets should be flooded"},{"line_number":67,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __str__(self):"},{"line_number":70,"context_line":"        return (\"lv-id \u003d %s type \u003d %s phys-net \u003d %s phys-id \u003d %s\" %"},{"line_number":71,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":72,"context_line":"                 self.segmentation_id))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2Fe%2F4%3D","line":69,"in_reply_to":"AAAAU3%2F%2FhAI%3D","updated":"2014-02-26 11:04:40.000000000","message":"Yes, but it is no problem if you keep the current.\n\nOn a second thought, I start to think translating object representation is not so important.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"a7f2c833103859aa508463528ef1c729e09b0c5f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # set of tunnel ports on which packets should be flooded"},{"line_number":67,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __str__(self):"},{"line_number":70,"context_line":"        return (\"lv-id \u003d %s type \u003d %s phys-net \u003d %s phys-id \u003d %s\" %"},{"line_number":71,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":72,"context_line":"                 self.segmentation_id))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FhAI%3D","line":69,"in_reply_to":"AAAAU3%2F%2FhRw%3D","updated":"2014-02-26 07:24:30.000000000","message":"I did not know __unicode__.\nDo you mean the following:\n\ndef __unicode__(self):\n\n    return (_(...) % {...})","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"b289adce9412e7379aaf7196777554cd516a024a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            return (other and self.id \u003d\u003d other.id"},{"line_number":93,"context_line":"                    and self.admin_state_up \u003d\u003d other.admin_state_up)"},{"line_number":94,"context_line":"        except Exception:"},{"line_number":95,"context_line":"            return False"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def __hash__(self):"},{"line_number":98,"context_line":"        return hash(self.id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVX%2F%2Fpwo%3D","line":95,"updated":"2014-03-01 22:48:47.000000000","message":"In an earlier review mistakenly requested __ne__ be removed.  It is needed.\n\ndef __ne__(self, other):\n    return not self.__eq__(self, other)","commit_id":"ddcfbfd2492a12d43e57e3ae85b2796a71136b9c"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"be340b1176d74cef6a0c9ea9635d62c67382b27d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            return (other and self.id \u003d\u003d other.id"},{"line_number":93,"context_line":"                    and self.admin_state_up \u003d\u003d other.admin_state_up)"},{"line_number":94,"context_line":"        except Exception:"},{"line_number":95,"context_line":"            return False"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def __hash__(self):"},{"line_number":98,"context_line":"        return hash(self.id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVX%2F%2FpUs%3D","line":95,"in_reply_to":"AAAAVX%2F%2Fpwo%3D","updated":"2014-03-02 03:05:53.000000000","message":"Done","commit_id":"ddcfbfd2492a12d43e57e3ae85b2796a71136b9c"}],"neutron/plugins/ofagent/common/config.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZGg%3D","line":1,"updated":"2014-02-13 15:06:54.000000000","message":"Looks like wrong copyright.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FScM%3D","line":1,"in_reply_to":"AAAAUX%2F%2FZGg%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"agent_opts \u003d ["},{"line_number":23,"context_line":"    cfg.IntOpt(\u0027get_datapath_retry_times\u0027, default\u003d60,"},{"line_number":24,"context_line":"               help\u003d_(\"The time of retry to get a datapath from \""},{"line_number":25,"context_line":"                      \"a openvswitch.\")),"},{"line_number":26,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FznM%3D","line":23,"updated":"2014-02-24 17:47:06.000000000","message":"Maybe add this as an example in a configuration file somewhere as well, similar to other configuration file options?","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"agent_opts \u003d ["},{"line_number":23,"context_line":"    cfg.IntOpt(\u0027get_datapath_retry_times\u0027, default\u003d60,"},{"line_number":24,"context_line":"               help\u003d_(\"The time of retry to get a datapath from \""},{"line_number":25,"context_line":"                      \"a openvswitch.\")),"},{"line_number":26,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqqg%3D","line":23,"in_reply_to":"AAAAU3%2F%2FznM%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"4923369f31af53a38eecf54f2be10c5346bb2fea","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"agent_opts \u003d ["},{"line_number":23,"context_line":"    cfg.IntOpt(\u0027get_datapath_retry_times\u0027, default\u003d60,"},{"line_number":24,"context_line":"               help\u003d_(\"The time of retry to get a datapath from \""},{"line_number":25,"context_line":"                      \"a openvswitch.\")),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fzs0%3D","line":24,"updated":"2014-02-24 17:47:06.000000000","message":"How about this:\n\nNumber of seconds to retry acquiring an Open vSwitch datapath.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"agent_opts \u003d ["},{"line_number":23,"context_line":"    cfg.IntOpt(\u0027get_datapath_retry_times\u0027, default\u003d60,"},{"line_number":24,"context_line":"               help\u003d_(\"The time of retry to get a datapath from \""},{"line_number":25,"context_line":"                      \"a openvswitch.\")),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fqqc%3D","line":24,"in_reply_to":"AAAAU3%2F%2Fzs0%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"}],"neutron/plugins/ofswitch/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WVQ%3D","line":1,"updated":"2014-02-07 16:23:49.000000000","message":"File can be empty","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlY0%3D","line":1,"in_reply_to":"AAAAUH%2F9WVQ%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/plugins/ofswitch/agent/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WVI%3D","line":1,"updated":"2014-02-07 16:23:49.000000000","message":"ditto","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlYg%3D","line":1,"in_reply_to":"AAAAUH%2F9WVI%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/plugins/ofswitch/agent/ofs_neutron_agent.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WUk%3D","line":1,"updated":"2014-02-07 16:23:49.000000000","message":"Remove?","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlWY%3D","line":1,"in_reply_to":"AAAAUH%2F9WUk%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":5,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Btw%3D","line":2,"updated":"2014-02-08 01:11:42.000000000","message":"vim lines should no longer be included in new files.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":5,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlWU%3D","line":2,"in_reply_to":"AAAAUX%2F%2F%2Btw%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0dc1c7482f1946476c5bea286ca09c302fac160a","unresolved":false,"context_lines":[{"line_number":6,"context_line":"# Based on openvswitch agent."},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"# Copyright 2011 Nicira Networks, Inc."},{"line_number":9,"context_line":"# All Rights Reserved."},{"line_number":10,"context_line":"#"},{"line_number":11,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":12,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F4f4%3D","line":9,"updated":"2014-02-10 07:23:09.000000000","message":"If you have copyrights from others, the reason should be explicitly described here. According to comments, some codes are borrowed from ovs code.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":6,"context_line":"# Based on openvswitch agent."},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"# Copyright 2011 Nicira Networks, Inc."},{"line_number":9,"context_line":"# All Rights Reserved."},{"line_number":10,"context_line":"#"},{"line_number":11,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":12,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlWA%3D","line":9,"in_reply_to":"AAAAUX%2F%2F4f4%3D","updated":"2014-02-12 08:29:41.000000000","message":"please see the line 6. Should I write more descriptions?","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0dc1c7482f1946476c5bea286ca09c302fac160a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"from ryu.app.ofctl import api as ryu_api"},{"line_number":50,"context_line":"from ryu.base import app_manager"},{"line_number":51,"context_line":"from ryu.lib import hub"},{"line_number":52,"context_line":"from ryu.ofproto import ofproto_v1_3 as ryu_ofp13"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F4e8%3D","line":52,"updated":"2014-02-10 07:23:09.000000000","message":"Third party imports should be placed before neutron imports.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"from ryu.app.ofctl import api as ryu_api"},{"line_number":50,"context_line":"from ryu.base import app_manager"},{"line_number":51,"context_line":"from ryu.lib import hub"},{"line_number":52,"context_line":"from ryu.ofproto import ofproto_v1_3 as ryu_ofp13"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlV0%3D","line":52,"in_reply_to":"AAAAUX%2F%2F4e8%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __str__(self):"},{"line_number":78,"context_line":"        return (\"lv-id \u003d %s type \u003d %s phys-net \u003d %s phys-id \u003d %s\" %"},{"line_number":79,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":80,"context_line":"                 self.segmentation_id))"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WSc%3D","line":78,"updated":"2014-02-07 16:23:49.000000000","message":"I18n for string. may want to use named string mapping and dict.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.tun_ofports \u003d set()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __str__(self):"},{"line_number":78,"context_line":"        return (\"lv-id \u003d %s type \u003d %s phys-net \u003d %s phys-id \u003d %s\" %"},{"line_number":79,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":80,"context_line":"                 self.segmentation_id))"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlVk%3D","line":78,"in_reply_to":"AAAAUH%2F9WSc%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        except Exception:"},{"line_number":104,"context_line":"            return False"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __ne__(self, other):"},{"line_number":107,"context_line":"        return not self.__eq__(other)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __hash__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bqk%3D","line":106,"updated":"2014-02-08 01:11:42.000000000","message":"This is not necessary to define as python will inverse __eq__() for you.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        except Exception:"},{"line_number":104,"context_line":"            return False"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __ne__(self, other):"},{"line_number":107,"context_line":"        return not self.__eq__(other)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __hash__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlVY%3D","line":106,"in_reply_to":"AAAAUX%2F%2F%2Bqk%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            self.set_protocols(protocols)"},{"line_number":165,"context_line":"            self.set_controller(controller_names)"},{"line_number":166,"context_line":"        except Exception as e:"},{"line_number":167,"context_line":"            LOG.error(_(\"Agent terminated: %s\"), e)"},{"line_number":168,"context_line":"            sys.exit(1)"},{"line_number":169,"context_line":"        self.find_datapath_id()"},{"line_number":170,"context_line":"        self.get_datapath(retry_max)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BqU%3D","line":167,"updated":"2014-02-08 01:11:42.000000000","message":"This will truncate the error.\n\nLOG.exception(_(\"Agent terminated\"))","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            self.set_protocols(protocols)"},{"line_number":165,"context_line":"            self.set_controller(controller_names)"},{"line_number":166,"context_line":"        except Exception as e:"},{"line_number":167,"context_line":"            LOG.error(_(\"Agent terminated: %s\"), e)"},{"line_number":168,"context_line":"            sys.exit(1)"},{"line_number":169,"context_line":"        self.find_datapath_id()"},{"line_number":170,"context_line":"        self.get_datapath(retry_max)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlVI%3D","line":167,"in_reply_to":"AAAAUX%2F%2F%2BqU%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            self.set_controller(controller_names)"},{"line_number":166,"context_line":"        except Exception as e:"},{"line_number":167,"context_line":"            LOG.error(_(\"Agent terminated: %s\"), e)"},{"line_number":168,"context_line":"            sys.exit(1)"},{"line_number":169,"context_line":"        self.find_datapath_id()"},{"line_number":170,"context_line":"        self.get_datapath(retry_max)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BqI%3D","line":168,"updated":"2014-02-08 01:11:42.000000000","message":"raise SystemExit(1)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            self.set_controller(controller_names)"},{"line_number":166,"context_line":"        except Exception as e:"},{"line_number":167,"context_line":"            LOG.error(_(\"Agent terminated: %s\"), e)"},{"line_number":168,"context_line":"            sys.exit(1)"},{"line_number":169,"context_line":"        self.find_datapath_id()"},{"line_number":170,"context_line":"        self.get_datapath(retry_max)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlU4%3D","line":168,"in_reply_to":"AAAAUX%2F%2F%2BqI%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    OFP_VERSIONS \u003d [ryu_ofp13.OFP_VERSION]"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def start(self):"},{"line_number":190,"context_line":"        global RYUAPP_INST"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        super(OFSNeutronAgentRyuApp, self).start()"},{"line_number":193,"context_line":"        RYUAPP_INST \u003d self"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Btc%3D","line":190,"updated":"2014-02-08 01:11:42.000000000","message":"This is a really bad idea to access global values from an instance object.  The agent main should handle setting the values properly.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    OFP_VERSIONS \u003d [ryu_ofp13.OFP_VERSION]"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def start(self):"},{"line_number":190,"context_line":"        global RYUAPP_INST"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        super(OFSNeutronAgentRyuApp, self).start()"},{"line_number":193,"context_line":"        RYUAPP_INST \u003d self"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlU0%3D","line":190,"in_reply_to":"AAAAUX%2F%2F%2Btc%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            LOG.error(_(\u0027%s Agent terminated!\u0027), e)"},{"line_number":203,"context_line":"            sys.exit(1)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        is_xen_compute_host \u003d \\"},{"line_number":206,"context_line":"            \u0027rootwrap-xen-dom0\u0027 in agent_config[\u0027root_helper\u0027]"},{"line_number":207,"context_line":"        if is_xen_compute_host:"},{"line_number":208,"context_line":"            # Force ip_lib to always use the root helper to ensure that ip"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bt8%3D","line":205,"updated":"2014-02-08 01:11:42.000000000","message":"line continuations are not allowed per hacking guidelines.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            LOG.error(_(\u0027%s Agent terminated!\u0027), e)"},{"line_number":203,"context_line":"            sys.exit(1)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        is_xen_compute_host \u003d \\"},{"line_number":206,"context_line":"            \u0027rootwrap-xen-dom0\u0027 in agent_config[\u0027root_helper\u0027]"},{"line_number":207,"context_line":"        if is_xen_compute_host:"},{"line_number":208,"context_line":"            # Force ip_lib to always use the root helper to ensure that ip"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUo%3D","line":205,"in_reply_to":"AAAAUX%2F%2F%2Bt8%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        # Start everything."},{"line_number":215,"context_line":"        LOG.info(_(\"Agent initialized successfully, now running... \"))"},{"line_number":216,"context_line":"        agent.daemon_loop()"},{"line_number":217,"context_line":"        sys.exit(0)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"class OFSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BtE%3D","line":217,"updated":"2014-02-08 01:11:42.000000000","message":"We should not need to explicitly exit here.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        # Start everything."},{"line_number":215,"context_line":"        LOG.info(_(\"Agent initialized successfully, now running... \"))"},{"line_number":216,"context_line":"        agent.daemon_loop()"},{"line_number":217,"context_line":"        sys.exit(0)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"class OFSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUk%3D","line":217,"in_reply_to":"AAAAUX%2F%2F%2BtE%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"class OFSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin):"},{"line_number":221,"context_line":"    \u0027\u0027\u0027A agent for OpenFlow Switch ML2 mechanism driver."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    OFSNeutronAgent is a OpenFlow Switch agent for a ML2 plugin."},{"line_number":224,"context_line":"    This is as a ryu application thread."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9VyY%3D","line":221,"updated":"2014-02-07 16:23:49.000000000","message":"Consistency on docstrings... use double quotes for several in file.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"class OFSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin):"},{"line_number":221,"context_line":"    \u0027\u0027\u0027A agent for OpenFlow Switch ML2 mechanism driver."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    OFSNeutronAgent is a OpenFlow Switch agent for a ML2 plugin."},{"line_number":224,"context_line":"    This is as a ryu application thread."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUg%3D","line":221,"in_reply_to":"AAAAUH%2F9VyY%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        self.minimize_polling \u003d minimize_polling"},{"line_number":287,"context_line":"        self.ovsdb_monitor_respawn_interval \u003d ovsdb_monitor_respawn_interval"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if self.tunnel_types:"},{"line_number":290,"context_line":"            self.enable_tunneling \u003d True"},{"line_number":291,"context_line":"        else:"},{"line_number":292,"context_line":"            self.enable_tunneling \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bp4%3D","line":289,"updated":"2014-02-08 01:11:42.000000000","message":"replace 289-292:\n\nself.enable_tunneling \u003d bool(self.tunnel_types)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        self.minimize_polling \u003d minimize_polling"},{"line_number":287,"context_line":"        self.ovsdb_monitor_respawn_interval \u003d ovsdb_monitor_respawn_interval"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if self.tunnel_types:"},{"line_number":290,"context_line":"            self.enable_tunneling \u003d True"},{"line_number":291,"context_line":"        else:"},{"line_number":292,"context_line":"            self.enable_tunneling \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUY%3D","line":289,"in_reply_to":"AAAAUX%2F%2F%2Bp4%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                return network_id"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def network_delete(self, context, **kwargs):"},{"line_number":360,"context_line":"        LOG.debug(_(\"network_delete received\"))"},{"line_number":361,"context_line":"        network_id \u003d kwargs.get(\u0027network_id\u0027)"},{"line_number":362,"context_line":"        LOG.debug(_(\"Delete %s\"), network_id)"},{"line_number":363,"context_line":"        # The network may not be defined on this agent"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WQI%3D","line":360,"updated":"2014-02-07 16:23:49.000000000","message":"Nit combine with L362","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                return network_id"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def network_delete(self, context, **kwargs):"},{"line_number":360,"context_line":"        LOG.debug(_(\"network_delete received\"))"},{"line_number":361,"context_line":"        network_id \u003d kwargs.get(\u0027network_id\u0027)"},{"line_number":362,"context_line":"        LOG.debug(_(\"Delete %s\"), network_id)"},{"line_number":363,"context_line":"        # The network may not be defined on this agent"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUU%3D","line":360,"in_reply_to":"AAAAUH%2F9WQI%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            LOG.debug(_(\"Network %s not used on agent.\"), network_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def port_update(self, context, **kwargs):"},{"line_number":371,"context_line":"        LOG.debug(_(\"port_update received\"))"},{"line_number":372,"context_line":"        port \u003d kwargs.get(\u0027port\u0027)"},{"line_number":373,"context_line":"        # Validate that port is on OVS"},{"line_number":374,"context_line":"        vif_port \u003d self.int_br.get_vif_port_by_id(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WPI%3D","line":371,"updated":"2014-02-07 16:23:49.000000000","message":"Nit: could move down and include port info . same with other debug prints in module.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            LOG.debug(_(\"Network %s not used on agent.\"), network_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def port_update(self, context, **kwargs):"},{"line_number":371,"context_line":"        LOG.debug(_(\"port_update received\"))"},{"line_number":372,"context_line":"        port \u003d kwargs.get(\u0027port\u0027)"},{"line_number":373,"context_line":"        # Validate that port is on OVS"},{"line_number":374,"context_line":"        vif_port \u003d self.int_br.get_vif_port_by_id(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUM%3D","line":371,"in_reply_to":"AAAAUH%2F9WPI%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                # inbound from tunnels: set lvid in the right table"},{"line_number":476,"context_line":"                # and resubmit to Table LEARN_FROM_TUN for mac learning"},{"line_number":477,"context_line":"                match \u003d self.tun_br.ofparser.OFPMatch("},{"line_number":478,"context_line":"                    tunnel_id\u003dint(segmentation_id))"},{"line_number":479,"context_line":"                actions \u003d [self.tun_br.ofparser.OFPActionSetField("},{"line_number":480,"context_line":"                    vlan_vid\u003dint(lvid) | ryu_ofp13.OFPVID_PRESENT)]"},{"line_number":481,"context_line":"                instructions \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BpE%3D","line":478,"updated":"2014-02-08 01:11:42.000000000","message":"reformat for better readability.\n\nactions \u003d [\n     self.tun_br.ofparser.OFPActionSetField(\n          vlan_vid\u003dint(lvid) | ryu_ofp13.OFPVID_PRESENT\n     )\n]","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                # inbound from tunnels: set lvid in the right table"},{"line_number":476,"context_line":"                # and resubmit to Table LEARN_FROM_TUN for mac learning"},{"line_number":477,"context_line":"                match \u003d self.tun_br.ofparser.OFPMatch("},{"line_number":478,"context_line":"                    tunnel_id\u003dint(segmentation_id))"},{"line_number":479,"context_line":"                actions \u003d [self.tun_br.ofparser.OFPActionSetField("},{"line_number":480,"context_line":"                    vlan_vid\u003dint(lvid) | ryu_ofp13.OFPVID_PRESENT)]"},{"line_number":481,"context_line":"                instructions \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlUI%3D","line":478,"in_reply_to":"AAAAUX%2F%2F%2BpE%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        elif lvm.network_type \u003d\u003d p_const.TYPE_FLAT:"},{"line_number":624,"context_line":"            if lvm.physical_network in self.phys_brs:"},{"line_number":625,"context_line":"                # outbound"},{"line_number":626,"context_line":"                br \u003d self.phys_brs[lvm.physical_network]"},{"line_number":627,"context_line":"                match \u003d br.ofparser.OFPMatch("},{"line_number":628,"context_line":"                    in_port\u003dself.phys_ofports[lvm.physical_network],"},{"line_number":629,"context_line":"                    vlan_vid\u003dint(lvm.vlan) | ryu_ofp13.OFPVID_PRESENT)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9Vz4%3D","line":626,"updated":"2014-02-07 16:23:49.000000000","message":"Can some of the duplication (seems like there may be L626-637 and L654-665) be extracted out into helper functions?\n\nMaybe even outbound with an arg or two?","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        elif lvm.network_type \u003d\u003d p_const.TYPE_FLAT:"},{"line_number":624,"context_line":"            if lvm.physical_network in self.phys_brs:"},{"line_number":625,"context_line":"                # outbound"},{"line_number":626,"context_line":"                br \u003d self.phys_brs[lvm.physical_network]"},{"line_number":627,"context_line":"                match \u003d br.ofparser.OFPMatch("},{"line_number":628,"context_line":"                    in_port\u003dself.phys_ofports[lvm.physical_network],"},{"line_number":629,"context_line":"                    vlan_vid\u003dint(lvm.vlan) | ryu_ofp13.OFPVID_PRESENT)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlT0%3D","line":626,"in_reply_to":"AAAAUH%2F9Vz4%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        :param vif_id: the id of the vif"},{"line_number":727,"context_line":"        :param net_uuid: the net_uuid this port is associated with."},{"line_number":728,"context_line":"        \u0027\u0027\u0027"},{"line_number":729,"context_line":"        if net_uuid is None:"},{"line_number":730,"context_line":"            net_uuid \u003d self.get_net_uuid(vif_id)"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        if not self.local_vlan_map.get(net_uuid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BoQ%3D","line":729,"updated":"2014-02-08 01:11:42.000000000","message":"net_uuid \u003d net_uuid or self.get_net_uuid(vif_id)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        :param vif_id: the id of the vif"},{"line_number":727,"context_line":"        :param net_uuid: the net_uuid this port is associated with."},{"line_number":728,"context_line":"        \u0027\u0027\u0027"},{"line_number":729,"context_line":"        if net_uuid is None:"},{"line_number":730,"context_line":"            net_uuid \u003d self.get_net_uuid(vif_id)"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        if not self.local_vlan_map.get(net_uuid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlTs%3D","line":729,"in_reply_to":"AAAAUX%2F%2F%2BoQ%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        ovs_bridges.difference_update(br_names)"},{"line_number":792,"context_line":"        # Filter list of bridges to those that have external"},{"line_number":793,"context_line":"        # bridge-id\u0027s configured"},{"line_number":794,"context_line":"        br_names \u003d []"},{"line_number":795,"context_line":"        for bridge in ovs_bridges:"},{"line_number":796,"context_line":"            id \u003d ovs_lib.get_bridge_external_bridge_id(self.root_helper,"},{"line_number":797,"context_line":"                                                       bridge)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BoA%3D","line":794,"updated":"2014-02-08 01:11:42.000000000","message":"br_names \u003d [\n    bridge for bridge in ovs_bridges\n    if bridge !\u003d ovs_lib.get_bridge_external_bridge_id(self.root_helper, bridge)\n]","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        ovs_bridges.difference_update(br_names)"},{"line_number":792,"context_line":"        # Filter list of bridges to those that have external"},{"line_number":793,"context_line":"        # bridge-id\u0027s configured"},{"line_number":794,"context_line":"        br_names \u003d []"},{"line_number":795,"context_line":"        for bridge in ovs_bridges:"},{"line_number":796,"context_line":"            id \u003d ovs_lib.get_bridge_external_bridge_id(self.root_helper,"},{"line_number":797,"context_line":"                                                       bridge)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlTg%3D","line":794,"in_reply_to":"AAAAUX%2F%2F%2BoA%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        ancillary_bridges \u003d []"},{"line_number":802,"context_line":"        for bridge in ovs_bridges:"},{"line_number":803,"context_line":"            br \u003d OVSBridge(bridge, self.root_helper)"},{"line_number":804,"context_line":"            LOG.info(_(\u0027Adding %s to list of bridges.\u0027), bridge)"},{"line_number":805,"context_line":"            ancillary_bridges.append(br)"},{"line_number":806,"context_line":"        return ancillary_bridges"},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bn8%3D","line":804,"updated":"2014-02-08 01:11:42.000000000","message":"Why do we need log on each iteration?  Why not log the list at the end of loop.  A list comprehension should also be used here.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        ancillary_bridges \u003d []"},{"line_number":802,"context_line":"        for bridge in ovs_bridges:"},{"line_number":803,"context_line":"            br \u003d OVSBridge(bridge, self.root_helper)"},{"line_number":804,"context_line":"            LOG.info(_(\u0027Adding %s to list of bridges.\u0027), bridge)"},{"line_number":805,"context_line":"            ancillary_bridges.append(br)"},{"line_number":806,"context_line":"        return ancillary_bridges"},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlTY%3D","line":804,"in_reply_to":"AAAAUX%2F%2F%2Bn8%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            ancillary_bridges.append(br)"},{"line_number":806,"context_line":"        return ancillary_bridges"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"    def setup_tunnel_br(self, tun_br):"},{"line_number":809,"context_line":"        \u0027\u0027\u0027Setup the tunnel bridge."},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        Creates tunnel bridge, and links it to the integration bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9Vtc%3D","line":808,"updated":"2014-02-07 16:23:49.000000000","message":"Subjective: It may help readability/testability, to break the content of this down into several sub-functions (which could then be tested in isolation). Maybe instead of adding comments, have  functions with intention revealing names.  Would help me understand what is going on.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            ancillary_bridges.append(br)"},{"line_number":806,"context_line":"        return ancillary_bridges"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"    def setup_tunnel_br(self, tun_br):"},{"line_number":809,"context_line":"        \u0027\u0027\u0027Setup the tunnel bridge."},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        Creates tunnel bridge, and links it to the integration bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlTM%3D","line":808,"in_reply_to":"AAAAUH%2F9Vtc%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":907,"context_line":"            priority\u003d0)"},{"line_number":908,"context_line":"        self.ryu_send_msg(msg)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"    def setup_physical_bridges(self, bridge_mappings):"},{"line_number":911,"context_line":"        \u0027\u0027\u0027Setup the physical network bridges."},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        Creates physical network bridges and links them to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9Vqc%3D","line":910,"updated":"2014-02-07 16:23:49.000000000","message":"ditto..\n\nsomething like...\n\nsetup_physical_bridge()\npatch_physical_bridge_to_integration_bridge()\nblock_untranslated_traffic()\n...","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":907,"context_line":"            priority\u003d0)"},{"line_number":908,"context_line":"        self.ryu_send_msg(msg)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"    def setup_physical_bridges(self, bridge_mappings):"},{"line_number":911,"context_line":"        \u0027\u0027\u0027Setup the physical network bridges."},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        Creates physical network bridges and links them to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlTE%3D","line":910,"in_reply_to":"AAAAUH%2F9Vqc%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"                        self.tun_br.ofparser.OFPActionPopVlan(),"},{"line_number":1063,"context_line":"                        self.tun_br.ofparser.OFPActionSetField("},{"line_number":1064,"context_line":"                            tunnel_id\u003dint(vlan_mapping.segmentation_id))]"},{"line_number":1065,"context_line":"                    for p in ofports:"},{"line_number":1066,"context_line":"                        actions.append("},{"line_number":1067,"context_line":"                            self.tun_br.ofparser.OFPActionOutput(p, 0))"},{"line_number":1068,"context_line":"                    instructions \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bng%3D","line":1065,"updated":"2014-02-08 01:11:42.000000000","message":"actions.extend(\n    self.tun_br.ofparser.OFPActionOutput(p, 0)\n    for p in ofports\n)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"                        self.tun_br.ofparser.OFPActionPopVlan(),"},{"line_number":1063,"context_line":"                        self.tun_br.ofparser.OFPActionSetField("},{"line_number":1064,"context_line":"                            tunnel_id\u003dint(vlan_mapping.segmentation_id))]"},{"line_number":1065,"context_line":"                    for p in ofports:"},{"line_number":1066,"context_line":"                        actions.append("},{"line_number":1067,"context_line":"                            self.tun_br.ofparser.OFPActionOutput(p, 0))"},{"line_number":1068,"context_line":"                    instructions \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlSY%3D","line":1065,"in_reply_to":"AAAAUX%2F%2F%2Bng%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":1253,"context_line":"            resync \u003d True"},{"line_number":1254,"context_line":"        return resync"},{"line_number":1255,"context_line":""},{"line_number":1256,"context_line":"    def rpc_loop(self, polling_manager\u003dNone):"},{"line_number":1257,"context_line":"        if not polling_manager:"},{"line_number":1258,"context_line":"            polling_manager \u003d polling.AlwaysPoll()"},{"line_number":1259,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9Vow%3D","line":1256,"updated":"2014-02-07 16:23:49.000000000","message":"More descriptive name?","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1253,"context_line":"            resync \u003d True"},{"line_number":1254,"context_line":"        return resync"},{"line_number":1255,"context_line":""},{"line_number":1256,"context_line":"    def rpc_loop(self, polling_manager\u003dNone):"},{"line_number":1257,"context_line":"        if not polling_manager:"},{"line_number":1258,"context_line":"            polling_manager \u003d polling.AlwaysPoll()"},{"line_number":1259,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlSU%3D","line":1256,"in_reply_to":"AAAAUH%2F9Vow%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":1362,"context_line":"            self.rpc_loop(polling_manager\u003dpm)"},{"line_number":1363,"context_line":""},{"line_number":1364,"context_line":""},{"line_number":1365,"context_line":"def check_ovs_version(min_required_version, root_helper):"},{"line_number":1366,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support\"))"},{"line_number":1367,"context_line":"    installed_klm_version \u003d ovs_lib.get_installed_ovs_klm_version()"},{"line_number":1368,"context_line":"    installed_usr_version \u003d ovs_lib.get_installed_ovs_usr_version(root_helper)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bu0%3D","line":1365,"updated":"2014-02-08 01:11:42.000000000","message":"This method should be move to ovs_lib.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1362,"context_line":"            self.rpc_loop(polling_manager\u003dpm)"},{"line_number":1363,"context_line":""},{"line_number":1364,"context_line":""},{"line_number":1365,"context_line":"def check_ovs_version(min_required_version, root_helper):"},{"line_number":1366,"context_line":"    LOG.debug(_(\"Checking OVS version for VXLAN support\"))"},{"line_number":1367,"context_line":"    installed_klm_version \u003d ovs_lib.get_installed_ovs_klm_version()"},{"line_number":1368,"context_line":"    installed_usr_version \u003d ovs_lib.get_installed_ovs_usr_version(root_helper)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlSQ%3D","line":1365,"in_reply_to":"AAAAUX%2F%2F%2Bu0%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/plugins/ofswitch/common/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9VoY%3D","line":1,"updated":"2014-02-07 16:23:49.000000000","message":"can be empty file","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlYc%3D","line":1,"in_reply_to":"AAAAUH%2F9VoY%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/plugins/ofswitch/common/config.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d_(\"Peer patch port in tunnel bridge for integration \""},{"line_number":42,"context_line":"                      \"bridge\")),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027local_ip\u0027, default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d_(\"Local IP address of GRE tunnel endpoints.\")),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027bridge_mappings\u0027,"},{"line_number":46,"context_line":"                default\u003dDEFAULT_BRIDGE_MAPPINGS,"},{"line_number":47,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cbridge\u003e\")),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9VoE%3D","line":44,"updated":"2014-02-07 16:23:49.000000000","message":"Nit. consistency on whether adding periods or not at end of hep line.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d_(\"Peer patch port in tunnel bridge for integration \""},{"line_number":42,"context_line":"                      \"bridge\")),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027local_ip\u0027, default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d_(\"Local IP address of GRE tunnel endpoints.\")),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027bridge_mappings\u0027,"},{"line_number":46,"context_line":"                default\u003dDEFAULT_BRIDGE_MAPPINGS,"},{"line_number":47,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cbridge\u003e\")),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlYA%3D","line":44,"in_reply_to":"AAAAUH%2F9VoE%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e1542173733ff36b5e5cb5937112fed613cab700","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                ovs_lib.check_ovs_vxlan_version("},{"line_number":238,"context_line":"                    constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":239,"context_line":"                    self.root_helper)"},{"line_number":240,"context_line":"            except Exception:"},{"line_number":241,"context_line":"                LOG.exception(_(\"Agent terminated\"))"},{"line_number":242,"context_line":"                raise SystemExit(1)"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2F6oY%3D","line":240,"updated":"2014-02-24 04:13:01.000000000","message":"Catch more specific exception.","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"15190447ad8a652ca80651af38003912d6d68317","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                ovs_lib.check_ovs_vxlan_version("},{"line_number":238,"context_line":"                    constants.MINIMUM_OVS_VXLAN_VERSION,"},{"line_number":239,"context_line":"                    self.root_helper)"},{"line_number":240,"context_line":"            except Exception:"},{"line_number":241,"context_line":"                LOG.exception(_(\"Agent terminated\"))"},{"line_number":242,"context_line":"                raise SystemExit(1)"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FqqY%3D","line":240,"in_reply_to":"AAAAU3%2F%2F6oY%3D","updated":"2014-02-25 11:46:53.000000000","message":"Done","commit_id":"8056d200e1af4e801d9a224a636c287c262a1ef0"}],"neutron/tests/unit/ofagent/fake_oflib.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 OpenStack Foundation."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZF0%3D","line":1,"updated":"2014-02-13 15:06:54.000000000","message":"2014.\n\nAnd \"OpenStack Foundation\" is a correct copyright holder?","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 OpenStack Foundation."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FScI%3D","line":1,"in_reply_to":"AAAAUX%2F%2FZF0%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"}],"neutron/tests/unit/ofagent/test_ofa_defaults.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2012 Isaku Yamahata \u003cyamahata at private email ne jp\u003e"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZFg%3D","line":1,"updated":"2014-02-13 15:06:54.000000000","message":"It is no longer needed. Please remove it.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2012 Isaku Yamahata \u003cyamahata at private email ne jp\u003e"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FScE%3D","line":1,"in_reply_to":"AAAAUX%2F%2FZFg%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2012 Isaku Yamahata \u003cyamahata at private email ne jp\u003e"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FZFo%3D","line":4,"updated":"2014-02-13 15:06:54.000000000","message":"wrong copyright","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2012 Isaku Yamahata \u003cyamahata at private email ne jp\u003e"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSbs%3D","line":4,"in_reply_to":"AAAAUX%2F%2FZFo%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"}],"neutron/tests/unit/ofagent/test_ofa_neutron_agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2012 OpenStack Foundation."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FY%2Fk%3D","line":1,"updated":"2014-02-13 15:06:54.000000000","message":"no longer required.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2012 OpenStack Foundation."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSbk%3D","line":1,"in_reply_to":"AAAAUX%2F%2FY%2Fk%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2012 OpenStack Foundation."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FY%2Fo%3D","line":3,"updated":"2014-02-13 15:06:54.000000000","message":"Is it a correct copyright?","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2012 OpenStack Foundation."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSZE%3D","line":3,"in_reply_to":"AAAAUX%2F%2FY%2Fo%3D","updated":"2014-02-14 07:46:44.000000000","message":"This module is based on test for openvswitch agent(test_ovs_neutron_agent.py).\nSo I keep this copyright and added  our copyright and description.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ae3d185a0cb92a986912efad1d49d3ac495961e","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def setUp(self):"},{"line_number":235,"context_line":"        super(TestOFANeutronAgent, self).setUp()"},{"line_number":236,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":237,"context_line":"        self.addCleanup(mock.patch.stopall)"},{"line_number":238,"context_line":"        notifier_p \u003d mock.patch(NOTIFIER)"},{"line_number":239,"context_line":"        notifier_cls \u003d notifier_p.start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FY%2Bk%3D","line":236,"updated":"2014-02-13 15:06:54.000000000","message":"It is not needed. It is done in BaseTestCase.","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f3dbe7a49e82432ecdcb51a2918891fdd0f5ac07","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def setUp(self):"},{"line_number":235,"context_line":"        super(TestOFANeutronAgent, self).setUp()"},{"line_number":236,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":237,"context_line":"        self.addCleanup(mock.patch.stopall)"},{"line_number":238,"context_line":"        notifier_p \u003d mock.patch(NOTIFIER)"},{"line_number":239,"context_line":"        notifier_cls \u003d notifier_p.start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FSYw%3D","line":236,"in_reply_to":"AAAAUX%2F%2FY%2Bk%3D","updated":"2014-02-14 07:46:44.000000000","message":"Done","commit_id":"f6278219ef20ae44b0d0cfd3270d03141d64ffbd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3c5e932300bf6430a1bbe281866ebe8448416a98","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                self.agent.daemon_loop()"},{"line_number":557,"context_line":"        mock_get_pm.assert_called_with(True, \u0027fake_helper\u0027,"},{"line_number":558,"context_line":"                                       constants.DEFAULT_OVSDBMON_RESPAWN)"},{"line_number":559,"context_line":"        mock_loop.called_once()"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def test_setup_tunnel_port_error_negative(self):"},{"line_number":562,"context_line":"        with contextlib.nested("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2FpfE%3D","line":559,"updated":"2014-02-25 14:05:03.000000000","message":"assert_called_once_with?","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ea76326ffb7542c7b8359fcae2af8ad965a2f3c1","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                self.agent.daemon_loop()"},{"line_number":557,"context_line":"        mock_get_pm.assert_called_with(True, \u0027fake_helper\u0027,"},{"line_number":558,"context_line":"                                       constants.DEFAULT_OVSDBMON_RESPAWN)"},{"line_number":559,"context_line":"        mock_loop.called_once()"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def test_setup_tunnel_port_error_negative(self):"},{"line_number":562,"context_line":"        with contextlib.nested("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAU3%2F%2Fhi0%3D","line":559,"in_reply_to":"AAAAU3%2F%2FpfE%3D","updated":"2014-02-26 05:38:42.000000000","message":"Done","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6adc24ff2c03d9b9a509c0c98a79e9ddb0eff7de","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    def test_check_minimum_version(self):"},{"line_number":530,"context_line":"        min_vxlan_ver \u003d constants.MINIMUM_OVS_VXLAN_VERSION"},{"line_number":531,"context_line":"        self._check_ovs_vxlan_version(min_vxlan_ver, min_vxlan_ver,"},{"line_number":532,"context_line":"                                      expecting_ok\u003dTrue)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def test_check_future_version(self):"},{"line_number":535,"context_line":"        min_vxlan_ver \u003d constants.MINIMUM_OVS_VXLAN_VERSION"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FhP8%3D","line":532,"updated":"2014-02-26 06:21:46.000000000","message":"(suggestion only)\nGenerally speaking, the interface provided by ovs_lib is check_ovs_vxlan_version, so check_ovs_vxlan_version should be mocked in this unit test. It is enough if the tests at L.529-553 should be covered by test_ovs_lib. It seems test_ovs_lib already has the similar tests, so I am okay with the current one.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"a7f2c833103859aa508463528ef1c729e09b0c5f","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    def test_check_minimum_version(self):"},{"line_number":530,"context_line":"        min_vxlan_ver \u003d constants.MINIMUM_OVS_VXLAN_VERSION"},{"line_number":531,"context_line":"        self._check_ovs_vxlan_version(min_vxlan_ver, min_vxlan_ver,"},{"line_number":532,"context_line":"                                      expecting_ok\u003dTrue)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def test_check_future_version(self):"},{"line_number":535,"context_line":"        min_vxlan_ver \u003d constants.MINIMUM_OVS_VXLAN_VERSION"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2Fg3A%3D","line":532,"in_reply_to":"AAAAU3%2F%2FhP8%3D","updated":"2014-02-26 07:24:30.000000000","message":"Thanks. I will take care that next time.","commit_id":"de061882d7c2c49e97751cdf755ef03130e5eaa0"}],"neutron/tests/unit/ofswitch/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9VnI%3D","line":1,"updated":"2014-02-07 16:23:49.000000000","message":"can be empty file","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation."},{"line_number":4,"context_line":"# Copyright (C) 2014 VA Linux Systems Japan K.K."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlYU%3D","line":1,"in_reply_to":"AAAAUH%2F9VnI%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/tests/unit/ofswitch/test_ofs_defaults.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.assertEqual(\u0027br-tun\u0027, cfg.CONF.OFS.tunnel_bridge)"},{"line_number":30,"context_line":"        self.assertEqual(\u0027patch-tun\u0027, cfg.CONF.OFS.int_peer_patch_port)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027patch-int\u0027, cfg.CONF.OFS.tun_peer_patch_port)"},{"line_number":32,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.local_ip)"},{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BmY%3D","line":32,"updated":"2014-02-08 01:11:42.000000000","message":"self.assertFalse(cfg.CONF.OFS.local_ip)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.assertEqual(\u0027br-tun\u0027, cfg.CONF.OFS.tunnel_bridge)"},{"line_number":30,"context_line":"        self.assertEqual(\u0027patch-tun\u0027, cfg.CONF.OFS.int_peer_patch_port)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027patch-int\u0027, cfg.CONF.OFS.tun_peer_patch_port)"},{"line_number":32,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.local_ip)"},{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlXk%3D","line":32,"in_reply_to":"AAAAUX%2F%2F%2BmY%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.assertEqual(\u0027patch-tun\u0027, cfg.CONF.OFS.int_peer_patch_port)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027patch-int\u0027, cfg.CONF.OFS.tun_peer_patch_port)"},{"line_number":32,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.local_ip)"},{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bmk%3D","line":33,"updated":"2014-02-08 01:11:42.000000000","message":"self.assertFalse(cfg.CONF.OFS.bridge_mappings)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.assertEqual(\u0027patch-tun\u0027, cfg.CONF.OFS.int_peer_patch_port)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027patch-int\u0027, cfg.CONF.OFS.tun_peer_patch_port)"},{"line_number":32,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.local_ip)"},{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlXg%3D","line":33,"in_reply_to":"AAAAUX%2F%2F%2Bmk%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.local_ip)"},{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"},{"line_number":37,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.tunnel_type)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BmE%3D","line":35,"updated":"2014-02-08 01:11:42.000000000","message":"self.assertFalse(cfg.CONF.OFS.network_vlan_ranges)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.local_ip)"},{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"},{"line_number":37,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.tunnel_type)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlXY%3D","line":35,"in_reply_to":"AAAAUX%2F%2F%2BmE%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"},{"line_number":37,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.tunnel_type)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(60, cfg.CONF.AGENT.get_datapath_retry_times)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BmA%3D","line":36,"updated":"2014-02-08 01:11:42.000000000","message":"self.assertFalse(cfg.CONF.OFS.tunnel_id_ranges)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.bridge_mappings))"},{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"},{"line_number":37,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.tunnel_type)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(60, cfg.CONF.AGENT.get_datapath_retry_times)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlXA%3D","line":36,"in_reply_to":"AAAAUX%2F%2F%2BmA%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"},{"line_number":37,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.tunnel_type)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(60, cfg.CONF.AGENT.get_datapath_retry_times)"},{"line_number":40,"context_line":"        self.assertEqual(2, cfg.CONF.AGENT.polling_interval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bl8%3D","line":37,"updated":"2014-02-08 01:11:42.000000000","message":"self.assertFalse(cfg.CONF.OFS.tunnel_type)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.assertEqual(\u0027local\u0027, cfg.CONF.OFS.tenant_network_type)"},{"line_number":35,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.network_vlan_ranges))"},{"line_number":36,"context_line":"        self.assertEqual(0, len(cfg.CONF.OFS.tunnel_id_ranges))"},{"line_number":37,"context_line":"        self.assertEqual(\u0027\u0027, cfg.CONF.OFS.tunnel_type)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(60, cfg.CONF.AGENT.get_datapath_retry_times)"},{"line_number":40,"context_line":"        self.assertEqual(2, cfg.CONF.AGENT.polling_interval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlXI%3D","line":37,"in_reply_to":"AAAAUX%2F%2F%2Bl8%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.assertTrue(cfg.CONF.AGENT.minimize_polling)"},{"line_number":42,"context_line":"        self.assertEqual(30, cfg.CONF.AGENT.ovsdb_monitor_respawn_interval)"},{"line_number":43,"context_line":"        self.assertEqual(4789, cfg.CONF.AGENT.vxlan_udp_port)"},{"line_number":44,"context_line":"        self.assertEqual(None, cfg.CONF.AGENT.veth_mtu)"},{"line_number":45,"context_line":"        self.assertFalse(cfg.CONF.AGENT.l2_population)"},{"line_number":46,"context_line":"        self.assertEqual(4, cfg.CONF.AGENT.report_interval)"},{"line_number":47,"context_line":"        self.assertEqual(\u0027sudo\u0027, cfg.CONF.AGENT.root_helper)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Bl4%3D","line":44,"updated":"2014-02-08 01:11:42.000000000","message":"self.assertIsNone(cfg.CONF.AGENT.veth_mtu)","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.assertTrue(cfg.CONF.AGENT.minimize_polling)"},{"line_number":42,"context_line":"        self.assertEqual(30, cfg.CONF.AGENT.ovsdb_monitor_respawn_interval)"},{"line_number":43,"context_line":"        self.assertEqual(4789, cfg.CONF.AGENT.vxlan_udp_port)"},{"line_number":44,"context_line":"        self.assertEqual(None, cfg.CONF.AGENT.veth_mtu)"},{"line_number":45,"context_line":"        self.assertFalse(cfg.CONF.AGENT.l2_population)"},{"line_number":46,"context_line":"        self.assertEqual(4, cfg.CONF.AGENT.report_interval)"},{"line_number":47,"context_line":"        self.assertEqual(\u0027sudo\u0027, cfg.CONF.AGENT.root_helper)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlXQ%3D","line":44,"in_reply_to":"AAAAUX%2F%2F%2Bl4%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/tests/unit/ofswitch/test_ofs_neutron_agent.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"dcb67cf51bb4d8fab9af03390897e0e0b506ec95","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def test_get_controller(self):"},{"line_number":123,"context_line":"        with mock.patch.object(self.ovs, \u0027run_vsctl\u0027,"},{"line_number":124,"context_line":"                               return_value\u003dself.br_name) as mock_vsctl:"},{"line_number":125,"context_line":"            mock_vsctl.return_value \u003d \u0027tcp:127.0.0.1:6633\\n\u0027 + \\"},{"line_number":126,"context_line":"                                      \u0027tcp:172.17.16.10:5555\u0027"},{"line_number":127,"context_line":"            names \u003d self.ovs.get_controller()"},{"line_number":128,"context_line":"        self.assertEqual(names,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9Vlk%3D","line":125,"updated":"2014-02-07 16:23:49.000000000","message":"eliminate backslash","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def test_get_controller(self):"},{"line_number":123,"context_line":"        with mock.patch.object(self.ovs, \u0027run_vsctl\u0027,"},{"line_number":124,"context_line":"                               return_value\u003dself.br_name) as mock_vsctl:"},{"line_number":125,"context_line":"            mock_vsctl.return_value \u003d \u0027tcp:127.0.0.1:6633\\n\u0027 + \\"},{"line_number":126,"context_line":"                                      \u0027tcp:172.17.16.10:5555\u0027"},{"line_number":127,"context_line":"            names \u003d self.ovs.get_controller()"},{"line_number":128,"context_line":"        self.assertEqual(names,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlW0%3D","line":125,"in_reply_to":"AAAAUH%2F9Vlk%3D","updated":"2014-02-12 08:29:41.000000000","message":"done","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f5ef3bd0ba5532146c9cd9603f23a6ba2dcc47c3","unresolved":false,"context_lines":[{"line_number":392,"context_line":"            with mock.patch.object(self.agent, \u0027treat_devices_removed\u0027,"},{"line_number":393,"context_line":"                                   return_value\u003dFalse) as device_removed:"},{"line_number":394,"context_line":"                self.assertFalse(self.agent.process_network_ports(reply))"},{"line_number":395,"context_line":"                self.assertTrue(device_added.called)"},{"line_number":396,"context_line":"                self.assertTrue(device_removed.called)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def test_report_state(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2BlE%3D","line":395,"updated":"2014-02-08 01:11:42.000000000","message":"Should assert_call_once_with() be used to verified the correct params are sent?","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"045330eb2bc2c115d21ea74a36f7afecd2a5600a","unresolved":false,"context_lines":[{"line_number":392,"context_line":"            with mock.patch.object(self.agent, \u0027treat_devices_removed\u0027,"},{"line_number":393,"context_line":"                                   return_value\u003dFalse) as device_removed:"},{"line_number":394,"context_line":"                self.assertFalse(self.agent.process_network_ports(reply))"},{"line_number":395,"context_line":"                self.assertTrue(device_added.called)"},{"line_number":396,"context_line":"                self.assertTrue(device_removed.called)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def test_report_state(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FlCk%3D","line":395,"in_reply_to":"AAAAUX%2F%2F%2BlE%3D","updated":"2014-02-12 08:29:41.000000000","message":"I think so, too. and I forgot fix to this. I will fix it at a next patch.","commit_id":"914d254e6688ff809b7ebcf7218e4de6f3deda11"}],"neutron/tests/unit/openvswitch/test_ovs_lib.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5ba0d107c83bf3e603094e0c95c741045ea79f6f","unresolved":false,"context_lines":[{"line_number":628,"context_line":"                           \u0027iface-id\u003d\"tap99id\",\u0027"},{"line_number":629,"context_line":"                           \u0027iface-status\u003dactive, \u0027"},{"line_number":630,"context_line":"                           \u0027vm-uuid\u003d\"tap99vm\"}\u0027"},{"line_number":631,"context_line":"                           \u0027\\nname : \"tap99\"\\nofport : %(ofport)s\\n\u0027)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        # Each element is a tuple of (expected mock call, return_value)"},{"line_number":634,"context_line":"        expected_calls_and_values \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2Bh%2Bs%3D","line":631,"updated":"2014-02-20 17:16:50.000000000","message":"Nit: L628, space at end. Would be nice to have \\n on previous lines for readability:\n...\n\u0027vm-uuid\u003d\"tap99vm\"}\\n\u0027\n\u0027name : \"tap99\"\\n\u0027\n\u0027ofport : %(ofport)s\\n\u0027)","commit_id":"ac30751699f3fb8d34d6779a656d18ba8f6d6a6b"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"9eaf6d03f685895888496442a464aab715b4fb52","unresolved":false,"context_lines":[{"line_number":628,"context_line":"                           \u0027iface-id\u003d\"tap99id\",\u0027"},{"line_number":629,"context_line":"                           \u0027iface-status\u003dactive, \u0027"},{"line_number":630,"context_line":"                           \u0027vm-uuid\u003d\"tap99vm\"}\u0027"},{"line_number":631,"context_line":"                           \u0027\\nname : \"tap99\"\\nofport : %(ofport)s\\n\u0027)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        # Each element is a tuple of (expected mock call, return_value)"},{"line_number":634,"context_line":"        expected_calls_and_values \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2Bc80%3D","line":631,"in_reply_to":"AAAAUX%2F%2Bh%2Bs%3D","updated":"2014-02-21 03:34:12.000000000","message":"Done","commit_id":"ac30751699f3fb8d34d6779a656d18ba8f6d6a6b"}],"setup.cfg":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3c5e932300bf6430a1bbe281866ebe8448416a98","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    pbr.hooks.setup_hook"},{"line_number":79,"context_line":"    neutron.hooks.setup_hook"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"[entry_points]"},{"line_number":82,"context_line":"console_scripts \u003d"},{"line_number":83,"context_line":"    neutron-check-nsx-config \u003d neutron.plugins.nicira.check_nsx_config:main"},{"line_number":84,"context_line":"    neutron-check-nvp-config \u003d neutron.plugins.nicira.check_nsx_config:main"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"AAAAU3%2F%2FpWA%3D","line":81,"updated":"2014-02-25 14:05:03.000000000","message":"I think you need to add your agent here. Otherwise no command for ofa agent is available.","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ea76326ffb7542c7b8359fcae2af8ad965a2f3c1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    pbr.hooks.setup_hook"},{"line_number":79,"context_line":"    neutron.hooks.setup_hook"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"[entry_points]"},{"line_number":82,"context_line":"console_scripts \u003d"},{"line_number":83,"context_line":"    neutron-check-nsx-config \u003d neutron.plugins.nicira.check_nsx_config:main"},{"line_number":84,"context_line":"    neutron-check-nvp-config \u003d neutron.plugins.nicira.check_nsx_config:main"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"AAAAU3%2F%2Fhig%3D","line":81,"in_reply_to":"AAAAU3%2F%2FpWA%3D","updated":"2014-02-26 05:38:42.000000000","message":"Done","commit_id":"e9b2f1527ae347651493f3a5a17ded39f3fdd605"}]}
