From b7f6cc4e326cf6fad8bcb248dbfb6b4e633b41c2 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Sat, 21 Mar 2009 17:17:21 +0000 Subject: Add revision and correct fields to snapshot class; should simplify most queries git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5133 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/Snapshots.py | 5 ++++- src/lib/Server/Snapshots/model.py | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/Server/Plugins/Snapshots.py b/src/lib/Server/Plugins/Snapshots.py index d4efc2be3..34c1f903c 100644 --- a/src/lib/Server/Plugins/Snapshots.py +++ b/src/lib/Server/Plugins/Snapshots.py @@ -65,6 +65,8 @@ class Snapshots(Bcfg2.Server.Plugin.Statistics, extra = dict([('Package', dict()), ('Service', dict()), ('Path', dict())]) bad = [] + correct = xdata.get('state') == 'clean' + revision = unicode(xdata.get('revision', '-1')) for entry in xdata.find('.//Bad'): data = [False, False, unicode(entry.get('name'))] \ + build_snap_ent(entry) @@ -92,7 +94,8 @@ class Snapshots(Bcfg2.Server.Plugin.Statistics, else: print "extra", entry.tag, entry.get('name') t2 = time.time() - snap = Snapshot.from_data(self.session, metadata, entries, extra) + snap = Snapshot.from_data(self.session, correct, revision, + metadata, entries, extra) self.session.add(snap) self.session.commit() t3 = time.time() diff --git a/src/lib/Server/Snapshots/model.py b/src/lib/Server/Snapshots/model.py index a913a25de..8209eeab7 100644 --- a/src/lib/Server/Snapshots/model.py +++ b/src/lib/Server/Snapshots/model.py @@ -200,6 +200,8 @@ action_snap = Table('action_snap', Base.metadata, class Snapshot(Base): __tablename__ = 'snapshot' id = Column(Integer, primary_key=True) + correct = Column(Boolean) + revision = Column(Unicode(36)) metadata_id = Column(Integer, ForeignKey('metadata.id')) client_metadata = relation(Metadata, primaryjoin=metadata_id==Metadata.id) timestamp = Column(DateTime, default=datetime.datetime.now) @@ -221,9 +223,10 @@ class Snapshot(Base): ('Path', ('extra_files', File))]) @classmethod - def from_data(cls, session, metadata, entries, extra): + def from_data(cls, session, correct, revision, metadata, entries, extra): dbm = Metadata.from_metadata(session, metadata) - snap = cls(client_metadata=dbm, timestamp=datetime.datetime.now()) + snap = cls(correct=correct, client_metadata=dbm, revision=revision, + timestamp=datetime.datetime.now()) for (dispatch, data) in [(cls.c_dispatch, entries), (cls.e_dispatch, extra)]: for key in dispatch: -- cgit v1.2.3-1-g7c22