1
# Copyright 2011 OpenStack LLC.
3
# Licensed under the Apache License, Version 2.0 (the "License"); you may
4
# not use this file except in compliance with the License. You may obtain
5
# a copy of the License at
7
# http://www.apache.org/licenses/LICENSE-2.0
9
# Unless required by applicable law or agreed to in writing, software
10
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
# License for the specific language governing permissions and limitations
15
from sqlalchemy import Column, Integer, Float, MetaData, Table
20
def _get_table(table_name):
21
return Table(table_name, meta, autoload=True)
23
rxtx_base = Column('rxtx_base', Integer)
24
rxtx_factor = Column('rxtx_factor', Float, default=1)
25
rxtx_quota = Column('rxtx_quota', Integer)
26
rxtx_cap = Column('rxtx_cap', Integer)
29
def upgrade(migrate_engine):
30
meta.bind = migrate_engine
31
instance_types = _get_table('instance_types')
32
networks = _get_table('networks')
34
instance_types.create_column(rxtx_factor)
35
networks.create_column(rxtx_base)
37
base = migrate_engine.execute(_("select min(rxtx_cap) as min_rxtx from "\
38
"instance_types where rxtx_cap > 0"))\
40
base = base if base > 1 else 1
41
update_i_type_sql = _("update instance_types set rxtx_factor = rxtx_cap"\
42
"/%s where rxtx_cap > 0" % base)
43
migrate_engine.execute(update_i_type_sql)
44
migrate_engine.execute("update networks set rxtx_base = %s" % base)
46
instance_types.c.rxtx_quota.drop()
47
instance_types.c.rxtx_cap.drop()
50
def downgrade(migrate_engine):
51
meta.bind = migrate_engine
52
instance_types = _get_table('instance_types')
53
networks = _get_table('networks')
55
instance_types.create_column(rxtx_quota)
56
instance_types.create_column(rxtx_cap)
58
base = migrate_engine.execute(_("select min(rxtx_base) from networks "\
59
"where rxtx_base > 0")).scalar()
60
base = base if base > 1 else 1
62
update_i_type_sql = (_("update instance_types set rxtx_cap = " \
63
"rxtx_factor * %s" % base))
64
migrate_engine.execute(update_i_type_sql)
66
instance_types.c.rxtx_factor.drop()
67
networks.c.rxtx_base.drop()