)]}'
{"neutron/objects/qos/policy.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        object_id\u003dbinding_db_obj[\u0027%s_id\u0027 % object_type])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"            for object_type, model in self.binding_models2.items():"},{"line_number":192,"context_line":"                binding_db_obj \u003d model.get_objects(self.obj_context,"},{"line_number":193,"context_line":"                                                   policy_id\u003dself.id)"},{"line_number":194,"context_line":"                if binding_db_obj:"},{"line_number":195,"context_line":"                    raise exceptions.QosPolicyInUse("}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_c021c7a1","line":192,"range":{"start_line":192,"start_character":16,"end_line":192,"end_character":30},"updated":"2017-06-08 21:26:23.000000000","message":"-\u003e binding or binding_obj. The fact it\u0027s backed by database is not significant.","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        object_id\u003dbinding_db_obj[\u0027%s_id\u0027 % object_type])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"            for object_type, model in self.binding_models2.items():"},{"line_number":192,"context_line":"                binding_db_obj \u003d model.get_objects(self.obj_context,"},{"line_number":193,"context_line":"                                                   policy_id\u003dself.id)"},{"line_number":194,"context_line":"                if binding_db_obj:"},{"line_number":195,"context_line":"                    raise exceptions.QosPolicyInUse("}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_401c9769","line":192,"range":{"start_line":192,"start_character":33,"end_line":192,"end_character":38},"updated":"2017-06-08 21:26:23.000000000","message":"it\u0027s not model, it\u0027s obj_class now","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        object_id\u003dbinding_db_obj[\u0027%s_id\u0027 % object_type])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"            for object_type, model in self.binding_models2.items():"},{"line_number":192,"context_line":"                binding_db_obj \u003d model.get_objects(self.obj_context,"},{"line_number":193,"context_line":"                                                   policy_id\u003dself.id)"},{"line_number":194,"context_line":"                if binding_db_obj:"},{"line_number":195,"context_line":"                    raise exceptions.QosPolicyInUse("}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_e003ab0c","line":192,"updated":"2017-06-08 21:26:23.000000000","message":"we are interesting in a single record, no need to fetch all. use pager to limit it to 1 object.","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        object_id\u003dbinding_db_obj[\u0027%s_id\u0027 % object_type])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"            for object_type, model in self.binding_models2.items():"},{"line_number":192,"context_line":"                binding_db_obj \u003d model.get_objects(self.obj_context,"},{"line_number":193,"context_line":"                                                   policy_id\u003dself.id)"},{"line_number":194,"context_line":"                if binding_db_obj:"},{"line_number":195,"context_line":"                    raise exceptions.QosPolicyInUse("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_ba586d56","line":192,"range":{"start_line":192,"start_character":33,"end_line":192,"end_character":38},"in_reply_to":"bf091321_401c9769","updated":"2017-06-09 09:36:37.000000000","message":"You are right","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        object_id\u003dbinding_db_obj[\u0027%s_id\u0027 % object_type])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"            for object_type, model in self.binding_models2.items():"},{"line_number":192,"context_line":"                binding_db_obj \u003d model.get_objects(self.obj_context,"},{"line_number":193,"context_line":"                                                   policy_id\u003dself.id)"},{"line_number":194,"context_line":"                if binding_db_obj:"},{"line_number":195,"context_line":"                    raise exceptions.QosPolicyInUse("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_9a2a498e","line":192,"range":{"start_line":192,"start_character":16,"end_line":192,"end_character":30},"in_reply_to":"bf091321_c021c7a1","updated":"2017-06-09 09:36:37.000000000","message":"Done","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        object_id\u003dbinding_db_obj[\u0027%s_id\u0027 % object_type])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"            for object_type, model in self.binding_models2.items():"},{"line_number":192,"context_line":"                binding_db_obj \u003d model.get_objects(self.obj_context,"},{"line_number":193,"context_line":"                                                   policy_id\u003dself.id)"},{"line_number":194,"context_line":"                if binding_db_obj:"},{"line_number":195,"context_line":"                    raise exceptions.QosPolicyInUse("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_ba062d20","line":192,"in_reply_to":"bf091321_e003ab0c","updated":"2017-06-09 09:36:37.000000000","message":"Yes, you are right. We only need the first one.","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    def attach_port(self, port_id):"},{"line_number":208,"context_line":"        port_binding \u003d {\u0027policy_id\u0027: self.id,"},{"line_number":209,"context_line":"                        \u0027port_id\u0027: port_id}"},{"line_number":210,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding(self.obj_context,"},{"line_number":211,"context_line":"                                                        **port_binding)"},{"line_number":212,"context_line":"        try:"},{"line_number":213,"context_line":"            port_binding_obj.create()"},{"line_number":214,"context_line":"        except db_exc.DBReferenceError as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_004d7f71","line":211,"range":{"start_line":210,"start_character":6,"end_line":211,"end_character":71},"updated":"2017-06-08 21:26:23.000000000","message":"nit: can\u0027t we join two lines?","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    def attach_port(self, port_id):"},{"line_number":208,"context_line":"        port_binding \u003d {\u0027policy_id\u0027: self.id,"},{"line_number":209,"context_line":"                        \u0027port_id\u0027: port_id}"},{"line_number":210,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding(self.obj_context,"},{"line_number":211,"context_line":"                                                        **port_binding)"},{"line_number":212,"context_line":"        try:"},{"line_number":213,"context_line":"            port_binding_obj.create()"},{"line_number":214,"context_line":"        except db_exc.DBReferenceError as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_2b453118","line":211,"range":{"start_line":210,"start_character":6,"end_line":211,"end_character":71},"in_reply_to":"bf091321_004d7f71","updated":"2017-06-09 09:36:37.000000000","message":"Done","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                 network_id\u003dnetwork_id)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def detach_port(self, port_id):"},{"line_number":225,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding.get_object("},{"line_number":226,"context_line":"            self.obj_context, port_id\u003dport_id)"},{"line_number":227,"context_line":"        if not port_binding_obj:"},{"line_number":228,"context_line":"            raise exceptions.PortQosBindingNotFound(port_id\u003dport_id,"},{"line_number":229,"context_line":"                                                    policy_id\u003dself.id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_20b52332","line":226,"range":{"start_line":225,"start_character":8,"end_line":226,"end_character":46},"updated":"2017-06-08 21:26:23.000000000","message":"no need to fetch, just .delete_objects(...) and if result is 0, then raise the exception.","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                 network_id\u003dnetwork_id)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def detach_port(self, port_id):"},{"line_number":225,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding.get_object("},{"line_number":226,"context_line":"            self.obj_context, port_id\u003dport_id)"},{"line_number":227,"context_line":"        if not port_binding_obj:"},{"line_number":228,"context_line":"            raise exceptions.PortQosBindingNotFound(port_id\u003dport_id,"},{"line_number":229,"context_line":"                                                    policy_id\u003dself.id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_8b5f9de4","line":226,"range":{"start_line":225,"start_character":8,"end_line":226,"end_character":46},"in_reply_to":"bf091321_20b52332","updated":"2017-06-09 09:36:37.000000000","message":"Done","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.obj_context, self.id)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_bound_ports(self):"},{"line_number":259,"context_line":"        return [pb.port_id for pb in binding.QosPolicyPortBinding.get_objects("},{"line_number":260,"context_line":"            self.obj_context, policy_id\u003dself.id)]"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_a082534e","line":259,"updated":"2017-06-08 21:26:23.000000000","message":"nit: wrapping here is not ideal. consider:\n\nreturn [\n    pb.port_id\n    for pb in binding.QosPolicyPortBinding.get_objects(\n        self.obj_context, policy_id\u003dself.id)\n]","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.obj_context, self.id)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_bound_ports(self):"},{"line_number":259,"context_line":"        return [pb.port_id for pb in binding.QosPolicyPortBinding.get_objects("},{"line_number":260,"context_line":"            self.obj_context, policy_id\u003dself.id)]"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_ab1701ee","line":259,"in_reply_to":"bf091321_a082534e","updated":"2017-06-09 09:36:37.000000000","message":"Done","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cb6406c372dd2a9c7664f9276e1cb6f085c3cf07","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def attach_port(self, port_id):"},{"line_number":210,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding("},{"line_number":211,"context_line":"            self.obj_context, **{\u0027policy_id\u0027: self.id, \u0027port_id\u0027: port_id})"},{"line_number":212,"context_line":"        try:"},{"line_number":213,"context_line":"            port_binding_obj.create()"},{"line_number":214,"context_line":"        except db_exc.DBReferenceError as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_df8437b4","line":211,"range":{"start_line":211,"start_character":30,"end_line":211,"end_character":74},"updated":"2017-06-09 17:50:43.000000000","message":"this is usually done as policy_id\u003dself.id, port_id\u003dport_id","commit_id":"07a4633a2cbc37ec570549bfa9b04d30af98f7c8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6b9e9900a14549af7609a1515f59bc19bfc9f50b","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def attach_port(self, port_id):"},{"line_number":210,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding("},{"line_number":211,"context_line":"            self.obj_context, **{\u0027policy_id\u0027: self.id, \u0027port_id\u0027: port_id})"},{"line_number":212,"context_line":"        try:"},{"line_number":213,"context_line":"            port_binding_obj.create()"},{"line_number":214,"context_line":"        except db_exc.DBReferenceError as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_4a986369","line":211,"range":{"start_line":211,"start_character":30,"end_line":211,"end_character":74},"in_reply_to":"7f231b9d_df8437b4","updated":"2017-06-09 18:19:36.000000000","message":"I lazily copied the dict I had.","commit_id":"07a4633a2cbc37ec570549bfa9b04d30af98f7c8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cb6406c372dd2a9c7664f9276e1cb6f085c3cf07","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                 network_id\u003dnetwork_id)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def detach_port(self, port_id):"},{"line_number":225,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding.delete_objects("},{"line_number":226,"context_line":"            self.obj_context, port_id\u003dport_id)"},{"line_number":227,"context_line":"        if not port_binding_obj:"},{"line_number":228,"context_line":"            raise exceptions.PortQosBindingNotFound(port_id\u003dport_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_3fb7ab89","line":225,"range":{"start_line":225,"start_character":8,"end_line":225,"end_character":24},"updated":"2017-06-09 17:50:43.000000000","message":"delete_objects returns number of deleted objects, not objects themselves. Please rename the variable to reflect that (maybe \u0027deleted\u0027?).","commit_id":"07a4633a2cbc37ec570549bfa9b04d30af98f7c8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6b9e9900a14549af7609a1515f59bc19bfc9f50b","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                 network_id\u003dnetwork_id)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def detach_port(self, port_id):"},{"line_number":225,"context_line":"        port_binding_obj \u003d binding.QosPolicyPortBinding.delete_objects("},{"line_number":226,"context_line":"            self.obj_context, port_id\u003dport_id)"},{"line_number":227,"context_line":"        if not port_binding_obj:"},{"line_number":228,"context_line":"            raise exceptions.PortQosBindingNotFound(port_id\u003dport_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_8ab79bd9","line":225,"range":{"start_line":225,"start_character":8,"end_line":225,"end_character":24},"in_reply_to":"7f231b9d_3fb7ab89","updated":"2017-06-09 18:19:36.000000000","message":"You are right, this name is not accurate","commit_id":"07a4633a2cbc37ec570549bfa9b04d30af98f7c8"}],"neutron/tests/unit/objects/qos/test_policy.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"dc6f04c5e5e00f95c668651ad791f51178621535","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_attach_port_nonexistent_port(self):"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        obj \u003d self._create_test_policy()"},{"line_number":207,"context_line":"        self.assertRaises(db_exc.DBReferenceError,"},{"line_number":208,"context_line":"                          obj.attach_port, uuidutils.generate_uuid())"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def test_attach_network_nonexistent_policy(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_ea26e516","line":207,"updated":"2017-05-27 00:10:58.000000000","message":"DBReferenceError is pretty ugly to throw. Can we just catch in attach_port and convert to n_exc.PortQosBindingNotFound ?","commit_id":"934d46f76843816d00ae5134be5e224f1542000c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"da105bcb69e6943f095397b1d55d304df449f73f","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_attach_port_nonexistent_port(self):"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        obj \u003d self._create_test_policy()"},{"line_number":207,"context_line":"        self.assertRaises(db_exc.DBReferenceError,"},{"line_number":208,"context_line":"                          obj.attach_port, uuidutils.generate_uuid())"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def test_attach_network_nonexistent_policy(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_ea69658b","line":207,"in_reply_to":"ff0f0b1f_ea26e516","updated":"2017-05-29 08:33:00.000000000","message":"Yes, you are right. I\u0027ll catch this one and I\u0027ll raise a neutron-lib exception.","commit_id":"934d46f76843816d00ae5134be5e224f1542000c"}],"neutron/tests/unit/objects/test_ports.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"49163853334985fa7d1478834d7a3808c131d7c7","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            self.context, port_id\u003dobj.id)"},{"line_number":318,"context_line":"        self.assertEqual(qos_binding_obj2.policy_id, obj.qos_policy_id)"},{"line_number":319,"context_line":"        qos_binding_obj \u003d binding.QosPolicyPortBinding.get_object("},{"line_number":320,"context_line":"            self.context, port_id\u003dold_policy_id)"},{"line_number":321,"context_line":"        self.assertIsNone(qos_binding_obj)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_get_objects_queries_constant(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf091321_209be372","line":320,"range":{"start_line":320,"start_character":26,"end_line":320,"end_character":48},"updated":"2017-06-08 21:26:23.000000000","message":"you pass qospolicy id as port_id. is it really what you want? of course it returns None.","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bff835f5ebe9d79f155e30a0379e0e6b7d326899","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            self.context, port_id\u003dobj.id)"},{"line_number":318,"context_line":"        self.assertEqual(qos_binding_obj2.policy_id, obj.qos_policy_id)"},{"line_number":319,"context_line":"        qos_binding_obj \u003d binding.QosPolicyPortBinding.get_object("},{"line_number":320,"context_line":"            self.context, port_id\u003dold_policy_id)"},{"line_number":321,"context_line":"        self.assertIsNone(qos_binding_obj)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_get_objects_queries_constant(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f0e0f27_6bbc49bb","line":320,"range":{"start_line":320,"start_character":26,"end_line":320,"end_character":48},"in_reply_to":"bf091321_209be372","updated":"2017-06-09 09:36:37.000000000","message":"Pffff of course it returns None.\n\nGood catch!!","commit_id":"65d9d2e563b8d744d83da4c800600ac24960de35"}]}
