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)
def _get_image_path(self): im = image.ImageManifest(self.sd_manifest.getRepoPath()) return im.getImageDir(self.sd_manifest.sdUUID, self.img_id)