glance_store.common.utils 模块

系统级工具和辅助函数。

class glance_store.common.utils.CooperativeReader(fd)

基类: object

用于读取镜像数据的 eventlet 线程友好类。

在通过迭代器或 read 方法访问数据时,我们会执行 sleep 以允许协同 yield。当有多个镜像正在上传/下载时,这可以防止 eventlet 线程饥饿,即允许所有线程定期调度,而不是让同一个线程持续活动。

read(length=None)

返回底层迭代器的下一个块。

如果底层 fd 已经支持 read(),则在 __init__ 中用 cooperative_read 替换此方法。

glance_store.common.utils.chunkiter(fp, chunk_size=65536)

返回一个迭代器,该迭代器产生固定大小的块,用于类似文件的对象。

参数:
  • fp – 一个类似文件的对象

  • chunk_size – 块的最大大小

glance_store.common.utils.chunkreadable(iter, chunk_size=65536)

用一个读取器包装一个可读的迭代器,该读取器产生首选大小的块,否则保持迭代器不变。

参数:
  • iter – 一个也可能是可读的迭代器

  • chunk_size – 块的最大大小

glance_store.common.utils.cooperative_iter(iter)

返回一个迭代器,该迭代器在每次迭代后进行调度。这可以防止 eventlet 线程饥饿。

参数:

iter – 要包装的迭代器

glance_store.common.utils.cooperative_read(fd)

用一个偏函数包装文件描述符的 read,该偏函数在每次 read 之后进行调度。这可以防止 eventlet 线程饥饿。

参数:

fd – 要包装的文件描述符

glance_store.common.utils.get_hasher(hash_algo, usedforsecurity=True)

根据哈希算法返回所需的哈希器。这主要是为了确保在启用 FIPS 的系统上执行时正确选择哈希算法。

参数:
  • hash_algo – 请求的哈希算法

  • usedforsecurity – 哈希是否用于安全上下文

glance_store.common.utils.is_uuid_like(val)

返回一个值是否为 UUID 的验证。

对于我们的目的,UUID 是一个规范形式的字符串:aaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa