)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"f1b68ad5196be3f7ed6204f79ad700d43813e20e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-01-08 21:43:42 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Configure plugins by name"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia4aaa1d305b160a4d6dab9e227c744727a4c78c2"},{"line_number":10,"context_line":"Implements: blueprint config-plugin-by-name"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F%2FyGI%3D","line":8,"updated":"2014-01-08 14:39:39.000000000","message":"Need to add a more detailed message after the hort 50 character or less summary in a single paragraph. see: https://wiki.openstack.org/wiki/GerritWorkflow#Committing_Changes","commit_id":"105460b4ce7088717b3c73623c01155f8fd75c2f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b82903a050bcdb71907804a22b398783589f25e1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"And to keep backward compatibility, mixed classes and names are acceptable, ex:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"service_plugins \u003d router, neutron.services.firewall.fwaas_plugin.FirewallPlugin, lbaas"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint config-plugin-by-name"},{"line_number":19,"context_line":"Change-Id: Ia4aaa1d305b160a4d6dab9e227c744727a4c78c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2Fxb0%3D","line":17,"updated":"2014-01-08 16:45:49.000000000","message":"I think since the patch introduces significant experience change, there should be DocImpact tag in the commit message","commit_id":"9c7e2360184504f0b197cc1f2b53520e8ee37da7"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"29409d47731abb52a80c88b6fd684306c418150f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"And to keep backward compatibility, mixed classes and names are acceptable, ex:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"service_plugins \u003d router, neutron.services.firewall.fwaas_plugin.FirewallPlugin, lbaas"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint config-plugin-by-name"},{"line_number":19,"context_line":"Change-Id: Ia4aaa1d305b160a4d6dab9e227c744727a4c78c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2Frks%3D","line":17,"in_reply_to":"AAAAUH%2F%2Fxb0%3D","updated":"2014-01-09 17:17:27.000000000","message":"Agreed, this must express DocImpact.","commit_id":"9c7e2360184504f0b197cc1f2b53520e8ee37da7"}],"etc/neutron.conf":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e8500508a24777c3db02a4c16960feb2cf860877","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# core_plugin \u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"# Advanced service modules by name"},{"line_number":51,"context_line":"# extension_plugins \u003d l3-router, lbaas, vpnaas"},{"line_number":52,"context_line":"#"},{"line_number":53,"context_line":"# Advanced service modules"},{"line_number":54,"context_line":"# service_plugins \u003d"}],"source_content_type":"text/plain","patch_set":1,"id":"AAAAT3%2F%2Fr2o%3D","line":51,"updated":"2014-01-03 14:32:44.000000000","message":"the convention is to usually put the default values for each variable in neutron.conf","commit_id":"d2c0f4a97ec24c20d5ad8137cbfb294f238ef383"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"80283d073e74e886a2d2a03d5a63ffaef3135649","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Neutron plugin provider module"},{"line_number":48,"context_line":"# Supported values are class name or one of [bigswitch,brocade,cisco,linuxbridge,"},{"line_number":49,"context_line":"# midonet,ml2,nec,nicira,openvswitch,plumgrid,ryu]"},{"line_number":50,"context_line":"# core_plugin \u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# Advanced service modules"}],"source_content_type":"text/plain","patch_set":2,"id":"AAAAUH%2F%2F8EY%3D","line":49,"updated":"2014-01-06 14:41:10.000000000","message":"there is also mlnx plugin","commit_id":"0639022651a5144d949c3ba51e4b7dc8e332e562"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b82903a050bcdb71907804a22b398783589f25e1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# api_extensions_path \u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Neutron plugin provider module"},{"line_number":48,"context_line":"# Supported values are class name or one of [bigswitch,brocade,cisco,embrane,"},{"line_number":49,"context_line":"# hyperv,linuxbridge,midonet,ml2,mlnx,nec,nicira,openvswitch,plumgrid,ryu]"},{"line_number":50,"context_line":"# core_plugin \u003d"},{"line_number":51,"context_line":""}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAUH%2F%2FxaI%3D","line":48,"updated":"2014-01-08 16:45:49.000000000","message":"please mention that the plugins could be specified by either class *path* or name (\u0027entry point name\u0027?)","commit_id":"9c7e2360184504f0b197cc1f2b53520e8ee37da7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"d3b400003f477e18edd604d471fde20b2a8bef9d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# api_extensions_path \u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Neutron plugin provider module"},{"line_number":48,"context_line":"# Supported values are class name or one of [bigswitch,brocade,cisco,embrane,"},{"line_number":49,"context_line":"# hyperv,linuxbridge,midonet,ml2,mlnx,nec,nicira,openvswitch,plumgrid,ryu]"},{"line_number":50,"context_line":"# core_plugin \u003d"},{"line_number":51,"context_line":""}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAUH%2F%2Fwa8%3D","line":48,"in_reply_to":"AAAAUH%2F%2FxaI%3D","updated":"2014-01-08 20:49:37.000000000","message":"I suggest modelling the comment on the driver lists in ml2_conf.ini, such as: [newlines added to prevent reformatting]\n\n# (ListOpt) List of network type driver entrypoints to be loaded from\n\n# the neutron.ml2.type_drivers namespace.\n\n#\n\n# type_drivers \u003d local,flat,vlan,gre,vxlan\n\n# Example: type_drivers \u003d flat,vlan,gre,vxlan\n\n\nYou should refer to them as \"entrypoints\", and should specify the namespace from which those entrypoints are loaded.\n\nMy preference would also be to emphasize the use of entrypoints rather than class names, and describe the support for specifying class names as \"for compatibility with older versions\".\n\nAlso, is it really necessary to list every possible entrypoint name in the comment? The plugin class names were not previously listed, and I\u0027m not sure we want the merge of every new plugin to modify this list in this file.\n\nMy suggested text is:\n\n# (StrOpt) Neutron core plugin entrypoint to be loaded from the\n\n# neutron.core_plugins namespace. See setup.cfg for the entrypoint\n\n# names of the plugins included in the neutron source distribution. For \n\n# compatibility with previous versions, the class name of a plugin can be\n\n# specified instead of its entrypoint name.\n\n#\n\n# core_plugin \u003d\n\n# Example: core_plugin \u003d ml2","commit_id":"9c7e2360184504f0b197cc1f2b53520e8ee37da7"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b82903a050bcdb71907804a22b398783589f25e1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"# core_plugin \u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# Advanced service modules"},{"line_number":53,"context_line":"# Supported values are list of mixed class names and [router,firewall,lbaas,"},{"line_number":54,"context_line":"# vpnaas,metering]"},{"line_number":55,"context_line":"# service_plugins \u003d"},{"line_number":56,"context_line":""}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAUH%2F%2FxZc%3D","line":53,"updated":"2014-01-08 16:45:49.000000000","message":"what is \u0027mixed class names\u0027. Please choose more clear phrasing.","commit_id":"9c7e2360184504f0b197cc1f2b53520e8ee37da7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"d3b400003f477e18edd604d471fde20b2a8bef9d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"# core_plugin \u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# Advanced service modules"},{"line_number":53,"context_line":"# Supported values are list of mixed class names and [router,firewall,lbaas,"},{"line_number":54,"context_line":"# vpnaas,metering]"},{"line_number":55,"context_line":"# service_plugins \u003d"},{"line_number":56,"context_line":""}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAUH%2F%2FwVU%3D","line":53,"in_reply_to":"AAAAUH%2F%2FxZc%3D","updated":"2014-01-08 20:49:37.000000000","message":"My suggested text is:\n\n# (ListOpt) List of service plugin entrypoints to be loaded from the\n\n# neutron.service_plugins namespace. See setup.cfg for the entrypoint\n\n# names of the plugins included in the neutron source distribution. For \n\n# compatibility with previous versions, the class name of a plugin can be\n\n# specified instead of its entrypoint name.\n\n#\n\n# service_plugins \u003d\n\n# Example: service_plugins \u003d router,firewall,lbaas,vpnaas,metering","commit_id":"9c7e2360184504f0b197cc1f2b53520e8ee37da7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"373594026049df317336597aa3c3eee6478967ca","unresolved":false,"context_lines":[{"line_number":60,"context_line":"# of its entrypoint name."},{"line_number":61,"context_line":"#"},{"line_number":62,"context_line":"# service_plugins \u003d"},{"line_number":63,"context_line":"# Example: service_plugins \u003d router,firewall,lbaas,vpnaas,metering"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"# Paste configuration file"},{"line_number":66,"context_line":"# api_paste_config \u003d api-paste.ini"}],"source_content_type":"text/plain","patch_set":6,"id":"AAAAUH%2F%2Fnk0%3D","line":63,"updated":"2014-01-10 12:39:58.000000000","message":"thanks for adding a detailed description.\nThis however triggers my pedantry...\nstropt and listopt are developers concepts and deployers do not even need to know they exist.\n\nPerhaps you can just say that core_plugin should be a string and service_plugins a comma-separated list of strings","commit_id":"3abbe9bd57a55ae835e74cfbe0230a8a343ffeb9"}],"neutron/common/config.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e8500508a24777c3db02a4c16960feb2cf860877","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    cfg.ListOpt(\u0027service_plugins\u0027, default\u003d[],"},{"line_number":53,"context_line":"                help\u003d_(\"The service plugins Neutron will use\")),"},{"line_number":54,"context_line":"    cfg.ListOpt(\u0027extension_plugins\u0027, default\u003d[],"},{"line_number":55,"context_line":"                help\u003d_(\"The name of service plugins Neutron will use\")),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027base_mac\u0027, default\u003d\"fa:16:3e:00:00:00\","},{"line_number":57,"context_line":"               help\u003d_(\"The base MAC address Neutron will use for VIFs\")),"},{"line_number":58,"context_line":"    cfg.IntOpt(\u0027mac_generation_retries\u0027, default\u003d16,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2Fr2U%3D","line":55,"updated":"2014-01-03 14:32:44.000000000","message":"I would like to avoid two distinct variables.\nI think it should be possible to handle backward compatibility using service_plugins only. The code might be smart enough to understand which values are names to be loaded with stevedore and which ones are full class paths.\n\nextension_plugins vs service_plugins will also confuse users as it\u0027s not immediate that the former is a replacement or alternative for the latter.","commit_id":"d2c0f4a97ec24c20d5ad8137cbfb294f238ef383"}],"neutron/manager.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e8500508a24777c3db02a4c16960feb2cf860877","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        LOG.debug(_(\"Loading service plugins: %s\"), extension_plugins)"},{"line_number":161,"context_line":"        plugins \u003d NamedExtensionManager("},{"line_number":162,"context_line":"            \u0027neutron.service_plugins\u0027, extension_plugins, name_order\u003dTrue)"},{"line_number":163,"context_line":"        for plugin in plugins:"},{"line_number":164,"context_line":"            plugin_inst \u003d plugin.plugin()"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            # only one implementation of svc_type allowed"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2Fr24%3D","line":163,"updated":"2014-01-03 14:32:44.000000000","message":"even if the final consensus would be around two distinct variables, there\u0027s a lot of repeated code, which should be easily avoided","commit_id":"d2c0f4a97ec24c20d5ad8137cbfb294f238ef383"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"edbe8850df257e6f02bc6910c1cc64043db5219a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        LOG.debug(_(\"Loading service plugins: %s\"), extension_plugins)"},{"line_number":161,"context_line":"        plugins \u003d NamedExtensionManager("},{"line_number":162,"context_line":"            \u0027neutron.service_plugins\u0027, extension_plugins, name_order\u003dTrue)"},{"line_number":163,"context_line":"        for plugin in plugins:"},{"line_number":164,"context_line":"            plugin_inst \u003d plugin.plugin()"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            # only one implementation of svc_type allowed"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F9AA%3D","line":163,"in_reply_to":"AAAAT3%2F%2Fr24%3D","updated":"2014-01-06 09:36:00.000000000","message":"+1","commit_id":"d2c0f4a97ec24c20d5ad8137cbfb294f238ef383"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"edbe8850df257e6f02bc6910c1cc64043db5219a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                       \"desc\": plugin_inst.get_plugin_description()})"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        plugin_providers \u003d cfg.CONF.service_plugins"},{"line_number":188,"context_line":"        LOG.debug(_(\"Loading service plugins: %s\"), plugin_providers)"},{"line_number":189,"context_line":"        for provider in plugin_providers:"},{"line_number":190,"context_line":"            if provider \u003d\u003d \u0027\u0027:"},{"line_number":191,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F9AE%3D","line":188,"updated":"2014-01-06 09:36:00.000000000","message":"since there is now two ways of specifying plugins, each way should indicate itself in the logs.","commit_id":"d2c0f4a97ec24c20d5ad8137cbfb294f238ef383"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"2df1a678fc98670afdca591fb02f501c7cddf477","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            mgr \u003d DriverManager(\u0027neutron.core_plugins\u0027, plugin_provider)"},{"line_number":117,"context_line":"            plugin_klass \u003d mgr.driver"},{"line_number":118,"context_line":"        except RuntimeError:"},{"line_number":119,"context_line":"            # fallback to class name"},{"line_number":120,"context_line":"            try:"},{"line_number":121,"context_line":"                plugin_klass \u003d importutils.import_class(plugin_provider)"},{"line_number":122,"context_line":"            except ImportError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F64Q%3D","line":119,"updated":"2014-01-06 19:31:30.000000000","message":"Is there any useful information in the caught RuntimeError that would help debug failures to load an entrypoint due to things like broken dependencies? If so, I\u0027m concerned that when loading an entrypoint fails, this information will be discarded in the fallback code and a less-useful exception logged instead. If the failure details are logged by stevedore, then this should be OK as is.","commit_id":"fff9ed23591900a591e47cd8cfebb1c8aeb07453"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"2df1a678fc98670afdca591fb02f501c7cddf477","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                mgr \u003d DriverManager(\u0027neutron.service_plugins\u0027, provider)"},{"line_number":173,"context_line":"                plugin_class \u003d mgr.driver"},{"line_number":174,"context_line":"            except RuntimeError:"},{"line_number":175,"context_line":"                # fallback to class name"},{"line_number":176,"context_line":"                try:"},{"line_number":177,"context_line":"                    plugin_class \u003d importutils.import_class(provider)"},{"line_number":178,"context_line":"                except ImportError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F64A%3D","line":175,"updated":"2014-01-06 19:31:30.000000000","message":"Same comment as above.","commit_id":"fff9ed23591900a591e47cd8cfebb1c8aeb07453"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"af9e13b31745f3bcaed80f1731f3c7f1cf4766a2","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                    plugin_class \u003d importutils.import_class(provider)"},{"line_number":178,"context_line":"                except ImportError:"},{"line_number":179,"context_line":"                    LOG.exception(_(\"Error loading plugin\"))"},{"line_number":180,"context_line":"                    raise ImportError(_(\"Plugin not found.\"))"},{"line_number":181,"context_line":"            plugin_inst \u003d plugin_class()"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"            # only one implementation of svc_type allowed"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F4Gc%3D","line":180,"updated":"2014-01-07 10:38:54.000000000","message":"Code duplication. it helps to introduce helper function.","commit_id":"fff9ed23591900a591e47cd8cfebb1c8aeb07453"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"f1b68ad5196be3f7ed6204f79ad700d43813e20e","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                plugin_class \u003d importutils.import_class(plugin_provider)"},{"line_number":139,"context_line":"            except ImportError as e2:"},{"line_number":140,"context_line":"                LOG.exception(_(\"Error loading plugin by name, %s\"), e1)"},{"line_number":141,"context_line":"                LOG.exception(_(\"Error loading plugin by class, %s\"), e2)"},{"line_number":142,"context_line":"                raise ImportError(_(\"Plugin not found.\"))"},{"line_number":143,"context_line":"        return plugin_class()"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FyD4%3D","line":141,"updated":"2014-01-08 14:39:39.000000000","message":"Instead of two log message couldn\u0027t we combine this into a single message to reduce the text duplication. e.g.:\nLOG.exception(_(\"Error loading plugin by name\u003d%s, class\u003d%s\"), e1, e2)","commit_id":"105460b4ce7088717b3c73623c01155f8fd75c2f"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"630a3c6e147700bc702f519f293d93c042fc1b6e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.openstack.common import periodic_task"},{"line_number":26,"context_line":"from neutron.plugins.common import constants"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from stevedore.driver import DriverManager"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FjeY%3D","line":28,"updated":"2014-01-11 12:40:37.000000000","message":"seems that the third module should put into line 20.","commit_id":"2b288994a61082d8edc15cfdccf79b9d0add2e90"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"681c15659ad20151b0bcef9cc99051ae43f4e547","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.openstack.common import periodic_task"},{"line_number":26,"context_line":"from neutron.plugins.common import constants"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from stevedore.driver import DriverManager"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FjdU%3D","line":28,"in_reply_to":"AAAAUH%2F%2FjeY%3D","updated":"2014-01-11 12:56:44.000000000","message":"Agree. Also, it\u0027s better to use module-level imports, e.g.:\n from stevedore import driver\n ...\n \n driver.DriverManager","commit_id":"2b288994a61082d8edc15cfdccf79b9d0add2e90"}],"setup.cfg":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"80283d073e74e886a2d2a03d5a63ffaef3135649","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    brocade \u003d neutron.plugins.brocade.NeutronPlugin:BrocadePluginV2"},{"line_number":125,"context_line":"    cisco \u003d neutron.plugins.cisco.network_plugin:PluginV2"},{"line_number":126,"context_line":"    linuxbridge \u003d neutron.plugins.linuxbridge.lb_neutron_plugin:LinuxBridgePluginV2"},{"line_number":127,"context_line":"    midonet \u003d neutron.plugins.midonet.plugin:MidonetPluginV2"},{"line_number":128,"context_line":"    ml2 \u003d neutron.plugins.ml2.plugin:Ml2Plugin"},{"line_number":129,"context_line":"    nec \u003d neutron.plugins.nec.nec_plugin:NECPluginV2"},{"line_number":130,"context_line":"    nicira \u003d neutron.plugins.nicira.NeutronPlugin:NvpPluginV2"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"AAAAUH%2F%2F8DA%3D","line":127,"updated":"2014-01-06 14:41:10.000000000","message":"missing:\nmlnx \u003d neutron.plugins.mlnx.mlnx_plugin.MellanoxEswitchPlugin","commit_id":"0639022651a5144d949c3ba51e4b7dc8e332e562"}]}
