Пример #1
0
 def validateMetaVolumePath(self):
     """
     In file volume repositories,
     the volume metadata must exists after the image/volume is created.
     """
     metaVolumePath = self._getMetaVolumePath()
     if not self.oop.fileUtils.pathExists(metaVolumePath):
         raise se.VolumeDoesNotExist(self.volUUID)
Пример #2
0
    def validateVolumePath(self):
        """
        In file volume repositories,
        the volume file and the volume md must exists after the image/volume is created.
        """
        self.log.debug("validate path for %s" % self.volUUID)
        if not self.imagePath:
            self.validateImagePath()
        volPath = os.path.join(self.imagePath, self.volUUID)
        if not self.oop.fileUtils.pathExists(volPath):
            raise se.VolumeDoesNotExist(self.volUUID)

        self.volumePath = volPath
        if not sdCache.produce(self.sdUUID).isISO():
            self.validateMetaVolumePath()
Пример #3
0
 def findImagesByVolume(self, legal=False):
     """
     Find the image(s) UUID by one of its volume UUID.
     Templated and shared disks volumes may result more then one image.
     """
     try:
         pattern = os.path.join(self.repoPath, self.sdUUID,
                                sd.DOMAIN_IMAGES, "*", self.volUUID)
         vollist = self.oop.glob.glob(pattern)
         for vol in vollist[:]:
             img = os.path.basename(os.path.dirname(vol))
             if img.startswith(image.REMOVED_IMAGE_PREFIX):
                 vollist.remove(vol)
     except Exception, e:
         self.log.info("Volume %s does not exists." % (self.volUUID))
         raise se.VolumeDoesNotExist("%s: %s:" % (self.volUUID, e))
Пример #4
0
def _getVolumeTag(sdUUID, volUUID, tagPrefix):
    tags = lvm.getLV(sdUUID, volUUID).tags
    if TAG_VOL_UNINIT in tags:
        log.warning("Reloading uninitialized volume %s/%s", sdUUID, volUUID)
        lvm.invalidateVG(sdUUID)
        tags = lvm.getLV(sdUUID, volUUID).tags
        if TAG_VOL_UNINIT in tags:
            log.error("Found uninitialized volume: %s/%s", sdUUID, volUUID)
            raise se.VolumeDoesNotExist("%s/%s" % (sdUUID, volUUID))

    for tag in tags:
        if tag.startswith(tagPrefix):
            return tag[len(tagPrefix):]
    else:
        log.error("Missing tag %s in volume: %s/%s. tags: %s", tagPrefix,
                  sdUUID, volUUID, tags)
        raise se.MissingTagOnLogicalVolume(volUUID, tagPrefix)
Пример #5
0
 def validate(self):
     try:
         lvm.getLV(self.sdUUID, self.volUUID)
     except se.LogicalVolumeDoesNotExistError:
         raise se.VolumeDoesNotExist(self.volUUID)
     volume.VolumeMetadata.validate(self)