From e7cbfb0a3044f9c1be9a0e46bce832271db2c363 Mon Sep 17 00:00:00 2001
From: Nikos Skalkotos <skalkoto@grnet.gr>
Date: Thu, 21 Jun 2012 18:10:22 +0300
Subject: [PATCH] Add get_sysprep_by_name method in os_type classes

This method returns a sysprep object with a given name. Now,
(enable,disable)_sysprep work with sysprep objects instead of sysprep
names
---
 image_creator/main.py             |  4 ++--
 image_creator/os_type/__init__.py | 16 ++++++++--------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/image_creator/main.py b/image_creator/main.py
index 2f0bbb0..fde3b7d 100644
--- a/image_creator/main.py
+++ b/image_creator/main.py
@@ -195,10 +195,10 @@ def image_creator():
         out.output()
 
         for sysprep in options.disabled_syspreps:
-            image_os.disable_sysprep(sysprep)
+            image_os.disable_sysprep(image_os.get_sysprep_by_name(sysprep))
 
         for sysprep in options.enabled_syspreps:
-            image_os.enable_sysprep(sysprep)
+            image_os.enable_sysprep(image_os.get_sysprep_by_name(sysprep))
 
         if options.print_sysprep:
             image_os.print_syspreps()
diff --git a/image_creator/os_type/__init__.py b/image_creator/os_type/__init__.py
index 5601a87..38b46d6 100644
--- a/image_creator/os_type/__init__.py
+++ b/image_creator/os_type/__init__.py
@@ -97,10 +97,10 @@ class OSBase(object):
 
         return (obj.__name__.replace('_', '-'), textwrap.dedent(obj.__doc__))
 
-    def _sysprep_change_status(self, name, status):
-
+    def get_sysprep_by_name(self, name):
+        """Returns the sysprep object with the given name"""
         error_msg = "Syprep operation %s does not exist for %s" % \
-                (name, self.__class__.__name__)
+                    (name, self.__class__.__name__)
 
         method_name = name.replace('-', '_')
         method = None
@@ -112,15 +112,15 @@ class OSBase(object):
         if not self._is_sysprep(method):
             raise FatalError(error_msg)
 
-        setattr(method.im_func, 'enabled', status)
+        return method
 
-    def enable_sysprep(self, name):
+    def enable_sysprep(self, obj):
         """Enable a system preperation operation"""
-        self._sysprep_change_status(name, True)
+        setattr(obj.im_func, 'enabled', True)
 
-    def disable_sysprep(self, name):
+    def disable_sysprep(self, obj):
         """Disable a system preperation operation"""
-        self._sysprep_change_status(name, False)
+        setattr(obj.im_func, 'enabled', False)
 
     def print_syspreps(self):
         """Print enabled and disabled system preperation operations."""
-- 
GitLab