summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/Server/Admin/Snapshots.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/lib/Server/Admin/Snapshots.py b/src/lib/Server/Admin/Snapshots.py
index 13897fcd2..51b7bf6d9 100644
--- a/src/lib/Server/Admin/Snapshots.py
+++ b/src/lib/Server/Admin/Snapshots.py
@@ -1,17 +1,23 @@
import Bcfg2.Server.Admin
-import sqlalchemy, sqlalchemy.orm
+import sys
+
+try:
+ import sqlalchemy, sqlalchemy.orm
+except:
+ # FIXME should probably do something smarter here for folks without SA
+ pass
import Bcfg2.Server.Snapshots
import Bcfg2.Server.Snapshots.model
-from Bcfg2.Server.Snapshots.model import Snapshot, Client, Metadata, Base, Group
+from Bcfg2.Server.Snapshots.model import Snapshot, Client, Metadata, Base, \
+ Group, Package
class Snapshots(Bcfg2.Server.Admin.Mode):
__shorthelp__ = "Interact with the Snapshots system"
__longhelp__ = (__shorthelp__)
__usage__ = ("bcfg2-admin snapshots [init|query qtype] ")
- q_dispatch = {'client':Client,
- 'group':Bcfg2.Server.Snapshots.model.Group,
- 'snapshot':Snapshot,
+ q_dispatch = {'client':Client, 'group':Group,
+ 'snapshot':Snapshot,'package': Package, 'metadata':Metadata,
}
def __init__(self, configfile):
@@ -39,4 +45,11 @@ class Snapshots(Bcfg2.Server.Admin.Mode):
session.commit()
elif args[0] == 'dump':
client, etype, ename = args[1:]
- snap = Snapshot.get_current(self.session, client)
+ snap = Snapshot.get_current(self.session, unicode(client))
+ if not snap:
+ print "Current snapshot for %s not found" % client
+ sys.exit(1)
+ for pkg in snap.packages:
+ print pkg.correct, pkg.modified
+ print pkg.start.name, pkg.start.version
+ print snap.packages