Beispiel #1
0
def make_block_volume(lvm,
                      sd_manifest,
                      size,
                      imguuid,
                      voluuid,
                      parent_vol_id=sc.BLANK_UUID,
                      vol_format=sc.RAW_FORMAT,
                      prealloc=sc.PREALLOCATED_VOL,
                      disk_type=image.UNKNOWN_DISK_TYPE,
                      desc='fake volume'):
    sduuid = sd_manifest.sdUUID
    image_manifest = image.ImageManifest(sd_manifest.getRepoPath())
    imagedir = image_manifest.getImageDir(sduuid, imguuid)
    if not os.path.exists(imagedir):
        os.makedirs(imagedir)

    size_mb = utils.round(size, MB) / MB
    lvm.createLV(sduuid, voluuid, size_mb)
    lv_size = int(lvm.getLV(sduuid, voluuid).size)
    lv_size_blk = lv_size / sc.BLOCK_SIZE

    with sd_manifest.acquireVolumeMetadataSlot(voluuid,
                                               sc.VOLUME_MDNUMBLKS) as slot:
        lvm.addtag(sduuid, voluuid, "%s%s" % (sc.TAG_PREFIX_MD, slot))
        lvm.addtag(sduuid, voluuid,
                   "%s%s" % (sc.TAG_PREFIX_PARENT, parent_vol_id))
        lvm.addtag(sduuid, voluuid, "%s%s" % (sc.TAG_PREFIX_IMAGE, imguuid))

    vol_class = sd_manifest.getVolumeClass()
    vol_class.newMetadata(
        (sduuid, slot), sduuid, imguuid, parent_vol_id, lv_size_blk,
        sc.type2name(vol_format), sc.type2name(prealloc),
        sc.type2name(sc.LEAF_VOL), disk_type, desc, sc.LEGAL_VOL)
Beispiel #2
0
 def _get_image_path(self):
     im = image.ImageManifest(self.sd_manifest.getRepoPath())
     return im.getImageDir(self.sd_manifest.sdUUID, self.img_id)