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)
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()
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))
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)
def validate(self): try: lvm.getLV(self.sdUUID, self.volUUID) except se.LogicalVolumeDoesNotExistError: raise se.VolumeDoesNotExist(self.volUUID) volume.VolumeMetadata.validate(self)