From 7498f4f213747aa2f8dbc195f22dab3f679c435f Mon Sep 17 00:00:00 2001 From: Morgan Fainberg Date: Fri, 13 Apr 2012 22:42:11 +0000 Subject: [PATCH] Fix to return deleted InstanceTypes when appropriate api.py - adding in read_deleted="yes" to instance_type_get_by_id as we do want to return deleted InstanceTypes as we are requesting by "ID" and IDs should _NOT_ ever be reused models.py - chaning the relationship for joinedload() for instance to instance_type to return deleted instance_types. This is _proper_ functionality so we can handle cases where instance records (running or not) are referencing deleted instance types. This prevents a crash on-startup scenario in nova-compute (nova-cpu). --- nova/db/sqlalchemy/api.py | 3 +-- nova/db/sqlalchemy/models.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 69e44cd..18575e9 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -3398,10 +3398,9 @@ def instance_type_get_by_name(context, name, session=None): @require_context def instance_type_get_by_flavor_id(context, flavor_id, session=None): """Returns a dict describing specific flavor_id""" - result = _instance_type_get_query(context, session=session).\ + result = _instance_type_get_query(context, session=session, read_deleted="yes").\ filter_by(flavorid=flavor_id).\ first() - if not result: raise exception.FlavorNotFound(flavor_id=flavor_id) diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 3865cd5..55b4df9 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -328,8 +328,7 @@ class InstanceTypes(BASE, NovaBase): foreign_keys=id, primaryjoin='and_(' 'Instance.instance_type_id == ' - 'InstanceTypes.id, ' - 'InstanceTypes.deleted == False)') + 'InstanceTypes.id) ') class Volume(BASE, NovaBase): -- 1.7.5.4