summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Koelker <jason@koelker.net>2011-05-16 11:40:42 -0500
committerJason Koelker <jason@koelker.net>2011-05-16 11:40:42 -0500
commitab4e17aca5b2cbe352c6266ae0b5c3ad7c1c2ed7 (patch)
treed9648bc512baf2f19826df028166524a409b288e
parent7377b010a133d5afa1a20e36b3a1dd2914c461b2 (diff)
make the migration work like we expect it to
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/015_multi_nic.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/015_multi_nic.py b/nova/db/sqlalchemy/migrate_repo/versions/015_multi_nic.py
index 3130760e2..7057d0ccb 100644
--- a/nova/db/sqlalchemy/migrate_repo/versions/015_multi_nic.py
+++ b/nova/db/sqlalchemy/migrate_repo/versions/015_multi_nic.py
@@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
+import datetime
+
from sqlalchemy import *
from migrate import *
@@ -22,8 +24,10 @@ meta = MetaData()
# mac address table to add to DB
mac_addresses = Table('mac_addresses', meta,
- Column('created_at', DateTime(timezone=False)),
- Column('updated_at', DateTime(timezone=False)),
+ Column('created_at', DateTime(timezone=False),
+ default=datetime.datetime.utcnow),
+ Column('updated_at', DateTime(timezone=False),
+ onupdate=datetime.datetime.utcnow),
Column('deleted_at', DateTime(timezone=False)),
Column('deleted', Boolean(create_constraint=True, name=None)),
Column('id', Integer(), primary_key=True, nullable=False),
@@ -54,7 +58,7 @@ interface = Column('bridge_interface',
mac_address = Column('mac_address_id',
Integer(),
ForeignKey('mac_addresses.id'),
- nullable=False)
+ nullable=True)
def upgrade(migrate_engine):
@@ -103,10 +107,16 @@ def upgrade(migrate_engine):
i.execute(join_list)
# populate the fixed_ips mac_address column
- s = select([mac_addresses.c.id],
- mac_addresses.c.address == instances.c.address)
- u = fixed_ips.update().values(mac_address_id=s)
- u.execute()
+ s = select([fixed_ips.c.id, fixed_ips.c.instance_id],
+ fixed_ips.c.instance_id != None)
+
+ for row in s.execute():
+ m = select([mac_addresses.c.id].\
+ where(mac_addresses.c.instance_id == row['instance_id']).\
+ as_scalar()
+ u = fixed_ips.update().values(mac_address_id=m).\
+ where(fixed_ips.c.id == row['id'])
+ u.execute()
# drop the mac_address column from instances
c.drop()