)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-06 22:10:10 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add checking if qos extension driver is setup when Qos service pluing is used"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_301670f2","line":7,"updated":"2016-01-07 11:41:56.000000000","message":"QoS, plugin","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-06 22:10:10 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add checking if qos extension driver is setup when Qos service pluing is used"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_7305b912","line":7,"in_reply_to":"fa69d971_301670f2","updated":"2016-01-07 20:31:40.000000000","message":"Done","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"},{"line_number":11,"context_line":"missing then initialization of service plugin and neutron-server will fails."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibf19e77b88ce34c58519ae157c852c9e2b30e31f"},{"line_number":14,"context_line":"Close-bug: #1496787"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_b0e020fc","line":11,"updated":"2016-01-07 11:41:56.000000000","message":"fail","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"},{"line_number":11,"context_line":"missing then initialization of service plugin and neutron-server will fails."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibf19e77b88ce34c58519ae157c852c9e2b30e31f"},{"line_number":14,"context_line":"Close-bug: #1496787"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_4e032a0e","line":11,"in_reply_to":"fa69d971_b0e020fc","updated":"2016-01-07 20:31:40.000000000","message":"Done","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":11,"context_line":"missing then initialization of service plugin and neutron-server will fails."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibf19e77b88ce34c58519ae157c852c9e2b30e31f"},{"line_number":14,"context_line":"Close-bug: #1496787"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_70e38806","line":14,"updated":"2016-01-07 11:41:56.000000000","message":"Closes-Bug","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":11,"context_line":"missing then initialization of service plugin and neutron-server will fails."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibf19e77b88ce34c58519ae157c852c9e2b30e31f"},{"line_number":14,"context_line":"Close-bug: #1496787"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_ce0f1a2d","line":14,"in_reply_to":"fa69d971_70e38806","updated":"2016-01-07 20:31:40.000000000","message":"Done","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"02229b5a5a43b8d542553f4fd551a990f8322a2d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-07 21:29:45 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add checking if QoS extension driver is setup when Qos pluing is used"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa69d971_a55cc77d","line":7,"range":{"start_line":7,"start_character":55,"end_line":7,"end_character":61},"updated":"2016-01-11 08:55:50.000000000","message":"pluin -\u003e plugin","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"02229b5a5a43b8d542553f4fd551a990f8322a2d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add checking if QoS extension driver is setup when Qos pluing is used"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"},{"line_number":11,"context_line":"missing then initialization of service plugin and neutron-server will fail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa69d971_e5371ffd","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":19},"updated":"2016-01-11 08:55:50.000000000","message":"This check should be done in the ml2 driver itself, and not in the QoS driver.\n\nOther drivers could work with QoS regardless of ml2 being there or not, now it\u0027s a bit tricky to do, but we hope soon the core resource extension will be possible outside ML2.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"772d50a89235202b1708a9d7237045c12708e27f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add checking if QoS extension driver is setup when Qos pluing is used"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS service plugin will check if used core_plugin is ML2 and if yes, then will"},{"line_number":10,"context_line":"check if \u0027qos\u0027 extension driver is configured. If this extension driver is"},{"line_number":11,"context_line":"missing then initialization of service plugin and neutron-server will fail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da6ed579_09ad4988","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":19},"in_reply_to":"fa69d971_e5371ffd","updated":"2016-01-11 22:17:38.000000000","message":"I changed it and now this check is made in ML2 plugin. Please check and tell me what You think about this solution","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-11 23:19:06 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add in ML2 plugin mechanism to verify if required extension drivers are loaded"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is added list of extension drivers required for service plugins when ML2"},{"line_number":10,"context_line":"core plugin is used."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da6ed579_eced6326","line":7,"updated":"2016-01-11 22:43:12.000000000","message":"The following seems better?\n\n ML2: verify if required extension drivers are loaded\n\n This change ensures extension drivers required by service plugins are loaded when using ML2 plugin.","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-11 23:19:06 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add in ML2 plugin mechanism to verify if required extension drivers are loaded"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is added list of extension drivers required for service plugins when ML2"},{"line_number":10,"context_line":"core plugin is used."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da6ed579_29d52eb8","line":7,"in_reply_to":"da6ed579_7387e761","updated":"2016-01-13 20:58:07.000000000","message":"Cedric: Yes, it is much better :) I changed it.","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5608978601ca676882732a3abbf93a4183c31cff","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-11 23:19:06 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add in ML2 plugin mechanism to verify if required extension drivers are loaded"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is added list of extension drivers required for service plugins when ML2"},{"line_number":10,"context_line":"core plugin is used."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da6ed579_7387e761","line":7,"in_reply_to":"da6ed579_eced6326","updated":"2016-01-12 16:22:38.000000000","message":"+","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"783f76fb3876ce35f84dec42c3b54a2d43fd4a51","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change ensures extension drivers required by service plugins are loaded"},{"line_number":10,"context_line":"when using ML2 plugin."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"There is added list of extension drivers required for service plugins when ML2"},{"line_number":13,"context_line":"core plugin is used."},{"line_number":14,"context_line":"Now there is added only QoS extension driver for QoS service plugin."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da6ed579_1f073b19","line":12,"range":{"start_line":12,"start_character":15,"end_line":12,"end_character":19},"updated":"2016-01-13 21:38:54.000000000","message":"Prefer the following as commit details:\n\n\"This change ensures extension drivers required by service plugins are loaded when using ML2 plugin: we check that ML2 loads QoS extension driver when QoS service plugin is enabled.\"","commit_id":"183d9c4101aedd296e5eb589073c2067aa9fd8e9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"771e41819b841af99e7c40dea49242dcf0f1ad75","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change ensures extension drivers required by service plugins are loaded"},{"line_number":10,"context_line":"when using ML2 plugin."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"There is added list of extension drivers required for service plugins when ML2"},{"line_number":13,"context_line":"core plugin is used."},{"line_number":14,"context_line":"Now there is added only QoS extension driver for QoS service plugin."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da6ed579_d3467c4e","line":12,"range":{"start_line":12,"start_character":15,"end_line":12,"end_character":19},"in_reply_to":"da6ed579_1f073b19","updated":"2016-01-13 23:19:55.000000000","message":"Done","commit_id":"183d9c4101aedd296e5eb589073c2067aa9fd8e9"}],"neutron/plugins/ml2/common/exceptions.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5608978601ca676882732a3abbf93a4183c31cff","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    message \u003d _(\"Extension %(driver)s failed.\")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class ExtensionDriverNotFound(exceptions.NeutronException):"},{"line_number":33,"context_line":"    \"\"\"Required extension driver not found in ML2 config.\"\"\""},{"line_number":34,"context_line":"    message \u003d _(\"Extension driver %(driver)s required for \""},{"line_number":35,"context_line":"                \"service plugin %(service_plugin)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_b3e47f3b","line":32,"updated":"2016-01-12 16:22:38.000000000","message":"nit: Maybe worth it inheriting from InvalidConfigurationOption ?","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    message \u003d _(\"Extension %(driver)s failed.\")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class ExtensionDriverNotFound(exceptions.NeutronException):"},{"line_number":33,"context_line":"    \"\"\"Required extension driver not found in ML2 config.\"\"\""},{"line_number":34,"context_line":"    message \u003d _(\"Extension driver %(driver)s required for \""},{"line_number":35,"context_line":"                \"service plugin %(service_plugin)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_93ba4d22","line":32,"in_reply_to":"da6ed579_b3e47f3b","updated":"2016-01-13 20:58:07.000000000","message":"Yep. I even didn\u0027t know that there is such Exception class :) Thx","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        )"},{"line_number":180,"context_line":"        self.start_periodic_dhcp_agent_status_check()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _verify_service_plugins_requirements(self):"},{"line_number":183,"context_line":"        for service_plugin in cfg.CONF.service_plugins:"},{"line_number":184,"context_line":"            if service_plugin in SERVICE_PLUGINS_REQUIRED_DRIVERS.keys():"},{"line_number":185,"context_line":"                self._verify_service_plugin_requirements(service_plugin)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_2ca7fb50","line":182,"updated":"2016-01-11 22:43:12.000000000","message":"IMO, it can be done in one method:\n\n extension_names \u003d self.extension_manager.names()\n for service_plugin in ...:\n   for driver in SERVICE_PLUGINS_REQUIRED_DRIVERS.get(service_plugin, []):\n     if ...\n       raise ...","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        )"},{"line_number":180,"context_line":"        self.start_periodic_dhcp_agent_status_check()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _verify_service_plugins_requirements(self):"},{"line_number":183,"context_line":"        for service_plugin in cfg.CONF.service_plugins:"},{"line_number":184,"context_line":"            if service_plugin in SERVICE_PLUGINS_REQUIRED_DRIVERS.keys():"},{"line_number":185,"context_line":"                self._verify_service_plugin_requirements(service_plugin)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_73beb9d5","line":182,"in_reply_to":"da6ed579_2ca7fb50","updated":"2016-01-13 20:58:07.000000000","message":"Done","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _verify_service_plugins_requirements(self):"},{"line_number":183,"context_line":"        for service_plugin in cfg.CONF.service_plugins:"},{"line_number":184,"context_line":"            if service_plugin in SERVICE_PLUGINS_REQUIRED_DRIVERS.keys():"},{"line_number":185,"context_line":"                self._verify_service_plugin_requirements(service_plugin)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def _verify_service_plugin_requirements(self, plugin):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_4cceef84","line":184,"range":{"start_line":184,"start_character":15,"end_line":184,"end_character":29},"updated":"2016-01-11 22:43:12.000000000","message":"use directly:\n\n if service_plugin in SERVICE_PLUGINS_REQUIRED_DRIVERS","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _verify_service_plugins_requirements(self):"},{"line_number":183,"context_line":"        for service_plugin in cfg.CONF.service_plugins:"},{"line_number":184,"context_line":"            if service_plugin in SERVICE_PLUGINS_REQUIRED_DRIVERS.keys():"},{"line_number":185,"context_line":"                self._verify_service_plugin_requirements(service_plugin)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def _verify_service_plugin_requirements(self, plugin):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_53893525","line":184,"range":{"start_line":184,"start_character":15,"end_line":184,"end_character":29},"in_reply_to":"da6ed579_4cceef84","updated":"2016-01-13 20:58:07.000000000","message":"Done","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"783f76fb3876ce35f84dec42c3b54a2d43fd4a51","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            extension_drivers \u003d SERVICE_PLUGINS_REQUIRED_DRIVERS.get("},{"line_number":186,"context_line":"                service_plugin, []"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            if not extension_drivers:"},{"line_number":189,"context_line":"                continue"},{"line_number":190,"context_line":"            for extension_driver in extension_drivers:"},{"line_number":191,"context_line":"                if extension_driver not in self.extension_manager.names():"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_3c9c8d5c","line":188,"range":{"start_line":188,"start_character":19,"end_line":188,"end_character":36},"updated":"2016-01-13 21:38:54.000000000","message":"L188-189 are useless","commit_id":"183d9c4101aedd296e5eb589073c2067aa9fd8e9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"771e41819b841af99e7c40dea49242dcf0f1ad75","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            extension_drivers \u003d SERVICE_PLUGINS_REQUIRED_DRIVERS.get("},{"line_number":186,"context_line":"                service_plugin, []"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            if not extension_drivers:"},{"line_number":189,"context_line":"                continue"},{"line_number":190,"context_line":"            for extension_driver in extension_drivers:"},{"line_number":191,"context_line":"                if extension_driver not in self.extension_manager.names():"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_286be3f2","line":188,"range":{"start_line":188,"start_character":19,"end_line":188,"end_character":36},"in_reply_to":"da6ed579_3c9c8d5c","updated":"2016-01-13 23:19:55.000000000","message":"True. Removed :)","commit_id":"183d9c4101aedd296e5eb589073c2067aa9fd8e9"}],"neutron/services/qos/qos_consts.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_PLUGIN_NAME \u003d \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":22,"context_line":"ML2_PLUGIN_ALIAS \u003d \u0027ml2\u0027"},{"line_number":23,"context_line":"ML2_PLUGIN_NAMES \u003d ["},{"line_number":24,"context_line":"    ML2_PLUGIN_NAME,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a33effd7","line":21,"updated":"2016-01-05 13:00:14.000000000","message":"If you move the check into ml2 plugin code, you won\u0027t need those constants.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    ML2_PLUGIN_ALIAS"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_635ec745","line":28,"updated":"2016-01-05 13:00:14.000000000","message":"We should stop supporting python paths to define different pluggable pieces we have in the tree. I would just skip handling the path and stick to user exposed aliases.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    ML2_PLUGIN_ALIAS"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_d8e66b14","line":28,"in_reply_to":"fa69d971_635ec745","updated":"2016-01-06 10:09:48.000000000","message":"So You want me to remove this python path from here and check only alias?","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"749b9a38727a40ae289317f6f5152c4bbef8a849","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    ML2_PLUGIN_ALIAS"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_129ef006","line":28,"in_reply_to":"fa69d971_7d407834","updated":"2016-01-06 21:10:53.000000000","message":"ok, I removed this name and use only alias","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d4fe65d6e46807d0b10aa743dc8ca16864eeda2d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    ML2_PLUGIN_ALIAS"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_7d407834","line":28,"in_reply_to":"fa69d971_d8e66b14","updated":"2016-01-06 10:46:48.000000000","message":"Yeah, I don\u0027t think we ever recommended anywhere to use that bogus name.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"},{"line_number":32,"context_line":"    QOS_EXT_DRIVER_ALIAS"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_1e47244c","line":29,"updated":"2016-01-05 13:00:14.000000000","message":"nit: this \u0027qos\u0027 literal for ml2 extension driver is already used in neutron/tests/fullstack/resources/config.py , so it would be great if we reuse the same constant in those two places.\n\nAlso, the name of the constant is not ideal, since it\u0027s ml2 extension specifically. Overall, it would probably also go into ml2 namespace.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"749b9a38727a40ae289317f6f5152c4bbef8a849","unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"},{"line_number":32,"context_line":"    QOS_EXT_DRIVER_ALIAS"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_cd16794b","line":29,"in_reply_to":"fa69d971_1d4b7c5a","updated":"2016-01-06 21:10:53.000000000","message":"Ok, I changed it in this test file also but I\u0027m not 100% sure if I should do it in this patch because IMHO it is not related :)","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"},{"line_number":32,"context_line":"    QOS_EXT_DRIVER_ALIAS"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_ac37a44b","line":29,"in_reply_to":"fa69d971_1e47244c","updated":"2016-01-06 10:09:48.000000000","message":"as I saw in neutron/tests/fullstack/resources/config.py it is just string \"qos\" (there is no constant defined there). You want me to define such constant here and change in neutron/tests/fullstack/resources/config.py to use same constant there?","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d4fe65d6e46807d0b10aa743dc8ca16864eeda2d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"QOS_EXT_DRIVER_NAME \u003d \u0027neutron.plugins.ml2.extensions.qos:QosExtensionDriver\u0027"},{"line_number":29,"context_line":"QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"},{"line_number":30,"context_line":"QOS_EXT_NAMES \u003d ["},{"line_number":31,"context_line":"    QOS_EXT_DRIVER_NAME,"},{"line_number":32,"context_line":"    QOS_EXT_DRIVER_ALIAS"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_1d4b7c5a","line":29,"in_reply_to":"fa69d971_ac37a44b","updated":"2016-01-06 10:46:48.000000000","message":"Yes, once you need a thing twice, it\u0027s worth a constant.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"02229b5a5a43b8d542553f4fd551a990f8322a2d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_PLUGIN_ALIAS \u003d \u0027ml2\u0027"},{"line_number":22,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_45794bc7","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":16},"updated":"2016-01-11 08:55:50.000000000","message":"those ML2 constants belong into the ml2 folder, they should not be in the general qos service.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"772d50a89235202b1708a9d7237045c12708e27f","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_PLUGIN_ALIAS \u003d \u0027ml2\u0027"},{"line_number":22,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_c9b5f1d0","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":16},"in_reply_to":"fa69d971_45794bc7","updated":"2016-01-11 22:17:38.000000000","message":"it is removed now because it\u0027s not necessary when check is in ML2 directly","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_8c8147fe","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"updated":"2016-01-11 22:43:12.000000000","message":"I don\u0027t understand why we define something related to ML2 in a service package","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b32b8b6cad30202bb8a387323438425774de506a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_820d2c92","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"in_reply_to":"da6ed579_57b5c12e","updated":"2016-01-13 14:13:48.000000000","message":"+1","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4859b35592081814b6a33b5334d00e28b027fdb9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_57b5c12e","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"in_reply_to":"da6ed579_73a607c3","updated":"2016-01-13 11:02:24.000000000","message":"+1\n\nThanks Slawek!,","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5608978601ca676882732a3abbf93a4183c31cff","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_73a607c3","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"in_reply_to":"da6ed579_7d0031ab","updated":"2016-01-12 16:22:38.000000000","message":"I think yes, it\u0027s a better way.","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_33028170","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"in_reply_to":"da6ed579_820d2c92","updated":"2016-01-13 20:58:07.000000000","message":"Done","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5d581c2a7b800fa797551625b23c5f4a562f46b8","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ML2_QOS_EXT_DRIVER_ALIAS \u003d \u0027qos\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_7d0031ab","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"in_reply_to":"da6ed579_8c8147fe","updated":"2016-01-12 08:31:53.000000000","message":"I can put it for example in neutron.plugins.ml2.extensions.qos and import it in ml2 plugin but I\u0027m not sure if it will be better place. What do You think?","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"}],"neutron/services/qos/qos_plugin.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                       marker\u003dNone, page_reverse\u003dFalse):"},{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin in qos_consts.ML2_PLUGIN_NAMES:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            for ext_driver in qos_consts.QOS_EXT_NAMES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a35d9f7a","line":167,"updated":"2016-01-05 13:00:14.000000000","message":"The code in the file does not contain any details on core plugin used. I would be glad if it stays that way.\n\nThe fact that ml2 plugin has this dirty detail called resource extensions probably belongs to the plugin code itself. I guess the ml2 extensions manager is the right place to make those checks.\n\nDo we have any technical issues with moving the plugin specific check into the plugin?","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d4fe65d6e46807d0b10aa743dc8ca16864eeda2d","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                       marker\u003dNone, page_reverse\u003dFalse):"},{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin in qos_consts.ML2_PLUGIN_NAMES:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            for ext_driver in qos_consts.QOS_EXT_NAMES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_fda1c8f8","line":167,"in_reply_to":"fa69d971_58da7b4d","updated":"2016-01-06 10:46:48.000000000","message":"Yeah, it will be something like that. Well, the decision on the check actually belongs to the specific extension, so you could have a mechanism for extensions to provide checks that should be called by their manager, so that the manager itself is also unbound from qos.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                       marker\u003dNone, page_reverse\u003dFalse):"},{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin in qos_consts.ML2_PLUGIN_NAMES:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            for ext_driver in qos_consts.QOS_EXT_NAMES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_58da7b4d","line":167,"in_reply_to":"fa69d971_a35d9f7a","updated":"2016-01-06 10:09:48.000000000","message":"but it is only service plugin which require something like that. So if I will move it to extension_manager then there will be some strange (IMHO) \"if\" for check only this one service plugin. Is it better?","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"749b9a38727a40ae289317f6f5152c4bbef8a849","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                       marker\u003dNone, page_reverse\u003dFalse):"},{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin in qos_consts.ML2_PLUGIN_NAMES:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            for ext_driver in qos_consts.QOS_EXT_NAMES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_4db929cb","line":167,"in_reply_to":"fa69d971_fda1c8f8","updated":"2016-01-06 21:10:53.000000000","message":"Sorry but I don\u0027t understand exactly what You want to do here. Problem here is that if QoS service plugin is enabled then ML2 plugin require QoS extension driver. So I can\u0027t do such check in extension driver (or extension manager).\nService plugins are loaded in neutron.manager.NeutronManager class. Can You specify me more exactly where You would see such checking? :)","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.common import exceptions as n_exc"},{"line_number":19,"context_line":"from neutron.db import api as db_api"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_90a95c93","line":16,"updated":"2016-01-07 11:41:56.000000000","message":"nit: one newline is enough","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.common import exceptions as n_exc"},{"line_number":19,"context_line":"from neutron.db import api as db_api"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_d3ca656e","line":16,"in_reply_to":"fa69d971_90a95c93","updated":"2016-01-07 20:31:40.000000000","message":"Done","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"},{"line_number":172,"context_line":"            raise n_exc.ExtensionsNotFound("},{"line_number":173,"context_line":"                extensions\u003dqos_consts.ML2_QOS_EXT_DRIVER_ALIAS"},{"line_number":174,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_7ec0397d","line":172,"updated":"2016-01-07 11:41:56.000000000","message":"I think you will need a new exception type for the error. The exception is currently used to indicate missing api extensions, not ml2 extension drivers; let\u0027s keep it distinct.","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"},{"line_number":172,"context_line":"            raise n_exc.ExtensionsNotFound("},{"line_number":173,"context_line":"                extensions\u003dqos_consts.ML2_QOS_EXT_DRIVER_ALIAS"},{"line_number":174,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_d38585ad","line":172,"in_reply_to":"fa69d971_7ec0397d","updated":"2016-01-07 20:31:40.000000000","message":"I added such extension in ML2 extensions because IMHO it is related only to ML2 plugin. If You think that better would be to put it in common extensions, I can move it there.","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"029dad56003d4d8efc102d9bd21d22d3d1bab27d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_9e2a98e6","line":168,"updated":"2016-01-08 04:17:56.000000000","message":"What if the core plugin is not ML2? I think we should not proceed further.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"917d9126f8298e60999ecdbbc9f097d2443166d7","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_855503c3","line":168,"in_reply_to":"fa69d971_053273f2","updated":"2016-01-11 08:38:42.000000000","message":"@Ihar: What if the core plugin is not ML2? Do we still got to execute L42-L43. IMO, these lines must be executed if QoS functionality is enabled. Am I missing something over here?","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"02229b5a5a43b8d542553f4fd551a990f8322a2d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_450e2b3c","line":168,"in_reply_to":"fa69d971_855503c3","updated":"2016-01-11 08:55:50.000000000","message":"I believe the check should be done in ML2 itself,f and not in the dos plugin.\n\nThose should be two decoupled things.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d55775e5ee3f90cb2f047426730b5d2912396e75","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_cdaff2e1","line":168,"in_reply_to":"fa69d971_9e2a98e6","updated":"2016-01-08 08:21:57.000000000","message":"If core plugin is different then this method is doing nothing in fact. It should only check config if ML2 is used","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8a3b9972996b1a4dc2044bcd08652d051b98d001","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_d48e9626","line":168,"in_reply_to":"fa69d971_cdaff2e1","updated":"2016-01-08 10:17:40.000000000","message":"How about the caller? L42 will try to check for notification driver. IMO, that also might not be required.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c873d5fd104ba3afb1f035317f48f002403ff473","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_053273f2","line":168,"in_reply_to":"fa69d971_d48e9626","updated":"2016-01-11 08:27:37.000000000","message":"Vikram, could you please clarify? I don\u0027t follow how notification driver is related to ml2. They are designed to be plugin agnostic. More so, in theory current rpc notification driver could be used by some other plugin that wants to consume updates from AMQP.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"772d50a89235202b1708a9d7237045c12708e27f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return rule_type_object.QosRuleType.get_objects(**filters)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _check_plugin_config(self):"},{"line_number":168,"context_line":"        if cfg.CONF.core_plugin \u003d\u003d qos_consts.ML2_PLUGIN_ALIAS:"},{"line_number":169,"context_line":"            extension_drivers \u003d cfg.CONF.ml2.extension_drivers"},{"line_number":170,"context_line":"            if qos_consts.ML2_QOS_EXT_DRIVER_ALIAS in extension_drivers:"},{"line_number":171,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_ef8ae319","line":168,"in_reply_to":"fa69d971_d48e9626","updated":"2016-01-11 22:17:38.000000000","message":"why? it is something different IMO. My patch is only adding check if proper extension driver is enabled if QoS plugin is used with ML2 plugin. If different core plugin is used my check is doing nothing and other things are going \"normally\" (as it was before this patch)","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":760,"context_line":"    \"\"\"For testing methods that don\u0027t call drivers\"\"\""},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test__verify_service_plugins_requirements(self):"},{"line_number":763,"context_line":"        ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {"},{"line_number":764,"context_line":"            self.l3_plugin: self._mechanism_drivers"},{"line_number":765,"context_line":"        }"},{"line_number":766,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_4c6d8f31","line":763,"range":{"start_line":763,"start_character":19,"end_line":763,"end_character":51},"updated":"2016-01-11 22:43:12.000000000","message":"use a property mock to change this variable value. It\u0027s safer as it ensures the mock will be rollbacked even if an error is raised (in l764 for example)","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":760,"context_line":"    \"\"\"For testing methods that don\u0027t call drivers\"\"\""},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test__verify_service_plugins_requirements(self):"},{"line_number":763,"context_line":"        ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {"},{"line_number":764,"context_line":"            self.l3_plugin: self._mechanism_drivers"},{"line_number":765,"context_line":"        }"},{"line_number":766,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_8e56a0d0","line":763,"range":{"start_line":763,"start_character":19,"end_line":763,"end_character":51},"in_reply_to":"da6ed579_4c6d8f31","updated":"2016-01-13 20:58:07.000000000","message":"Done","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                return_value\u003dself._mechanism_drivers"},{"line_number":772,"context_line":"            ):"},{"line_number":773,"context_line":"                plugin._verify_service_plugins_requirements()"},{"line_number":774,"context_line":"        except ml2_exc.ExtensionDriverNotFound as e:"},{"line_number":775,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":776,"context_line":"        finally:"},{"line_number":777,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_2ceffbb1","line":774,"range":{"start_line":774,"start_character":23,"end_line":774,"end_character":46},"updated":"2016-01-11 22:43:12.000000000","message":"L774-775 can be removed","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                return_value\u003dself._mechanism_drivers"},{"line_number":772,"context_line":"            ):"},{"line_number":773,"context_line":"                plugin._verify_service_plugins_requirements()"},{"line_number":774,"context_line":"        except ml2_exc.ExtensionDriverNotFound as e:"},{"line_number":775,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":776,"context_line":"        finally:"},{"line_number":777,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_eecabc6d","line":774,"range":{"start_line":774,"start_character":23,"end_line":774,"end_character":46},"in_reply_to":"da6ed579_13feab6b","updated":"2016-01-13 20:58:07.000000000","message":"I removed this try...except block. Without any assert method it will also check if method will work fine or raise exception so test it still fine for that :)","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5d581c2a7b800fa797551625b23c5f4a562f46b8","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                return_value\u003dself._mechanism_drivers"},{"line_number":772,"context_line":"            ):"},{"line_number":773,"context_line":"                plugin._verify_service_plugins_requirements()"},{"line_number":774,"context_line":"        except ml2_exc.ExtensionDriverNotFound as e:"},{"line_number":775,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":776,"context_line":"        finally:"},{"line_number":777,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_5df20d9c","line":774,"range":{"start_line":774,"start_character":23,"end_line":774,"end_character":46},"in_reply_to":"da6ed579_2ceffbb1","updated":"2016-01-12 08:31:53.000000000","message":"I made this check in way how Ihar suggested me in patch set 2. Please see: https://review.openstack.org/#/c/253853/2/neutron/tests/unit/services/qos/test_qos_plugin.py","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5608978601ca676882732a3abbf93a4183c31cff","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                return_value\u003dself._mechanism_drivers"},{"line_number":772,"context_line":"            ):"},{"line_number":773,"context_line":"                plugin._verify_service_plugins_requirements()"},{"line_number":774,"context_line":"        except ml2_exc.ExtensionDriverNotFound as e:"},{"line_number":775,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":776,"context_line":"        finally:"},{"line_number":777,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_13feab6b","line":774,"range":{"start_line":774,"start_character":23,"end_line":774,"end_character":46},"in_reply_to":"da6ed579_5df20d9c","updated":"2016-01-12 16:22:38.000000000","message":"You can either leave the lines, or remove them. My point before was that you should not check the return result of the method you validate since that\u0027s not the intention of the test.","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"619dba46e1bc88970c5cf6f467215718fb69c80e","unresolved":false,"context_lines":[{"line_number":777,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {}"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    def test__verify_service_plugins_requirements_missing_driver(self):"},{"line_number":780,"context_line":"        ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {"},{"line_number":781,"context_line":"            self.l3_plugin: [\u0027test_required_driver\u0027]"},{"line_number":782,"context_line":"        }"},{"line_number":783,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_2c74dbfb","line":780,"range":{"start_line":780,"start_character":8,"end_line":780,"end_character":18},"updated":"2016-01-11 22:43:12.000000000","message":"itto","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"625b1b2afe765e915d3e918b6fc472299b6746c3","unresolved":false,"context_lines":[{"line_number":777,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {}"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    def test__verify_service_plugins_requirements_missing_driver(self):"},{"line_number":780,"context_line":"        ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS \u003d {"},{"line_number":781,"context_line":"            self.l3_plugin: [\u0027test_required_driver\u0027]"},{"line_number":782,"context_line":"        }"},{"line_number":783,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_ae5124da","line":780,"range":{"start_line":780,"start_character":8,"end_line":780,"end_character":18},"in_reply_to":"da6ed579_2c74dbfb","updated":"2016-01-13 20:58:07.000000000","message":"Done","commit_id":"d8b3a5da29ba95b27401ac6c9d9aded5244a2865"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"783f76fb3876ce35f84dec42c3b54a2d43fd4a51","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test__verify_service_plugins_requirements(self):"},{"line_number":763,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":764,"context_line":"        with mock.patch.dict("},{"line_number":765,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS,"},{"line_number":766,"context_line":"            {self.l3_plugin: self._mechanism_drivers}"},{"line_number":767,"context_line":"        ), mock.patch.object("}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_fc259508","line":764,"range":{"start_line":764,"start_character":18,"end_line":764,"end_character":23},"updated":"2016-01-13 21:38:54.000000000","message":"The indentation is uncommon and as a consequence confusing, in general we do:\n\n with mock.patch.dict(\n     ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS,\n     {self.l3_plugin: self._mechanism_drivers}),\n     mock.patch.object....:\n   plugin._verify_...","commit_id":"183d9c4101aedd296e5eb589073c2067aa9fd8e9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"771e41819b841af99e7c40dea49242dcf0f1ad75","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test__verify_service_plugins_requirements(self):"},{"line_number":763,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":764,"context_line":"        with mock.patch.dict("},{"line_number":765,"context_line":"            ml2_plugin.SERVICE_PLUGINS_REQUIRED_DRIVERS,"},{"line_number":766,"context_line":"            {self.l3_plugin: self._mechanism_drivers}"},{"line_number":767,"context_line":"        ), mock.patch.object("}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_684c7b9e","line":764,"range":{"start_line":764,"start_character":18,"end_line":764,"end_character":23},"in_reply_to":"da6ed579_fc259508","updated":"2016-01-13 23:19:55.000000000","message":"Done. I made it in similiar way like in e.g. L853-L864. It is better for You now?","commit_id":"183d9c4101aedd296e5eb589073c2067aa9fd8e9"}],"neutron/tests/unit/services/qos/test_qos_plugin.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"cd026655cb48cee1c5d06e7a9966a45cd63c7bdb","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            n_exc.ExtensionsNotFound,"},{"line_number":86,"context_line":"            self.qos_plugin._check_plugin_config"},{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_f01b6dc8","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":61},"updated":"2016-01-05 06:05:35.000000000","message":"Please remove the line if you don\u0027t have specific reason.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            n_exc.ExtensionsNotFound,"},{"line_number":86,"context_line":"            self.qos_plugin._check_plugin_config"},{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_6c01ac37","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":61},"in_reply_to":"fa69d971_de650cb5","updated":"2016-01-06 10:09:48.000000000","message":"ok, I removed it","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            n_exc.ExtensionsNotFound,"},{"line_number":86,"context_line":"            self.qos_plugin._check_plugin_config"},{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_bde4e5e0","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":61},"in_reply_to":"fa69d971_f01b6dc8","updated":"2016-01-06 10:09:48.000000000","message":"I want to \"restore\" previus setting because it is set to DB_PLUGIN_KLASS in all tests and I\u0027m changing it only for one test. I\u0027m not sure if it will not break tests which are running after this one","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            n_exc.ExtensionsNotFound,"},{"line_number":86,"context_line":"            self.qos_plugin._check_plugin_config"},{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_de650cb5","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":61},"in_reply_to":"fa69d971_f01b6dc8","updated":"2016-01-05 13:00:14.000000000","message":"Yeah, it will probably clean up on next setUp().","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"cd026655cb48cee1c5d06e7a9966a45cd63c7bdb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_500a797a","line":94,"range":{"start_line":91,"start_character":8,"end_line":94,"end_character":9},"updated":"2016-01-05 06:05:35.000000000","message":"It\u0027s better to use the pattern \"self.assertEqual(expected, observed)\"[1].\n\n[1]: https://github.com/openstack/neutron/blob/master/doc/source/devref/effective_neutron.rst#mocking-and-testing","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_3f6c38cd","line":94,"range":{"start_line":91,"start_character":8,"end_line":94,"end_character":9},"in_reply_to":"fa69d971_1e1644f1","updated":"2016-01-06 10:09:48.000000000","message":"I changed it to assertIsNone() in both tests. In fact I want to check only that it will not raise exception but I don\u0027t know if there is method opposite to assertRaises() which could be used here.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"749b9a38727a40ae289317f6f5152c4bbef8a849","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_d82959e7","line":94,"range":{"start_line":91,"start_character":8,"end_line":94,"end_character":9},"in_reply_to":"fa69d971_22017b06","updated":"2016-01-06 21:10:53.000000000","message":"Ok. I made it in those two tests directly. I\u0027m not sure if it is neccessary to add it to base tests classes in neutron if it is not needed anywhere else than in those two tests.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d4fe65d6e46807d0b10aa743dc8ca16864eeda2d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_22017b06","line":94,"range":{"start_line":91,"start_character":8,"end_line":94,"end_character":9},"in_reply_to":"fa69d971_3f6c38cd","updated":"2016-01-06 10:46:48.000000000","message":"There is no such method afaik. we can either do smth like:\n\ntry:\n   call()\ncatch Exception:\n   self.fail(...)\n\nOr introduce the method in our test libs or maybe in testtools directly, maybe even python stdlib.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_check_loaded_extension_drivers_when_no_ml2(self):"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_1e1644f1","line":94,"range":{"start_line":91,"start_character":8,"end_line":94,"end_character":9},"in_reply_to":"fa69d971_500a797a","updated":"2016-01-05 13:00:14.000000000","message":"or better assertIsNone. Though what we should check here and below is that it does not raise.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_KLASS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_febc9007","line":96,"updated":"2016-01-05 13:00:14.000000000","message":"please use the name of the method you target in the tests in test case names, like \u0027test__check_plugin_config_\u003cany-more-details-on-scenario\u003e\u0027.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            None"},{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_KLASS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_df3ddc8f","line":96,"in_reply_to":"fa69d971_febc9007","updated":"2016-01-06 10:09:48.000000000","message":"Done","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_KLASS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("},{"line_number":100,"context_line":"            \"extension_drivers\", [\"qos\"], group\u003d\"ml2\""},{"line_number":101,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_1eb5e42f","line":98,"updated":"2016-01-05 13:00:14.000000000","message":"I suggest we don\u0027t use python paths in tests; they are not designed to be supported by stevedore, so we should discourage using them (instead, use \u0027ml2\u0027 alias).","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_check_loaded_extension_drivers_when_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_KLASS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("},{"line_number":100,"context_line":"            \"extension_drivers\", [\"qos\"], group\u003d\"ml2\""},{"line_number":101,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_fff0e0ca","line":98,"in_reply_to":"fa69d971_1eb5e42f","updated":"2016-01-06 10:09:48.000000000","message":"Done","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_KLASS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("},{"line_number":100,"context_line":"            \"extension_drivers\", [\"qos\"], group\u003d\"ml2\""},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        self.assertEqual("},{"line_number":103,"context_line":"            self.qos_plugin._check_plugin_config(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_3e99c8c4","line":100,"updated":"2016-01-05 13:00:14.000000000","message":"nit: here, \u0027qos\u0027 constant for extension driver name could also be reused.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_KLASS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("},{"line_number":100,"context_line":"            \"extension_drivers\", [\"qos\"], group\u003d\"ml2\""},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        self.assertEqual("},{"line_number":103,"context_line":"            self.qos_plugin._check_plugin_config(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_3fa758ab","line":100,"in_reply_to":"fa69d971_3e99c8c4","updated":"2016-01-06 10:09:48.000000000","message":"Done","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21898bc26ecc339ee6129771e924c9e88e696166","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        cfg.CONF.set_override("},{"line_number":100,"context_line":"            \"extension_drivers\", [\"qos\"], group\u003d\"ml2\""},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        self.assertEqual("},{"line_number":103,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":104,"context_line":"            None"},{"line_number":105,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_def0ac00","line":102,"updated":"2016-01-05 13:00:14.000000000","message":"assertIsNone. Though I think what you really want to check is that it does not raise an exception, not its return value.","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        cfg.CONF.set_override("},{"line_number":100,"context_line":"            \"extension_drivers\", [\"qos\"], group\u003d\"ml2\""},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        self.assertEqual("},{"line_number":103,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":104,"context_line":"            None"},{"line_number":105,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_9fb684f7","line":102,"in_reply_to":"fa69d971_def0ac00","updated":"2016-01-06 10:09:48.000000000","message":"Same as my comment in line 94","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"cd026655cb48cee1c5d06e7a9966a45cd63c7bdb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":104,"context_line":"            None"},{"line_number":105,"context_line":"        )"},{"line_number":106,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_add_policy(self):"},{"line_number":109,"context_line":"        self.qos_plugin.create_policy(self.ctxt, self.policy_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_70869ddc","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":61},"updated":"2016-01-05 06:05:35.000000000","message":"ditto","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"847d5fa00d0cfb01701f0de6f146c6586b4b0a56","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            self.qos_plugin._check_plugin_config(),"},{"line_number":104,"context_line":"            None"},{"line_number":105,"context_line":"        )"},{"line_number":106,"context_line":"        cfg.CONF.set_override(\"core_plugin\", DB_PLUGIN_KLASS)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_add_policy(self):"},{"line_number":109,"context_line":"        self.qos_plugin.create_policy(self.ctxt, self.policy_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_3fd2f828","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":61},"in_reply_to":"fa69d971_70869ddc","updated":"2016-01-06 10:09:48.000000000","message":"Done","commit_id":"8f194b1aa7745da7a5a7e8a23edaa54460f50def"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e6696e01a4c759ebebfc29553a90e39915a7474d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DB_PLUGIN_KLASS \u003d \u0027neutron.db.db_base_plugin_v2.NeutronDbPluginV2\u0027"},{"line_number":28,"context_line":"ML2_PLUGIN_KLASS \u003d \u0027ml2\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestQosPlugin(base.BaseQosTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_bd0b5023","line":28,"updated":"2016-01-06 10:47:27.000000000","message":"Now it\u0027s not a class, but an alias.","commit_id":"2bdc0dc295ca54eab84a8afdfe1158419a9daf38"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9c30ad30fd75a1d38ef6cb204440e74306d8c2c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DB_PLUGIN_KLASS \u003d \u0027neutron.db.db_base_plugin_v2.NeutronDbPluginV2\u0027"},{"line_number":28,"context_line":"ML2_PLUGIN_KLASS \u003d \u0027ml2\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestQosPlugin(base.BaseQosTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_72e3acd9","line":28,"in_reply_to":"fa69d971_bd0b5023","updated":"2016-01-06 21:11:14.000000000","message":"Done","commit_id":"2bdc0dc295ca54eab84a8afdfe1158419a9daf38"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DB_PLUGIN_KLASS \u003d \u0027neutron.db.db_base_plugin_v2.NeutronDbPluginV2\u0027"},{"line_number":28,"context_line":"ML2_PLUGIN_ALIAS \u003d \u0027ml2\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestQosPlugin(base.BaseQosTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_fe3ae997","line":28,"updated":"2016-01-07 11:41:56.000000000","message":"you already define a constant for that, please use it.","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DB_PLUGIN_KLASS \u003d \u0027neutron.db.db_base_plugin_v2.NeutronDbPluginV2\u0027"},{"line_number":28,"context_line":"ML2_PLUGIN_ALIAS \u003d \u0027ml2\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestQosPlugin(base.BaseQosTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_d3aca537","line":28,"in_reply_to":"fa69d971_fe3ae997","updated":"2016-01-07 20:31:40.000000000","message":"right. Removed :)","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertIsInstance("},{"line_number":77,"context_line":"            method.call_args[0][1], policy_object.QosPolicy)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test__check_plugin_config_ml2_and_no_ext_drv(self):"},{"line_number":80,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":81,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_ALIAS)"},{"line_number":82,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_be123108","line":79,"updated":"2016-01-07 11:41:56.000000000","message":"let\u0027s not abbreviate: test__check_plugin_config_ml2_and_no_ml2_extension_driver","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertIsInstance("},{"line_number":77,"context_line":"            method.call_args[0][1], policy_object.QosPolicy)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test__check_plugin_config_ml2_and_no_ext_drv(self):"},{"line_number":80,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":81,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_ALIAS)"},{"line_number":82,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_1348fd86","line":79,"in_reply_to":"fa69d971_be123108","updated":"2016-01-07 20:31:40.000000000","message":"Done","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"451e801eab3d88d0ef1eca15cd3bd8128ed98468","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        except n_exc.ExtensionsNotFound as e:"},{"line_number":94,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test__check_plugin_config_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_ALIAS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_3eede1ef","line":96,"updated":"2016-01-07 11:41:56.000000000","message":"ditto","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"681bf330357518f6f16266281e77a4c88c2186af","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        except n_exc.ExtensionsNotFound as e:"},{"line_number":94,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test__check_plugin_config_ml2_and_qos_ext_drv(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", ML2_PLUGIN_ALIAS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_b35d714a","line":96,"in_reply_to":"fa69d971_3eede1ef","updated":"2016-01-07 20:31:40.000000000","message":"Done","commit_id":"4eabd4458463b05adbcffbc61ca64f0ab136bb70"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"029dad56003d4d8efc102d9bd21d22d3d1bab27d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertIsInstance("},{"line_number":77,"context_line":"            method.call_args[0][1], policy_object.QosPolicy)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test__check_plugin_config_ml2_and_no_ml2_extension_driver(self):"},{"line_number":80,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":81,"context_line":"        cfg.CONF.set_override(\"core_plugin\", qos_consts.ML2_PLUGIN_ALIAS)"},{"line_number":82,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_becbdc1d","line":79,"updated":"2016-01-08 04:17:56.000000000","message":"nit: extra \u0027_\u0027 after \u0027test_\u0027.","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d55775e5ee3f90cb2f047426730b5d2912396e75","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertIsInstance("},{"line_number":77,"context_line":"            method.call_args[0][1], policy_object.QosPolicy)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test__check_plugin_config_ml2_and_no_ml2_extension_driver(self):"},{"line_number":80,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":81,"context_line":"        cfg.CONF.set_override(\"core_plugin\", qos_consts.ML2_PLUGIN_ALIAS)"},{"line_number":82,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_8dbedafd","line":79,"in_reply_to":"fa69d971_becbdc1d","updated":"2016-01-08 08:21:57.000000000","message":"I was wonder about that but such name was suggested by Ihar (see comments in PS 2).","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"029dad56003d4d8efc102d9bd21d22d3d1bab27d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            self.qos_plugin._check_plugin_config"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test__check_plugin_config_no_ml2(self):"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            self.qos_plugin._check_plugin_config()"},{"line_number":93,"context_line":"        except ml2_exc.ExtensionDriverNotFound as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_5ed0a0c9","line":90,"updated":"2016-01-08 04:17:56.000000000","message":"ditto","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"029dad56003d4d8efc102d9bd21d22d3d1bab27d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        except ml2_exc.ExtensionDriverNotFound as e:"},{"line_number":94,"context_line":"            self.fail(\"Exception %s raised\" % e)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test__check_plugin_config_ml2_and_qos_extension_driver(self):"},{"line_number":97,"context_line":"        cfg.CONF.import_group(\u0027ml2\u0027, \u0027neutron.plugins.ml2.config\u0027)"},{"line_number":98,"context_line":"        cfg.CONF.set_override(\"core_plugin\", qos_consts.ML2_PLUGIN_ALIAS)"},{"line_number":99,"context_line":"        cfg.CONF.set_override("}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_7ed564b7","line":96,"updated":"2016-01-08 04:17:56.000000000","message":"ditto","commit_id":"9470f111b72442aa348d8e184963679743b3ff88"}]}
