4296954d79eec40695c26b0833c6514770381e89
[tools/itest-core.git] / imgdiff / cleanup.py
1 #!/usr/bin/env python
2 '''This script will cleanup resources allocated by unpack_image.py
3 '''
4 import os
5 import sys
6 from subprocess import call
7
8
9 def umount(path):
10     '''Umount a mount point at path
11     '''
12     if not os.path.isdir(path) or not os.path.ismount(path):
13         return
14
15     cmd = ['sudo', 'umount', '-l', path]
16     print "Umounting", path, "..."
17     return call(cmd)
18
19
20 def loopdel(val):
21     '''Release loop dev at val
22     '''
23     devloop, filename = val.split(':', 1)
24     print "Releasing %s(%s)" % (devloop, filename), "..."
25
26
27 def main():
28     '''Main'''
29     # cleanup mountpoint in reverse order
30     lines = sys.stdin.readlines()
31     lines.sort(reverse=1)
32
33     handler = {
34         'mountpoint': umount,
35         'loopdev': loopdel,
36         }
37
38     for line in lines:
39         key, val = line.strip().split(':', 1)
40         if key in handler:
41             handler[key](val)
42         else:
43             print >> sys.stderr, "Have no idea to release:", line,
44
45
46 if __name__ == '__main__':
47     main()