]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
snap_schedule/tests: fix db upgrade issue
authorMilind Changire <mchangir@redhat.com>
Tue, 17 Oct 2023 04:36:48 +0000 (10:06 +0530)
committerMilind Changire <mchangir@redhat.com>
Sat, 6 Jan 2024 03:28:36 +0000 (08:58 +0530)
Signed-off-by: Milind Changire <mchangir@redhat.com>
src/pybind/mgr/snap_schedule/tests/conftest.py

index 35255b8d486b0c10767a53d550a582207161adfc..92d4c9bc132becbf1d03ca14ff3492a2e27b4721 100644 (file)
@@ -31,4 +31,41 @@ def db():
         db.row_factory = sqlite3.Row
         db.execute("PRAGMA FOREIGN_KEYS = 1")
         db.executescript(Schedule.CREATE_TABLES)
+        _create_snap_schedule_kv_db(db)
+        _upgrade_snap_schedule_db_schema(db)
     return db
+
+def _create_snap_schedule_kv_db(db):
+    SQL = """
+    CREATE TABLE IF NOT EXISTS SnapScheduleModuleKV (
+      key TEXT PRIMARY KEY,
+      value NOT NULL
+    ) WITHOUT ROWID;
+    INSERT OR IGNORE INTO SnapScheduleModuleKV (key, value) VALUES ('__snap_schedule_db_version', 1);
+    """
+    db.executescript(SQL)
+
+def _get_snap_schedule_db_version(db):
+    SQL = """
+    SELECT value
+    FROM SnapScheduleModuleKV
+    WHERE key = '__snap_schedule_db_version';
+    """
+    cur = db.execute(SQL)
+    row = cur.fetchone()
+    assert row is not None
+    return int(row[0])
+
+# add all upgrades here
+def _upgrade_snap_schedule_db_schema(db):
+    # add a column to hold the subvolume group name
+    if _get_snap_schedule_db_version(db) < 2:
+        SQL = """
+        ALTER TABLE schedules
+        ADD COLUMN group_name TEXT;
+        """
+        db.executescript(SQL)
+
+        # bump up the snap-schedule db version to 2
+        SQL = "UPDATE OR ROLLBACK SnapScheduleModuleKV SET value = ? WHERE key = '__snap_schedule_db_version';"
+        db.execute(SQL, (2,))