Statistics
| Branch: | Tag: | Revision:

root / image_creator / os_type / __init__.py @ 0d5a999d

History | View | Annotate | Download (1.3 kB)

1 aa2062ba Nikos Skalkotos
#!/usr/bin/env python
2 aa2062ba Nikos Skalkotos
3 0d5a999d Nikos Skalkotos
def add_prefix(target):
4 0d5a999d Nikos Skalkotos
    def wrapper(self, *args):
5 0d5a999d Nikos Skalkotos
        prefix = args[0]
6 0d5a999d Nikos Skalkotos
        return map(lambda x: prefix + x, target(self, *args))
7 0d5a999d Nikos Skalkotos
    return wrapper
8 0d5a999d Nikos Skalkotos
9 aa2062ba Nikos Skalkotos
class OSBase(object):
10 aa2062ba Nikos Skalkotos
    def __init__(self, rootdev, ghandler):
11 aa2062ba Nikos Skalkotos
        self.root = rootdev
12 aa2062ba Nikos Skalkotos
        self.g = ghandler
13 aa2062ba Nikos Skalkotos
14 0d5a999d Nikos Skalkotos
    @add_prefix
15 0d5a999d Nikos Skalkotos
    def ls(self, directory): return self.g.ls(directory)
16 0d5a999d Nikos Skalkotos
17 0d5a999d Nikos Skalkotos
    @add_prefix
18 0d5a999d Nikos Skalkotos
    def find(self, directory): return self.g.find(directory)
19 0d5a999d Nikos Skalkotos
20 aa2062ba Nikos Skalkotos
    def get_metadata(self):
21 aa2062ba Nikos Skalkotos
        meta = {}
22 aa2062ba Nikos Skalkotos
        meta["OSFAMILY"] = self.g.inspect_get_type(self.root)
23 aa2062ba Nikos Skalkotos
        meta["OS"] = self.g.inspect_get_distro(self.root)
24 aa2062ba Nikos Skalkotos
        meta["description"] = self.g.inspect_get_product_name(self.root)
25 aa2062ba Nikos Skalkotos
26 aa2062ba Nikos Skalkotos
        return meta
27 aa2062ba Nikos Skalkotos
28 aa2062ba Nikos Skalkotos
    def mount_all(self):
29 aa2062ba Nikos Skalkotos
        mps = g.inspect_get_mountpoints(self.root)
30 aa2062ba Nikos Skalkotos
        # Sort the keys to mount the fs in a correct order.
31 aa2062ba Nikos Skalkotos
        # / should be mounted befor /boot, etc
32 aa2062ba Nikos Skalkotos
        def compare (a, b):
33 aa2062ba Nikos Skalkotos
            if len(a[0]) > len(b[0]): return 1
34 aa2062ba Nikos Skalkotos
            elif len(a[0]) == len(b[0]): return 0
35 aa2062ba Nikos Skalkotos
            else: return -1
36 aa2062ba Nikos Skalkotos
        mps.sort(compare)
37 aa2062ba Nikos Skalkotos
        for mp, dev in mps:
38 aa2062ba Nikos Skalkotos
            try:
39 aa2062ba Nikos Skalkotos
                self.g.mount(dev, mp)
40 aa2062ba Nikos Skalkotos
            except RuntimeError as msg:
41 aa2062ba Nikos Skalkotos
                print "%s (ignored)" % msg
42 aa2062ba Nikos Skalkotos
43 aa2062ba Nikos Skalkotos
    def cleanup_sensitive_data(self):
44 aa2062ba Nikos Skalkotos
        raise NotImplementedError
45 aa2062ba Nikos Skalkotos
46 aa2062ba Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :