OdooWiki OCA HUB

Filesystem Storage Backend

fs_storage folder_open OCA/storage open_in_new
FS Storage Licencia: LGPL-3

Este addon es un addon técnico que permite definir un almacenamiento tipo sistema de archivos para sus datos. Es utilizado por otros addons para almacenar sus datos de forma transparente en diferentes tipos de almacenamientos.

A través del registro fs.storage, obtiene acceso a un objeto que implementa la interfaz fsspec.spec.AbstractFileSystem y, por lo tanto, le proporciona una interfaz unificada para acceder a sus datos independientemente del protocolo de almacenamiento que decida utilizar.

La lista de protocolos compatibles depende de las implementaciones de fsspec instaladas. De forma predeterminada, el addon instalará los siguientes protocolos:

  • LocalFileSystem
  • MemoryFileSystem
  • ZipFileSystem
  • TarFileSystem
  • FTPFileSystem
  • CachingFileSystem
  • WholeFileSystem
  • SimplCacheFileSystem
  • ReferenceFileSystem
  • GenericFileSystem
  • DirFileSystem
  • DatabricksFileSystem
  • GitHubFileSystem
  • JupiterFileSystem
  • OdooFileSystem

OdooFileSystem es el que le permite almacenar sus datos en un directorio montado en el directorio de almacenamiento de su Odoo. Este es el FS Storage predeterminado al crear un nuevo registro fs.storage.

Otros protocolos están disponibles mediante la instalación de paquetes python adicionales:

  • DropboxDriveFileSystem -\> pip install fsspec[dropbox]
  • HTTPFileSystem -\> pip install fsspec[http]
  • HTTPSFileSystem -\> pip install fsspec[http]
  • GCSFileSystem -\> pip install fsspec[gcs]
  • GSFileSystem -\> pip install fsspec[gs]
  • GoogleDriveFileSystem -\> pip install gdrivefs
  • SFTPFileSystem -\> pip install fsspec[sftp]
  • HaddoopFileSystem -\> pip install fsspec[hdfs]
  • S3FileSystem -\> pip install fsspec[s3]
  • WandbFS -\> pip install wandbfs
  • OCIFileSystem -\> pip install fsspec[oci]
  • AsyncLocalFileSystem -\> pip install 'morefs[asynclocalfs]
  • AzureDatalakeFileSystem -\> pip install fsspec[adl]
  • AzureBlobFileSystem -\> pip install fsspec[abfs]
  • DaskWorkerFileSystem -\> pip install fsspec[dask]
  • GitFileSystem -\> pip install fsspec[git]
  • SMBFileSystem -\> pip install fsspec[smb]
  • LibArchiveFileSystem -\> pip install fsspec[libarchive]
  • OSSFileSystem -\> pip install ossfs
  • WebdavFileSystem -\> pip install webdav4
  • DVCFileSystem -\> pip install dvc
  • XRootDFileSystem -\> pip install fsspec-xrootd

Esta lista de protocolos compatibles no es exhaustiva o podría cambiar en el futuro según las versiones de fsspec. Puede encontrar más información sobre los protocolos compatibles en la documentación de fsspec.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 19.0

Permite a los administradores definir backends de almacenamiento de archivos externos (filestore local de Odoo, S3, SFTP, FTP, ZIP y más) y probar su conexión desde Odoo. Otros módulos pueden entonces enrutar los adjuntos al almacenamiento correcto por modelo o por campo.

Este módulo añade una nueva pantalla de configuración, FS Storage, en el menú Ajustes. Allí, un administrador crea un registro de almacenamiento con un nombre, un código técnico único, un protocolo (la tecnología utilizada para acceder a los archivos, como el filestore de Odoo, S3, SFTP, FTP, ZIP o memoria) y un bloque JSON de opciones de conexión. El formulario muestra la documentación y la lista de opciones disponibles para el protocolo elegido, para que los usuarios sepan qué rellenar.

  • Un botón "Test connection" comprueba que se puede acceder al almacenamiento. Según el método de comprobación elegido, o bien crea un pequeño archivo marcador o bien lista los archivos en la raíz.
  • Las opciones se pueden leer desde variables de entorno cuando está activado el indicador "Resolve env vars", lo que evita escribir secretos directamente en el registro.
  • Se puede establecer una ruta de directorio para limitar el almacenamiento a una subcarpeta, y un indicador cacheable controla si se reutiliza la conexión.
  • Cada almacenamiento se puede vincular a modelos concretos o a campos concretos; los adjuntos vinculados a esos modelos o campos se almacenarán allí. Un modelo o un campo solo puede pertenecer a un almacenamiento, y Odoo bloquea los duplicados.
  • El código debe ser único, y las opciones deben ser JSON válido.

El módulo también añade un vínculo de almacenamiento en los modelos y los campos, y un pequeño asistente para ejecutar una prueba de conexión. Es una base técnica utilizada por otros módulos para almacenar archivos fuera de la base de datos.

Depende de

basebase_sparse_field

Menús que añade

menu_storagemenu_fs_storage
Modelos y campos (4)
  • ir.model · amplía un modelo existentestorage_id
  • fs.storage · modelo nuevocode, name, options, protocol, field_ids, model_ids, field_xmlids, is_cacheable, model_xmlids, directory_path, protocol_descr, options_protocol (Describes Protocol), options_properties (Available properties), eval_options_from_env (Resolve env vars), check_connection_method
  • ir.model.fields · amplía un modelo existentestorage_id
  • fs.test.connection · modelo nuevostorage_id, check_connection_method

Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 4 confirmadas, 5 sin información de 9 versiones.

terminal Instalación y uso

Documentación de OCA · Odoo 19.0

Configuración

Cuando creas un nuevo backend, debes especificar lo siguiente:

  • El nombre del backend. Este es el nombre que se utilizará para identificar el backend en Odoo
  • El código del backend. Este código identificará el backend en el campo store_fname del modelo ir.attachment. Este código debe ser único. Se utilizará como scheme. ejemplo del campo store_fname: odoofs://abs34Tg11.
  • El protocolo utilizado por el backend. El protocolo se refiere a los protocolos soportados del paquete python fsspec.
  • Una ruta de directorio. Este es un directorio raíz desde el cual se montará el filesystem. Este directorio debe existir.
  • Las opciones del protocolo. Estas son las opciones que se pasarán al paquete python fsspec al crear el filesystem. Estas opciones dependen del protocolo utilizado y se describen en la documentación de fsspec.
  • Resolve env vars. Esta opción resuelve los valores de las opciones del protocolo que empiezan por \$ a partir de variables de entorno
  • Check Connection Method. Si se establece, Odoo siempre comprobará la conexión antes de usar un almacenamiento y eliminará la conexión fs de la caché si la comprobación falla.
  • Create Marker file: crea un archivo oculto en el remoto y luego comprueba que existe con Úsalo si tienes acceso de escritura al remoto y si no es un problema dejar el archivo marcador en el directorio raíz.
  • List file: lista todos los archivos del directorio raíz. Puedes usarlo si la ruta del directorio no contiene una gran lista de archivos (por razones de rendimiento)

Algunos protocolos definidos en el paquete fsspec son envoltorios alrededor de otros protocolos. Por ejemplo, el protocolo SimpleCacheFileSystem es un envoltorio alrededor de cualquier protocolo de filesystem local. En tales casos, debes especificar en las opciones del protocolo el protocolo que se va a envolver y las opciones que se pasarán al protocolo envuelto.

Por ejemplo, si quieres crear un backend que utilice el protocolo SimpleCacheFileSystem, después de seleccionar el protocolo SimpleCacheFileSystem, debes especificar las opciones del protocolo de la siguiente manera:

{
    "directory_path": "/tmp/my_backend",
    "target_protocol": "odoofs",
    "target_options": {...},
}

En este ejemplo, el protocolo SimpleCacheFileSystem se utilizará como envoltorio alrededor del protocolo odoofs.

Entorno del servidor

Para facilitar la gestión de la configuración de los almacenamientos de filesystem en los diferentes entornos, la configuración de los almacenamientos de filesystem se puede definir en archivos de entorno o directamente en el archivo de configuración principal. Por ejemplo, la configuración de un almacenamiento de filesystem con el código fsprod se puede proporcionar en el archivo de configuración principal de la siguiente manera:

[fs_storage.fsprod]
protocol=s3
options={"endpoint_url": "https://my_s3_server/", "key": "KEY", "secret": "SECRET"}
directory_path=my_bucket

Para que funcione, debe existir un registro storage.backend con el código fsprod en la base de datos. En tu sección de configuración, puedes especificar el valor para los siguientes campos:

  • protocol
  • options
  • directory_path

Al evaluar directory_path, {db_name} se reemplaza por el nombre de la base de datos. Esto es útil en multi-tenant con una configuración completamente controlada por archivos de configuración.

Migración desde storage_backend

El addon fs_storage se puede utilizar para reemplazar el addon storage_backend. (Ha sido diseñado para ser un reemplazo directo del addon storage_backend). Para facilitar la migración, el modelo fs.storage define los métodos de alto nivel disponibles en el modelo storage_backend. Estos métodos son:

  • add
  • get
  • list_files
  • find_files
  • move_files
  • delete

Estos métodos son envoltorios alrededor de los métodos de la clase fsspec.AbstractFileSystem (ver ). Estos métodos están marcados como obsoletos y se eliminarán en una versión futura (V18) del addon. Deberías usar los métodos de la clase fsspec.AbstractFileSystem en su lugar, ya que son más flexibles y potentes. Puedes acceder a la instancia de la clase fsspec.AbstractFileSystem utilizando la propiedad fs de un registro fs.storage.

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.