Merge branch 'hotfix-0.4.4' into develop
[snf-image-creator] / image_creator / os_type / __init__.py
index ddda45e..cc7d39a 100644 (file)
@@ -62,6 +62,7 @@ def os_cls(distro, osfamily):
 
 
 def add_prefix(target):
+    """Decorator that adds a prefix to the result of a function"""
     def wrapper(self, *args):
         prefix = args[0]
         return [prefix + path for path in target(self, *args)]
@@ -88,7 +89,7 @@ def sysprep(message, enabled=True, **kwargs):
     return wrapper
 
 
-def add_sysprep_param(name, default, description, validator=lambda x: True):
+def add_sysprep_param(name, type, default, descr, validate=lambda x: True):
     """Decorator for __init__ that adds the definition for a system preparation
     parameter in an instance of a os_type class
     """
@@ -97,7 +98,9 @@ def add_sysprep_param(name, default, description, validator=lambda x: True):
         def inner(self, *args, **kwargs):
             init(self, *args, **kwargs)
             self.needed_sysprep_params[name] = \
-                self.SysprepParam(default, description, validator)
+                self.SysprepParam(type, default, descr, validate)
+            if default is not None:
+                self.sysprep_params[name] = default
         return inner
     return wrapper
 
@@ -118,7 +121,8 @@ def del_sysprep_param(name):
 class OSBase(object):
     """Basic operating system class"""
 
-    SysprepParam = namedtuple('SysprepParam', 'default description validator')
+    SysprepParam = namedtuple('SysprepParam',
+                              ['type', 'default', 'description', 'validate'])
 
     def __init__(self, image, **kargs):
         self.image = image
@@ -134,6 +138,13 @@ class OSBase(object):
         self.meta = {}
         self.mounted = False
 
+        # Many guestfs compilations don't support scrub
+        self._scrub_support = True
+        try:
+            self.g.available(['scrub'])
+        except RuntimeError:
+            self._scrub_support = False
+
     def collect_metadata(self):
         """Collect metadata about the OS"""
         try: