def s3errors(path): """Translate S3 errors to FSErrors.""" try: yield except ClientError as error: _error = error.response.get('Error', {}) error_code = _error.get('Code', None) response_meta = error.response.get('ResponseMetadata', {}) http_status = response_meta.get('HTTPStatusCode', 200) error_msg = _error.get('Message', None) if error_code == 'NoSuchBucket': raise errors.ResourceError(path, exc=error, msg=error_msg) if http_status == 404: raise errors.ResourceNotFound(path) elif http_status == 403: raise errors.PermissionDenied(path=path, msg=error_msg) else: raise errors.OperationFailed(path=path, exc=error) except SSLError as error: raise errors.OperationFailed(path, exc=error) except EndpointConnectionError as error: raise errors.RemoteConnectionError( path, exc=error, msg="{}".format(error) )
def makedir(self, path, permissions=None, recreate=False): self.check() result = self.pcloud.createfolder(path=path) if result["result"] == 2004: if recreate: # If the directory already exists and recreate = True # we don't want to raise an error pass else: raise errors.DirectoryExists(path) elif result["result"] != 0: raise errors.OperationFailed(path=path, msg='Create of directory failed with {0}'.format(result["error"])) else: # everything is OK return self.opendir(path)
def clean(self): """Clean (delete) temporary files created by this filesystem.""" if self._cleaned: return try: logger.info( "Shutting down File System. Cleaning directories at {}".format( self._temp_dir)) shutil.rmtree(self._temp_dir) except Exception as error: if not self._ignore_clean_errors: raise errors.OperationFailed( msg="failed to remove temporary directory", exc=error) self._cleaned = True
def clean(self) -> None: """Clean (delete) temporary files created by this filesystem.""" if self._cleaned: return self._client.cleanup() try: shutil.rmtree(self._temp_dir) except Exception as error: if not self._ignore_clean_errors: raise errors.OperationFailed( msg="failed to remove temporary directory; {}".format( error), exc=error, ) self._cleaned = True