def connect(self): if self._mount.isMounted(): return fileUtils.createdir(self._getLocalPath()) try: self._mount.mount(self.options, self._vfsType) except MountError as e: self.log.error("Mount failed: %s", e, exc_info=True) try: os.rmdir(self._getLocalPath()) except OSError: self.log.warn("Failed to remove mount point directory: %s", self._getLocalPath(), exc_info=True) raise e else: try: fileSD.validateDirAccess( self.getMountObj().getRecord().fs_file) except se.StorageServerAccessPermissionError as e: try: self.disconnect() except OSError: self.log.warn("Error while disconnecting after access" "problem", exc_info=True) raise e
def connect(self): if self._mount.isMounted(): return self.validate() fileUtils.createdir(self._getLocalPath()) try: self._mount.mount(self.options, self._vfsType, cgroup=self.CGROUP) except MountError: t, v, tb = sys.exc_info() try: os.rmdir(self._getLocalPath()) except OSError as e: self.log.warn("Error removing mountpoint directory %r: %s", self._getLocalPath(), e) six.reraise(t, v, tb) else: try: fileSD.validateDirAccess( self.getMountObj().getRecord().fs_file) except se.StorageServerAccessPermissionError: t, v, tb = sys.exc_info() try: self.disconnect() except OSError: self.log.exception("Error disconnecting") six.reraise(t, v, tb)
def connect(self): if self._mount.isMounted(): return fileUtils.createdir(self._getLocalPath()) try: self._mount.mount(self.options, self._vfsType) except MountError as e: self.log.error("Mount failed: %s", e, exc_info=True) try: os.rmdir(self._getLocalPath()) except OSError: self.log.warn("Failed to remove mount point directory: %s", self._getLocalPath(), exc_info=True) raise e else: try: fileSD.validateDirAccess( self.getMountObj().getRecord().fs_file) except se.StorageServerAccessPermissionError as e: try: self.disconnect() except OSError: self.log.warn( "Error while disconnecting after access" "problem", exc_info=True) raise e
def _preCreateValidation(cls, sdUUID, domPath, typeSpecificArg, version): # Some trivial resource validation if os.path.abspath(typeSpecificArg) != typeSpecificArg: raise se.StorageDomainIllegalRemotePath(typeSpecificArg) fileSD.validateDirAccess(domPath) sd.validateDomainVersion(version) # Make sure there are no remnants of other domain mdpat = os.path.join(domPath, "*", sd.DOMAIN_META_DATA) if len(glob(mdpat)) > 0: raise se.StorageDomainNotEmpty(typeSpecificArg)
def _preCreateValidation(cls, sdUUID, domPath, typeSpecificArg, version): # Some trivial resource validation if os.path.abspath(typeSpecificArg) != typeSpecificArg: raise se.StorageDomainIllegalRemotePath(typeSpecificArg) fileSD.validateDirAccess(domPath) fileSD.validateFileSystemFeatures(sdUUID, domPath) sd.validateDomainVersion(version) # Make sure there are no remnants of other domain mdpat = os.path.join(domPath, "*", sd.DOMAIN_META_DATA) if len(glob(mdpat)) > 0: raise se.StorageDomainNotEmpty(typeSpecificArg)
def _preCreateValidation(cls, sdUUID, domPath, typeSpecificArg, version): # Some trivial resource validation if ":" not in typeSpecificArg: raise se.StorageDomainIllegalRemotePath(typeSpecificArg) sd.validateDomainVersion(version) # Make sure the underlying file system is mounted if not mount.isMounted(domPath): raise se.StorageDomainFSNotMounted(domPath) fileSD.validateDirAccess(domPath) # Make sure there are no remnants of other domain mdpat = os.path.join(domPath, "*", sd.DOMAIN_META_DATA) if len(oop.getProcessPool(sdUUID).glob.glob(mdpat)) > 0: raise se.StorageDomainNotEmpty(typeSpecificArg)
def _preCreateValidation(cls, sdUUID, domPath, typeSpecificArg, storageType, version): # Some trivial resource validation # TODO Checking storageType==nfs in the nfs class is not clean if storageType == sd.NFS_DOMAIN and ":" not in typeSpecificArg: raise se.StorageDomainIllegalRemotePath(typeSpecificArg) sd.validateDomainVersion(version) # Make sure the underlying file system is mounted if not mount.isMounted(domPath): raise se.StorageDomainFSNotMounted(domPath) fileSD.validateDirAccess(domPath) fileSD.validateFileSystemFeatures(sdUUID, domPath) # Make sure there are no remnants of other domain mdpat = os.path.join(domPath, "*", sd.DOMAIN_META_DATA) if len(oop.getProcessPool(sdUUID).glob.glob(mdpat)) > 0: raise se.StorageDomainNotEmpty(typeSpecificArg)
def checkTarget(self): if not os.path.isdir(self._path): raise se.StorageServerLocalNotDirError(self._path) fileSD.validateDirAccess(self._path) return True