diff --git a/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj b/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj index af55ab2c3..558e1367e 100644 --- a/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj +++ b/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj @@ -32,7 +32,7 @@ - + @@ -42,8 +42,8 @@ - - + + diff --git a/src/Shared/Configuration/packages.lock.json b/src/Shared/Configuration/packages.lock.json index 7ff8aceed..1a2c97b4b 100644 --- a/src/Shared/Configuration/packages.lock.json +++ b/src/Shared/Configuration/packages.lock.json @@ -51,7 +51,7 @@ "type": "Direct", "requested": "[0.1.4, )", "resolved": "0.1.4", - "contentHash": "Y0+QmoUZUw79C7LKhKHNmi5bgeMiPSNjPQzEz4vnagJaEFtdugzQ90ofYMMMAMeOr0FjUgxyPBgvJ1ZG/r76Dw==", + "contentHash": "/fFC/OoidveajNeFj6r6aTGLNMY+Xl7iR/CjZortArBtAxzMgzTRzmjGltWn7Jae8+/Vv8w+pKgT0TZbK9JvxA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", @@ -65,16 +65,16 @@ }, "Monai.Deploy.Storage": { "type": "Direct", - "requested": "[0.2.5, )", - "resolved": "0.2.5", - "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==", + "requested": "[0.2.6-rc0005, )", + "resolved": "0.2.6-rc0005", + "contentHash": "XB6bXf4Z524d/45Rn1t+36tEK3O4oMdC3pa0W63LrifvidbI6jM9FKN8Lxzh/FXV5OBkfjFv5fhIskAlJCv75g==", "dependencies": { "AWSSDK.SecurityToken": "3.7.1.190", "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8", "Microsoft.Extensions.Logging": "6.0.0", - "Monai.Deploy.Storage.S3Policy": "0.2.5", + "Monai.Deploy.Storage.S3Policy": "0.2.6-rc0005", "System.IO.Abstractions": "17.1.1" } }, @@ -229,8 +229,8 @@ }, "Monai.Deploy.Storage.S3Policy": { "type": "Transitive", - "resolved": "0.2.5", - "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==", + "resolved": "0.2.6-rc0005", + "contentHash": "W5UC+iR9H/CKOvib5tr1vOjvGr08E1BjRHvD4GZivxmaVt4KsWwl0jd3dKeHRLyGQO06CLVGqsz6d3zw0ew+LA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Newtonsoft.Json": "13.0.1" diff --git a/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj b/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj index 30f164a78..4d4d2dafd 100644 --- a/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj +++ b/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj @@ -1,41 +1,41 @@ - - - - - - net6.0 - enable - enable - - - - true - true - ..\..\.sonarlint\project-monai_monai-deploy-workflow-managercsharp.ruleset - - - - - - - - - - - - - + + + + + + net6.0 + enable + enable + + + + true + true + ..\..\.sonarlint\project-monai_monai-deploy-workflow-managercsharp.ruleset + + + + + + + + + + + + + diff --git a/src/TaskManager/API/packages.lock.json b/src/TaskManager/API/packages.lock.json index 3a26a2191..9d21ea521 100644 --- a/src/TaskManager/API/packages.lock.json +++ b/src/TaskManager/API/packages.lock.json @@ -6,7 +6,7 @@ "type": "Direct", "requested": "[0.1.4, )", "resolved": "0.1.4", - "contentHash": "Y0+QmoUZUw79C7LKhKHNmi5bgeMiPSNjPQzEz4vnagJaEFtdugzQ90ofYMMMAMeOr0FjUgxyPBgvJ1ZG/r76Dw==", + "contentHash": "/fFC/OoidveajNeFj6r6aTGLNMY+Xl7iR/CjZortArBtAxzMgzTRzmjGltWn7Jae8+/Vv8w+pKgT0TZbK9JvxA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", @@ -20,16 +20,16 @@ }, "Monai.Deploy.Storage": { "type": "Direct", - "requested": "[0.2.5, )", - "resolved": "0.2.5", - "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==", + "requested": "[0.2.6-rc0005, )", + "resolved": "0.2.6-rc0005", + "contentHash": "XB6bXf4Z524d/45Rn1t+36tEK3O4oMdC3pa0W63LrifvidbI6jM9FKN8Lxzh/FXV5OBkfjFv5fhIskAlJCv75g==", "dependencies": { "AWSSDK.SecurityToken": "3.7.1.190", "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8", "Microsoft.Extensions.Logging": "6.0.0", - "Monai.Deploy.Storage.S3Policy": "0.2.5", + "Monai.Deploy.Storage.S3Policy": "0.2.6-rc0005", "System.IO.Abstractions": "17.1.1" } }, @@ -169,8 +169,8 @@ }, "Monai.Deploy.Storage.S3Policy": { "type": "Transitive", - "resolved": "0.2.5", - "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==", + "resolved": "0.2.6-rc0005", + "contentHash": "W5UC+iR9H/CKOvib5tr1vOjvGr08E1BjRHvD4GZivxmaVt4KsWwl0jd3dKeHRLyGQO06CLVGqsz6d3zw0ew+LA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Newtonsoft.Json": "13.0.1" diff --git a/src/TaskManager/Database/packages.lock.json b/src/TaskManager/Database/packages.lock.json index 90ca96565..7236bfde8 100644 --- a/src/TaskManager/Database/packages.lock.json +++ b/src/TaskManager/Database/packages.lock.json @@ -175,7 +175,7 @@ "Monai.Deploy.Messaging": { "type": "Transitive", "resolved": "0.1.4", - "contentHash": "Y0+QmoUZUw79C7LKhKHNmi5bgeMiPSNjPQzEz4vnagJaEFtdugzQ90ofYMMMAMeOr0FjUgxyPBgvJ1ZG/r76Dw==", + "contentHash": "/fFC/OoidveajNeFj6r6aTGLNMY+Xl7iR/CjZortArBtAxzMgzTRzmjGltWn7Jae8+/Vv8w+pKgT0TZbK9JvxA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", @@ -189,22 +189,22 @@ }, "Monai.Deploy.Storage": { "type": "Transitive", - "resolved": "0.2.5", - "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==", + "resolved": "0.2.6-rc0005", + "contentHash": "XB6bXf4Z524d/45Rn1t+36tEK3O4oMdC3pa0W63LrifvidbI6jM9FKN8Lxzh/FXV5OBkfjFv5fhIskAlJCv75g==", "dependencies": { "AWSSDK.SecurityToken": "3.7.1.190", "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8", "Microsoft.Extensions.Logging": "6.0.0", - "Monai.Deploy.Storage.S3Policy": "0.2.5", + "Monai.Deploy.Storage.S3Policy": "0.2.6-rc0005", "System.IO.Abstractions": "17.1.1" } }, "Monai.Deploy.Storage.S3Policy": { "type": "Transitive", - "resolved": "0.2.5", - "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==", + "resolved": "0.2.6-rc0005", + "contentHash": "W5UC+iR9H/CKOvib5tr1vOjvGr08E1BjRHvD4GZivxmaVt4KsWwl0jd3dKeHRLyGQO06CLVGqsz6d3zw0ew+LA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Newtonsoft.Json": "13.0.1" @@ -302,7 +302,7 @@ "type": "Project", "dependencies": { "Monai.Deploy.Messaging": "[0.1.4, )", - "Monai.Deploy.Storage": "[0.2.5, )", + "Monai.Deploy.Storage": "[0.2.6-rc0005, )", "MongoDB.Bson": "[2.17.1, )" } } diff --git a/src/TaskManager/Plug-ins/Argo/Monai.Deploy.WorkflowManager.TaskManager.Argo.csproj b/src/TaskManager/Plug-ins/Argo/Monai.Deploy.WorkflowManager.TaskManager.Argo.csproj index 8e311888f..8422532fd 100644 --- a/src/TaskManager/Plug-ins/Argo/Monai.Deploy.WorkflowManager.TaskManager.Argo.csproj +++ b/src/TaskManager/Plug-ins/Argo/Monai.Deploy.WorkflowManager.TaskManager.Argo.csproj @@ -22,8 +22,8 @@ enable - - + + @@ -34,7 +34,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/TaskManager/Plug-ins/Argo/packages.lock.json b/src/TaskManager/Plug-ins/Argo/packages.lock.json index 6c7c0c266..eda1173cc 100644 --- a/src/TaskManager/Plug-ins/Argo/packages.lock.json +++ b/src/TaskManager/Plug-ins/Argo/packages.lock.json @@ -36,7 +36,7 @@ "type": "Direct", "requested": "[0.1.4, )", "resolved": "0.1.4", - "contentHash": "Y0+QmoUZUw79C7LKhKHNmi5bgeMiPSNjPQzEz4vnagJaEFtdugzQ90ofYMMMAMeOr0FjUgxyPBgvJ1ZG/r76Dw==", + "contentHash": "/fFC/OoidveajNeFj6r6aTGLNMY+Xl7iR/CjZortArBtAxzMgzTRzmjGltWn7Jae8+/Vv8w+pKgT0TZbK9JvxA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", @@ -50,16 +50,16 @@ }, "Monai.Deploy.Storage": { "type": "Direct", - "requested": "[0.2.5, )", - "resolved": "0.2.5", - "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==", + "requested": "[0.2.6-rc0005, )", + "resolved": "0.2.6-rc0005", + "contentHash": "XB6bXf4Z524d/45Rn1t+36tEK3O4oMdC3pa0W63LrifvidbI6jM9FKN8Lxzh/FXV5OBkfjFv5fhIskAlJCv75g==", "dependencies": { "AWSSDK.SecurityToken": "3.7.1.190", "Ardalis.GuardClauses": "4.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8", "Microsoft.Extensions.Logging": "6.0.0", - "Monai.Deploy.Storage.S3Policy": "0.2.5", + "Monai.Deploy.Storage.S3Policy": "0.2.6-rc0005", "System.IO.Abstractions": "17.1.1" } }, @@ -338,8 +338,8 @@ }, "Monai.Deploy.Storage.S3Policy": { "type": "Transitive", - "resolved": "0.2.5", - "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==", + "resolved": "0.2.6-rc0005", + "contentHash": "W5UC+iR9H/CKOvib5tr1vOjvGr08E1BjRHvD4GZivxmaVt4KsWwl0jd3dKeHRLyGQO06CLVGqsz6d3zw0ew+LA==", "dependencies": { "Ardalis.GuardClauses": "4.0.1", "Newtonsoft.Json": "13.0.1" @@ -558,7 +558,7 @@ "Microsoft.Extensions.Logging": "[6.0.0, )", "Microsoft.Extensions.Options": "[6.0.0, )", "Monai.Deploy.Messaging": "[0.1.4, )", - "Monai.Deploy.Storage": "[0.2.5, )", + "Monai.Deploy.Storage": "[0.2.6-rc0005, )", "Newtonsoft.Json": "[13.0.1, )", "System.IO.Abstractions": "[17.1.1, )" } @@ -567,7 +567,7 @@ "type": "Project", "dependencies": { "Monai.Deploy.Messaging": "[0.1.4, )", - "Monai.Deploy.Storage": "[0.2.5, )", + "Monai.Deploy.Storage": "[0.2.6-rc0005, )", "MongoDB.Bson": "[2.17.1, )" } } diff --git a/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs b/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs index f1a3461d9..e38e08ac6 100644 --- a/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs +++ b/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs @@ -163,7 +163,7 @@ private async Task> SetupInputs(CancellationToken can SessionToken = input.Credentials?.SessionToken, }; - var objects = await storageService.ListObjectsWithCredentialsAsync(input.Bucket, credentials, input.RelativeRootPath, true, cancellationToken); + var objects = await storageService.ListObjectsAsync(input.Bucket, input.RelativeRootPath, true, cancellationToken); var id = Guid.NewGuid(); // Host Path of the Directory for this Input File. @@ -179,21 +179,15 @@ private async Task> SetupInputs(CancellationToken can foreach (var obj in objects) { // Task Manager Container Path of the Input File. - var inputContainerPath = Path.Combine(payloadContainerPath, id.ToString(), obj.Filename.Replace(input.RelativeRootPath, "")); + var inputContainerPath = Path.Combine(payloadContainerPath, id.ToString(), obj.FilePath.Replace(input.RelativeRootPath, "")); // Task Manager Container Path of the Directory for this Input File. - var parentPath = Directory.GetParent(inputContainerPath).Parent.FullName; + var parentPath = Path.GetDirectoryName(inputContainerPath); Directory.CreateDirectory(parentPath); - var stream = await storageService.GetObjectWithCredentialsAsync(input.Bucket, obj.Filename, credentials, cancellationToken); - var streamWriter = new StreamWriter(inputContainerPath); - var bufferSize = 1 * 1024 * 1024; - byte[] buffer = new byte[bufferSize]; - - while (stream.Read(buffer, 0, bufferSize) != 0) - { - streamWriter.Write(buffer); - } + using var stream = await storageService.GetObjectAsync(input.Bucket, obj.FilePath, cancellationToken) as MemoryStream; + using var fileStream = new FileStream(inputContainerPath, FileMode.CreateNew, FileAccess.Write); + stream!.WriteTo(fileStream); } } diff --git a/src/TaskManager/TaskManager/Logging/Log.cs b/src/TaskManager/TaskManager/Logging/Log.cs index 427fa44df..c987ff698 100644 --- a/src/TaskManager/TaskManager/Logging/Log.cs +++ b/src/TaskManager/TaskManager/Logging/Log.cs @@ -116,5 +116,8 @@ public static partial class Log [LoggerMessage(EventId = 118, Level = LogLevel.Error, Message = "Error removing storage user account {username}.")] public static partial void ErrorRemovingStorageUserAccount(this ILogger logger, string username, Exception exception); + + [LoggerMessage(EventId = 119, Level = LogLevel.Debug, Message = "Generating temporary credentials for bucket={bucket}, path={path}.")] + public static partial void GenerateTemporaryCredentials(this ILogger logger, string bucket, string path); } } diff --git a/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj b/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj index 30443beeb..5126a54de 100644 --- a/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj +++ b/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj @@ -1,4 +1,4 @@ -