-def parseCreate(user, fields):
- name = fields.getfirst('name')
- if not validation.validMachineName(name):
- raise InvalidInput('name', name, 'You must provide a machine name. Max 22 chars, alnum plus \'-\' and \'_\'.')
- name = name.lower()
-
- if Machine.get_by(name=name):
- raise InvalidInput('name', name,
- "Name already exists.")
-
- owner = validation.testOwner(user, fields.getfirst('owner'))
-
- memory = fields.getfirst('memory')
- memory = validation.validMemory(owner, memory, on=True)
-
- disk_size = fields.getfirst('disk')
- disk_size = validation.validDisk(owner, disk_size)
-
- vm_type = fields.getfirst('vmtype')
- vm_type = validation.validVmType(vm_type)
-
- cdrom = fields.getfirst('cdrom')
- if cdrom is not None and not CDROM.get(cdrom):
- raise CodeError("Invalid cdrom type '%s'" % cdrom)
+def parseCreate(username, state, fields):
+ kws = dict([(kw, fields.getfirst(kw)) for kw in 'name owner memory disksize vmtype cdrom clone_from'.split()])
+ validate = validation.Validate(username, state, strict=True, **kws)
+ return dict(contact=username, name=validate.name, memory=validate.memory,
+ disksize=validate.disksize, owner=validate.owner, machine_type=validate.vmtype,
+ cdrom=getattr(validate, 'cdrom', None),
+ clone_from=getattr(validate, 'clone_from', None))