)]}'
{"etc/dhcp_agent.ini":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# ovs_use_veth \u003d False"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Example of interface_driver option for LinuxBridge"},{"line_number":27,"context_line":"# interface_driver \u003d bridge"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# The agent can use other DHCP drivers.  Dnsmasq is the simplest and requires"},{"line_number":30,"context_line":"# no additional setup of the DHCP server."}],"source_content_type":"text/x-properties","patch_set":2,"id":"5a2ca52d_6fa6c411","line":27,"updated":"2015-10-15 10:37:23.000000000","message":"I guess it\u0027s better to be \u0027linuxbridge\u0027 as in other namespaces.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# ovs_use_veth \u003d False"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Example of interface_driver option for LinuxBridge"},{"line_number":27,"context_line":"# interface_driver \u003d bridge"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# The agent can use other DHCP drivers.  Dnsmasq is the simplest and requires"},{"line_number":30,"context_line":"# no additional setup of the DHCP server."}],"source_content_type":"text/x-properties","patch_set":2,"id":"5a2ca52d_b8e89e11","line":27,"in_reply_to":"5a2ca52d_6fa6c411","updated":"2015-10-15 18:16:28.000000000","message":"Done and also ovs changed to openvswitch.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"}],"etc/l3_agent.ini":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# ovs_use_veth \u003d False"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Example of interface_driver option for LinuxBridge"},{"line_number":19,"context_line":"# interface_driver \u003d bridge"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Allow overlapping IP (Must have kernel build with CONFIG_NET_NS\u003dy and"},{"line_number":22,"context_line":"# iproute2 package that supports namespaces). This option is deprecated and"}],"source_content_type":"text/x-properties","patch_set":2,"id":"5a2ca52d_8fa9e0e1","line":19,"updated":"2015-10-15 10:37:23.000000000","message":"ditto","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# ovs_use_veth \u003d False"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Example of interface_driver option for LinuxBridge"},{"line_number":19,"context_line":"# interface_driver \u003d bridge"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Allow overlapping IP (Must have kernel build with CONFIG_NET_NS\u003dy and"},{"line_number":22,"context_line":"# iproute2 package that supports namespaces). This option is deprecated and"}],"source_content_type":"text/x-properties","patch_set":2,"id":"5a2ca52d_78d1a656","line":19,"in_reply_to":"5a2ca52d_8fa9e0e1","updated":"2015-10-15 18:16:28.000000000","message":"Done and also ovs changed to openvswitch.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"}],"neutron/agent/common/utils.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.agent.common import config"},{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from stevedore import driver"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":28,"context_line":"    from neutron.agent.windows import utils"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_6ff484f1","line":25,"updated":"2015-10-15 10:37:23.000000000","message":"stevedore is 3party library, it should be moved into the import section that starts at line 18.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.agent.common import config"},{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from stevedore import driver"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":28,"context_line":"    from neutron.agent.windows import utils"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_183c322e","line":25,"in_reply_to":"5a2ca52d_6ff484f1","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"3b95468b34f611d0e1dc2ced173634ed953c5a14","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from stevedore import driver"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":28,"context_line":"    from neutron.agent.windows import utils"},{"line_number":29,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_6f6fa4c5","line":26,"updated":"2015-10-15 10:22:52.000000000","message":"nit: it may be better to add a new line.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from stevedore import driver"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":28,"context_line":"    from neutron.agent.windows import utils"},{"line_number":29,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_6f0d648f","line":26,"in_reply_to":"5a2ca52d_0fc5d059","updated":"2015-10-15 10:37:23.000000000","message":"Probably Hirofumi means that it\u0027s usual to have two lines separating import statements from other code. But the code below also imports modules, so I think it\u0027s completely irrelevant.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from stevedore import driver"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":28,"context_line":"    from neutron.agent.windows import utils"},{"line_number":29,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_981602a6","line":26,"in_reply_to":"5a2ca52d_6f0d648f","updated":"2015-10-15 18:16:28.000000000","message":"ok, left as is.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b03697749e0935925f0e640eed4081e2761530a3","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from stevedore import driver"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":28,"context_line":"    from neutron.agent.windows import utils"},{"line_number":29,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_0fc5d059","line":26,"in_reply_to":"5a2ca52d_6f6fa4c5","updated":"2015-10-15 10:29:25.000000000","message":"Not sure what you mean by adding a line as there? There is already lines between import driver and if os.name...","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"execute \u003d utils.execute"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def load_interface_driver(conf):"},{"line_number":43,"context_line":"    \"\"\"Load interface driver for agents like DHCP or L3 agent."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param conf: driver configuartion file"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_2f28cce1","line":42,"updated":"2015-10-15 10:37:23.000000000","message":"Please introduce unit tests that would validate that the function works correctly when using aliases.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":39,"context_line":"execute \u003d utils.execute"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def load_interface_driver(conf):"},{"line_number":43,"context_line":"    \"\"\"Load interface driver for agents like DHCP or L3 agent."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param conf: driver configuartion file"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_717bf3f5","line":42,"in_reply_to":"5a2ca52d_2f28cce1","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def load_interface_driver(conf):"},{"line_number":43,"context_line":"    \"\"\"Load interface driver for agents like DHCP or L3 agent."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param conf: driver configuartion file"},{"line_number":46,"context_line":"    :raises SystemExit of 1 if driver cannot be loaded"},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_6f59e4fd","line":45,"updated":"2015-10-15 10:37:23.000000000","message":"configuration. Also, it is not a file, it is a configuration object.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def load_interface_driver(conf):"},{"line_number":43,"context_line":"    \"\"\"Load interface driver for agents like DHCP or L3 agent."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param conf: driver configuartion file"},{"line_number":46,"context_line":"    :raises SystemExit of 1 if driver cannot be loaded"},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_380d6e90","line":45,"in_reply_to":"5a2ca52d_6f59e4fd","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        LOG.error(_LE(\u0027An interface driver must be specified\u0027))"},{"line_number":51,"context_line":"        raise SystemExit(1)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    try:"},{"line_number":54,"context_line":"        # Try to resolve interface by name"},{"line_number":55,"context_line":"        mgr \u003d driver.DriverManager(INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":56,"context_line":"        return mgr.driver(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_efae5484","line":53,"updated":"2015-10-15 10:37:23.000000000","message":"This code is almost the same as load_class_for_provider in neutron/manager.py. I suggest we don\u0027t copy-paste it but reuse from there (it may require some cosmetic changes to the existing method f.e. to pass the resource name (\u0027plugin\u0027, \u0027driver\u0027) to make log messages correct.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        LOG.error(_LE(\u0027An interface driver must be specified\u0027))"},{"line_number":51,"context_line":"        raise SystemExit(1)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    try:"},{"line_number":54,"context_line":"        # Try to resolve interface by name"},{"line_number":55,"context_line":"        mgr \u003d driver.DriverManager(INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":56,"context_line":"        return mgr.driver(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_d1720711","line":53,"in_reply_to":"5a2ca52d_efae5484","updated":"2015-10-15 18:16:28.000000000","message":"Done. Added new method \u0027load_class_by_alias_or_classname\u0027 to neutron/common/utils.py.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            return importutils.import_object(conf.interface_driver, conf)"},{"line_number":61,"context_line":"        except ImportError as e2:"},{"line_number":62,"context_line":"            LOG.exception(_LE(\"Error loading interface by name, %s\"), e1)"},{"line_number":63,"context_line":"            LOG.exception(_LE(\"Error loading interface by class, %s\"), e2)"},{"line_number":64,"context_line":"            raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_afa29cac","line":62,"updated":"2015-10-15 10:37:23.000000000","message":"LOG.exception already reports the current exception from sys.exc_info(), no need to pass it as an argument. See load_class_for_provider in neutron/manager.py.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            return importutils.import_object(conf.interface_driver, conf)"},{"line_number":61,"context_line":"        except ImportError as e2:"},{"line_number":62,"context_line":"            LOG.exception(_LE(\"Error loading interface by name, %s\"), e1)"},{"line_number":63,"context_line":"            LOG.exception(_LE(\"Error loading interface by class, %s\"), e2)"},{"line_number":64,"context_line":"            raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_d81c7ac3","line":62,"in_reply_to":"5a2ca52d_afa29cac","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def load_interface_driver(conf):"},{"line_number":41,"context_line":"    \"\"\"Load interface driver for agents like DHCP or L3 agent."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    :param conf: driver configuartion object"},{"line_number":44,"context_line":"    :raises SystemExit of 1 if driver cannot be loaded"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_43492e5f","line":43,"updated":"2015-10-16 09:27:30.000000000","message":"typo: configuration","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def load_interface_driver(conf):"},{"line_number":41,"context_line":"    \"\"\"Load interface driver for agents like DHCP or L3 agent."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    :param conf: driver configuartion object"},{"line_number":44,"context_line":"    :raises SystemExit of 1 if driver cannot be loaded"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_b5b637f7","line":43,"in_reply_to":"5a2ca52d_43492e5f","updated":"2015-10-16 13:51:36.000000000","message":"Updated.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        # Try to resolve interface by name"},{"line_number":49,"context_line":"        loaded_class \u003d neutron_utils.load_class_by_alias_or_classname("},{"line_number":50,"context_line":"                INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":51,"context_line":"        return loaded_class(conf)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_23a2f2fd","line":48,"updated":"2015-10-16 09:27:30.000000000","message":"(No action required) I believe the comment is redundant, can be removed","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        # Try to resolve interface by name"},{"line_number":49,"context_line":"        loaded_class \u003d neutron_utils.load_class_by_alias_or_classname("},{"line_number":50,"context_line":"                INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":51,"context_line":"        return loaded_class(conf)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_15c60b68","line":48,"in_reply_to":"5a2ca52d_23a2f2fd","updated":"2015-10-16 13:51:36.000000000","message":"Removed comment.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"ae67776cb8683de0037078686f8551de4179e6a7","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron.agent.common import config"},{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":27,"context_line":"    from neutron.agent.windows import utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_77db4d1c","side":"PARENT","line":24,"updated":"2015-10-19 09:21:44.000000000","message":"I think a line was unnecessarily deleted here.","commit_id":"0312b1237b1a74aec82163ef863624d2607563d2"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"d6af515bb28575e31c67bf8078309e09a132c5f1","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron.agent.common import config"},{"line_number":23,"context_line":"from neutron.i18n import _LE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":27,"context_line":"    from neutron.agent.windows import utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_924637be","side":"PARENT","line":24,"in_reply_to":"3a29b11f_77db4d1c","updated":"2015-10-19 10:00:09.000000000","message":"Returned line.","commit_id":"0312b1237b1a74aec82163ef863624d2607563d2"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"ae67776cb8683de0037078686f8551de4179e6a7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":50,"context_line":"        return loaded_class(conf)"},{"line_number":51,"context_line":"    except ImportError:"},{"line_number":52,"context_line":"        LOG.error(_LE(\"Error loading interface driver\"))"},{"line_number":53,"context_line":"        raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_37ddd514","line":52,"updated":"2015-10-19 09:21:44.000000000","message":"can we please dump the conf value here that it was trying to load like the previous error message?\n\nOtherwise we have to hope the relevant info shows up in the tracebacks.","commit_id":"63d0079d9abc44f95c5c52873a6fe7cc9203211b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e1cf6bb8e9250b2db2754ad0c11f01b7a948f989","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":50,"context_line":"        return loaded_class(conf)"},{"line_number":51,"context_line":"    except ImportError:"},{"line_number":52,"context_line":"        LOG.error(_LE(\"Error loading interface driver\"))"},{"line_number":53,"context_line":"        raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_77934dfb","line":52,"in_reply_to":"3a29b11f_37ddd514","updated":"2015-10-19 09:24:33.000000000","message":"Then the same logic should apply to manager.py message.","commit_id":"63d0079d9abc44f95c5c52873a6fe7cc9203211b"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"d6af515bb28575e31c67bf8078309e09a132c5f1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":50,"context_line":"        return loaded_class(conf)"},{"line_number":51,"context_line":"    except ImportError:"},{"line_number":52,"context_line":"        LOG.error(_LE(\"Error loading interface driver\"))"},{"line_number":53,"context_line":"        raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_b876b53c","line":52,"in_reply_to":"3a29b11f_37ddd514","updated":"2015-10-19 10:00:09.000000000","message":"ok, conf.interface_driver value dumped.","commit_id":"63d0079d9abc44f95c5c52873a6fe7cc9203211b"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"d6af515bb28575e31c67bf8078309e09a132c5f1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                INTERFACE_NAMESPACE, conf.interface_driver)"},{"line_number":50,"context_line":"        return loaded_class(conf)"},{"line_number":51,"context_line":"    except ImportError:"},{"line_number":52,"context_line":"        LOG.error(_LE(\"Error loading interface driver\"))"},{"line_number":53,"context_line":"        raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_3899456f","line":52,"in_reply_to":"3a29b11f_77934dfb","updated":"2015-10-19 10:00:09.000000000","message":"Value for plugin dumped in manager.py.","commit_id":"63d0079d9abc44f95c5c52873a6fe7cc9203211b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"25ecd33da8d3a201d04d5200680ac7a4def2b764","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return loaded_class(conf)"},{"line_number":52,"context_line":"    except ImportError:"},{"line_number":53,"context_line":"        LOG.error(_LE(\"Error loading interface driver \u0027%(driver)s\u0027\"),"},{"line_number":54,"context_line":"                {\u0027driver\u0027: conf.interface_driver})"},{"line_number":55,"context_line":"        raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_eed1bcfc","line":54,"updated":"2015-10-19 14:10:49.000000000","message":"nit#1: it\u0027s usually better to indent arguments to the same function the same way (so the line would probably move 2 spaces to the right).\n\nnit#2: there is no big reason to pass a dict if you have a single argument.","commit_id":"a68e68bc13fdb2b25d11d0f88802a33975244b33"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"4c319c7f5d0ce1ce8735d55402f41ed540938f11","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return loaded_class(conf)"},{"line_number":52,"context_line":"    except ImportError:"},{"line_number":53,"context_line":"        LOG.error(_LE(\"Error loading interface driver \u0027%(driver)s\u0027\"),"},{"line_number":54,"context_line":"                {\u0027driver\u0027: conf.interface_driver})"},{"line_number":55,"context_line":"        raise SystemExit(1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_c2783e2e","line":54,"in_reply_to":"3a29b11f_eed1bcfc","updated":"2015-10-19 21:12:33.000000000","message":"nit#1 and nit#2 done.","commit_id":"a68e68bc13fdb2b25d11d0f88802a33975244b33"}],"neutron/common/utils.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    if not name:"},{"line_number":505,"context_line":"        LOG.error(_LE(\"Error, alias or class name is not set\"))"},{"line_number":506,"context_line":"        raise ImportError(_(\"Class not found.\"))"},{"line_number":507,"context_line":"    try:"},{"line_number":508,"context_line":"        # Try to resolve class by alias"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_834186ab","line":505,"updated":"2015-10-16 09:27:30.000000000","message":"\u0027Error, \u0027 part in the log message is redundant because we already report in under ERROR log level.\n\nI know it was present in the original code, but since you introduce a new translatable message here, let\u0027s make it more clean.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    if not name:"},{"line_number":505,"context_line":"        LOG.error(_LE(\"Error, alias or class name is not set\"))"},{"line_number":506,"context_line":"        raise ImportError(_(\"Class not found.\"))"},{"line_number":507,"context_line":"    try:"},{"line_number":508,"context_line":"        # Try to resolve class by alias"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_557ec319","line":505,"in_reply_to":"5a2ca52d_834186ab","updated":"2015-10-16 13:51:36.000000000","message":"Updated.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        try:"},{"line_number":515,"context_line":"            class_to_load \u003d importutils.import_class(name)"},{"line_number":516,"context_line":"        except (ImportError, ValueError):"},{"line_number":517,"context_line":"            LOG.error(_LE(\"Error loading class by name\"),"},{"line_number":518,"context_line":"                      exc_info\u003de1_info)"},{"line_number":519,"context_line":"            LOG.error(_LE(\"Error loading class by class\"),"},{"line_number":520,"context_line":"                      exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_a3712278","line":517,"updated":"2015-10-16 09:27:30.000000000","message":"I guess it\u0027s better to say \u0027by alias\u0027 here.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        try:"},{"line_number":515,"context_line":"            class_to_load \u003d importutils.import_class(name)"},{"line_number":516,"context_line":"        except (ImportError, ValueError):"},{"line_number":517,"context_line":"            LOG.error(_LE(\"Error loading class by name\"),"},{"line_number":518,"context_line":"                      exc_info\u003de1_info)"},{"line_number":519,"context_line":"            LOG.error(_LE(\"Error loading class by class\"),"},{"line_number":520,"context_line":"                      exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_75a2df9a","line":517,"in_reply_to":"5a2ca52d_a3712278","updated":"2015-10-16 13:51:36.000000000","message":"Updated.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        except (ImportError, ValueError):"},{"line_number":517,"context_line":"            LOG.error(_LE(\"Error loading class by name\"),"},{"line_number":518,"context_line":"                      exc_info\u003de1_info)"},{"line_number":519,"context_line":"            LOG.error(_LE(\"Error loading class by class\"),"},{"line_number":520,"context_line":"                      exc_info\u003dTrue)"},{"line_number":521,"context_line":"            raise ImportError(_(\"Class not found.\"))"},{"line_number":522,"context_line":"    return class_to_load"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_63678ab7","line":519,"updated":"2015-10-16 09:27:30.000000000","message":"probably better to say \u0027by name\u0027","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        except (ImportError, ValueError):"},{"line_number":517,"context_line":"            LOG.error(_LE(\"Error loading class by name\"),"},{"line_number":518,"context_line":"                      exc_info\u003de1_info)"},{"line_number":519,"context_line":"            LOG.error(_LE(\"Error loading class by class\"),"},{"line_number":520,"context_line":"                      exc_info\u003dTrue)"},{"line_number":521,"context_line":"            raise ImportError(_(\"Class not found.\"))"},{"line_number":522,"context_line":"    return class_to_load"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_d5de5310","line":519,"in_reply_to":"5a2ca52d_63678ab7","updated":"2015-10-16 13:51:36.000000000","message":"Updated.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1aaeef1c964bd6f6b27f21ba76481c4666240ff1","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        try:"},{"line_number":515,"context_line":"            class_to_load \u003d importutils.import_class(name)"},{"line_number":516,"context_line":"        except (ImportError, ValueError):"},{"line_number":517,"context_line":"            LOG.error(_LE(\"Loading class by alias\"),"},{"line_number":518,"context_line":"                      exc_info\u003de1_info)"},{"line_number":519,"context_line":"            LOG.error(_LE(\"Loading class by class name\"),"},{"line_number":520,"context_line":"                      exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_6b043317","line":517,"updated":"2015-10-16 14:27:32.000000000","message":"Wait, I didn\u0027t mean those should be modified too. :) Those two were good because without \u0027Error\u0027 part they are not valid sentences.","commit_id":"22ee4521713df6ce766c5791bdd914f358ee917f"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"246d4598eb65223ab99d57ec1312465832c2a487","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        try:"},{"line_number":515,"context_line":"            class_to_load \u003d importutils.import_class(name)"},{"line_number":516,"context_line":"        except (ImportError, ValueError):"},{"line_number":517,"context_line":"            LOG.error(_LE(\"Loading class by alias\"),"},{"line_number":518,"context_line":"                      exc_info\u003de1_info)"},{"line_number":519,"context_line":"            LOG.error(_LE(\"Loading class by class name\"),"},{"line_number":520,"context_line":"                      exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_513eca8c","line":517,"in_reply_to":"5a2ca52d_6b043317","updated":"2015-10-16 15:47:06.000000000","message":"ok, changed back.","commit_id":"22ee4521713df6ce766c5791bdd914f358ee917f"}],"neutron/manager.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.resource_controller_mappings \u003d {}"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def load_class_for_provider(namespace, name):"},{"line_number":135,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":136,"context_line":"        :param namespace: namespace alias or class name is defined in"},{"line_number":137,"context_line":"        :param plugin_provider: plugin alias or class name"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_43a84e20","line":134,"updated":"2015-10-16 09:27:30.000000000","message":"I spotted we don\u0027t have any tests for the method. Can you add one to make sure we don\u0027t break it?","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.resource_controller_mappings \u003d {}"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def load_class_for_provider(namespace, name):"},{"line_number":135,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":136,"context_line":"        :param namespace: namespace alias or class name is defined in"},{"line_number":137,"context_line":"        :param plugin_provider: plugin alias or class name"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_616f7d2b","line":134,"in_reply_to":"5a2ca52d_43a84e20","updated":"2015-10-16 13:51:36.000000000","message":"Added some unit tests to neutron/tests/unit/test_manager.py","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def load_class_for_provider(namespace, name):"},{"line_number":135,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":136,"context_line":"        :param namespace: namespace alias or class name is defined in"},{"line_number":137,"context_line":"        :param plugin_provider: plugin alias or class name"},{"line_number":138,"context_line":"        :returns plugin that is loaded"},{"line_number":139,"context_line":"        :raises ImportError if fails to load plugin"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_03d5761a","line":136,"updated":"2015-10-16 09:27:30.000000000","message":"nit: class names are not defined in namespaces, aliases are. Class names are used when the namespace does NOT define \u0027name\u0027 as namespace alias.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def load_class_for_provider(namespace, name):"},{"line_number":135,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":136,"context_line":"        :param namespace: namespace alias or class name is defined in"},{"line_number":137,"context_line":"        :param plugin_provider: plugin alias or class name"},{"line_number":138,"context_line":"        :returns plugin that is loaded"},{"line_number":139,"context_line":"        :raises ImportError if fails to load plugin"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_95ce9b2b","line":136,"in_reply_to":"5a2ca52d_03d5761a","updated":"2015-10-16 13:51:36.000000000","message":"Updated.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def load_class_for_provider(namespace, name):"},{"line_number":135,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":136,"context_line":"        :param namespace: namespace alias or class name is defined in"},{"line_number":137,"context_line":"        :param plugin_provider: plugin alias or class name"},{"line_number":138,"context_line":"        :returns plugin that is loaded"},{"line_number":139,"context_line":"        :raises ImportError if fails to load plugin"},{"line_number":140,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_e3b63af8","line":137,"updated":"2015-10-16 09:27:30.000000000","message":"Param name is changed. BTW why? It\u0027s potentially unsafe in case some external user used the method by passing the argument as keyword:\n\nload_class_for_provider(NAMESPACE, plugin_provider\u003dXXX)","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def load_class_for_provider(namespace, name):"},{"line_number":135,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":136,"context_line":"        :param namespace: namespace alias or class name is defined in"},{"line_number":137,"context_line":"        :param plugin_provider: plugin alias or class name"},{"line_number":138,"context_line":"        :returns plugin that is loaded"},{"line_number":139,"context_line":"        :raises ImportError if fails to load plugin"},{"line_number":140,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_f5690ffa","line":137,"in_reply_to":"5a2ca52d_e3b63af8","updated":"2015-10-16 13:51:36.000000000","message":"Reverted back to original parameter name.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"25ecd33da8d3a201d04d5200680ac7a4def2b764","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return utils.load_class_by_alias_or_classname(namespace,"},{"line_number":144,"context_line":"                    plugin_provider)"},{"line_number":145,"context_line":"        except ImportError:"},{"line_number":146,"context_line":"            raise ImportError(_(\"Plugin \u0027%(plugin)\u0027 not found.\"), {\u0027plugin\u0027:"},{"line_number":147,"context_line":"                plugin_provider})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _get_plugin_instance(self, namespace, plugin_provider):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_6e2b6cec","line":146,"updated":"2015-10-19 14:10:49.000000000","message":"it\u0027s not usual to break dict into two lines like that. Even better, there is no big reason to have a dict and not a simple argument.","commit_id":"a68e68bc13fdb2b25d11d0f88802a33975244b33"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"4c319c7f5d0ce1ce8735d55402f41ed540938f11","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return utils.load_class_by_alias_or_classname(namespace,"},{"line_number":144,"context_line":"                    plugin_provider)"},{"line_number":145,"context_line":"        except ImportError:"},{"line_number":146,"context_line":"            raise ImportError(_(\"Plugin \u0027%(plugin)\u0027 not found.\"), {\u0027plugin\u0027:"},{"line_number":147,"context_line":"                plugin_provider})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _get_plugin_instance(self, namespace, plugin_provider):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_422f4ef6","line":146,"in_reply_to":"3a29b11f_6e2b6cec","updated":"2015-10-19 21:12:33.000000000","message":"Updated.","commit_id":"a68e68bc13fdb2b25d11d0f88802a33975244b33"}],"neutron/tests/unit/agent/common/test_utils.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"93fd913877f28ef0023ad20e1145bb6c796236cc","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.conf.set_override(\u0027interface_driver\u0027,"},{"line_number":82,"context_line":"                               \u0027openvswitch\u0027)"},{"line_number":83,"context_line":"        self.assertIsInstance(utils.load_interface_driver(self.conf),"},{"line_number":84,"context_line":"                              interface.OVSInterfaceDriver)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_load_interface_driver_as_alias_wrong_driver(self):"},{"line_number":87,"context_line":"        self.conf.set_override(\u0027interface_driver\u0027, \u0027openvswitchXX\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_6349cab6","line":84,"updated":"2015-10-16 09:27:30.000000000","message":"(No action required) I am not sure we need test cases for each namespace entry (that seems a bit redundant since it looks we validate stevedore does its job for all aliases we have), but I don\u0027t mind to have them either.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b7d573452e3e473a45bb6c88eb50e52cbdf50230","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.conf.set_override(\u0027interface_driver\u0027,"},{"line_number":82,"context_line":"                               \u0027openvswitch\u0027)"},{"line_number":83,"context_line":"        self.assertIsInstance(utils.load_interface_driver(self.conf),"},{"line_number":84,"context_line":"                              interface.OVSInterfaceDriver)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_load_interface_driver_as_alias_wrong_driver(self):"},{"line_number":87,"context_line":"        self.conf.set_override(\u0027interface_driver\u0027, \u0027openvswitchXX\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_d532d30f","line":84,"in_reply_to":"5a2ca52d_6349cab6","updated":"2015-10-16 13:51:36.000000000","message":"ok, just thought it might be handy to test the loading of different entries.","commit_id":"76ebacd89852041dda119b0c5978ac4d97be3099"}],"neutron/tests/unit/test_manager.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1aaeef1c964bd6f6b27f21ba76481c4666240ff1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    def test_load_class_for_provider(self):"},{"line_number":145,"context_line":"        plugin \u003d manager.NeutronManager.load_class_for_provider("},{"line_number":146,"context_line":"                \u0027neutron.core_plugins\u0027, \u0027ml2\u0027)"},{"line_number":147,"context_line":"        self.assertIsNot(plugin, \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_load_class_for_provider_wrong_plugin(self):"},{"line_number":150,"context_line":"        with testlib_api.ExpectedException(ImportError):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_a66a82b1","line":147,"updated":"2015-10-16 14:27:32.000000000","message":"I don\u0027t think it\u0027s correct: you validate that a class is not a string, which will always be true.","commit_id":"22ee4521713df6ce766c5791bdd914f358ee917f"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"246d4598eb65223ab99d57ec1312465832c2a487","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    def test_load_class_for_provider(self):"},{"line_number":145,"context_line":"        plugin \u003d manager.NeutronManager.load_class_for_provider("},{"line_number":146,"context_line":"                \u0027neutron.core_plugins\u0027, \u0027ml2\u0027)"},{"line_number":147,"context_line":"        self.assertIsNot(plugin, \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_load_class_for_provider_wrong_plugin(self):"},{"line_number":150,"context_line":"        with testlib_api.ExpectedException(ImportError):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_401fd16b","line":147,"in_reply_to":"5a2ca52d_a66a82b1","updated":"2015-10-16 15:47:06.000000000","message":"ok. I have changed test as the caling of method is sufficient.","commit_id":"22ee4521713df6ce766c5791bdd914f358ee917f"}],"setup.cfg":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"3b95468b34f611d0e1dc2ced173634ed953c5a14","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    neutron.openstack.common.notifier.test_notifier \u003d oslo_messaging.notify._impl_test:TestDriver"},{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_94481989","line":176,"updated":"2015-10-15 10:22:52.000000000","message":"Please remove last space","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    neutron.openstack.common.notifier.test_notifier \u003d oslo_messaging.notify._impl_test:TestDriver"},{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_8feb20b0","line":176,"updated":"2015-10-15 10:37:23.000000000","message":"There is also null driver.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    neutron.openstack.common.notifier.test_notifier \u003d oslo_messaging.notify._impl_test:TestDriver"},{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_b8bf3efa","line":176,"in_reply_to":"5a2ca52d_8feb20b0","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    neutron.openstack.common.notifier.test_notifier \u003d oslo_messaging.notify._impl_test:TestDriver"},{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_09c6279a","line":176,"in_reply_to":"5a2ca52d_94481989","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b03697749e0935925f0e640eed4081e2761530a3","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    neutron.openstack.common.notifier.test_notifier \u003d oslo_messaging.notify._impl_test:TestDriver"},{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_8f2a402b","line":176,"in_reply_to":"5a2ca52d_94481989","updated":"2015-10-15 10:29:25.000000000","message":"Sure, will do.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"3b95468b34f611d0e1dc2ced173634ed953c5a14","unresolved":false,"context_lines":[{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_1455e91b","line":177,"updated":"2015-10-15 10:22:52.000000000","message":"ditto","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_c9bfcff9","line":177,"in_reply_to":"5a2ca52d_1455e91b","updated":"2015-10-15 18:16:28.000000000","message":"Done","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"b03697749e0935925f0e640eed4081e2761530a3","unresolved":false,"context_lines":[{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_4f1d080e","line":177,"in_reply_to":"5a2ca52d_1455e91b","updated":"2015-10-15 10:29:25.000000000","message":"Sure, will do.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_cff2786f","line":177,"in_reply_to":"5a2ca52d_4f1d080e","updated":"2015-10-15 10:37:23.000000000","message":"Please rename to openvswitch. I know that qos_drivers namespace already has \u0027ovs\u0027 precedent. That was a mistake that we should solve by adding another alias for \u0027openvswitch\u0027.\n\nThe reason why I suggest to stick to \u0027openvswitch\u0027 name is that core_plugin and ml2_driver both contained openvswitch only before, so it seems better to stick to that old name everywhere.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":174,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_4942df11","line":177,"in_reply_to":"5a2ca52d_cff2786f","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b865deebf0c0550875e2c9497cff7cb227b964a9","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"},{"line_number":181,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_2fcc4c69","line":178,"updated":"2015-10-15 10:37:23.000000000","message":"rename into linuxbridge please","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"0e091f16d35e274fddfc75da8f7e7891c0ec2f34","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    neutron \u003d neutron.db.migration:alembic_migrations"},{"line_number":176,"context_line":"neutron.interface_drivers \u003d "},{"line_number":177,"context_line":"    ovs \u003d neutron.agent.linux.interface:OVSInterfaceDriver "},{"line_number":178,"context_line":"    bridge \u003d neutron.agent.linux.interface:BridgeInterfaceDriver"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"[build_sphinx]"},{"line_number":181,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"5a2ca52d_2948c32c","line":178,"in_reply_to":"5a2ca52d_2fcc4c69","updated":"2015-10-15 18:16:28.000000000","message":"Done.","commit_id":"189b98ebfbf3e9d9ec62c44cf53cd1f4dab66bc9"}]}
