~yolanda.robla/nova/precise-security

« back to all changes in this revision

Viewing changes to nova/db/sqlalchemy/migrate_repo/versions/059_split_rxtx_quota_into_network.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-02 10:56:30 UTC
  • mto: (79.1.1 precise-proposed)
  • mto: This revision was merged to the branch mainline in revision 53.
  • Revision ID: package-import@ubuntu.com-20111202105630-tjly1gpmdh533s0q
Tags: upstream-2012.1~e2~20111202.11641
ImportĀ upstreamĀ versionĀ 2012.1~e2~20111202.11641

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2011 OpenStack LLC.
 
2
#
 
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
 
6
#
 
7
#         http://www.apache.org/licenses/LICENSE-2.0
 
8
#
 
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
 
13
#    under the License.
 
14
 
 
15
from sqlalchemy import Column, Integer, Float, MetaData, Table
 
16
 
 
17
meta = MetaData()
 
18
 
 
19
 
 
20
def _get_table(table_name):
 
21
    return Table(table_name, meta, autoload=True)
 
22
 
 
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)
 
27
 
 
28
 
 
29
def upgrade(migrate_engine):
 
30
    meta.bind = migrate_engine
 
31
    instance_types = _get_table('instance_types')
 
32
    networks = _get_table('networks')
 
33
 
 
34
    instance_types.create_column(rxtx_factor)
 
35
    networks.create_column(rxtx_base)
 
36
 
 
37
    base = migrate_engine.execute(_("select min(rxtx_cap) as min_rxtx from "\
 
38
                                    "instance_types where rxtx_cap > 0"))\
 
39
                                    .scalar()
 
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)
 
45
 
 
46
    instance_types.c.rxtx_quota.drop()
 
47
    instance_types.c.rxtx_cap.drop()
 
48
 
 
49
 
 
50
def downgrade(migrate_engine):
 
51
    meta.bind = migrate_engine
 
52
    instance_types = _get_table('instance_types')
 
53
    networks = _get_table('networks')
 
54
 
 
55
    instance_types.create_column(rxtx_quota)
 
56
    instance_types.create_column(rxtx_cap)
 
57
 
 
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
 
61
 
 
62
    update_i_type_sql = (_("update instance_types set rxtx_cap = " \
 
63
                         "rxtx_factor * %s" % base))
 
64
    migrate_engine.execute(update_i_type_sql)
 
65
 
 
66
    instance_types.c.rxtx_factor.drop()
 
67
    networks.c.rxtx_base.drop()