summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2012-07-30 22:20:25 -0400
committerDan Prince <dprince@redhat.com>2012-07-30 22:20:25 -0400
commit9d5261cfeb1854a02fcd3eb802bc1ba47ef79f1b (patch)
treee5f04d1168d318b61efce7e33f31a44a6c64e026
parent4444577e23cf3365479793d90e3ae337e4638b6a (diff)
downloadkeystone-9d5261cfeb1854a02fcd3eb802bc1ba47ef79f1b.tar.gz
keystone-9d5261cfeb1854a02fcd3eb802bc1ba47ef79f1b.tar.xz
keystone-9d5261cfeb1854a02fcd3eb802bc1ba47ef79f1b.zip
Implement python version of migration 002.
This patch adds a python version of keystone migration 002 which supports MySQL and PostgreSQL. SQLite still uses manual .sql files for now... Fixes LP Bug #1031164. Change-Id: I2f4f7b0ea42040994bd8e1711ccbbb6d690c868f
-rw-r--r--keystone/common/sql/migrate_repo/versions/002_mysql_downgrade.sql3
-rw-r--r--keystone/common/sql/migrate_repo/versions/002_mysql_upgrade.sql2
-rw-r--r--keystone/common/sql/migrate_repo/versions/002_token_id_hash.py43
3 files changed, 43 insertions, 5 deletions
diff --git a/keystone/common/sql/migrate_repo/versions/002_mysql_downgrade.sql b/keystone/common/sql/migrate_repo/versions/002_mysql_downgrade.sql
deleted file mode 100644
index f1337acd..00000000
--- a/keystone/common/sql/migrate_repo/versions/002_mysql_downgrade.sql
+++ /dev/null
@@ -1,3 +0,0 @@
-alter table token drop id;
-alter table token change id_hash id varchar(64);
-
diff --git a/keystone/common/sql/migrate_repo/versions/002_mysql_upgrade.sql b/keystone/common/sql/migrate_repo/versions/002_mysql_upgrade.sql
deleted file mode 100644
index 1cb8d747..00000000
--- a/keystone/common/sql/migrate_repo/versions/002_mysql_upgrade.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-alter table token change id id_hash varchar(64);
-alter table token add id varchar(2048);
diff --git a/keystone/common/sql/migrate_repo/versions/002_token_id_hash.py b/keystone/common/sql/migrate_repo/versions/002_token_id_hash.py
new file mode 100644
index 00000000..4d38b525
--- /dev/null
+++ b/keystone/common/sql/migrate_repo/versions/002_token_id_hash.py
@@ -0,0 +1,43 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# 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.
+
+from sqlalchemy import Column, MetaData, String, Table
+
+
+def upgrade(migrate_engine):
+ meta = MetaData()
+ meta.bind = migrate_engine
+ token = Table('token', meta, autoload=True)
+ old_id_col = token.c.id
+ old_id_col.alter(name='id_hash')
+ # Note: We obtain a new metadata reference to avoid
+ # sqlalchemy.exc.ArgumentError:
+ # Trying to redefine primary-key column 'id' as a non-primary-key...
+ meta = MetaData()
+ meta.bind = migrate_engine
+ token = Table('token', meta, autoload=True)
+ new_id = Column("id", String(2048))
+ token.create_column(new_id)
+
+
+def downgrade(migrate_engine):
+ meta = MetaData()
+ meta.bind = migrate_engine
+ token = Table('token', meta, autoload=True)
+ token.drop_column('id')
+ token = Table('token', meta, autoload=True)
+ id_col = token.c.id_hash
+ id_col.alter(name='id')