)]}'
{"neutron/db/rangeallocator.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"32e852dadf1098614dbd9fe121a6064210cc94f4","unresolved":true,"context_lines":[{"line_number":113,"context_line":"            )"},{"line_number":114,"context_line":"        ).subquery()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _make_params(self, min_val, max_val, scope_val, allocation_id):"},{"line_number":117,"context_line":"        \"\"\"Return the bind parameter dict for execute()."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        Subclasses that introduce additional bind parameters in _gap_source()"}],"source_content_type":"text/x-python","patch_set":4,"id":"40642a6e_ef988bb7","line":116,"updated":"2026-06-05 14:51:02.000000000","message":"supernit: `@staticmethod`","commit_id":"d758dd7ef2cb0b456884237ac0001a9c1b5d6b24"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b54b618a1b655141f1ba7440260f0f72db76cf37","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            )"},{"line_number":114,"context_line":"        ).subquery()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _make_params(self, min_val, max_val, scope_val, allocation_id):"},{"line_number":117,"context_line":"        \"\"\"Return the bind parameter dict for execute()."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        Subclasses that introduce additional bind parameters in _gap_source()"}],"source_content_type":"text/x-python","patch_set":4,"id":"0b177f05_c0c76cd3","line":116,"in_reply_to":"40642a6e_ef988bb7","updated":"2026-06-09 20:35:48.000000000","message":"Done","commit_id":"d758dd7ef2cb0b456884237ac0001a9c1b5d6b24"}],"neutron/tests/functional/db/test_rangeallocator.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"32e852dadf1098614dbd9fe121a6064210cc94f4","unresolved":true,"context_lines":[{"line_number":235,"context_line":"                         \"produce distinct VNIs, got %s\" % results)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class TestRandomRangeAllocator(testlib_api.SqlTestCase):"},{"line_number":239,"context_line":"    \"\"\"Tests for RangeAllocator with strategy\u003dRANDOM."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    Runs against SQLite by default."},{"line_number":242,"context_line":"    TestRandomRangeAllocatorMySQL runs the same suite against MySQL."},{"line_number":243,"context_line":"    \"\"\""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def setUp(self):"},{"line_number":246,"context_line":"        super().setUp()"},{"line_number":247,"context_line":"        self.ctx \u003d context.Context("},{"line_number":248,"context_line":"            user_id\u003dNone, project_id\u003dNone, is_admin\u003dTrue, overwrite\u003dFalse)"},{"line_number":249,"context_line":"        self.table \u003d alloc_models.VNIAllocation.__table__"},{"line_number":250,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":251,"context_line":"            self.allocator \u003d rangeallocator.RandomRangeAllocator("},{"line_number":252,"context_line":"                table\u003dself.table,"},{"line_number":253,"context_line":"                value_col_name\u003d\u0027vni\u0027,"},{"line_number":254,"context_line":"                scope_col_name\u003d\u0027physnet\u0027,"},{"line_number":255,"context_line":"                scope_param_type\u003dsa.String,"},{"line_number":256,"context_line":"                exception_class\u003devpn_exc.EVPNNoVniAvailable,"},{"line_number":257,"context_line":"            )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _allocate(self, min_vni\u003d1, max_vni\u003d10, physnet\u003d_PHYSNET):"},{"line_number":260,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":261,"context_line":"            return self.allocator.allocate("},{"line_number":262,"context_line":"                self.ctx, min_vni, max_vni, physnet)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def _insert(self, vni, physnet\u003d_PHYSNET):"},{"line_number":265,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7c74fe88_362d4db7","line":262,"range":{"start_line":238,"start_character":0,"end_line":262,"end_character":52},"updated":"2026-06-05 14:51:02.000000000","message":"Can we make a `TestRangeAllocatorBase` class with the common code? This seems exact copy \u0026 paste except the allocator class.","commit_id":"d758dd7ef2cb0b456884237ac0001a9c1b5d6b24"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"67222d1b07998a25e0fec0b002f96a53c537f17a","unresolved":true,"context_lines":[{"line_number":235,"context_line":"                         \"produce distinct VNIs, got %s\" % results)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class TestRandomRangeAllocator(testlib_api.SqlTestCase):"},{"line_number":239,"context_line":"    \"\"\"Tests for RangeAllocator with strategy\u003dRANDOM."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    Runs against SQLite by default."},{"line_number":242,"context_line":"    TestRandomRangeAllocatorMySQL runs the same suite against MySQL."},{"line_number":243,"context_line":"    \"\"\""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def setUp(self):"},{"line_number":246,"context_line":"        super().setUp()"},{"line_number":247,"context_line":"        self.ctx \u003d context.Context("},{"line_number":248,"context_line":"            user_id\u003dNone, project_id\u003dNone, is_admin\u003dTrue, overwrite\u003dFalse)"},{"line_number":249,"context_line":"        self.table \u003d alloc_models.VNIAllocation.__table__"},{"line_number":250,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":251,"context_line":"            self.allocator \u003d rangeallocator.RandomRangeAllocator("},{"line_number":252,"context_line":"                table\u003dself.table,"},{"line_number":253,"context_line":"                value_col_name\u003d\u0027vni\u0027,"},{"line_number":254,"context_line":"                scope_col_name\u003d\u0027physnet\u0027,"},{"line_number":255,"context_line":"                scope_param_type\u003dsa.String,"},{"line_number":256,"context_line":"                exception_class\u003devpn_exc.EVPNNoVniAvailable,"},{"line_number":257,"context_line":"            )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _allocate(self, min_vni\u003d1, max_vni\u003d10, physnet\u003d_PHYSNET):"},{"line_number":260,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":261,"context_line":"            return self.allocator.allocate("},{"line_number":262,"context_line":"                self.ctx, min_vni, max_vni, physnet)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def _insert(self, vni, physnet\u003d_PHYSNET):"},{"line_number":265,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"}],"source_content_type":"text/x-python","patch_set":4,"id":"c18a987e_c357ba46","line":262,"range":{"start_line":238,"start_character":0,"end_line":262,"end_character":52},"in_reply_to":"7c74fe88_362d4db7","updated":"2026-06-08 09:31:15.000000000","message":"+1","commit_id":"d758dd7ef2cb0b456884237ac0001a9c1b5d6b24"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b54b618a1b655141f1ba7440260f0f72db76cf37","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                         \"produce distinct VNIs, got %s\" % results)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class TestRandomRangeAllocator(testlib_api.SqlTestCase):"},{"line_number":239,"context_line":"    \"\"\"Tests for RangeAllocator with strategy\u003dRANDOM."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    Runs against SQLite by default."},{"line_number":242,"context_line":"    TestRandomRangeAllocatorMySQL runs the same suite against MySQL."},{"line_number":243,"context_line":"    \"\"\""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def setUp(self):"},{"line_number":246,"context_line":"        super().setUp()"},{"line_number":247,"context_line":"        self.ctx \u003d context.Context("},{"line_number":248,"context_line":"            user_id\u003dNone, project_id\u003dNone, is_admin\u003dTrue, overwrite\u003dFalse)"},{"line_number":249,"context_line":"        self.table \u003d alloc_models.VNIAllocation.__table__"},{"line_number":250,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":251,"context_line":"            self.allocator \u003d rangeallocator.RandomRangeAllocator("},{"line_number":252,"context_line":"                table\u003dself.table,"},{"line_number":253,"context_line":"                value_col_name\u003d\u0027vni\u0027,"},{"line_number":254,"context_line":"                scope_col_name\u003d\u0027physnet\u0027,"},{"line_number":255,"context_line":"                scope_param_type\u003dsa.String,"},{"line_number":256,"context_line":"                exception_class\u003devpn_exc.EVPNNoVniAvailable,"},{"line_number":257,"context_line":"            )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _allocate(self, min_vni\u003d1, max_vni\u003d10, physnet\u003d_PHYSNET):"},{"line_number":260,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":261,"context_line":"            return self.allocator.allocate("},{"line_number":262,"context_line":"                self.ctx, min_vni, max_vni, physnet)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def _insert(self, vni, physnet\u003d_PHYSNET):"},{"line_number":265,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"}],"source_content_type":"text/x-python","patch_set":4,"id":"37423582_4b4a3288","line":262,"range":{"start_line":238,"start_character":0,"end_line":262,"end_character":52},"in_reply_to":"c18a987e_c357ba46","updated":"2026-06-09 20:35:48.000000000","message":"Done","commit_id":"d758dd7ef2cb0b456884237ac0001a9c1b5d6b24"}]}
