From d3492d9b0bb3ef224e01c1b49191fa484c9f1b5b Mon Sep 17 00:00:00 2001 From: Oleg Bondarev Date: Thu, 16 May 2019 13:45:56 +0400 Subject: [PATCH] Define orm relationships after db classes This is to fix race conditions on neutron server init. Please see bug for details. Conflicts: neutron/db/models/flavor.py Change-Id: I943e6397319b9a4a7fc1a5b3acb721920ddffb02 Partial-Bug: #1824299 (cherry picked from commit 38daf9eaae8538c74933b19c952ad0612751c027) (cherry picked from commit d7945c60b0e2d56f2f1f7781b20aa9194af26082) --- neutron/db/models/flavor.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/neutron/db/models/flavor.py b/neutron/db/models/flavor.py index 0404f6133c5..6b822e78d0b 100644 --- a/neutron/db/models/flavor.py +++ b/neutron/db/models/flavor.py @@ -23,8 +23,6 @@ class Flavor(model_base.BASEV2, model_base.HasId): server_default=sa.sql.true()) # Make it True for multi-type flavors service_type = sa.Column(sa.String(36), nullable=True) - service_profiles = orm.relationship("FlavorServiceProfileBinding", - cascade="all, delete-orphan", lazy="subquery") class ServiceProfile(model_base.BASEV2, model_base.HasId): @@ -33,7 +31,6 @@ class ServiceProfile(model_base.BASEV2, model_base.HasId): enabled = sa.Column(sa.Boolean, nullable=False, default=True, server_default=sa.sql.true()) metainfo = sa.Column(sa.String(4096)) - flavors = orm.relationship("FlavorServiceProfileBinding") class FlavorServiceProfileBinding(model_base.BASEV2): @@ -41,9 +38,14 @@ class FlavorServiceProfileBinding(model_base.BASEV2): sa.ForeignKey("flavors.id", ondelete="CASCADE"), nullable=False, primary_key=True) - flavor = orm.relationship(Flavor) + flavor = orm.relationship(Flavor, + backref=orm.backref( + "service_profiles", + lazy='subquery', + cascade="all, delete-orphan")) service_profile_id = sa.Column(sa.String(36), sa.ForeignKey("serviceprofiles.id", ondelete="CASCADE"), nullable=False, primary_key=True) - service_profile = orm.relationship(ServiceProfile) + service_profile = orm.relationship(ServiceProfile, + backref="flavors")