Add 2011 seminar.
[libguestfs-talks.git] / 2011-seminar / 300-python / firefox.py
diff --git a/2011-seminar/300-python/firefox.py b/2011-seminar/300-python/firefox.py
new file mode 100755 (executable)
index 0000000..26f9c90
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+
+import sys
+import re
+import guestfs
+
+assert (len (sys.argv) == 2)
+disk = sys.argv[1]
+
+g = guestfs.GuestFS ()
+g.add_drive_opts (disk, readonly=1)
+g.launch ()
+
+roots = g.inspect_os ()
+if len (roots) == 0:
+    raise (Error ("inspect_vm: no operating systems found"))
+
+for root in roots:
+    mps = g.inspect_get_mountpoints (root)
+    def compare (a, b):
+        if len(a[0]) > len(b[0]):
+            return 1
+        elif len(a[0]) == len(b[0]):
+            return 0
+        else:
+            return -1
+    mps.sort (compare)
+    for mp_dev in mps:
+        try:
+            g.mount_ro (mp_dev[1], mp_dev[0])
+        except RuntimeError as msg:
+            print "%s (ignored)" % msg
+
+    apps = g.inspect_list_applications (root)
+    for app in apps:
+        if re.search ('firefox', app['app_name'], re.I):
+            print ("'%s' version: %s" % (app['app_name'], app['app_version']))
+
+    g.umount_all ()