Skip to content

Project-MONAI/monai-deploy-storage

Repository files navigation

project-monai

💡 If you want to know more about MONAI Deploy WG vision, overall structure, and guidelines, please read MONAI Deploy first.

MONAI Deploy Storage

License codecov ci Nuget

The MONAI Deploy Storage library for MONAI Deploy clinical data pipelines system enables users to extend the system to external storage services by implementing the IStorageService API, which allows the users to plug in any other storage services, such as AWS S3 and Azure Blob Storage.

Currently supported storage services:

* Services provided may not be free or requires special license agreements. Please refer to the service providers' website for additional terms and conditions.

If you would like to use a storage service provider not listed above, please file an issue and contribute to the repository.


Installation

1. Configure the Service

To use the MONAI Deploy Storage library, install the NuGet.Org package and call the AddMonaiDeployStorageService(...) method to register the dependencies:

Host.CreateDefaultBuilder(args)
    .ConfigureServices((hostContext, services) =>
    {
        ...
        services.AddMonaiDeployStorageService(hostContext.Configuration.GetSection("InformaticsGateway:storage:serviceAssemblyName").Value);
        ...
    });

2. Install the Plug-in

  1. Create a subdirectory named plug-ins in the directory where your main application is installed.
  2. Download the zipped plug-in of your choice and extract the files to the plug-ins directory.
  3. Update appsettings.json and set the serviceAssemblyName, e.g.:
     "storage": {
       "serviceAssemblyName": "Monai.Deploy.Storage.MinIo.MinIoStorageService, Monai.Deploy.Storage.MinIO"
     }

3. Restrict Access to the Plug-ins Directory

To avoid tampering of the plug-ins, it is recommended to set access rights to the plug-ins directory.


Releases

The MONAI Deploy Storage library is released in NuGet & zip formats. NuGet packages are available on both NuGet.Org and GitHub. Zip files may be found in the build artifacts or the Releases section.

Official Builds

Official releases are built and released from the main branch.

RC Builds

Release candidates are built and released from the release/* branches.

Development Builds

Development builds are made from all branches except the main branch and the release/* branches. The NuGet packages are released to GitHub only.

Contributing

For guidance on contributing to MONAI Deploy Workflow Manager, see the contributing guidelines.

Writing Your Plug-in

To extend MONAI Deploy with your custom storage service provider, you must implement the IStorageService interface and extend the ServiceRegistrationBase base class.

  • The IStorageService interface provides a set of methods required to interact with the storage layer.
  • The ServiceRegistrationBase base class provides an abstract method Configure() to configure service dependencies based on .NET Dependency injection. The derived instance is dynamically activated during runtime based on the ServiceAssemblyName value defined in the StorageServiceConfiguration.

Community

To participate, please join the MONAI Deploy Workflow Manager weekly meetings on the calendar and review the meeting notes.

Join the conversation on Twitter @ProjectMONAI or join our Slack channel.

Ask and answer questions over on MONAI Deploy Storage's GitHub Discussions tab.

License

Copyright (c) MONAI Consortium. All rights reserved. Licensed under the Apache-2.0 license.

This software uses the Microsoft .NET 6.0 library, and the use of this software is subject to the Microsoft software license terms.

By downloading this software, you agree to the license terms & all licenses listed on the third-party licenses page.

Links