diff --git a/lib/workload/stateless/filemanager/README.md b/lib/workload/stateless/filemanager/README.md index 0ae44d572..1b42a624c 100644 --- a/lib/workload/stateless/filemanager/README.md +++ b/lib/workload/stateless/filemanager/README.md @@ -70,9 +70,7 @@ Then deploy the cdk to localstack: ```sh cd deploy - npm install - npx cdklocal bootstrap npx cdklocal deploy ``` diff --git a/skel/rust-api/src/main.rs b/skel/rust-api/src/main.rs index 2255a38c2..5d4711a80 100644 --- a/skel/rust-api/src/main.rs +++ b/skel/rust-api/src/main.rs @@ -13,19 +13,21 @@ use utoipa_swagger_ui::SwaggerUi; use tower_http::trace::{self, TraceLayer}; use tracing::{info, Level}; -/// FileManager keeps track of files from many storage backend. The FileManager is responsible for: +/// FileManager keeps track of files from many storage backend. All files have an external, public, +/// file UUID so that they can be uniquely identified in our whole microservices environment. /// -/// 1. Listening and ingesting file creation events from the different storage backends. -/// 2. Querying on file attributes such as name, type of file, creation date, etc... -/// 3. Interfacing with htsget-rs for the biological-specific file formats: CRAM, BAM, VCF, BCF... -/// 4. Interacting with the metadata microservice to enrich the results of any particular query, returning -/// its associated metadata. A file should have a metadata id. -/// 5. Making sure the workflow run id is present and associated with any given file. -/// 6. Audit: Keep records for deleted objects even after the actual data is deleted. -/// 7. Audit: Record file ownership (on create, no chain of custody functionality needed). +/// The FileManager is responsible for: /// -/// All files have an external, public, file UUID so that they can be uniquely identified in our whole -/// microservices environment. +/// 1. Listening and ingesting (indexing) file creation events from the different storage backends. +/// 2. Querying on file attributes such as name, type of file, creation date, etc... +/// 3. Record file provenance (on create, on delete). +/// 4. Record object lifecycle status, i.e: Tier transition, backup to different storage, deletion. +/// 5. Manage object identity, i.e: UUID, path, etc... +/// +/// Non goals: +/// +/// 1. Perform checksumming of files: Too computationally expensive for our file sizes. +/// 2. Link objects/paths to metadata: That would tightly couple filemanager with metadata service. #[tokio::main] async fn main() -> Result<(), Error> {