From: John Griffith Date: Tue, 21 Aug 2012 20:00:18 +0000 (-0600) Subject: Migrate volume related quota info in db migration X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=ca25ea47782be90f65e9e5311de295499de19f2b;p=openstack-build%2Fcinder-build.git Migrate volume related quota info in db migration * Fixes bug 1039615 * Now that quotas are back we need to handle migration of volume related quota data in the cinder-manage migrate helper * Only resource types transferred are volumes and gigabytes Change-Id: Idd9aab834612e929683491f47fa1e1861bdbd0d1 --- diff --git a/bin/cinder-manage b/bin/cinder-manage index 566c2b637..3b2978b8e 100755 --- a/bin/cinder-manage +++ b/bin/cinder-manage @@ -279,6 +279,11 @@ class ImportCommands(object): 'volume_metadata', 'volume_type_extra_specs'] + quota_table_list = ['quota_classes', + 'quota_usages', + 'quotas', + 'reservations'] + if backup_db > 0: if 'mysql:' not in dest_db: print (_('Sorry, only mysql backups are supported!')) @@ -301,6 +306,18 @@ class ImportCommands(object): dest.add(new_row(**data)) dest.commit() + for table_name in quota_table_list: + print (_('Importing table %s...' % table_name)) + table = Table(table_name, src_meta, autoload=True) + new_row = self._map_table(table) + columns = table.columns.keys() + for row in src.query(table).all(): + if row.resource == 'gigabytes' or row.resource == 'volumes': + data = dict([(str(column), getattr(row, column)) + for column in columns]) + dest.add(new_row(**data)) + dest.commit() + @args('--src', dest='src_db', metavar='', help='db-engine://db_user[:passwd]@db_host[:port]\t\t' 'example: mysql://root:secrete@192.168.137.1')