From f0c4bc2ff0182292e667bbcafb349e407596148a Mon Sep 17 00:00:00 2001 From: Mark Washenberger Date: Tue, 10 May 2011 14:49:47 -0400 Subject: migration bug fixes --- .../versions/016_make_quotas_key_and_value.py | 34 ++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py b/nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py index 6bf2b19af..c03015b5e 100644 --- a/nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py +++ b/nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py @@ -108,7 +108,7 @@ def convert_forward(migrate_engine, old_quotas, new_quotas): quotas = list(migrate_engine.execute(old_quotas.select())) for quota in quotas: for resource in resources: - limit = getattr(old_quota, resource) + limit = getattr(old_quotas, resource) if limit is None: continue insert = new_quotas.insert().values( @@ -122,6 +122,30 @@ def convert_forward(migrate_engine, old_quotas, new_quotas): migrate_engine.execute(insert) +def earliest(date1, date2): + if date1 is None and date2 is None: + return None + if date1 is None: + return date2 + if date2 is None: + return date1 + if date1 < date2: + return date1 + return date2 + + +def latest(date1, date2): + if date1 is None and date2 is None: + return None + if date1 is None: + return date2 + if date2 is None: + return date1 + if date1 > date2: + return date1 + return date2 + + def convert_backward(migrate_engine, old_quotas, new_quotas): quotas = {} for quota in migrate_engine.execute(new_quotas.select()): @@ -136,10 +160,10 @@ def convert_backward(migrate_engine, old_quotas, new_quotas): quota.resource: quota.limit } else: - if quota.created_at < quotas[quota.project_id]['created_at']: - quotas[quota.project_id]['created_at'] = quota.created_at - if quota.updated_at > quotas[quota.project_id]['updated_at']: - quotas[quota.project_id]['updated_at'] = quota.updated_at + quotas[quota.project_id]['created_at'] = earliest( + quota.created_at, quotas[quota.project_id]['created_at']) + quotas[quota.project_id]['updated_at'] = latest( + quota.created_at, quotas[quota.project_id]['updated_at']) quotas[quota.project_id][quota.resource] = quota.limit for quota in quotas.itervalues(): -- cgit