def after_spawn(self): pool = self.other_attribute("pool").used_pool() size = self.io().stat(self.get_tmp_volume_path()).st_size volume_tpl = paths.template("volume.xml") xml = volume_tpl.safe_substitute({ "name": self.component_entity(), "capacity": size }) # FIXME: Add error handling volume = pool.createXML(xml) def read_handler(stream, data, file_): return file_.read(data) self.say("importing...") with open(self.get_tmp_volume_path(), 'r') as image: stream = self.virt().newStream(0) volume.upload(stream, 0, 0, 0) stream.sendAll(read_handler, image) stream.finish() disk_tpl = paths.template("disk.xml") xml = disk_tpl.safe_substitute({ "pool": pool.name(), "volume": self.component_entity() }) self.parent().add_xml('devices', xml) self.io().rm(self._tempdir)
def spawn(self): template = 'mode.xml' if self._get_dev(): template = 'mode_route_dev.xml' xml = paths.template(template) self.get_parent().add_xml(xml.safe_substitute({ 'type': self._get_mode(), 'dev': self._get_dev() }))
def spawn(self): settings = { 'ip': self.setting('ip', '192.168.122.1'), 'netmask': self.setting('netmask', '255.255.255.0'), 'start': self.setting('dhcp/start', '192.168.122.2'), 'end': self.setting('dhcp/end', '192.168.122.254') } self.say("setup ipv4 network") self.say("gateway ip = {}".format(settings["ip"])) self.say("dhcp = {}/{}".format(settings["start"], settings["end"])) xml = paths.template('ipv4.xml') self.get_parent().add_xml(xml.safe_substitute(settings))
def _spawn_network(self): self.childs_run("spawn") replace = {'config': "\n".join(self.xml_net), 'name': self.name} tpl = paths.template('network-component.xml') xml = tpl.safe_substitute(replace) # FIXME: Handle case where the network already is used by another # device try: self.virt().networkDefineXML(xml) net = self.get_network(self.name) return net except libvirt.libvirtError as err: raise error.ExecError("Could not define {}: {}".format(self.name, err))
def _spawn_domain(self): self.say("spawning...") self.xml_dfn = {'devices': ''} self.each_child("spawn") caps = self.get_capabilities() self.add_meta('created', time()) self.add_meta('definition', self.config("runtime/definition")) self.add_meta('user', self.io().user()) xml = paths.template('node.xml') self.xml_dfn['name'] = self.entity() self.xml_dfn['meta'] = self._generate_meta_xml() self.xml_dfn.update(caps) self.finalize() self.each_child("after_spawn") try: self.virt().defineXML(xml.safe_substitute(self.xml_dfn)) domain = self.get_domain(self.entity()) return domain except libvirt.libvirtError as err: raise error.ExecError("Could not start {}: {}".format(self.entity(), str(err)))
def _gen_xml(self): xml = paths.template('network.xml') return xml.safe_substitute({'network': self.network_name()})
def spawn(self): if not self.settings(): return xml = paths.template('graphic.xml') self.add_xml('devices', xml.safe_substitute())