diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-07-23 15:04:40 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-07-23 15:04:40 +0000 |
| commit | 363bb3418402225d3454675ec2414ab2154d1d9e (patch) | |
| tree | aebb23808561431bd40287bf142c622f759b6cbd | |
| parent | 92cdc49c28989ed7b20fd1bf6aa0c602df29379b (diff) | |
| parent | 75209cd605a430131e023c40d0f63a87b03af062 (diff) | |
| download | nova-363bb3418402225d3454675ec2414ab2154d1d9e.tar.gz nova-363bb3418402225d3454675ec2414ab2154d1d9e.tar.xz nova-363bb3418402225d3454675ec2414ab2154d1d9e.zip | |
Merge "Migrations for deleted data for previously deleted instances."
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/112_update_deleted_instance_data.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/112_update_deleted_instance_data.py b/nova/db/sqlalchemy/migrate_repo/versions/112_update_deleted_instance_data.py new file mode 100644 index 000000000..24f7f7164 --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/112_update_deleted_instance_data.py @@ -0,0 +1,67 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2012 OpenStack LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import datetime +from sqlalchemy import MetaData, Table +from sqlalchemy import and_, between + + +TABLES = ('instance_metadata', + 'instance_system_metadata', + 'block_device_mapping') + + +def upgrade(migrate_engine): + meta = MetaData() + meta.bind = migrate_engine + instances = Table('instances', meta, autoload=True) + + instance_list = list(instances.select().\ + where(instances.c.deleted == True).execute()) + for table_name in TABLES: + table = Table(table_name, meta, autoload=True) + + for instance in instance_list: + table.update( + (and_(table.c.deleted == True, + table.c.instance_uuid == instance['uuid'], + between(table.c.deleted_at, + instance['deleted_at'] - datetime.timedelta(seconds=2), + instance['deleted_at'] + datetime.timedelta(seconds=2))) + ), + {table.c.deleted: False, + table.c.deleted_at: None} + ).execute() + + +def downgrade(migrate_engine): + meta = MetaData() + meta.bind = migrate_engine + instances = Table('instances', meta, autoload=True) + + instance_list = list(instances.select().\ + where(instances.c.deleted == True).execute()) + for table_name in TABLES: + table = Table(table_name, meta, autoload=True) + for instance in instance_list: + table.update( + (and_(table.c.deleted == False, + table.c.instance_uuid == instance['uuid']) + ), + {table.c.deleted: True, + table.c.deleted_at: instance['deleted_at']} + ).execute() |
