~ubuntu-branches/ubuntu/raring/nova/raring-proposed

« back to all changes in this revision

Viewing changes to nova/db/sqlalchemy/migrate_repo/versions/114_vifs_uses_uuid.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, Adam Gandelman, Chuck Short
  • Date: 2012-11-23 09:04:58 UTC
  • mfrom: (1.1.66)
  • Revision ID: package-import@ubuntu.com-20121123090458-91565o7aev1i1h71
Tags: 2013.1~g1-0ubuntu1
[ Adam Gandelman ]
* debian/control: Ensure novaclient is upgraded with nova,
  require python-keystoneclient >= 1:2.9.0. (LP: #1073289)
* debian/patches/{ubuntu/*, rbd-security.patch}: Dropped, applied
  upstream.
* debian/control: Add python-testtools to Build-Depends.

[ Chuck Short ]
* New upstream version.
* Refreshed debian/patches/avoid_setuptools_git_dependency.patch.
* debian/rules: FTBFS if missing binaries.
* debian/nova-scheudler.install: Add missing rabbit-queues and
  nova-rpc-zmq-receiver.
* Remove nova-volume since it doesnt exist anymore, transition to cinder-*.
* debian/rules: install apport hook in the right place.
* debian/patches/ubuntu-show-tests.patch: Display test failures.
* debian/control: Add depends on genisoimage
* debian/control: Suggest guestmount.
* debian/control: Suggest websockify. (LP: #1076442)
* debian/nova.conf: Disable nova-volume service.
* debian/control: Depend on xen-system-* rather than the hypervisor.
* debian/control, debian/mans/nova-conductor.8, debian/nova-conductor.init,
  debian/nova-conductor.install, debian/nova-conductor.logrotate
  debian/nova-conductor.manpages, debian/nova-conductor.postrm
  debian/nova-conductor.upstart.in: Add nova-conductor service.
* debian/control: Add python-fixtures as a build deps.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
 
 
3
 
# Copyright 2011 OpenStack LLC.
4
 
# Copyright 2012 Michael Still and Canonical Inc
5
 
# All Rights Reserved.
6
 
#
7
 
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
8
 
#    not use this file except in compliance with the License. You may obtain
9
 
#    a copy of the License at
10
 
#
11
 
#         http://www.apache.org/licenses/LICENSE-2.0
12
 
#
13
 
#    Unless required by applicable law or agreed to in writing, software
14
 
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
 
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
 
#    License for the specific language governing permissions and limitations
17
 
#    under the License.
18
 
 
19
 
from migrate import ForeignKeyConstraint
20
 
from sqlalchemy import MetaData, String, Table
21
 
from sqlalchemy import select, Column, ForeignKey, Integer
22
 
 
23
 
from nova.openstack.common import log as logging
24
 
 
25
 
 
26
 
LOG = logging.getLogger(__name__)
27
 
 
28
 
 
29
 
def upgrade(migrate_engine):
30
 
    meta = MetaData()
31
 
    meta.bind = migrate_engine
32
 
    virtual_interfaces = Table('virtual_interfaces', meta, autoload=True)
33
 
    instances = Table('instances', meta, autoload=True)
34
 
    uuid_column = Column('instance_uuid', String(36))
35
 
    uuid_column.create(virtual_interfaces)
36
 
 
37
 
    try:
38
 
        virtual_interfaces.update().values(
39
 
            instance_uuid=select(
40
 
                [instances.c.uuid],
41
 
                instances.c.id == virtual_interfaces.c.instance_id)
42
 
        ).execute()
43
 
    except Exception:
44
 
        uuid_column.drop()
45
 
        raise
46
 
 
47
 
    fkeys = list(virtual_interfaces.c.instance_id.foreign_keys)
48
 
    if fkeys:
49
 
        try:
50
 
            fkey_name = fkeys[0].constraint.name
51
 
            ForeignKeyConstraint(
52
 
                columns=[virtual_interfaces.c.instance_id],
53
 
                refcolumns=[instances.c.id],
54
 
                name=fkey_name).drop()
55
 
        except Exception:
56
 
            LOG.error(_("foreign key constraint couldn't be removed"))
57
 
            raise
58
 
 
59
 
    virtual_interfaces.c.instance_id.drop()
60
 
 
61
 
    try:
62
 
        ForeignKeyConstraint(
63
 
            columns=[virtual_interfaces.c.instance_uuid],
64
 
            refcolumns=[instances.c.uuid]).create()
65
 
    except Exception:
66
 
        LOG.error(_("foreign key constraint couldn't be created"))
67
 
        raise
68
 
 
69
 
 
70
 
def downgrade(migrate_engine):
71
 
    meta = MetaData()
72
 
    meta.bind = migrate_engine
73
 
    virtual_interfaces = Table('virtual_interfaces', meta, autoload=True)
74
 
    instances = Table('instances', meta, autoload=True)
75
 
    id_column = Column('instance_id', Integer, ForeignKey('instances.id'))
76
 
    id_column.create(virtual_interfaces)
77
 
 
78
 
    fkeys = list(virtual_interfaces.c.instance_uuid.foreign_keys)
79
 
    if fkeys:
80
 
        try:
81
 
            fkey_name = fkeys[0].constraint.name
82
 
            ForeignKeyConstraint(
83
 
                columns=[virtual_interfaces.c.instance_uuid],
84
 
                refcolumns=[instances.c.uuid],
85
 
                name=fkey_name).drop()
86
 
        except Exception:
87
 
            LOG.error(_("foreign key constraint couldn't be removed"))
88
 
            raise
89
 
 
90
 
    try:
91
 
        virtual_interfaces.update().values(
92
 
            instance_id=select(
93
 
                [instances.c.id],
94
 
                instances.c.uuid == virtual_interfaces.c.instance_uuid)
95
 
        ).execute()
96
 
    except Exception:
97
 
        id_column.drop()
98
 
        raise
99
 
 
100
 
    virtual_interfaces.c.instance_uuid.drop()
101
 
 
102
 
    try:
103
 
        ForeignKeyConstraint(
104
 
            columns=[virtual_interfaces.c.instance_id],
105
 
            refcolumns=[instances.c.id]).create()
106
 
    except Exception:
107
 
        LOG.error(_("foreign key constraint couldn't be created"))
108
 
        raise