From bd3dd9c95aef72f5e16e166af5b0ab16d39365b5 Mon Sep 17 00:00:00 2001 From: Trey Morris Date: Wed, 29 Jun 2011 13:04:04 -0500 Subject: renumbered migrations again --- .../migrate_repo/versions/028_multi_nic.py | 130 --------------------- .../029_fk_fixed_ips_virtual_interface_id.py | 56 --------- .../migrate_repo/versions/029_multi_nic.py | 130 +++++++++++++++++++++ .../migrate_repo/versions/029_sqlite_downgrade.sql | 48 -------- .../migrate_repo/versions/029_sqlite_update.sql | 48 -------- .../030_fk_fixed_ips_virtual_interface_id.py | 56 +++++++++ .../migrate_repo/versions/030_sqlite_downgrade.sql | 48 ++++++++ .../migrate_repo/versions/030_sqlite_upgrade.sql | 48 ++++++++ 8 files changed, 282 insertions(+), 282 deletions(-) delete mode 100644 nova/db/sqlalchemy/migrate_repo/versions/028_multi_nic.py delete mode 100644 nova/db/sqlalchemy/migrate_repo/versions/029_fk_fixed_ips_virtual_interface_id.py create mode 100644 nova/db/sqlalchemy/migrate_repo/versions/029_multi_nic.py delete mode 100644 nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_downgrade.sql delete mode 100644 nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_update.sql create mode 100644 nova/db/sqlalchemy/migrate_repo/versions/030_fk_fixed_ips_virtual_interface_id.py create mode 100644 nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_downgrade.sql create mode 100644 nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_upgrade.sql diff --git a/nova/db/sqlalchemy/migrate_repo/versions/028_multi_nic.py b/nova/db/sqlalchemy/migrate_repo/versions/028_multi_nic.py deleted file mode 100644 index 48fb4032f..000000000 --- a/nova/db/sqlalchemy/migrate_repo/versions/028_multi_nic.py +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2011 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 * -from migrate import * - -from nova import log as logging -from nova import utils - -meta = MetaData() - -# virtual interface table to add to DB -virtual_interfaces = Table('virtual_interfaces', meta, - Column('created_at', DateTime(timezone=False), - default=utils.utcnow()), - Column('updated_at', DateTime(timezone=False), - onupdate=utils.utcnow()), - Column('deleted_at', DateTime(timezone=False)), - Column('deleted', Boolean(create_constraint=True, name=None)), - Column('id', Integer(), primary_key=True, nullable=False), - Column('address', - String(length=255, convert_unicode=False, assert_unicode=None, - unicode_error=None, _warn_on_bytestring=False), - unique=True), - Column('network_id', - Integer(), - ForeignKey('networks.id'), - nullable=False), - Column('instance_id', - Integer(), - ForeignKey('instances.id'), - nullable=False), - Column('port_id', - String(length=255, convert_unicode=False, assert_unicode=None, - unicode_error=None, _warn_on_bytestring=False), - unique=True), - mysql_engine='InnoDB') - - -# bridge_interface column to add to networks table -interface = Column('bridge_interface', - String(length=255, convert_unicode=False, - assert_unicode=None, unicode_error=None, - _warn_on_bytestring=False)) - - -# virtual interface id column to add to fixed_ips table -# foreignkey added in next migration -virtual_interface_id = Column('virtual_interface_id', - Integer()) - - -def upgrade(migrate_engine): - meta.bind = migrate_engine - - # grab tables and (column for dropping later) - instances = Table('instances', meta, autoload=True) - networks = Table('networks', meta, autoload=True) - fixed_ips = Table('fixed_ips', meta, autoload=True) - c = instances.columns['mac_address'] - - # add interface column to networks table - # values will have to be set manually before running nova - try: - networks.create_column(interface) - except Exception: - logging.error(_("interface column not added to networks table")) - raise - - # create virtual_interfaces table - try: - virtual_interfaces.create() - except Exception: - logging.error(_("Table |%s| not created!"), repr(virtual_interfaces)) - raise - - # add virtual_interface_id column to fixed_ips table - try: - fixed_ips.create_column(virtual_interface_id) - except Exception: - logging.error(_("VIF column not added to fixed_ips table")) - raise - - # populate the virtual_interfaces table - # extract data from existing instance and fixed_ip tables - s = select([instances.c.id, instances.c.mac_address, - fixed_ips.c.network_id], - fixed_ips.c.instance_id == instances.c.id) - keys = ('instance_id', 'address', 'network_id') - join_list = [dict(zip(keys, row)) for row in s.execute()] - logging.debug(_("join list for moving mac_addresses |%s|"), join_list) - - # insert data into the table - if join_list: - i = virtual_interfaces.insert() - i.execute(join_list) - - # populate the fixed_ips virtual_interface_id column - s = select([fixed_ips.c.id, fixed_ips.c.instance_id], - fixed_ips.c.instance_id != None) - - for row in s.execute(): - m = select([virtual_interfaces.c.id]).\ - where(virtual_interfaces.c.instance_id == row['instance_id']).\ - as_scalar() - u = fixed_ips.update().values(virtual_interface_id=m).\ - where(fixed_ips.c.id == row['id']) - u.execute() - - # drop the mac_address column from instances - c.drop() - - -def downgrade(migrate_engine): - logging.error(_("Can't downgrade without losing data")) - raise Exception diff --git a/nova/db/sqlalchemy/migrate_repo/versions/029_fk_fixed_ips_virtual_interface_id.py b/nova/db/sqlalchemy/migrate_repo/versions/029_fk_fixed_ips_virtual_interface_id.py deleted file mode 100644 index 56e927717..000000000 --- a/nova/db/sqlalchemy/migrate_repo/versions/029_fk_fixed_ips_virtual_interface_id.py +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 2011 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 * -from migrate import * - -from nova import log as logging -from nova import utils - -meta = MetaData() - - -def upgrade(migrate_engine): - meta.bind = migrate_engine - dialect = migrate_engine.url.get_dialect().name - - # grab tables - fixed_ips = Table('fixed_ips', meta, autoload=True) - virtual_interfaces = Table('virtual_interfaces', meta, autoload=True) - - # add foreignkey if not sqlite - try: - if not dialect.startswith('sqlite'): - ForeignKeyConstraint(columns=[fixed_ips.c.virtual_interface_id], - refcolumns=[virtual_interfaces.c.id]).create() - except Exception: - logging.error(_("foreign key constraint couldn't be added")) - raise - - -def downgrade(migrate_engine): - meta.bind = migrate_engine - dialect = migrate_engine.url.get_dialect().name - - # drop foreignkey if not sqlite - try: - if not dialect.startswith('sqlite'): - ForeignKeyConstraint(columns=[fixed_ips.c.virtual_interface_id], - refcolumns=[virtual_interfaces.c.id]).drop() - except Exception: - logging.error(_("foreign key constraint couldn't be dropped")) - raise diff --git a/nova/db/sqlalchemy/migrate_repo/versions/029_multi_nic.py b/nova/db/sqlalchemy/migrate_repo/versions/029_multi_nic.py new file mode 100644 index 000000000..48fb4032f --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/029_multi_nic.py @@ -0,0 +1,130 @@ +# Copyright 2011 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 * +from migrate import * + +from nova import log as logging +from nova import utils + +meta = MetaData() + +# virtual interface table to add to DB +virtual_interfaces = Table('virtual_interfaces', meta, + Column('created_at', DateTime(timezone=False), + default=utils.utcnow()), + Column('updated_at', DateTime(timezone=False), + onupdate=utils.utcnow()), + Column('deleted_at', DateTime(timezone=False)), + Column('deleted', Boolean(create_constraint=True, name=None)), + Column('id', Integer(), primary_key=True, nullable=False), + Column('address', + String(length=255, convert_unicode=False, assert_unicode=None, + unicode_error=None, _warn_on_bytestring=False), + unique=True), + Column('network_id', + Integer(), + ForeignKey('networks.id'), + nullable=False), + Column('instance_id', + Integer(), + ForeignKey('instances.id'), + nullable=False), + Column('port_id', + String(length=255, convert_unicode=False, assert_unicode=None, + unicode_error=None, _warn_on_bytestring=False), + unique=True), + mysql_engine='InnoDB') + + +# bridge_interface column to add to networks table +interface = Column('bridge_interface', + String(length=255, convert_unicode=False, + assert_unicode=None, unicode_error=None, + _warn_on_bytestring=False)) + + +# virtual interface id column to add to fixed_ips table +# foreignkey added in next migration +virtual_interface_id = Column('virtual_interface_id', + Integer()) + + +def upgrade(migrate_engine): + meta.bind = migrate_engine + + # grab tables and (column for dropping later) + instances = Table('instances', meta, autoload=True) + networks = Table('networks', meta, autoload=True) + fixed_ips = Table('fixed_ips', meta, autoload=True) + c = instances.columns['mac_address'] + + # add interface column to networks table + # values will have to be set manually before running nova + try: + networks.create_column(interface) + except Exception: + logging.error(_("interface column not added to networks table")) + raise + + # create virtual_interfaces table + try: + virtual_interfaces.create() + except Exception: + logging.error(_("Table |%s| not created!"), repr(virtual_interfaces)) + raise + + # add virtual_interface_id column to fixed_ips table + try: + fixed_ips.create_column(virtual_interface_id) + except Exception: + logging.error(_("VIF column not added to fixed_ips table")) + raise + + # populate the virtual_interfaces table + # extract data from existing instance and fixed_ip tables + s = select([instances.c.id, instances.c.mac_address, + fixed_ips.c.network_id], + fixed_ips.c.instance_id == instances.c.id) + keys = ('instance_id', 'address', 'network_id') + join_list = [dict(zip(keys, row)) for row in s.execute()] + logging.debug(_("join list for moving mac_addresses |%s|"), join_list) + + # insert data into the table + if join_list: + i = virtual_interfaces.insert() + i.execute(join_list) + + # populate the fixed_ips virtual_interface_id column + s = select([fixed_ips.c.id, fixed_ips.c.instance_id], + fixed_ips.c.instance_id != None) + + for row in s.execute(): + m = select([virtual_interfaces.c.id]).\ + where(virtual_interfaces.c.instance_id == row['instance_id']).\ + as_scalar() + u = fixed_ips.update().values(virtual_interface_id=m).\ + where(fixed_ips.c.id == row['id']) + u.execute() + + # drop the mac_address column from instances + c.drop() + + +def downgrade(migrate_engine): + logging.error(_("Can't downgrade without losing data")) + raise Exception diff --git a/nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_downgrade.sql b/nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_downgrade.sql deleted file mode 100644 index c1d26b180..000000000 --- a/nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_downgrade.sql +++ /dev/null @@ -1,48 +0,0 @@ -BEGIN TRANSACTION; - - CREATE TEMPORARY TABLE fixed_ips_backup ( - id INTEGER NOT NULL, - address VARCHAR(255), - virtual_interface_id INTEGER, - network_id INTEGER, - instance_id INTEGER, - allocated BOOLEAN default FALSE, - leased BOOLEAN default FALSE, - reserved BOOLEAN default FALSE, - created_at DATETIME NOT NULL, - updated_at DATETIME, - deleted_at DATETIME, - deleted BOOLEAN NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY(virtual_interface_id) REFERENCES virtual_interfaces (id) - ); - - INSERT INTO fixed_ips_backup - SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted - FROM fixed_ips; - - DROP TABLE fixed_ips; - - CREATE TABLE fixed_ips ( - id INTEGER NOT NULL, - address VARCHAR(255), - virtual_interface_id INTEGER, - network_id INTEGER, - instance_id INTEGER, - allocated BOOLEAN default FALSE, - leased BOOLEAN default FALSE, - reserved BOOLEAN default FALSE, - created_at DATETIME NOT NULL, - updated_at DATETIME, - deleted_at DATETIME, - deleted BOOLEAN NOT NULL, - PRIMARY KEY (id) - ); - - INSERT INTO fixed_ips - SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted - FROM fixed_ips; - - DROP TABLE fixed_ips_backup; - -COMMIT; diff --git a/nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_update.sql b/nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_update.sql deleted file mode 100644 index 2a9362545..000000000 --- a/nova/db/sqlalchemy/migrate_repo/versions/029_sqlite_update.sql +++ /dev/null @@ -1,48 +0,0 @@ -BEGIN TRANSACTION; - - CREATE TEMPORARY TABLE fixed_ips_backup ( - id INTEGER NOT NULL, - address VARCHAR(255), - virtual_interface_id INTEGER, - network_id INTEGER, - instance_id INTEGER, - allocated BOOLEAN default FALSE, - leased BOOLEAN default FALSE, - reserved BOOLEAN default FALSE, - created_at DATETIME NOT NULL, - updated_at DATETIME, - deleted_at DATETIME, - deleted BOOLEAN NOT NULL, - PRIMARY KEY (id) - ); - - INSERT INTO fixed_ips_backup - SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted - FROM fixed_ips; - - DROP TABLE fixed_ips; - - CREATE TABLE fixed_ips ( - id INTEGER NOT NULL, - address VARCHAR(255), - virtual_interface_id INTEGER, - network_id INTEGER, - instance_id INTEGER, - allocated BOOLEAN default FALSE, - leased BOOLEAN default FALSE, - reserved BOOLEAN default FALSE, - created_at DATETIME NOT NULL, - updated_at DATETIME, - deleted_at DATETIME, - deleted BOOLEAN NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY(virtual_interface_id) REFERENCES virtual_interfaces (id) - ); - - INSERT INTO fixed_ips - SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted - FROM fixed_ips; - - DROP TABLE fixed_ips_backup; - -COMMIT; diff --git a/nova/db/sqlalchemy/migrate_repo/versions/030_fk_fixed_ips_virtual_interface_id.py b/nova/db/sqlalchemy/migrate_repo/versions/030_fk_fixed_ips_virtual_interface_id.py new file mode 100644 index 000000000..56e927717 --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/030_fk_fixed_ips_virtual_interface_id.py @@ -0,0 +1,56 @@ +# Copyright 2011 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 * +from migrate import * + +from nova import log as logging +from nova import utils + +meta = MetaData() + + +def upgrade(migrate_engine): + meta.bind = migrate_engine + dialect = migrate_engine.url.get_dialect().name + + # grab tables + fixed_ips = Table('fixed_ips', meta, autoload=True) + virtual_interfaces = Table('virtual_interfaces', meta, autoload=True) + + # add foreignkey if not sqlite + try: + if not dialect.startswith('sqlite'): + ForeignKeyConstraint(columns=[fixed_ips.c.virtual_interface_id], + refcolumns=[virtual_interfaces.c.id]).create() + except Exception: + logging.error(_("foreign key constraint couldn't be added")) + raise + + +def downgrade(migrate_engine): + meta.bind = migrate_engine + dialect = migrate_engine.url.get_dialect().name + + # drop foreignkey if not sqlite + try: + if not dialect.startswith('sqlite'): + ForeignKeyConstraint(columns=[fixed_ips.c.virtual_interface_id], + refcolumns=[virtual_interfaces.c.id]).drop() + except Exception: + logging.error(_("foreign key constraint couldn't be dropped")) + raise diff --git a/nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_downgrade.sql b/nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_downgrade.sql new file mode 100644 index 000000000..c1d26b180 --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_downgrade.sql @@ -0,0 +1,48 @@ +BEGIN TRANSACTION; + + CREATE TEMPORARY TABLE fixed_ips_backup ( + id INTEGER NOT NULL, + address VARCHAR(255), + virtual_interface_id INTEGER, + network_id INTEGER, + instance_id INTEGER, + allocated BOOLEAN default FALSE, + leased BOOLEAN default FALSE, + reserved BOOLEAN default FALSE, + created_at DATETIME NOT NULL, + updated_at DATETIME, + deleted_at DATETIME, + deleted BOOLEAN NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(virtual_interface_id) REFERENCES virtual_interfaces (id) + ); + + INSERT INTO fixed_ips_backup + SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted + FROM fixed_ips; + + DROP TABLE fixed_ips; + + CREATE TABLE fixed_ips ( + id INTEGER NOT NULL, + address VARCHAR(255), + virtual_interface_id INTEGER, + network_id INTEGER, + instance_id INTEGER, + allocated BOOLEAN default FALSE, + leased BOOLEAN default FALSE, + reserved BOOLEAN default FALSE, + created_at DATETIME NOT NULL, + updated_at DATETIME, + deleted_at DATETIME, + deleted BOOLEAN NOT NULL, + PRIMARY KEY (id) + ); + + INSERT INTO fixed_ips + SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted + FROM fixed_ips; + + DROP TABLE fixed_ips_backup; + +COMMIT; diff --git a/nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_upgrade.sql b/nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_upgrade.sql new file mode 100644 index 000000000..2a9362545 --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/030_sqlite_upgrade.sql @@ -0,0 +1,48 @@ +BEGIN TRANSACTION; + + CREATE TEMPORARY TABLE fixed_ips_backup ( + id INTEGER NOT NULL, + address VARCHAR(255), + virtual_interface_id INTEGER, + network_id INTEGER, + instance_id INTEGER, + allocated BOOLEAN default FALSE, + leased BOOLEAN default FALSE, + reserved BOOLEAN default FALSE, + created_at DATETIME NOT NULL, + updated_at DATETIME, + deleted_at DATETIME, + deleted BOOLEAN NOT NULL, + PRIMARY KEY (id) + ); + + INSERT INTO fixed_ips_backup + SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted + FROM fixed_ips; + + DROP TABLE fixed_ips; + + CREATE TABLE fixed_ips ( + id INTEGER NOT NULL, + address VARCHAR(255), + virtual_interface_id INTEGER, + network_id INTEGER, + instance_id INTEGER, + allocated BOOLEAN default FALSE, + leased BOOLEAN default FALSE, + reserved BOOLEAN default FALSE, + created_at DATETIME NOT NULL, + updated_at DATETIME, + deleted_at DATETIME, + deleted BOOLEAN NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(virtual_interface_id) REFERENCES virtual_interfaces (id) + ); + + INSERT INTO fixed_ips + SELECT id, address, virtual_interface_id, network_id, instance_id, allocated, leased, reserved, created_at, updated_at, deleted_at, deleted + FROM fixed_ips; + + DROP TABLE fixed_ips_backup; + +COMMIT; -- cgit