nova spawn instance的时候,会先create_p_w_picpath,下面是获取的base p_w_picpath的函数
def get_cache_fname(p_w_picpaths, key):
"""Return a filename based on the SHA1 hash of a given p_w_picpath ID.
Image files stored in the _base directory that match this pattern
are considered for cleanup by the p_w_picpath cache manager. The cache
manager considers the file to be in use if it matches an instance's
p_w_picpath_ref, kernel_id or ramdisk_id property.
However, in grizzly-3 and before, only the p_w_picpath_ref property was
considered. This means that it's unsafe to store kernel and ramdisk
p_w_picpaths using this pattern until we're sure that all compute nodes
are running a cache manager newer than grizzly-3. For now, we
require admins to confirm that by setting the remove_unused_kernels
boolean but, at some point in the future, we'll be safely able to
assume this.
"""
p_w_picpath_id = str(p_w_picpaths[key])
if ((not CONF.libvirt.remove_unused_kernels and # remove_unused_kernels默认值是True
key in ['kernel_id', 'ramdisk_id'])):
return p_w_picpath_id
else:
return hashlib.sha1(p_w_picpath_id).hexdigest() # base p_w_picpath id生成