)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"TODO: Need to add tests"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I99da16ea667cddd911ca46ae745755d9ac3b8979"},{"line_number":17,"context_line":"Partially-implements: blueprint quantum-qos-api"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_20389a3c","line":14,"updated":"2015-07-15 09:18:51.000000000","message":"I believe tests belong to this patch, not a follow up.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"TODO: Need to add tests"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I99da16ea667cddd911ca46ae745755d9ac3b8979"},{"line_number":17,"context_line":"Partially-implements: blueprint quantum-qos-api"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_cc956587","line":14,"in_reply_to":"9a41bdd9_20389a3c","updated":"2015-07-15 11:40:30.000000000","message":"That was the intention","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"df42e4190d02850e4fcbdc1d64f170681a196b12","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Kolesnik \u003cmkolesni@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-16 11:04:07 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_e5d289d0","line":7,"updated":"2015-07-16 08:35:26.000000000","message":"qos_policy_id","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Kolesnik \u003cmkolesni@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-16 11:04:07 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_2a76f105","line":7,"in_reply_to":"9a41bdd9_e5d289d0","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"df42e4190d02850e4fcbdc1d64f170681a196b12","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_a5d9e1f4","line":9,"updated":"2015-07-16 08:35:26.000000000","message":"qos_policy_id","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_ca5bc584","line":9,"in_reply_to":"9a41bdd9_a5d9e1f4","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"df42e4190d02850e4fcbdc1d64f170681a196b12","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_c56bc5ef","line":10,"updated":"2015-07-16 08:35:26.000000000","message":"via ML2 extension","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_4af6d55d","line":10,"in_reply_to":"9a41bdd9_38488fcb","updated":"2015-07-16 11:56:05.000000000","message":"Yes we need to modify ml2 config to load this \u0027qos\u0027 driver","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_38488fcb","line":10,"in_reply_to":"9a41bdd9_3be3aeda","updated":"2015-07-16 10:29:49.000000000","message":"Tell me if we need it, I\u0027ll come up with a patch for devstack-gate or project-config.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_8ad93df5","line":10,"in_reply_to":"9a41bdd9_c56bc5ef","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2e4a8bab782612a2055a9ffc360ff8d134d79d51","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Handle qos_profile_id on network/port create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added handling for qos_profile_id field in the network and port"},{"line_number":10,"context_line":"entities to the ML2 plugin."},{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_3be3aeda","line":10,"in_reply_to":"9a41bdd9_c56bc5ef","updated":"2015-07-16 09:01:25.000000000","message":"do we need to modify ml2 config in the branch to install the extension?","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The QoS profile will be associated to the network/port when requested as"},{"line_number":12,"context_line":"part of the entity creation or update."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Tests are missing, will add."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I99da16ea667cddd911ca46ae745755d9ac3b8979"},{"line_number":17,"context_line":"Partially-implements: blueprint quantum-qos-api"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_6a8cf9d9","line":14,"updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"}],"neutron/plugins/ml2/driver_api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b438e0c0fff92ee30a907399a7bb2df040a5cfd8","unresolved":false,"context_lines":[{"line_number":920,"context_line":"        be left to a service plugin, and we just need to provide"},{"line_number":921,"context_line":"        core resource extension and updates."},{"line_number":922,"context_line":"        \"\"\""},{"line_number":923,"context_line":"        return None"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"    def process_create_network(self, plugin_context, data, result):"},{"line_number":926,"context_line":"        \"\"\"Process extended attributes for create network."}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_85acc636","line":923,"updated":"2015-07-16 14:41:38.000000000","message":"the None is not necessary. Why not pass?","commit_id":"81c99d427560a1b191fb8552d53d5ecd155043e3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"407c5dd255d521d26aadea7eedaf2785085b888d","unresolved":false,"context_lines":[{"line_number":920,"context_line":"        be left to a service plugin, and we just need to provide"},{"line_number":921,"context_line":"        core resource extension and updates."},{"line_number":922,"context_line":"        \"\"\""},{"line_number":923,"context_line":"        return None"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"    def process_create_network(self, plugin_context, data, result):"},{"line_number":926,"context_line":"        \"\"\"Process extended attributes for create network."}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_68c3978b","line":923,"in_reply_to":"9a41bdd9_85acc636","updated":"2015-07-16 14:55:01.000000000","message":"right... pass should also work, no need to change that.","commit_id":"81c99d427560a1b191fb8552d53d5ecd155043e3"}],"neutron/plugins/ml2/extensions/qos.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"df42e4190d02850e4fcbdc1d64f170681a196b12","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class QosExtensionDriver(api.ExtensionDriver):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def initialize(self):"},{"line_number":27,"context_line":"        self.qos_ext_handler \u003d qos_extension.QosExtensionHandler()"},{"line_number":28,"context_line":"        LOG.info(_LI(\"QosExtensionDriver initialization complete\"))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_452ed5a5","line":27,"updated":"2015-07-16 08:35:26.000000000","message":"why not use qos_plugin directly?","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2e4a8bab782612a2055a9ffc360ff8d134d79d51","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class QosExtensionDriver(api.ExtensionDriver):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def initialize(self):"},{"line_number":27,"context_line":"        self.qos_ext_handler \u003d qos_extension.QosExtensionHandler()"},{"line_number":28,"context_line":"        LOG.info(_LI(\"QosExtensionDriver initialization complete\"))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_3b188ed2","line":27,"in_reply_to":"9a41bdd9_452ed5a5","updated":"2015-07-16 09:01:25.000000000","message":"The intent is to define a start speaking about a general extension framework for neutron.\n\nWith a common interface to any extension.\n\nNow we don\u0027t want to introduce a manager, but that\u0027d be the next step on master after community discussion.\n\nWe want to put all the \"extension stuff\" in one place, so other plugins could reuse it without depending on ML2 for now.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":36,"context_line":"            context, qos_extension.NETWORK, data, result)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def process_update_network(self, context, data, result):"},{"line_number":39,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":40,"context_line":"            context, qos_extension.NETWORK, data, result)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_5b70ed3f","line":38,"updated":"2015-07-16 10:29:49.000000000","message":"those are identical. you should just make process_update_network \u003d process_create_network in the class.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":36,"context_line":"            context, qos_extension.NETWORK, data, result)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def process_update_network(self, context, data, result):"},{"line_number":39,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":40,"context_line":"            context, qos_extension.NETWORK, data, result)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_0a69adf8","line":38,"in_reply_to":"9a41bdd9_5b70ed3f","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":40,"context_line":"            context, qos_extension.NETWORK, data, result)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def process_create_port(self, context, data, result):"},{"line_number":43,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":44,"context_line":"            context, qos_extension.PORT, data, result)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_fb91c147","line":42,"updated":"2015-07-16 10:29:49.000000000","message":"ditto","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":40,"context_line":"            context, qos_extension.NETWORK, data, result)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def process_create_port(self, context, data, result):"},{"line_number":43,"context_line":"        self.qos_ext_handler.process_resource("},{"line_number":44,"context_line":"            context, qos_extension.PORT, data, result)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_aa6be1ef","line":42,"in_reply_to":"9a41bdd9_fb91c147","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"e3d77e9ccdf42e82d78951ed5f4e05b2dcb0b045","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron.i18n import _LI"},{"line_number":17,"context_line":"from neutron.plugins.ml2 import driver_api as api"},{"line_number":18,"context_line":"from neutron.services.qos import qos_extension"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_03f0b3c7","line":19,"updated":"2015-07-16 14:10:53.000000000","message":"This one belongs in the section just before this one.","commit_id":"1c472a179a62b6f9e5843dae9a0275cf33d5c5a8"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"e3d77e9ccdf42e82d78951ed5f4e05b2dcb0b045","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def initialize(self):"},{"line_number":27,"context_line":"        self.qos_ext_handler \u003d qos_extension.QosExtensionHandler()"},{"line_number":28,"context_line":"        LOG.info(_LI(\"QosExtensionDriver initialization complete\"))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @property"},{"line_number":31,"context_line":"    def extension_alias(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_a359c7fe","line":28,"updated":"2015-07-16 14:10:53.000000000","message":"This would be more for debug level, since we\u0027re talking of internal class names.","commit_id":"1c472a179a62b6f9e5843dae9a0275cf33d5c5a8"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"e3d77e9ccdf42e82d78951ed5f4e05b2dcb0b045","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @property"},{"line_number":31,"context_line":"    def extension_alias(self):"},{"line_number":32,"context_line":"        return \u0027qos\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def process_create_network(self, context, data, result):"},{"line_number":35,"context_line":"        self.qos_ext_handler.process_resource("}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_084d30c3","line":32,"updated":"2015-07-16 14:10:53.000000000","message":"We cannot register ourselves as serving the \"qos\" extension, or the ml2 plugin will register for it... clashing with the qos service plugin registration.\n\nI\u0027ll update ml2 extension manager to support not registering to an extension.","commit_id":"1c472a179a62b6f9e5843dae9a0275cf33d5c5a8"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a52df1c7a20b72c399e19d92809e17007ba78e7e","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                               \u0027resource_ids\u0027: \u0027, \u0027.join(resource_ids)})"},{"line_number":592,"context_line":"                self._delete_objects(context, resource, objects)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _save_qos_profile_on_network(self, context, requested_network):"},{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_2312e409","line":594,"updated":"2015-07-15 09:29:43.000000000","message":"this is sooo breaking the decoupling...\nI think to make it cleaner, it can be done via Ml2 extension driver","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                               \u0027resource_ids\u0027: \u0027, \u0027.join(resource_ids)})"},{"line_number":592,"context_line":"                self._delete_objects(context, resource, objects)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _save_qos_profile_on_network(self, context, requested_network):"},{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_267bcdf6","line":594,"in_reply_to":"9a41bdd9_2312e409","updated":"2015-07-15 11:40:30.000000000","message":"Will do","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":592,"context_line":"                self._delete_objects(context, resource, objects)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _save_qos_profile_on_network(self, context, requested_network):"},{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9d01cd08","line":595,"updated":"2015-07-15 09:18:51.000000000","message":"why the braces","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":592,"context_line":"                self._delete_objects(context, resource, objects)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _save_qos_profile_on_network(self, context, requested_network):"},{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e9793683","line":595,"in_reply_to":"9a41bdd9_9d01cd08","updated":"2015-07-15 11:40:30.000000000","message":"Done","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"93baa1a2d330f9adda968d17fd4de0828d3ab4c9","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _save_qos_profile_on_network(self, context, requested_network):"},{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"},{"line_number":599,"context_line":"                qos_plugin.update_network_policy(context, requested_network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_03c800a7","line":596,"updated":"2015-07-15 09:34:21.000000000","message":"I\u0027d move the logic looking fro QOS_POLICY_ID to the plugin, and we keep the ml2 side cleaner.\n\nWe could even add two static methods to the qos_plugin module, which lazily load the service_plugin into a local var, and then do the update conditionally on if it\u0027s loaded or not..\n\nfrom neutron.services.qos import qos_plugin\n\nqos_plugin.update_network_policy(context, requested_network)\n\nthe change to ml2 (or other plugins) would be very minimal.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _save_qos_profile_on_network(self, context, requested_network):"},{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"},{"line_number":599,"context_line":"                qos_plugin.update_network_policy(context, requested_network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_29eb9e14","line":596,"in_reply_to":"9a41bdd9_03c800a7","updated":"2015-07-15 11:40:30.000000000","message":"Will do","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"93baa1a2d330f9adda968d17fd4de0828d3ab4c9","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"},{"line_number":599,"context_line":"                qos_plugin.update_network_policy(context, requested_network)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    def _create_network_db(self, context, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_8353b0e1","line":598,"updated":"2015-07-15 09:34:21.000000000","message":"Shouldn\u0027t it be enough to do:\n\nif qos_plugin: ?\n\nI guess \"is not None\" is necessary when it\u0027s an object which can be evaluated as false, like 0.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"},{"line_number":599,"context_line":"                qos_plugin.update_network_policy(context, requested_network)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    def _create_network_db(self, context, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_dd0bd528","line":598,"updated":"2015-07-15 09:18:51.000000000","message":"if qos_plugin:","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c3dbe22acfb8837386b2ece18236c41c5a8d5223","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"},{"line_number":599,"context_line":"                qos_plugin.update_network_policy(context, requested_network)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    def _create_network_db(self, context, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e996163d","line":598,"in_reply_to":"9a41bdd9_09449a18","updated":"2015-07-15 11:43:15.000000000","message":"If we can expect a container here, we have a huge problem. Let\u0027s make the code more clean by removing those explicit None checks.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        if (qos.QOS_POLICY_ID in requested_network):"},{"line_number":596,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":597,"context_line":"                service_constants.QOS]"},{"line_number":598,"context_line":"            if qos_plugin is not None:"},{"line_number":599,"context_line":"                qos_plugin.update_network_policy(context, requested_network)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    def _create_network_db(self, context, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_09449a18","line":598,"in_reply_to":"9a41bdd9_8353b0e1","updated":"2015-07-15 11:40:30.000000000","message":"We don\u0027t know if the object can be avaluated as false, this is the reccomended way to check for not None in python:\n\nhttps://www.python.org/dev/peps/pep-0008/#programming-recommendations\n\n\"Also, beware of writing if x when you really mean if x is not None -- e.g. when testing whether a variable or argument that defaults to None was set to some other value. The other value might have a type (such as a container) that could be false in a boolean context! \"\n\nBut if it\u0027s that important I don\u0027t mind to change it..","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"1382b05e917dfd519199658f90dd8470fdad2bee","unresolved":false,"context_lines":[{"line_number":605,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":606,"context_line":"            self._ensure_default_security_group(context, tenant_id)"},{"line_number":607,"context_line":"            result \u003d super(Ml2Plugin, self).create_network(context, network)"},{"line_number":608,"context_line":"            self.extension_manager.process_create_network(context, net_data,"},{"line_number":609,"context_line":"                                                          result)"},{"line_number":610,"context_line":"            self._process_l3_create(context, result, net_data)"},{"line_number":611,"context_line":"            net_data[\u0027id\u0027] \u003d result[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_839170f3","line":608,"updated":"2015-07-15 09:39:54.000000000","message":"^ I guess this is what irena says, I think she\u0027s right, and we can decouple this logic out.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":605,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":606,"context_line":"            self._ensure_default_security_group(context, tenant_id)"},{"line_number":607,"context_line":"            result \u003d super(Ml2Plugin, self).create_network(context, network)"},{"line_number":608,"context_line":"            self.extension_manager.process_create_network(context, net_data,"},{"line_number":609,"context_line":"                                                          result)"},{"line_number":610,"context_line":"            self._process_l3_create(context, result, net_data)"},{"line_number":611,"context_line":"            net_data[\u0027id\u0027] \u003d result[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_6953e6e2","line":608,"in_reply_to":"9a41bdd9_778e627a","updated":"2015-07-15 11:40:30.000000000","message":"Will do","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"985ecb826851796a0a647076abaefeceac971b89","unresolved":false,"context_lines":[{"line_number":605,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":606,"context_line":"            self._ensure_default_security_group(context, tenant_id)"},{"line_number":607,"context_line":"            result \u003d super(Ml2Plugin, self).create_network(context, network)"},{"line_number":608,"context_line":"            self.extension_manager.process_create_network(context, net_data,"},{"line_number":609,"context_line":"                                                          result)"},{"line_number":610,"context_line":"            self._process_l3_create(context, result, net_data)"},{"line_number":611,"context_line":"            net_data[\u0027id\u0027] \u003d result[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_778e627a","line":608,"in_reply_to":"9a41bdd9_839170f3","updated":"2015-07-15 10:43:21.000000000","message":"exactly, lets just add QosMl2Extension that will call into QoS plugin; exactly want is done as part of this patch, but without ML2 plugin code modification","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"985ecb826851796a0a647076abaefeceac971b89","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                                  obj)"},{"line_number":655,"context_line":"        return [obj[\u0027result\u0027] for obj in objects]"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    def _update_qos_profile_on_network(self, context, requested_network,"},{"line_number":658,"context_line":"                                       original_network, updated_network):"},{"line_number":659,"context_line":"        if (qos.QOS_POLICY_ID in requested_network"},{"line_number":660,"context_line":"            and original_network[qos.QOS_POLICY_ID] !\u003d"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_77bc2206","line":657,"updated":"2015-07-15 10:43:21.000000000","message":"this should be handled by the ML2 QoS extension and can serve as proxy to QoS Plugin to handle all the logic","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":657,"context_line":"    def _update_qos_profile_on_network(self, context, requested_network,"},{"line_number":658,"context_line":"                                       original_network, updated_network):"},{"line_number":659,"context_line":"        if (qos.QOS_POLICY_ID in requested_network"},{"line_number":660,"context_line":"            and original_network[qos.QOS_POLICY_ID] !\u003d"},{"line_number":661,"context_line":"                updated_network[qos.QOS_POLICY_ID]):"},{"line_number":662,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":663,"context_line":"                service_constants.QOS]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a067cab5","line":660,"updated":"2015-07-15 09:18:51.000000000","message":"does original_network actually contain the field? It seems it comes from neutron/db/db_base_plugin_v2.py:get_network(), and I don\u0027t see where we add the field to network there.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"93baa1a2d330f9adda968d17fd4de0828d3ab4c9","unresolved":false,"context_lines":[{"line_number":657,"context_line":"    def _update_qos_profile_on_network(self, context, requested_network,"},{"line_number":658,"context_line":"                                       original_network, updated_network):"},{"line_number":659,"context_line":"        if (qos.QOS_POLICY_ID in requested_network"},{"line_number":660,"context_line":"            and original_network[qos.QOS_POLICY_ID] !\u003d"},{"line_number":661,"context_line":"                updated_network[qos.QOS_POLICY_ID]):"},{"line_number":662,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":663,"context_line":"                service_constants.QOS]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_839df067","line":660,"updated":"2015-07-15 09:34:21.000000000","message":"same, I\u0027d move this check to the plugin, but then we may need to re-load the network details from database.\n\nI think it could be ok, as probably those are cached by the DB because of the recent select.\n\nI say this, because then we make the implementation for plugins cleaner. Otherwise any plugin wanting to implement needs to put a lot of stuff inside to let the extension pass thru.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"91e01fbeab78cc658423a909bd3c7f62958752c7","unresolved":false,"context_lines":[{"line_number":657,"context_line":"    def _update_qos_profile_on_network(self, context, requested_network,"},{"line_number":658,"context_line":"                                       original_network, updated_network):"},{"line_number":659,"context_line":"        if (qos.QOS_POLICY_ID in requested_network"},{"line_number":660,"context_line":"            and original_network[qos.QOS_POLICY_ID] !\u003d"},{"line_number":661,"context_line":"                updated_network[qos.QOS_POLICY_ID]):"},{"line_number":662,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":663,"context_line":"                service_constants.QOS]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a34914b9","line":660,"in_reply_to":"9a41bdd9_a067cab5","updated":"2015-07-15 09:35:48.000000000","message":"I think it\u0027s extended by after_read callback just in there.\n\nI remember seeing it come thru in my manual tests.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"93baa1a2d330f9adda968d17fd4de0828d3ab4c9","unresolved":false,"context_lines":[{"line_number":662,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":663,"context_line":"                service_constants.QOS]"},{"line_number":664,"context_line":"            if qos_plugin is not None:"},{"line_number":665,"context_line":"                qos_plugin.update_network_policy(context, updated_network)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def update_network(self, context, id, network):"},{"line_number":668,"context_line":"        net_data \u003d network[attributes.NETWORK]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a3ed94b8","line":665,"updated":"2015-07-15 09:34:21.000000000","message":"our call could return a True/False to say if it was really updated (meaning that we should send this stuff down the line to mech drivers)","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"            raise psec.PortSecurityAndIPRequiredForSecurityGroups()"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"    def _save_qos_profile_on_port(self, context, requested_port):"},{"line_number":1004,"context_line":"        if (qos.QOS_POLICY_ID in requested_port):"},{"line_number":1005,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1006,"context_line":"                service_constants.QOS]"},{"line_number":1007,"context_line":"            if qos_plugin is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_2012da09","line":1004,"updated":"2015-07-15 09:18:51.000000000","message":"remove braces","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"c1b78765794586b9850327eb83f539cd6b39866a","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"            raise psec.PortSecurityAndIPRequiredForSecurityGroups()"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"    def _save_qos_profile_on_port(self, context, requested_port):"},{"line_number":1004,"context_line":"        if (qos.QOS_POLICY_ID in requested_port):"},{"line_number":1005,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1006,"context_line":"                service_constants.QOS]"},{"line_number":1007,"context_line":"            if qos_plugin is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_89674ab6","line":1004,"in_reply_to":"9a41bdd9_2012da09","updated":"2015-07-15 11:40:30.000000000","message":"Done","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        if (qos.QOS_POLICY_ID in requested_port):"},{"line_number":1005,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1006,"context_line":"                service_constants.QOS]"},{"line_number":1007,"context_line":"            if qos_plugin is not None:"},{"line_number":1008,"context_line":"                qos_plugin.update_port_policy(context, requested_port)"},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"    def _create_port_db(self, context, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e0f872c5","line":1007,"updated":"2015-07-15 09:18:51.000000000","message":"if qos_plugin:","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"93baa1a2d330f9adda968d17fd4de0828d3ab4c9","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1006,"context_line":"                service_constants.QOS]"},{"line_number":1007,"context_line":"            if qos_plugin is not None:"},{"line_number":1008,"context_line":"                qos_plugin.update_port_policy(context, requested_port)"},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"    def _create_port_db(self, context, port):"},{"line_number":1011,"context_line":"        attrs \u003d port[attributes.PORT]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e33e3c27","line":1008,"updated":"2015-07-15 09:34:21.000000000","message":"same.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"1382b05e917dfd519199658f90dd8470fdad2bee","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1017,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":1018,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":1019,"context_line":"            self.extension_manager.process_create_port(context, attrs, result)"},{"line_number":1020,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"            # sgids must be got after portsec checked with security group"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_23b98479","line":1019,"updated":"2015-07-15 09:39:54.000000000","message":"same here ^","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"    def _update_qos_profile_on_port(self, context, requested_port,"},{"line_number":1144,"context_line":"                                    original_port, updated_port):"},{"line_number":1145,"context_line":"        if (qos.QOS_POLICY_ID in requested_port"},{"line_number":1146,"context_line":"            and original_port[qos.QOS_POLICY_ID] !\u003d"},{"line_number":1147,"context_line":"                updated_port[qos.QOS_POLICY_ID]):"},{"line_number":1148,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1149,"context_line":"                service_constants.QOS]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_60da224e","line":1146,"updated":"2015-07-15 09:18:51.000000000","message":"same question as above for networks: does original_port really have the field?","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"99b582b8e289aa2643ce897c3b64dec03ca85d03","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"                updated_port[qos.QOS_POLICY_ID]):"},{"line_number":1148,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1149,"context_line":"                service_constants.QOS]"},{"line_number":1150,"context_line":"            if qos_plugin is not None:"},{"line_number":1151,"context_line":"                qos_plugin.update_port_policy(context, updated_port)"},{"line_number":1152,"context_line":"                return True"},{"line_number":1153,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_20b73af6","line":1150,"updated":"2015-07-15 09:18:51.000000000","message":"if qos_plugin:","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"93baa1a2d330f9adda968d17fd4de0828d3ab4c9","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":1149,"context_line":"                service_constants.QOS]"},{"line_number":1150,"context_line":"            if qos_plugin is not None:"},{"line_number":1151,"context_line":"                qos_plugin.update_port_policy(context, updated_port)"},{"line_number":1152,"context_line":"                return True"},{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_c328d8e4","line":1151,"updated":"2015-07-15 09:34:21.000000000","message":"same here about the return.","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"1382b05e917dfd519199658f90dd8470fdad2bee","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"            original_port \u003d self._make_port_dict(port_db)"},{"line_number":1174,"context_line":"            updated_port \u003d super(Ml2Plugin, self).update_port(context, id,"},{"line_number":1175,"context_line":"                                                              port)"},{"line_number":1176,"context_line":"            self.extension_manager.process_update_port(context, attrs,"},{"line_number":1177,"context_line":"                                                       updated_port)"},{"line_number":1178,"context_line":"            self._portsec_ext_port_update_processing(updated_port, context,"},{"line_number":1179,"context_line":"                                                     port, id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_c360d803","line":1176,"updated":"2015-07-15 09:39:54.000000000","message":"^here the extension manager lacks the ability to get a bool with the \"I need to notify on this extension or not\".\n\nI\u0027d extend the extension manager to allow that.\n\nMike, Irena. what do you think?","commit_id":"4028664f4554288eede039dbf31970a5ac9d9e86"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b6021c6af7f1bcc5b8b9e8f83446b9da43911069","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            self.type_manager.create_network_segments(context, net_data,"},{"line_number":615,"context_line":"                                                      tenant_id)"},{"line_number":616,"context_line":"            self.type_manager.extend_network_dict_provider(context, result)"},{"line_number":617,"context_line":"            self._save_qos_profile_on_network(context, net_data, result)"},{"line_number":618,"context_line":"            mech_context \u003d driver_context.NetworkContext(self, context,"},{"line_number":619,"context_line":"                                                         result)"},{"line_number":620,"context_line":"            self.mechanism_manager.create_network_precommit(mech_context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_a5c01351","line":617,"updated":"2015-07-16 06:38:32.000000000","message":"everywhere we say \"profile\" must be \"policy\". I usually make the same mistake.\n\nBut It\u0027s ok as it is since it\u0027s marked for removal.","commit_id":"f1e27c33ed14b1fb23b18f7d2311055745d22943"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"5f3b0895a2427e5a942aee2c23b38651394d98b3","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            self.type_manager.create_network_segments(context, net_data,"},{"line_number":615,"context_line":"                                                      tenant_id)"},{"line_number":616,"context_line":"            self.type_manager.extend_network_dict_provider(context, result)"},{"line_number":617,"context_line":"            self._save_qos_profile_on_network(context, net_data, result)"},{"line_number":618,"context_line":"            mech_context \u003d driver_context.NetworkContext(self, context,"},{"line_number":619,"context_line":"                                                         result)"},{"line_number":620,"context_line":"            self.mechanism_manager.create_network_precommit(mech_context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_0f9eacb8","line":617,"in_reply_to":"9a41bdd9_a5c01351","updated":"2015-07-16 07:12:36.000000000","message":"yes I see that this mistake is contagious :) \nalso the commit message should be update for \"qos_policy_id\"","commit_id":"f1e27c33ed14b1fb23b18f7d2311055745d22943"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"df42e4190d02850e4fcbdc1d64f170681a196b12","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"                        original_port[psec.PORTSECURITY] !\u003d"},{"line_number":1142,"context_line":"                        updated_port[psec.PORTSECURITY]):"},{"line_number":1143,"context_line":"                need_port_update_notify \u003d True"},{"line_number":1144,"context_line":"            # TODO(QoS): Move out to the extension framework somehow."},{"line_number":1145,"context_line":"            if (qos.QOS_POLICY_ID in attrs) and ("},{"line_number":1146,"context_line":"                        original_port[qos.QOS_POLICY_ID] !\u003d"},{"line_number":1147,"context_line":"                        updated_port[qos.QOS_POLICY_ID]):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_c0cc138b","line":1144,"updated":"2015-07-16 08:35:26.000000000","message":"I think moshele was tracking this somewhere, and probably this will be resolved by work on this https://review.openstack.org/#/c/169223/","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"                        original_port[psec.PORTSECURITY] !\u003d"},{"line_number":1142,"context_line":"                        updated_port[psec.PORTSECURITY]):"},{"line_number":1143,"context_line":"                need_port_update_notify \u003d True"},{"line_number":1144,"context_line":"            # TODO(QoS): Move out to the extension framework somehow."},{"line_number":1145,"context_line":"            if (qos.QOS_POLICY_ID in attrs) and ("},{"line_number":1146,"context_line":"                        original_port[qos.QOS_POLICY_ID] !\u003d"},{"line_number":1147,"context_line":"                        updated_port[qos.QOS_POLICY_ID]):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_2a059112","line":1144,"in_reply_to":"9a41bdd9_c0cc138b","updated":"2015-07-16 11:56:05.000000000","message":"Awesome!\n\nI added it to the comment","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b438e0c0fff92ee30a907399a7bb2df040a5cfd8","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"                need_port_update_notify \u003d True"},{"line_number":1144,"context_line":"            # TODO(QoS): Move out to the extension framework somehow."},{"line_number":1145,"context_line":"            # Follow https://review.openstack.org/#/c/169223 for a solution."},{"line_number":1146,"context_line":"            if (qos.QOS_POLICY_ID in attrs) and ("},{"line_number":1147,"context_line":"                        original_port[qos.QOS_POLICY_ID] !\u003d"},{"line_number":1148,"context_line":"                        updated_port[qos.QOS_POLICY_ID]):"},{"line_number":1149,"context_line":"                need_port_update_notify \u003d True"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_252e1aa6","line":1146,"updated":"2015-07-16 14:41:38.000000000","message":"if (qos.QOS_POLICY_ID in attrs and \n        original_port[qos.QOS_POLICY_ID] !\u003d\n        updated_port[qos.QOS_POLICY_ID]):","commit_id":"81c99d427560a1b191fb8552d53d5ecd155043e3"}],"neutron/services/qos/qos_extension.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.plugins.common import constants as plugin_constants"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"NETWORK \u003d \u0027network\u0027"},{"line_number":22,"context_line":"PORT \u003d \u0027port\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class QosExtensionHandler(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_5bdf8dd5","line":22,"updated":"2015-07-16 10:29:49.000000000","message":"those probably belong somewhere else, like neutron/common/constants.py","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.plugins.common import constants as plugin_constants"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"NETWORK \u003d \u0027network\u0027"},{"line_number":22,"context_line":"PORT \u003d \u0027port\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class QosExtensionHandler(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_9e1e5e5d","line":22,"in_reply_to":"9a41bdd9_5bdf8dd5","updated":"2015-07-16 11:56:05.000000000","message":"I don\u0027t know, since it\u0027s tightly coupled with how this code behaves I prefer it to be here.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"61fa72064dec42997d76daec53697bae7d802720","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"NETWORK \u003d \u0027network\u0027"},{"line_number":22,"context_line":"PORT \u003d \u0027port\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class QosExtensionHandler(object):"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_80c28b51","line":23,"updated":"2015-07-16 08:58:07.000000000","message":"I\u0027d add a dummy interface class on top, just to make our intent clear to everyone.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"NETWORK \u003d \u0027network\u0027"},{"line_number":22,"context_line":"PORT \u003d \u0027port\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class QosExtensionHandler(object):"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_1e332ef7","line":23,"in_reply_to":"9a41bdd9_80c28b51","updated":"2015-07-16 11:56:05.000000000","message":"Added a todo, will tackle later","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class QosExtensionHandler(object):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _exec_on_plugin(self, method_name, **kwargs):"},{"line_number":28,"context_line":"        qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":29,"context_line":"            plugin_constants.QOS]"},{"line_number":30,"context_line":"        if qos_plugin is not None:"},{"line_number":31,"context_line":"            return getattr(qos_plugin, method_name)(*kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_9b7515cc","line":28,"updated":"2015-07-16 10:29:49.000000000","message":"use .get() instead, otherwise it may blow with KeyError","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class QosExtensionHandler(object):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _exec_on_plugin(self, method_name, **kwargs):"},{"line_number":28,"context_line":"        qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":29,"context_line":"            plugin_constants.QOS]"},{"line_number":30,"context_line":"        if qos_plugin is not None:"},{"line_number":31,"context_line":"            return getattr(qos_plugin, method_name)(*kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_1e4a4e55","line":28,"in_reply_to":"9a41bdd9_9b7515cc","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"61fa72064dec42997d76daec53697bae7d802720","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _exec_on_plugin(self, method_name, **kwargs):"},{"line_number":28,"context_line":"        qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":29,"context_line":"            plugin_constants.QOS]"},{"line_number":30,"context_line":"        if qos_plugin is not None:"},{"line_number":31,"context_line":"            return getattr(qos_plugin, method_name)(*kwargs)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_054d2d99","line":29,"updated":"2015-07-16 08:58:07.000000000","message":"nit: you could cache qos_plugin locally..., I\u0027m not sure how expensive is get_service_plugins, probably nothing..","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _exec_on_plugin(self, method_name, **kwargs):"},{"line_number":28,"context_line":"        qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":29,"context_line":"            plugin_constants.QOS]"},{"line_number":30,"context_line":"        if qos_plugin is not None:"},{"line_number":31,"context_line":"            return getattr(qos_plugin, method_name)(*kwargs)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_3e45d241","line":29,"in_reply_to":"9a41bdd9_054d2d99","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":29,"context_line":"            plugin_constants.QOS]"},{"line_number":30,"context_line":"        if qos_plugin is not None:"},{"line_number":31,"context_line":"            return getattr(qos_plugin, method_name)(*kwargs)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def process_resource(self, context, resource_type, requested_resource,"},{"line_number":34,"context_line":"                         actual_resource):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_5b522d36","line":31,"updated":"2015-07-16 10:29:49.000000000","message":"**kwargs?","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        qos_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":29,"context_line":"            plugin_constants.QOS]"},{"line_number":30,"context_line":"        if qos_plugin is not None:"},{"line_number":31,"context_line":"            return getattr(qos_plugin, method_name)(*kwargs)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def process_resource(self, context, resource_type, requested_resource,"},{"line_number":34,"context_line":"                         actual_resource):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_de7626a3","line":31,"in_reply_to":"9a41bdd9_5b522d36","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"61fa72064dec42997d76daec53697bae7d802720","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def process_resource(self, context, resource_type, requested_resource,"},{"line_number":34,"context_line":"                         actual_resource):"},{"line_number":35,"context_line":"        if qos.QOS_POLICY_ID in requested_resource:"},{"line_number":36,"context_line":"            self._exec_on_plugin(\u0027update_%s_policy\u0027 % resource_type,"},{"line_number":37,"context_line":"                                 {\u0027context\u0027: context,"},{"line_number":38,"context_line":"                                  resource_type: actual_resource,"},{"line_number":39,"context_line":"                                  })"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_8014cbe8","line":36,"updated":"2015-07-16 08:58:07.000000000","message":"I\u0027d move all the update_%_.... methods locally here. Even if we pull in the VO\u0027s dependency.\n\nWe lighthen the service plugin, and we make the extension handler more clear.\n\nAnd, as we said on IRC, ignore any call when plugin is not installed.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"4c4c3539654ed5214fdfbdb0d7a093e01c869c1a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def process_resource(self, context, resource_type, requested_resource,"},{"line_number":34,"context_line":"                         actual_resource):"},{"line_number":35,"context_line":"        if qos.QOS_POLICY_ID in requested_resource:"},{"line_number":36,"context_line":"            self._exec_on_plugin(\u0027update_%s_policy\u0027 % resource_type,"},{"line_number":37,"context_line":"                                 {\u0027context\u0027: context,"},{"line_number":38,"context_line":"                                  resource_type: actual_resource,"},{"line_number":39,"context_line":"                                  })"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_fe79aa93","line":36,"in_reply_to":"9a41bdd9_7bb37198","updated":"2015-07-16 11:56:05.000000000","message":"Done","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fc55c27a128a620340784bad6000545369910569","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def process_resource(self, context, resource_type, requested_resource,"},{"line_number":34,"context_line":"                         actual_resource):"},{"line_number":35,"context_line":"        if qos.QOS_POLICY_ID in requested_resource:"},{"line_number":36,"context_line":"            self._exec_on_plugin(\u0027update_%s_policy\u0027 % resource_type,"},{"line_number":37,"context_line":"                                 {\u0027context\u0027: context,"},{"line_number":38,"context_line":"                                  resource_type: actual_resource,"},{"line_number":39,"context_line":"                                  })"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_7bb37198","line":36,"in_reply_to":"9a41bdd9_8014cbe8","updated":"2015-07-16 10:29:49.000000000","message":"+ they don\u0027t belong to service plugin basic CRUD methods.","commit_id":"04b8dbee40a3d62abf918ed5a759f81803f9561c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"e3d77e9ccdf42e82d78951ed5f4e05b2dcb0b045","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                         actual_resource):"},{"line_number":71,"context_line":"        if qos.QOS_POLICY_ID in requested_resource and self.plugin_loaded:"},{"line_number":72,"context_line":"            self._exec(\u0027_update_%s_policy\u0027 % resource_type,"},{"line_number":73,"context_line":"                       context, {resource_type: actual_resource})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_2814b4e6","line":73,"updated":"2015-07-16 14:10:53.000000000","message":"here the requested_resource has the changes we want, but actual resource don\u0027t.\n\nWe should pass it down or _update_port/net_policy won\u0027t see the qos_profile_id","commit_id":"1c472a179a62b6f9e5843dae9a0275cf33d5c5a8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b438e0c0fff92ee30a907399a7bb2df040a5cfd8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron import manager"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.extensions import qos"},{"line_number":19,"context_line":"from neutron.objects.qos import policy as policy_object"},{"line_number":20,"context_line":"from neutron.plugins.common import constants as plugin_constants"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_650bc22c","line":17,"updated":"2015-07-16 14:41:38.000000000","message":"no need for new line","commit_id":"81c99d427560a1b191fb8552d53d5ecd155043e3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"407c5dd255d521d26aadea7eedaf2785085b888d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron import manager"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.extensions import qos"},{"line_number":19,"context_line":"from neutron.objects.qos import policy as policy_object"},{"line_number":20,"context_line":"from neutron.plugins.common import constants as plugin_constants"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_a8a99f92","line":17,"in_reply_to":"9a41bdd9_650bc22c","updated":"2015-07-16 14:55:01.000000000","message":"I thought I had fixed this.. hmmm :)\n\nThanks!","commit_id":"81c99d427560a1b191fb8552d53d5ecd155043e3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bb0998749ef91adcaa7acd7ed2b3ea28ceab0183","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron.extensions import qos"},{"line_number":17,"context_line":"from neutron import manager"},{"line_number":18,"context_line":"from neutron.objects.qos import policy as policy_object"},{"line_number":19,"context_line":"from neutron.plugins.common import constants as plugin_constants"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"NETWORK \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a41bdd9_53ebbbb0","line":18,"updated":"2015-07-17 09:56:36.000000000","message":"Nit: policy_object -\u003e objects_policy\n\npolicy_object sounds like this is an object representing policy.","commit_id":"c880dad5af4b692f4b39de36a5b96c99a7820ba3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bb0998749ef91adcaa7acd7ed2b3ea28ceab0183","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def process_resource(self, context, resource_type, requested_resource,"},{"line_number":71,"context_line":"                         actual_resource):"},{"line_number":72,"context_line":"        if qos.QOS_POLICY_ID in requested_resource and self.plugin_loaded:"},{"line_number":73,"context_line":"            self._exec(\u0027_update_%s_policy\u0027 % resource_type, context,"},{"line_number":74,"context_line":"                       {resource_type: actual_resource,"},{"line_number":75,"context_line":"                        \"%s_changes\" % resource_type: requested_resource})"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a41bdd9_f3a20f9a","line":73,"updated":"2015-07-17 09:56:36.000000000","message":"It\u0027s better to make _update_(network|port)_policy public and create a decorator for checking. It reads better.","commit_id":"c880dad5af4b692f4b39de36a5b96c99a7820ba3"}],"neutron/tests/unit/services/qos/test_qos_extension.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"e3d77e9ccdf42e82d78951ed5f4e05b2dcb0b045","unresolved":false,"context_lines":[{"line_number":20,"context_line":"# from neutron import manager"},{"line_number":21,"context_line":"# from neutron.plugins.common import constants"},{"line_number":22,"context_line":"# from neutron.services import provider_configuration as provconf"},{"line_number":23,"context_line":"# from neutron.objects.qos import policy as policy_object"},{"line_number":24,"context_line":"from neutron.extensions import qos"},{"line_number":25,"context_line":"from neutron.plugins.common import constants as plugin_constants"},{"line_number":26,"context_line":"from neutron.services.qos import qos_extension"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_5f39abd7","line":23,"updated":"2015-07-16 14:10:53.000000000","message":"we can delete all those commented imports on this patch already.","commit_id":"1c472a179a62b6f9e5843dae9a0275cf33d5c5a8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bb0998749ef91adcaa7acd7ed2b3ea28ceab0183","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from neutron.tests import base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class QosResourceExtensionHandlerTestCase(base.BaseTestCase):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(QosResourceExtensionHandlerTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a41bdd9_6ec61618","line":24,"updated":"2015-07-17 09:56:36.000000000","message":"What about other methods and property that have missing tests here?","commit_id":"c880dad5af4b692f4b39de36a5b96c99a7820ba3"}],"setup.cfg":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"f38f38150d1efc6f856d5e107ac7482773bd61f1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    testdb \u003d neutron.tests.unit.plugins.ml2.drivers.ext_test:TestDBExtensionDriver"},{"line_number":198,"context_line":"    port_security \u003d neutron.plugins.ml2.extensions.port_security:PortSecurityExtensionDriver"},{"line_number":199,"context_line":"    cisco_n1kv_ext \u003d neutron.plugins.ml2.drivers.cisco.n1kv.n1kv_ext_driver:CiscoN1kvExtensionDriver"},{"line_number":200,"context_line":"    qos \u003d neutron.plugins.ml2.extensions.qos:QosExtensionDriver"},{"line_number":201,"context_line":"neutron.openstack.common.cache.backends \u003d"},{"line_number":202,"context_line":"    memory \u003d neutron.openstack.common.cache._backends.memory:MemoryBackend"},{"line_number":203,"context_line":"neutron.ipam_drivers \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"9a41bdd9_2dc034e0","line":200,"updated":"2015-07-16 18:36:18.000000000","message":"Missing Resource in the class name","commit_id":"c880dad5af4b692f4b39de36a5b96c99a7820ba3"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"13fdfe87dfeb55ead2f40f6dd91e5b243d5d8b36","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    testdb \u003d neutron.tests.unit.plugins.ml2.drivers.ext_test:TestDBExtensionDriver"},{"line_number":198,"context_line":"    port_security \u003d neutron.plugins.ml2.extensions.port_security:PortSecurityExtensionDriver"},{"line_number":199,"context_line":"    cisco_n1kv_ext \u003d neutron.plugins.ml2.drivers.cisco.n1kv.n1kv_ext_driver:CiscoN1kvExtensionDriver"},{"line_number":200,"context_line":"    qos \u003d neutron.plugins.ml2.extensions.qos:QosExtensionDriver"},{"line_number":201,"context_line":"neutron.openstack.common.cache.backends \u003d"},{"line_number":202,"context_line":"    memory \u003d neutron.openstack.common.cache._backends.memory:MemoryBackend"},{"line_number":203,"context_line":"neutron.ipam_drivers \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"9a41bdd9_fb01933a","line":200,"in_reply_to":"9a41bdd9_2dc034e0","updated":"2015-07-17 03:27:44.000000000","message":"Please discard my comment, I got confused by second extension","commit_id":"c880dad5af4b692f4b39de36a5b96c99a7820ba3"}]}
