stats = { "source": self.settings(), "type": os.path.splitext(self.settings())[1][1:], "size": self.io().stat(self._image_path()).st_size, "md5": md5, "sha256": sha256, "added": time.time() } util.yaml_write(self._image_path() + ".yml", stats) _pending.release() def _generate_hashes(self): try: self.say("generate image checksum...") md5_hash = hashlib.md5() sha256_hash = hashlib.sha256() with open(self._image_path(), 'rb') as hdl: buf = hdl.read(65536) while len(buf) > 0: md5_hash.update(buf) sha256_hash.update(buf) buf = hdl.read(65536) return (md5_hash.hexdigest(), sha256_hash.hexdigest()) except IOError as err: raise error.ExecError("Could not create validation hashes") EntityRegister.register_attribute("node", ImageAttribute)
def register(cls): EntityRegister.register_attribute("network", cls)
def register(cls): EntityRegister.register_attribute("distribution", cls)
if not pool.isActive(): pool.create() def used_pool(self): pool = self.get_pool(self.settings(), raise_exception=False) if not pool: if not self.has_component("pool", self.settings()): raise error.NotFound("pool {} does not exist.") for i in range(self.global_get("global/retry_pool", 20)): pool = self.get_pool(name, raise_exception=False) if pool: break self.counted(i, "Waiting for pool {} to become ready.".format(self.settings())) sleep(self.global_get("global/wait", 3)) raise error.ExecError("Coult not start pool {}!".format(self.settings())) return pool def used_pool_name(self): return self.settings() def used_pool_type(self): pool = self.used_pool() xml = etree.fromstring(pool.XMLDesc()) return xml.attrib["type"] EntityRegister.register_attribute("node", PoolAttribute)