def create(self, base=None, cpus=None, ram=None, name=None, ip=None, mac=None, vnc=None): self._store() if not name: debug("Missing name") return if self.store.exists("Vms", "active", name): debug("VM Already Exists") return # set defaults if not base: base = self.conf['vm_default_base'] if not cpus: cpus = self.conf['vm_default_cpus'] if not ram: ram = self.conf['vm_default_ram'] if not vnc: vnc = 5900+self.conf.incr('vnc') if not mac: mac = util.uniq_mac() images = Images('base') self.data['base'] = images[base] self.data['cpus'] = cpus self.data['ram'] = ram self.data['ip'] = ip self.data['mac'] = mac self.data['vnc'] = vnc self.data['state'] = 'off' self.data['name'] = name img = Volume() img.create(self.data['base']) self.data['image'] = img.key debug(self.data) domain = self.xml() debug(domain) self.update_xml() vms = Vms('active') vms[self.data['name']] = self.key self.hv.define(domain) self.save() img.save() vms.save()
def delete(self): self._load() try: self.hv.undefine(self.key) except: pass try: xmld = "%s/%s.xml" % (self.conf['domain_xml_path'], self.key) os.unlink(xmld) except: pass vms = Vms('active') debug(self.key) debug(self.data) vms.remove(self.data['name']) img = Volume(self.data['image']) img.delete() super(VM, self).delete()