Add manifest read functions for sqlite

Change-Id: I73855f446316ddaf31a492c90a6d3b444d77683c
This commit is contained in:
SamYaple 2016-01-10 20:10:59 +00:00
parent 0f62c546d1
commit 94bf4209b2
2 changed files with 31 additions and 0 deletions

View File

@ -34,6 +34,12 @@ class ManifestDriver(object):
self.conn = None
self.manifest_file = manifest_file
def get_metadata(self):
raise NotImplementedError()
def get_segments(self):
raise NotImplementedError()
def put_metadata(self, metadata):
raise NotImplementedError()

View File

@ -18,6 +18,7 @@ from contextlib import contextmanager
import sqlite3
from ekko.manifest import driver
from ekko.manifest import structure
class SQLiteDriver(driver.ManifestDriver):
@ -58,6 +59,30 @@ class SQLiteDriver(driver.ManifestDriver):
conn.rollback()
self.conn = conn
def get_metadata(self):
with self.get_conn() as conn:
with closing(conn.cursor()) as cur:
cur.execute("SELECT * FROM metadata")
metadata = dict(cur.fetchall())
cur.execute("SELECT * FROM backupsets")
backupsets = [b[1] for b in cur.fetchall()]
return structure.Metadata(
incremental=metadata['incremental'],
sectors=metadata['sectors'],
segment_size=metadata['segment_size'],
timestamp=metadata['timestamp'],
backupset_id=backupsets[-1],
backupsets=backupsets
)
def get_segments(self):
with self.get_conn() as conn:
with closing(conn.cursor()) as cur:
cur.execute("SELECT * FROM segments")
for result in cur:
yield result
def put_segments(self, segments, metadata):
with self.get_conn() as conn:
with closing(conn.cursor()) as cur: