)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5058697308c2c97b0fcf4e559fd5e5fdca0572b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"34bf2bfd_8072b79c","updated":"2023-01-31 16:54:31.000000000","message":"check experimental","commit_id":"6a6cee932b2f11a771693148aebc12d447e4dce7"},{"author":{"_account_id":11816,"name":"mike_mp@zzzcomputing.com","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"115079719fdb6da12e340ddde9d44a1c56b57956","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2869fbf7_49a5e319","updated":"2023-01-31 16:11:58.000000000","message":"for my part, I don\u0027t deal w/ neutron code really at all and I currently would have to spend a lot of time re-engaging to understand how this (apparently my) patch changes the SQL logic.   In any case, from_self() is definitely gone so @ralonsoh whatever you want to do to make the newer SQL as good as it can be is fine by me. ","commit_id":"6a6cee932b2f11a771693148aebc12d447e4dce7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3b61d5165e2f7847f33104a022469400241c1d25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"dc952c54_ae653aaf","in_reply_to":"2869fbf7_49a5e319","updated":"2023-01-31 16:54:07.000000000","message":"Thanks!","commit_id":"6a6cee932b2f11a771693148aebc12d447e4dce7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1e6f7bfb4573993f363c227306d2c75f54df4885","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d8c5f300_4dd8268a","updated":"2023-02-01 20:39:10.000000000","message":"recheck timeout fullstack","commit_id":"e98a268de4316c4f889925a3da6266e1c70306aa"}],"neutron/objects/subnet.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d463081a52b25d198aa9391d5204ac2e3c3d1f55","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        return [subnet for subnet, _mapping in results]"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @classmethod"},{"line_number":372,"context_line":"    def _query_filter_by_fixed_ips_segment(cls, query, subnet_entity, fixed_ips,"},{"line_number":373,"context_line":"            allow_multiple_segments\u003dFalse):"},{"line_number":374,"context_line":"        \"\"\"Excludes subnets not on the same segment as fixed_ips"},{"line_number":375,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_2249868a","line":372,"updated":"2020-08-03 21:24:37.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"cba4f0888d7d3a5e6cf4ef713cb83a7b0c10eaec"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4d1be8ded8d7c5de97a9246a3adfd53041eda127","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        return [subnet for subnet, _mapping in results]"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @classmethod"},{"line_number":372,"context_line":"    def _query_filter_by_fixed_ips_segment(cls, query, subnet_entity, fixed_ips,"},{"line_number":373,"context_line":"            allow_multiple_segments\u003dFalse):"},{"line_number":374,"context_line":"        \"\"\"Excludes subnets not on the same segment as fixed_ips"},{"line_number":375,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f96b661b","line":372,"updated":"2020-09-26 02:29:29.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"cba4f0888d7d3a5e6cf4ef713cb83a7b0c10eaec"},{"author":{"_account_id":11816,"name":"mike_mp@zzzcomputing.com","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"54cb06056a1c494b3cbc635877d2922f71db2992","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            and_(subnet_entity.segment_id \u003d\u003d SegmentHostMapping.segment_id,"},{"line_number":438,"context_line":"                 SegmentHostMapping.host \u003d\u003d host))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        assert cls.db_model is models_v2.Subnet"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        # Essentially \"segment_id IS NULL XNOR host IS NULL\""},{"line_number":443,"context_line":"        query \u003d query.filter(or_(and_(subnet_entity.segment_id.isnot(None),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_dc0b4fd3","line":440,"updated":"2020-08-03 17:50:40.000000000","message":"these can be removed, this is a sanity check for me to make sure this is true.   the \"cls.db_model\" approach suggests this can change, but it\u0027s not clear.    an example of how abstraction makes it harder to read the code :)","commit_id":"cba4f0888d7d3a5e6cf4ef713cb83a7b0c10eaec"},{"author":{"_account_id":11816,"name":"mike_mp@zzzcomputing.com","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"54cb06056a1c494b3cbc635877d2922f71db2992","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            query, service_type)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        query \u003d context.session.query(subnet_entity)"},{"line_number":497,"context_line":"        if query.limit(1).count():"},{"line_number":498,"context_line":"            # No, must be a deferred IP port because there are matching"},{"line_number":499,"context_line":"            # subnets. Happens on routed networks when host isn\u0027t known."},{"line_number":500,"context_line":"            raise ipam_exceptions.DeferIpam()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_1c2b0730","line":497,"updated":"2020-08-03 17:50:40.000000000","message":"this is actually a pretty inefficient way to do this query.   query.count() also adds a big subquery scaffold so that it works in all cases.    count() is another thing 2.0 is going to ask users to spell out in SELECT form (really all of Query is either going away or being placed in \"legacy\" mode, likely the latter).","commit_id":"cba4f0888d7d3a5e6cf4ef713cb83a7b0c10eaec"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f2d32ff1814a0c2fd4ec45f40ace37f56d1b755c","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                 service_type \u003d\u003d const.DEVICE_OWNER_DHCP)))"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        entity \u003d orm.aliased(Subnet, query.subquery())"},{"line_number":185,"context_line":"        return entity"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"# RBAC metaclass is not applied here because \u0027shared\u0027 attribute of Subnet"}],"source_content_type":"text/x-python","patch_set":3,"id":"287fe178_40c0dcba","line":185,"updated":"2021-04-15 09:04:01.000000000","message":"I think this change could be much easier. This method should be moved to class \"Subnet\", because this is a filter to be added to a subnet query. It is called from Subnet.network_has_no_subnet and Subnet.find_candidate_subnets and the \"query\" parameter passed has DB model Subnet.\n\nOnce we have moved it there and we describe it in the method documentation, we can slim down this method to just a filter.\n\n        ServiceType \u003d subnet_service_type.SubnetServiceType\n        return query.outerjoin(\n            ServiceType, or_(\n                ServiceType.service_type.is_(None),\n                ServiceType.service_type \u003d\u003d service_type,\n                # Allow DHCP ports to be created on subnets of any\n                # service type when DHCP is enabled on the subnet.\n                and_(cls.db_model.enable_dhcp.is_(True),\n                     service_type \u003d\u003d const.DEVICE_OWNER_DHCP)))\n\n\nThis will add the following section to the sql query:\n        LEFT OUTER JOIN\n          subnet_service_types ON subnet_service_types.service_type IS NULL\n          OR subnet_service_types.service_type \u003d \u003cservice_type\u003e\n          OR FALSE \u003d 1\n\nThis is actually what we need to filter.","commit_id":"fd753a6bf589a6b0c96384c5cf0ca1a2a263892d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a38c00885245eff0439f172965431312dfc1966a","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                 service_type \u003d\u003d const.DEVICE_OWNER_DHCP)))"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        entity \u003d orm.aliased(Subnet, query.subquery())"},{"line_number":185,"context_line":"        return entity"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"# RBAC metaclass is not applied here because \u0027shared\u0027 attribute of Subnet"}],"source_content_type":"text/x-python","patch_set":3,"id":"0fc1bb04_b1d3c4d6","line":185,"in_reply_to":"287fe178_40c0dcba","updated":"2023-02-01 14:30:48.000000000","message":"Done","commit_id":"fd753a6bf589a6b0c96384c5cf0ca1a2a263892d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"696478f4291adf9ba13a2da83429961a3bc3eedb","unresolved":true,"context_lines":[{"line_number":437,"context_line":"            and_(subnet_entity.segment_id \u003d\u003d SegmentHostMapping.segment_id,"},{"line_number":438,"context_line":"                 SegmentHostMapping.host \u003d\u003d host))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # here, we assume this assertion is true"},{"line_number":441,"context_line":"        # assert cls.db_model is models_v2.Subnet"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # Essentially \"segment_id IS NULL XNOR host IS NULL\""},{"line_number":444,"context_line":"        query \u003d query.filter(or_(and_(subnet_entity.segment_id.isnot(None),"}],"source_content_type":"text/x-python","patch_set":3,"id":"74ce45a3_7825727b","line":441,"range":{"start_line":440,"start_character":8,"end_line":441,"end_character":49},"updated":"2021-04-15 07:14:54.000000000","message":"same as above, right?","commit_id":"fd753a6bf589a6b0c96384c5cf0ca1a2a263892d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"951b93db037e8e948f5aa3f4d11370911fb3b2d5","unresolved":true,"context_lines":[{"line_number":437,"context_line":"            and_(subnet_entity.segment_id \u003d\u003d SegmentHostMapping.segment_id,"},{"line_number":438,"context_line":"                 SegmentHostMapping.host \u003d\u003d host))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # here, we assume this assertion is true"},{"line_number":441,"context_line":"        # assert cls.db_model is models_v2.Subnet"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # Essentially \"segment_id IS NULL XNOR host IS NULL\""},{"line_number":444,"context_line":"        query \u003d query.filter(or_(and_(subnet_entity.segment_id.isnot(None),"}],"source_content_type":"text/x-python","patch_set":3,"id":"15baac4c_21716a24","line":441,"range":{"start_line":440,"start_character":8,"end_line":441,"end_character":49},"in_reply_to":"08bed577_4a9c2b6b","updated":"2023-02-01 14:30:06.000000000","message":"This is a leftover from my last rebase due to a conflict. I\u0027ll remove it.","commit_id":"fd753a6bf589a6b0c96384c5cf0ca1a2a263892d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a38c00885245eff0439f172965431312dfc1966a","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            and_(subnet_entity.segment_id \u003d\u003d SegmentHostMapping.segment_id,"},{"line_number":438,"context_line":"                 SegmentHostMapping.host \u003d\u003d host))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # here, we assume this assertion is true"},{"line_number":441,"context_line":"        # assert cls.db_model is models_v2.Subnet"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # Essentially \"segment_id IS NULL XNOR host IS NULL\""},{"line_number":444,"context_line":"        query \u003d query.filter(or_(and_(subnet_entity.segment_id.isnot(None),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f808893_5f57c4be","line":441,"range":{"start_line":440,"start_character":8,"end_line":441,"end_character":49},"in_reply_to":"15baac4c_21716a24","updated":"2023-02-01 14:30:48.000000000","message":"Done","commit_id":"fd753a6bf589a6b0c96384c5cf0ca1a2a263892d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"055bd87381ce22587eecbf30549051af77476d68","unresolved":true,"context_lines":[{"line_number":437,"context_line":"            and_(subnet_entity.segment_id \u003d\u003d SegmentHostMapping.segment_id,"},{"line_number":438,"context_line":"                 SegmentHostMapping.host \u003d\u003d host))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # here, we assume this assertion is true"},{"line_number":441,"context_line":"        # assert cls.db_model is models_v2.Subnet"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # Essentially \"segment_id IS NULL XNOR host IS NULL\""},{"line_number":444,"context_line":"        query \u003d query.filter(or_(and_(subnet_entity.segment_id.isnot(None),"}],"source_content_type":"text/x-python","patch_set":3,"id":"08bed577_4a9c2b6b","line":441,"range":{"start_line":440,"start_character":8,"end_line":441,"end_character":49},"in_reply_to":"74ce45a3_7825727b","updated":"2023-02-01 10:10:54.000000000","message":"Not sure what I meant here, probably that this comment may be placed before #438 where `cls.db_model` was replaced with subnet_entity for the first time","commit_id":"fd753a6bf589a6b0c96384c5cf0ca1a2a263892d"}]}
