+class Validate:
+ def __init__(self, username, state, machine_id=None, name=None, description=None, owner=None,
+ admin=None, contact=None, memory=None, disksize=None,
+ vmtype=None, cdrom=None, autoinstall=None, strict=False):
+ # XXX Successive quota checks aren't a good idea, since you
+ # can't necessarily change the locker and disk size at the
+ # same time.
+ created_new = (machine_id is None)
+
+ if strict:
+ if name is None:
+ raise InvalidInput('name', name, "You must provide a machine name.")
+ if description is None:
+ raise InvalidInput('description', description, "You must provide a description.")
+ if memory is None:
+ raise InvalidInput('memory', memory, "You must provide a memory size.")
+ if disksize is None:
+ raise InvalidInput('disk', disksize, "You must provide a disk size.")
+
+ if machine_id is not None:
+ self.machine = testMachineId(username, state, machine_id)
+ machine = getattr(self, 'machine', None)
+
+ owner = testOwner(username, owner, machine)
+ if owner is not None:
+ self.owner = owner
+ self.admin = testAdmin(username, admin, machine)
+ contact = testContact(username, contact, machine)
+ if contact is not None:
+ self.contact = contact
+ name = testName(username, name, machine)
+ if name is not None:
+ self.name = name
+ description = testDescription(username, description, machine)
+ if description is not None:
+ self.description = description
+ if memory is not None:
+ self.memory = validMemory(self.owner, state, memory, machine,
+ on=not created_new)
+ if disksize is not None:
+ self.disksize = validDisk(self.owner, state, disksize, machine)
+ if vmtype is not None:
+ self.vmtype = validVmType(vmtype)
+ if cdrom is not None:
+ if not CDROM.query().get(cdrom):
+ raise CodeError("Invalid cdrom type '%s'" % cdrom)
+ self.cdrom = cdrom
+ if autoinstall is not None:
+ self.autoinstall = Autoinstall.query().get(autoinstall)
+
+
+def getMachinesByOwner(owner, machine=None):