Add downgrade support to migrate.  This is really necessary for doing real migration development.  Modified all existing migrations to support it.

Signed-off-by: Steve Howard <[email protected]>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@1336 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/migrations/001_initial_db.py b/frontend/migrations/001_initial_db.py
index 0773ea0..f16e6ec 100644
--- a/frontend/migrations/001_initial_db.py
+++ b/frontend/migrations/001_initial_db.py
@@ -6,7 +6,6 @@
 
 
 def migrate_up(manager):
-	assert not manager.check_migrate_table_exists()
 	manager.execute("SHOW TABLES")
 	tables = [row[0] for row in manager.cursor.fetchall()]
 	db_initialized = True
@@ -27,6 +26,10 @@
 	manager.create_migrate_table()
 
 
+def migrate_down(manager):
+	manager.execute_script(DROP_DB_SQL)
+
+
 CREATE_DB_SQL = """\
 --
 -- Table structure for table `acl_groups`
@@ -173,3 +176,18 @@
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 """
+
+
+DROP_DB_SQL = """\
+DROP TABLE IF EXISTS `acl_groups`;
+DROP TABLE IF EXISTS `acl_groups_hosts`;
+DROP TABLE IF EXISTS `acl_groups_users`;
+DROP TABLE IF EXISTS `autotests`;
+DROP TABLE IF EXISTS `host_queue_entries`;
+DROP TABLE IF EXISTS `hosts`;
+DROP TABLE IF EXISTS `hosts_labels`;
+DROP TABLE IF EXISTS `ineligible_host_queues`;
+DROP TABLE IF EXISTS `jobs`;
+DROP TABLE IF EXISTS `labels`;
+DROP TABLE IF EXISTS `users`;
+"""
diff --git a/frontend/migrations/002_cleanup_fields.py b/frontend/migrations/002_cleanup_fields.py
index ccd8c1c..a3656ca 100644
--- a/frontend/migrations/002_cleanup_fields.py
+++ b/frontend/migrations/002_cleanup_fields.py
@@ -3,3 +3,10 @@
 	manager.execute('ALTER TABLE jobs DROP kernel_url, DROP status, '
 			'DROP submitted_on')
 	manager.execute('ALTER TABLE host_queue_entries DROP created_on')
+
+def migrate_down(manager):
+	manager.execute('ALTER TABLE autotests ADD params VARCHAR(255)')
+	manager.execute('ALTER TABLE jobs ADD kernel_url VARCHAR(255), '
+			'ADD status VARCHAR(255), ADD submitted_on datetime')
+	manager.execute('ALTER TABLE host_queue_entries ADD created_on '
+			'datetime')