for i in range(len(fields)):
param = needed[names[i]]
- if param.validator(output[i]):
- image.os.sysprep_params[names[i]] = output[i]
- else:
- d.msgbox("The value you provided for parameter: %s is not valid" %
- names[i], width=SMALL_WIDTH)
- return False
+ try:
+ value = param.type(output[i])
+ if param.validate(value):
+ image.os.sysprep_params[names[i]] = value
+ continue
+ except ValueError:
+ pass
+
+ d.msgbox("The value you provided for parameter: `%s' is not valid" %
+ names[i], width=SMALL_WIDTH)
+ return False
return True
def sysprep_params_validate(answer):
params = {}
for i in range(len(answer)):
- if needed[param_names[i]].validator(answer):
- params[param_names[i]] = answer[i]
- else:
- session['dialog'].msgbox("Invalid value for parameter `%s'" %
+ try:
+ value = needed[param_names[i]].type(answer[i])
+ if needed[param_names[i]].validate(value):
+ params[param_names[i]] = value
+ continue
+ except ValueError:
+ pass
+
+ session['dialog'].msgbox("Invalid value for parameter `%s'" %
param_names[i])
- raise WizardReloadPage
+ raise WizardReloadPage
return params
def sysprep_params_display(params):
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
"""
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)
return inner
return wrapper
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
class Windows(OSBase):
"""OS class for Windows"""
- @add_sysprep_param('password', None, 'Image Administrator Password')
+ @add_sysprep_param('password', str, None, 'Image Administrator Password')
def __init__(self, image, **kargs):
super(Windows, self).__init__(image, **kargs)