)]}'
{"neutron/services/qos/drivers/manager.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        # are enabled"},{"line_number":46,"context_line":"        registry.notify(qos_consts.QOS_PLUGIN, events.AFTER_INIT, self)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        if self.rpc_notifications_required:"},{"line_number":49,"context_line":"            self.push_api \u003d resources_rpc.ResourcesPushRpcApi()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_2849af8a","side":"PARENT","line":48,"updated":"2017-03-30 09:36:13.000000000","message":"This removal is unrelated, if we don\u0027t need the rpc_notifications for any driver (updated during the notify), we don\u0027t need an instance of the push_api.\n\nIt\u0027s a silly optimisation anyway (I wanted to save some bytes ;) )","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"95d862bfa6e07d683e4118ae96d06db7d9fb0baa","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        # are enabled"},{"line_number":46,"context_line":"        registry.notify(qos_consts.QOS_PLUGIN, events.AFTER_INIT, self)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        if self.rpc_notifications_required:"},{"line_number":49,"context_line":"            self.push_api \u003d resources_rpc.ResourcesPushRpcApi()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_4b82ad02","side":"PARENT","line":48,"in_reply_to":"ffe62b97_2849af8a","updated":"2017-03-30 09:43:59.000000000","message":"ah, i didn\u0027t realize it could become true between L41 and here. :)","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"}],"neutron/tests/unit/services/qos/test_qos_plugin.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.assertIsInstance("},{"line_number":94,"context_line":"            method.call_args[0][1], policy_object.QosPolicy)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        self.assertTrue(self.qos_plugin.driver_manager.call.called)"},{"line_number":97,"context_line":"        self.assertEqual(self.qos_plugin.driver_manager.call.call_args[0][0],"},{"line_number":98,"context_line":"                         method_name)"},{"line_number":99,"context_line":"        self.assertIsInstance("},{"line_number":100,"context_line":"            self.qos_plugin.driver_manager.call.call_args[0][2],"},{"line_number":101,"context_line":"            policy_object.QosPolicy"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch("},{"line_number":105,"context_line":"        \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_cb1a3d6e","side":"PARENT","line":102,"range":{"start_line":96,"start_character":7,"end_line":102,"end_character":9},"updated":"2017-03-30 09:36:13.000000000","message":"Don\u0027t remove this part, this checks the \"driver_manager\", while L90-94 test the old \"notification_driver\" API.","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.assertIsInstance("},{"line_number":94,"context_line":"            method.call_args[0][1], policy_object.QosPolicy)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        self.assertTrue(self.qos_plugin.driver_manager.call.called)"},{"line_number":97,"context_line":"        self.assertEqual(self.qos_plugin.driver_manager.call.call_args[0][0],"},{"line_number":98,"context_line":"                         method_name)"},{"line_number":99,"context_line":"        self.assertIsInstance("},{"line_number":100,"context_line":"            self.qos_plugin.driver_manager.call.call_args[0][2],"},{"line_number":101,"context_line":"            policy_object.QosPolicy"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch("},{"line_number":105,"context_line":"        \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_36cfd0b1","side":"PARENT","line":102,"range":{"start_line":96,"start_character":7,"end_line":102,"end_character":9},"in_reply_to":"ffe62b97_cb1a3d6e","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            policy_object.QosPolicy"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch("},{"line_number":105,"context_line":"        \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027"},{"line_number":106,"context_line":"        \u0027.create_rbac_policy\u0027)"},{"line_number":107,"context_line":"    def test_add_policy(self, *mocks):"},{"line_number":108,"context_line":"        self.qos_plugin.create_policy(self.ctxt, self.policy_data)"},{"line_number":109,"context_line":"        self._validate_driver_params(\u0027create_policy\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def test_add_policy_with_extra_tenant_keyword(self, *mocks):"},{"line_number":112,"context_line":"        policy_id \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_2b2529ac","side":"PARENT","line":109,"range":{"start_line":104,"start_character":3,"end_line":109,"end_character":53},"updated":"2017-03-30 09:36:13.000000000","message":"you can still leave this part with L96-102 only","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            policy_object.QosPolicy"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch("},{"line_number":105,"context_line":"        \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027"},{"line_number":106,"context_line":"        \u0027.create_rbac_policy\u0027)"},{"line_number":107,"context_line":"    def test_add_policy(self, *mocks):"},{"line_number":108,"context_line":"        self.qos_plugin.create_policy(self.ctxt, self.policy_data)"},{"line_number":109,"context_line":"        self._validate_driver_params(\u0027create_policy\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def test_add_policy_with_extra_tenant_keyword(self, *mocks):"},{"line_number":112,"context_line":"        policy_id \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_b6bac007","side":"PARENT","line":109,"range":{"start_line":104,"start_character":3,"end_line":109,"end_character":53},"in_reply_to":"ffe62b97_2b2529ac","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        QosMocked.assert_called_once_with(self.ctxt, **policy_details)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @mock.patch("},{"line_number":134,"context_line":"        \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027"},{"line_number":135,"context_line":"        \u0027.create_rbac_policy\u0027)"},{"line_number":136,"context_line":"    def test_update_policy(self, *mocks):"},{"line_number":137,"context_line":"        fields \u003d base_object.get_updatable_fields("},{"line_number":138,"context_line":"            policy_object.QosPolicy, self.policy_data[\u0027policy\u0027])"},{"line_number":139,"context_line":"        self.qos_plugin.update_policy("},{"line_number":140,"context_line":"            self.ctxt, self.policy.id, {\u0027policy\u0027: fields})"},{"line_number":141,"context_line":"        self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @mock.patch(\u0027neutron.objects.db.api.get_object\u0027, return_value\u003dNone)"},{"line_number":144,"context_line":"    def test_delete_policy(self, *mocks):"},{"line_number":145,"context_line":"        self.qos_plugin.delete_policy(self.ctxt, self.policy.id)"},{"line_number":146,"context_line":"        self._validate_driver_params(\u0027delete_policy\u0027)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def test_create_policy_rule(self):"},{"line_number":149,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":150,"context_line":"                        return_value\u003dself.policy):"},{"line_number":151,"context_line":"            self.qos_plugin.create_policy_bandwidth_limit_rule("},{"line_number":152,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"},{"line_number":153,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_update_policy_rule(self):"},{"line_number":156,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":157,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":158,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":159,"context_line":"                        return_value\u003d_policy):"},{"line_number":160,"context_line":"            setattr(_policy, \"rules\", [self.rule])"},{"line_number":161,"context_line":"            self.qos_plugin.update_policy_bandwidth_limit_rule("},{"line_number":162,"context_line":"                self.ctxt, self.rule.id, self.policy.id, self.rule_data)"},{"line_number":163,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_update_policy_rule_bad_policy(self):"},{"line_number":166,"context_line":"        _policy \u003d policy_object.QosPolicy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_2b5ac929","side":"PARENT","line":163,"range":{"start_line":133,"start_character":4,"end_line":163,"end_character":57},"updated":"2017-03-30 09:36:13.000000000","message":"same here :)","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        QosMocked.assert_called_once_with(self.ctxt, **policy_details)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @mock.patch("},{"line_number":134,"context_line":"        \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027"},{"line_number":135,"context_line":"        \u0027.create_rbac_policy\u0027)"},{"line_number":136,"context_line":"    def test_update_policy(self, *mocks):"},{"line_number":137,"context_line":"        fields \u003d base_object.get_updatable_fields("},{"line_number":138,"context_line":"            policy_object.QosPolicy, self.policy_data[\u0027policy\u0027])"},{"line_number":139,"context_line":"        self.qos_plugin.update_policy("},{"line_number":140,"context_line":"            self.ctxt, self.policy.id, {\u0027policy\u0027: fields})"},{"line_number":141,"context_line":"        self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @mock.patch(\u0027neutron.objects.db.api.get_object\u0027, return_value\u003dNone)"},{"line_number":144,"context_line":"    def test_delete_policy(self, *mocks):"},{"line_number":145,"context_line":"        self.qos_plugin.delete_policy(self.ctxt, self.policy.id)"},{"line_number":146,"context_line":"        self._validate_driver_params(\u0027delete_policy\u0027)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def test_create_policy_rule(self):"},{"line_number":149,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":150,"context_line":"                        return_value\u003dself.policy):"},{"line_number":151,"context_line":"            self.qos_plugin.create_policy_bandwidth_limit_rule("},{"line_number":152,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"},{"line_number":153,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_update_policy_rule(self):"},{"line_number":156,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":157,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":158,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":159,"context_line":"                        return_value\u003d_policy):"},{"line_number":160,"context_line":"            setattr(_policy, \"rules\", [self.rule])"},{"line_number":161,"context_line":"            self.qos_plugin.update_policy_bandwidth_limit_rule("},{"line_number":162,"context_line":"                self.ctxt, self.rule.id, self.policy.id, self.rule_data)"},{"line_number":163,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_update_policy_rule_bad_policy(self):"},{"line_number":166,"context_line":"        _policy \u003d policy_object.QosPolicy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_f645e816","side":"PARENT","line":163,"range":{"start_line":133,"start_character":4,"end_line":163,"end_character":57},"in_reply_to":"ffe62b97_2b5ac929","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                self.ctxt, self.rule.id, self.policy.id,"},{"line_number":175,"context_line":"                self.rule_data)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_delete_policy_rule(self):"},{"line_number":178,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":179,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":180,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":181,"context_line":"                        return_value\u003d_policy):"},{"line_number":182,"context_line":"            setattr(_policy, \"rules\", [self.rule])"},{"line_number":183,"context_line":"            self.qos_plugin.delete_policy_bandwidth_limit_rule("},{"line_number":184,"context_line":"                        self.ctxt, self.rule.id, _policy.id)"},{"line_number":185,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_delete_policy_rule_bad_policy(self):"},{"line_number":188,"context_line":"        _policy \u003d policy_object.QosPolicy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_ab45b945","side":"PARENT","line":185,"range":{"start_line":177,"start_character":0,"end_line":185,"end_character":57},"updated":"2017-03-30 09:36:13.000000000","message":"same here","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                self.ctxt, self.rule.id, self.policy.id,"},{"line_number":175,"context_line":"                self.rule_data)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_delete_policy_rule(self):"},{"line_number":178,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":179,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":180,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":181,"context_line":"                        return_value\u003d_policy):"},{"line_number":182,"context_line":"            setattr(_policy, \"rules\", [self.rule])"},{"line_number":183,"context_line":"            self.qos_plugin.delete_policy_bandwidth_limit_rule("},{"line_number":184,"context_line":"                        self.ctxt, self.rule.id, _policy.id)"},{"line_number":185,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_delete_policy_rule_bad_policy(self):"},{"line_number":188,"context_line":"        _policy \u003d policy_object.QosPolicy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_d652e4de","side":"PARENT","line":185,"range":{"start_line":177,"start_character":0,"end_line":185,"end_character":57},"in_reply_to":"ffe62b97_ab45b945","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                n_exc.QosPolicyNotFound,"},{"line_number":256,"context_line":"                self.qos_plugin.get_policy_bandwidth_limit_rules,"},{"line_number":257,"context_line":"                self.ctxt, self.policy.id)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_create_policy_dscp_marking_rule(self):"},{"line_number":260,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":261,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":262,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":263,"context_line":"                        return_value\u003d_policy):"},{"line_number":264,"context_line":"            setattr(_policy, \"rules\", [self.dscp_rule])"},{"line_number":265,"context_line":"            self.qos_plugin.create_policy_dscp_marking_rule("},{"line_number":266,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"},{"line_number":267,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_update_policy_dscp_marking_rule(self):"},{"line_number":270,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":271,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":272,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":273,"context_line":"                        return_value\u003d_policy):"},{"line_number":274,"context_line":"            setattr(_policy, \"rules\", [self.dscp_rule])"},{"line_number":275,"context_line":"            self.qos_plugin.update_policy_dscp_marking_rule("},{"line_number":276,"context_line":"                self.ctxt, self.dscp_rule.id, self.policy.id, self.rule_data)"},{"line_number":277,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_delete_policy_dscp_marking_rule(self):"},{"line_number":280,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":281,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":282,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":283,"context_line":"                        return_value\u003d_policy):"},{"line_number":284,"context_line":"            setattr(_policy, \"rules\", [self.dscp_rule])"},{"line_number":285,"context_line":"            self.qos_plugin.delete_policy_dscp_marking_rule("},{"line_number":286,"context_line":"                self.ctxt, self.dscp_rule.id, self.policy.id)"},{"line_number":287,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_get_policy_dscp_marking_rules(self):"},{"line_number":290,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_8b74359e","side":"PARENT","line":287,"range":{"start_line":258,"start_character":0,"end_line":287,"end_character":57},"updated":"2017-03-30 09:36:13.000000000","message":"same here.","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                n_exc.QosPolicyNotFound,"},{"line_number":256,"context_line":"                self.qos_plugin.get_policy_bandwidth_limit_rules,"},{"line_number":257,"context_line":"                self.ctxt, self.policy.id)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_create_policy_dscp_marking_rule(self):"},{"line_number":260,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":261,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":262,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":263,"context_line":"                        return_value\u003d_policy):"},{"line_number":264,"context_line":"            setattr(_policy, \"rules\", [self.dscp_rule])"},{"line_number":265,"context_line":"            self.qos_plugin.create_policy_dscp_marking_rule("},{"line_number":266,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"},{"line_number":267,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_update_policy_dscp_marking_rule(self):"},{"line_number":270,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":271,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":272,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":273,"context_line":"                        return_value\u003d_policy):"},{"line_number":274,"context_line":"            setattr(_policy, \"rules\", [self.dscp_rule])"},{"line_number":275,"context_line":"            self.qos_plugin.update_policy_dscp_marking_rule("},{"line_number":276,"context_line":"                self.ctxt, self.dscp_rule.id, self.policy.id, self.rule_data)"},{"line_number":277,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_delete_policy_dscp_marking_rule(self):"},{"line_number":280,"context_line":"        _policy \u003d policy_object.QosPolicy("},{"line_number":281,"context_line":"            self.ctxt, **self.policy_data[\u0027policy\u0027])"},{"line_number":282,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":283,"context_line":"                        return_value\u003d_policy):"},{"line_number":284,"context_line":"            setattr(_policy, \"rules\", [self.dscp_rule])"},{"line_number":285,"context_line":"            self.qos_plugin.delete_policy_dscp_marking_rule("},{"line_number":286,"context_line":"                self.ctxt, self.dscp_rule.id, self.policy.id)"},{"line_number":287,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_get_policy_dscp_marking_rules(self):"},{"line_number":290,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_766318b3","side":"PARENT","line":287,"range":{"start_line":258,"start_character":0,"end_line":287,"end_character":57},"in_reply_to":"ffe62b97_8b74359e","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                            mock_manager.mock_calls.index(notify_mock_call))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @mock.patch(\u0027neutron.objects.qos.policy.QosPolicy\u0027)"},{"line_number":453,"context_line":"    def test_rule_notification_and_driver_ordering(self, qos_policy_mock):"},{"line_number":454,"context_line":"        rule_cls_mock \u003d mock.Mock()"},{"line_number":455,"context_line":"        rule_cls_mock.rule_type \u003d \u0027fake\u0027"},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_2b81a94b","side":"PARENT","line":453,"updated":"2017-03-30 09:36:13.000000000","message":"we can save this test, but removing the lines I will explain in next comments","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                            mock_manager.mock_calls.index(notify_mock_call))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @mock.patch(\u0027neutron.objects.qos.policy.QosPolicy\u0027)"},{"line_number":453,"context_line":"    def test_rule_notification_and_driver_ordering(self, qos_policy_mock):"},{"line_number":454,"context_line":"        rule_cls_mock \u003d mock.Mock()"},{"line_number":455,"context_line":"        rule_cls_mock.rule_type \u003d \u0027fake\u0027"},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_3612300b","side":"PARENT","line":453,"in_reply_to":"ffe62b97_2b81a94b","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                        \u0027delete\u0027: [self.ctxt, rule_cls_mock,"},{"line_number":463,"context_line":"                                   self.rule.id, self.policy.id]}"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # TODO(mangelajo): Remove notification_driver_manager checks in Pike"},{"line_number":466,"context_line":"        #                  and rename this test"},{"line_number":467,"context_line":"        self.qos_plugin.notification_driver_manager \u003d mock.Mock()"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":470,"context_line":"        mock_manager.attach_mock(qos_policy_mock, \u0027QosPolicy\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_eb92a19f","side":"PARENT","line":467,"range":{"start_line":465,"start_character":7,"end_line":467,"end_character":65},"updated":"2017-03-30 09:36:13.000000000","message":"remove","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                        \u0027delete\u0027: [self.ctxt, rule_cls_mock,"},{"line_number":463,"context_line":"                                   self.rule.id, self.policy.id]}"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # TODO(mangelajo): Remove notification_driver_manager checks in Pike"},{"line_number":466,"context_line":"        #                  and rename this test"},{"line_number":467,"context_line":"        self.qos_plugin.notification_driver_manager \u003d mock.Mock()"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":470,"context_line":"        mock_manager.attach_mock(qos_policy_mock, \u0027QosPolicy\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_5626d46a","side":"PARENT","line":467,"range":{"start_line":465,"start_character":7,"end_line":467,"end_character":65},"in_reply_to":"ffe62b97_eb92a19f","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":470,"context_line":"        mock_manager.attach_mock(qos_policy_mock, \u0027QosPolicy\u0027)"},{"line_number":471,"context_line":"        mock_manager.attach_mock(rule_cls_mock, \u0027RuleCls\u0027)"},{"line_number":472,"context_line":"        mock_manager.attach_mock(self.qos_plugin.notification_driver_manager,"},{"line_number":473,"context_line":"                                 \u0027notification_driver\u0027)"},{"line_number":474,"context_line":"        mock_manager.attach_mock(self.qos_plugin.driver_manager, \u0027driver\u0027)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        for action, arguments in rule_actions.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_8be79547","side":"PARENT","line":473,"range":{"start_line":472,"start_character":7,"end_line":473,"end_character":55},"updated":"2017-03-30 09:36:13.000000000","message":"remove","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":470,"context_line":"        mock_manager.attach_mock(qos_policy_mock, \u0027QosPolicy\u0027)"},{"line_number":471,"context_line":"        mock_manager.attach_mock(rule_cls_mock, \u0027RuleCls\u0027)"},{"line_number":472,"context_line":"        mock_manager.attach_mock(self.qos_plugin.notification_driver_manager,"},{"line_number":473,"context_line":"                                 \u0027notification_driver\u0027)"},{"line_number":474,"context_line":"        mock_manager.attach_mock(self.qos_plugin.driver_manager, \u0027driver\u0027)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        for action, arguments in rule_actions.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_b6fd20b3","side":"PARENT","line":473,"range":{"start_line":472,"start_character":7,"end_line":473,"end_character":55},"in_reply_to":"ffe62b97_8be79547","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            # some actions construct rule from class reference"},{"line_number":485,"context_line":"            rule_mock_call \u003d getattr(mock.call.RuleCls(), action)()"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"            notify_mock_call \u003d mock.call.notification_driver.update_policy("},{"line_number":488,"context_line":"                    self.ctxt, mock.ANY)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"            driver_mock_call \u003d mock.call.driver.call(\u0027update_policy\u0027,"},{"line_number":491,"context_line":"                                                     self.ctxt, mock.ANY)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_6bec5129","side":"PARENT","line":488,"range":{"start_line":487,"start_character":10,"end_line":488,"end_character":40},"updated":"2017-03-30 09:36:13.000000000","message":"remove","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            # some actions construct rule from class reference"},{"line_number":485,"context_line":"            rule_mock_call \u003d getattr(mock.call.RuleCls(), action)()"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"            notify_mock_call \u003d mock.call.notification_driver.update_policy("},{"line_number":488,"context_line":"                    self.ctxt, mock.ANY)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"            driver_mock_call \u003d mock.call.driver.call(\u0027update_policy\u0027,"},{"line_number":491,"context_line":"                                                     self.ctxt, mock.ANY)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_16204c49","side":"PARENT","line":488,"range":{"start_line":487,"start_character":10,"end_line":488,"end_character":40},"in_reply_to":"ffe62b97_6bec5129","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"275d212f742f5712926e32a1d884abf8f4f73c89","unresolved":false,"context_lines":[{"line_number":496,"context_line":"                action_index \u003d mock_manager.mock_calls.index("},{"line_number":497,"context_line":"                    get_rule_mock_call)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            self.assertTrue("},{"line_number":500,"context_line":"                action_index \u003c mock_manager.mock_calls.index(notify_mock_call))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            self.assertTrue("},{"line_number":503,"context_line":"                action_index \u003c mock_manager.mock_calls.index(driver_mock_call))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_4bcaada1","side":"PARENT","line":500,"range":{"start_line":499,"start_character":0,"end_line":500,"end_character":79},"updated":"2017-03-30 09:36:13.000000000","message":"remove","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e8798684781441ee81576dafa94d50dddd770c8c","unresolved":false,"context_lines":[{"line_number":496,"context_line":"                action_index \u003d mock_manager.mock_calls.index("},{"line_number":497,"context_line":"                    get_rule_mock_call)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            self.assertTrue("},{"line_number":500,"context_line":"                action_index \u003c mock_manager.mock_calls.index(notify_mock_call))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            self.assertTrue("},{"line_number":503,"context_line":"                action_index \u003c mock_manager.mock_calls.index(driver_mock_call))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_f61cc814","side":"PARENT","line":500,"range":{"start_line":499,"start_character":0,"end_line":500,"end_character":79},"in_reply_to":"ffe62b97_4bcaada1","updated":"2017-03-30 10:02:32.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"}],"setup.cfg":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"eab8cc40d7120f56d810f48f8f1bd7ea74e377d1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    neutron.ml2.ovs.agent \u003d neutron.opts:list_ovs_opts"},{"line_number":136,"context_line":"    neutron.ml2.sriov.agent \u003d neutron.opts:list_sriov_agent_opts"},{"line_number":137,"context_line":"    neutron.ml2.xenapi \u003d neutron.opts:list_xenapi_opts"},{"line_number":138,"context_line":"    neutron.qos \u003d neutron.opts:list_qos_opts"},{"line_number":139,"context_line":"    nova.auth \u003d neutron.opts:list_auth_opts"},{"line_number":140,"context_line":"oslo.config.opts.defaults \u003d"},{"line_number":141,"context_line":"    neutron \u003d neutron.common.config:set_cors_middleware_defaults"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"dfeb2761_1f35758f","side":"PARENT","line":138,"updated":"2017-04-04 18:11:31.000000000","message":"remove its usage from etc/oslo-config-generator/neutron.conf","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"367cab6533b5f103130535e0e72c948271ee2b7d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    neutron.ml2.ovs.agent \u003d neutron.opts:list_ovs_opts"},{"line_number":136,"context_line":"    neutron.ml2.sriov.agent \u003d neutron.opts:list_sriov_agent_opts"},{"line_number":137,"context_line":"    neutron.ml2.xenapi \u003d neutron.opts:list_xenapi_opts"},{"line_number":138,"context_line":"    neutron.qos \u003d neutron.opts:list_qos_opts"},{"line_number":139,"context_line":"    nova.auth \u003d neutron.opts:list_auth_opts"},{"line_number":140,"context_line":"oslo.config.opts.defaults \u003d"},{"line_number":141,"context_line":"    neutron \u003d neutron.common.config:set_cors_middleware_defaults"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"dfeb2761_deb38697","side":"PARENT","line":138,"in_reply_to":"dfeb2761_1f35758f","updated":"2017-04-05 01:00:33.000000000","message":"Done","commit_id":"6a7d93650ba7369180ae01685502f0f838e3db7c"}]}
