Merge "[sqlalchemy-20] Use sqlalchemy.orm.DeclarativeBase"

This commit is contained in:
Zuul
2024-02-05 13:02:52 +00:00
committed by Gerrit Code Review
3 changed files with 30 additions and 5 deletions

View File

@@ -110,4 +110,10 @@ class NeutronBaseV2(_NeutronBase):
return cls.__name__.lower() + 's'
BASEV2 = declarative.declarative_base(cls=NeutronBaseV2)
try:
# SQLAlchemy 2.0
class BASEV2(orm.DeclarativeBase, NeutronBaseV2):
pass
except AttributeError:
# SQLAlchemy < 2.0
BASEV2 = declarative.declarative_base(cls=NeutronBaseV2)

View File

@@ -15,6 +15,7 @@
import gc
from sqlalchemy.ext import declarative
from sqlalchemy import orm
import testtools
from neutron_lib.db import standard_attr
@@ -29,8 +30,17 @@ class StandardAttrTestCase(base.BaseTestCase):
def _make_decl_base(self):
# construct a new base so we don't interfere with the main
# base used in the sql test fixtures
return declarative.declarative_base(
cls=standard_attr.model_base.NeutronBaseV2)
try:
# SQLAlchemy 2.0
class BaseV2(orm.DeclarativeBase,
standard_attr.model_base.NeutronBaseV2):
pass
return BaseV2
except AttributeError:
# SQLAlchemy < 2.0
return declarative.declarative_base(
cls=standard_attr.model_base.NeutronBaseV2)
def test_standard_attr_resource_model_map(self):
rs_map = standard_attr.get_standard_attr_resource_model_map()

View File

@@ -26,14 +26,23 @@ from neutron_lib import exceptions as n_exc
from neutron_lib.tests import _base as base
class FakePort(declarative.declarative_base(cls=models.ModelBase)):
try:
# SQLAlchemy 2.0
class ModelBaseV2(orm.DeclarativeBase, models.ModelBase):
pass
except AttributeError:
# SQLAlchemy < 2.0
ModelBaseV2 = declarative.declarative_base(cls=models.ModelBase)
class FakePort(ModelBaseV2):
__tablename__ = 'fakeports'
port_id = sa.Column(sa.String(36), primary_key=True)
name = sa.Column(sa.String(64))
status = sa.Column(sa.String(16), nullable=False)
class FakeRouter(declarative.declarative_base(cls=models.ModelBase)):
class FakeRouter(ModelBaseV2):
__tablename__ = 'fakerouters'
router_id = sa.Column(sa.String(36), primary_key=True)
gw_port_id = sa.Column(sa.String(36), sa.ForeignKey(FakePort.port_id))