)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7909d31b9e1e5165c7a05d89b7a3422d151552e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2b765cd1_0b6a79ef","updated":"2026-06-15 13:50:00.000000000","message":"Thanks for the catch/fix! Just one small improvement suggestion below. We could also add a random test that tests the entire range multiple times and ensure we don\u0027t get the same number to test randomness (but could do that later)","commit_id":"f937f0b9d871b09018a75ce3e808cd145ae5debb"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d4b1d700fc45dcd2f8304c7c8bd66bd6a8ea41f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dd30a48a_199dd611","updated":"2026-06-15 13:51:08.000000000","message":"Thanks! +2\u0027ing assuming the CI passes","commit_id":"f937f0b9d871b09018a75ce3e808cd145ae5debb"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"67839a63157b3b4363fa018b35d0a2fffbf6915c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"14f01a69_a6b67611","updated":"2026-06-15 17:06:52.000000000","message":"just added the ruff-applied pep8 fix.","commit_id":"b4c11448829adeb6cc9d25afc9588ad2fa9947c6"}],"neutron/db/rangeallocator.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a9194bad765f84880b7b7cf9e69ceda81f013568","unresolved":true,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @staticmethod"},{"line_number":244,"context_line":"    def _make_params(min_val, max_val, scope_val, allocation_id):"},{"line_number":245,"context_line":"        params \u003d RangeAllocator._make_params("},{"line_number":246,"context_line":"            min_val, max_val, scope_val, allocation_id)"},{"line_number":247,"context_line":"        params[\u0027rand_val\u0027] \u003d _random.random()  # noqa: S311"},{"line_number":248,"context_line":"        return params"}],"source_content_type":"text/x-python","patch_set":1,"id":"667fbd58_2cc28924","line":245,"range":{"start_line":245,"start_character":17,"end_line":245,"end_character":31},"updated":"2026-06-15 08:10:46.000000000","message":"Or we can make both methods `@classmethod`.","commit_id":"a163c8c1ec09ceebf14f9e20ba82466aa2cbb100"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d4b1d700fc45dcd2f8304c7c8bd66bd6a8ea41f2","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @staticmethod"},{"line_number":244,"context_line":"    def _make_params(min_val, max_val, scope_val, allocation_id):"},{"line_number":245,"context_line":"        params \u003d RangeAllocator._make_params("},{"line_number":246,"context_line":"            min_val, max_val, scope_val, allocation_id)"},{"line_number":247,"context_line":"        params[\u0027rand_val\u0027] \u003d _random.random()  # noqa: S311"},{"line_number":248,"context_line":"        return params"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f276e78_3b3475ba","line":245,"range":{"start_line":245,"start_character":17,"end_line":245,"end_character":31},"in_reply_to":"667fbd58_2cc28924","updated":"2026-06-15 13:51:08.000000000","message":"I think the current code makes no sense as the class itself is not really needed.","commit_id":"a163c8c1ec09ceebf14f9e20ba82466aa2cbb100"}],"neutron/tests/functional/db/test_rangeallocator.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7909d31b9e1e5165c7a05d89b7a3422d151552e0","unresolved":true,"context_lines":[{"line_number":44,"context_line":"        self.ctx \u003d context.Context("},{"line_number":45,"context_line":"            user_id\u003dNone, project_id\u003dNone, is_admin\u003dTrue, overwrite\u003dFalse)"},{"line_number":46,"context_line":"        self.table \u003d alloc_models.VNIAllocation.__table__"},{"line_number":47,"context_line":"        self.allocator \u003d rangeallocator.RangeAllocator("},{"line_number":48,"context_line":"            table\u003dself.table,"},{"line_number":49,"context_line":"            value_col_name\u003d\u0027vni\u0027,"},{"line_number":50,"context_line":"            scope_col_name\u003d\u0027physnet\u0027,"},{"line_number":51,"context_line":"            scope_param_type\u003dsa.String,"},{"line_number":52,"context_line":"            exception_class\u003devpn_exc.EVPNNoVniAvailable,"},{"line_number":53,"context_line":"        )"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _allocate(self, min_vni\u003d1, max_vni\u003d100, physnet\u003d_PHYSNET):"},{"line_number":56,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5db6a4bf_8a47c3dc","line":53,"range":{"start_line":47,"start_character":0,"end_line":53,"end_character":9},"updated":"2026-06-15 13:50:00.000000000","message":"We should move this to TestRangeAllocator so that it isn\u0027t allocated and thrown away when TestRandomRangeAllocator.setUp() is called.","commit_id":"f937f0b9d871b09018a75ce3e808cd145ae5debb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"12d17e499e15709ac88dbdfe5b88eb60d7f9f43c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.ctx \u003d context.Context("},{"line_number":45,"context_line":"            user_id\u003dNone, project_id\u003dNone, is_admin\u003dTrue, overwrite\u003dFalse)"},{"line_number":46,"context_line":"        self.table \u003d alloc_models.VNIAllocation.__table__"},{"line_number":47,"context_line":"        self.allocator \u003d rangeallocator.RangeAllocator("},{"line_number":48,"context_line":"            table\u003dself.table,"},{"line_number":49,"context_line":"            value_col_name\u003d\u0027vni\u0027,"},{"line_number":50,"context_line":"            scope_col_name\u003d\u0027physnet\u0027,"},{"line_number":51,"context_line":"            scope_param_type\u003dsa.String,"},{"line_number":52,"context_line":"            exception_class\u003devpn_exc.EVPNNoVniAvailable,"},{"line_number":53,"context_line":"        )"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _allocate(self, min_vni\u003d1, max_vni\u003d100, physnet\u003d_PHYSNET):"},{"line_number":56,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9c6095c5_6bd1f822","line":53,"range":{"start_line":47,"start_character":0,"end_line":53,"end_character":9},"in_reply_to":"5db6a4bf_8a47c3dc","updated":"2026-06-15 13:52:22.000000000","message":"Done","commit_id":"f937f0b9d871b09018a75ce3e808cd145ae5debb"}]}
