diff --git a/TaskManager.Dockerfile b/TaskManager.Dockerfile
index 770efdba3..ab8b7369e 100644
--- a/TaskManager.Dockerfile
+++ b/TaskManager.Dockerfile
@@ -39,7 +39,6 @@ RUN apt-get clean \
&& apt-get install -y --no-install-recommends \
libssl1.1 \
openssl \
- sqlite3 \
&& rm -rf /var/lib/apt/lists
WORKDIR /opt/monai/wm
diff --git a/WorkflowManager.Dockerfile b/WorkflowManager.Dockerfile
index 3e1383831..10a630441 100644
--- a/WorkflowManager.Dockerfile
+++ b/WorkflowManager.Dockerfile
@@ -39,7 +39,6 @@ RUN apt-get clean \
&& apt-get install -y --no-install-recommends \
libssl1.1 \
openssl \
- sqlite3 \
&& rm -rf /var/lib/apt/lists
WORKDIR /opt/monai/wm
diff --git a/doc/dependency_decisions.yml b/doc/dependency_decisions.yml
index 0ff6286f9..4026f5233 100644
--- a/doc/dependency_decisions.yml
+++ b/doc/dependency_decisions.yml
@@ -1395,38 +1395,62 @@
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
- - :approve
- - Microsoft.AspNetCore.Routing
+ - Microsoft.AspNetCore.Routing
- :who: Jack Schofield (JackSchofield23)
:why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
- - :approve
- - Microsoft.AspNetCore.Routing.Abstractions
+ - Microsoft.AspNetCore.Routing.Abstractions
- :who: Jack Schofield (JackSchofield23)
:why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
- - :approve
- - Microsoft.Net.Http.Headers
+ - Microsoft.Net.Http.Headers
- :who: Jack Schofield (JackSchofield23)
:why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
- - :approve
- - Microsoft.DotNet.PlatformAbstractions
+ - Microsoft.DotNet.PlatformAbstractions
- :who: Jack Schofield (JackSchofield23)
:why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
- - :approve
- - Microsoft.Extensions.ObjectPool
+ - Microsoft.Extensions.ObjectPool
- :who: Jack Schofield (JackSchofield23)
:why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
- - :approve
- - Microsoft.AspNetCore.WebUtilities
+ - Microsoft.AspNetCore.WebUtilities
- :who: Jack Schofield (JackSchofield23)
:why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
:versions: []
:when: 2022-08-16 14:46:00.000000000 +01:00
+- - :approve
+ - Docker.DotNet
+ - :who: Victor Chang (mocsharp)
+ :why: MIT - https://github.com/dotnet/Docker.DotNet/blob/master/LICENSE
+ :versions: []
+ :when: 2022-09-12 16:27:00.000000000 +01:00
+- - :approve
+ - AspNetCore.HealthChecks.MongoDb
+ - :who: Victor Chang (mocsharp)
+ :why: Apache 2.0 - https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks/blob/master/LICENSE
+ :versions: []
+ :when: 2022-09-12 15:39:28.416111911 Z
+- - :approve
+ - AspNetCore.HealthChecks.Rabbitmq
+ - :who: Victor Chang (mocsharp)
+ :why: Apache 2.0 - https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks/blob/master/LICENSE
+ :versions: []
+ :when: 2022-09-12 15:39:46.593579624 Z
+- - :approve
+ - Microsoft.AspNetCore.Diagnostics.HealthChecks
+ - :who: Victor Chang (mocsharp)
+ :why: Apache 2.0 - https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt
+ :versions: []
+ :when: 2022-09-12 15:40:42.030017822 Z
diff --git a/src/Monai.Deploy.WorkflowManager.sln b/src/Monai.Deploy.WorkflowManager.sln
index e9071e1d7..cd346d046 100644
--- a/src/Monai.Deploy.WorkflowManager.sln
+++ b/src/Monai.Deploy.WorkflowManager.sln
@@ -76,6 +76,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Monai.Deploy.WorkflowManage
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Monai.Deploy.WorkflowManager.Authentication", "WorkflowManager\Authentication\Monai.Deploy.WorkflowManager.Authentication.csproj", "{7D64A0B1-6FDD-4393-9101-2321EE4C2270}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Monai.Deploy.WorkflowManager.TaskManager.Docker", "TaskManager\Plug-ins\Docker\Monai.Deploy.WorkflowManager.TaskManager.Docker.csproj", "{47C31FB9-C862-4770-83B6-E2DDF260CC67}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Monai.Deploy.WorkflowManager.TaskManager.Docker.Tests", "..\tests\UnitTests\TaskManager.Docker.Tests\Monai.Deploy.WorkflowManager.TaskManager.Docker.Tests.csproj", "{BF6569A1-1A5A-4358-9C02-1A6A5F0FBFD9}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -210,6 +214,14 @@ Global
{7D64A0B1-6FDD-4393-9101-2321EE4C2270}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D64A0B1-6FDD-4393-9101-2321EE4C2270}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D64A0B1-6FDD-4393-9101-2321EE4C2270}.Release|Any CPU.Build.0 = Release|Any CPU
+ {47C31FB9-C862-4770-83B6-E2DDF260CC67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {47C31FB9-C862-4770-83B6-E2DDF260CC67}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {47C31FB9-C862-4770-83B6-E2DDF260CC67}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {47C31FB9-C862-4770-83B6-E2DDF260CC67}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BF6569A1-1A5A-4358-9C02-1A6A5F0FBFD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BF6569A1-1A5A-4358-9C02-1A6A5F0FBFD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF6569A1-1A5A-4358-9C02-1A6A5F0FBFD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BF6569A1-1A5A-4358-9C02-1A6A5F0FBFD9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -248,6 +260,8 @@ Global
{93F4FE97-120C-44DC-9B21-69FB7EAB5846} = {AC5B198A-C3F2-4AD2-B532-E71B4630BDD5}
{EFECF826-B036-4689-B223-D791CD2C0F10} = {71DDEE7B-E213-4E39-A7F4-4646783A27F7}
{7D64A0B1-6FDD-4393-9101-2321EE4C2270} = {AC5B198A-C3F2-4AD2-B532-E71B4630BDD5}
+ {47C31FB9-C862-4770-83B6-E2DDF260CC67} = {541C5347-5D7D-44B7-95D3-B6FB3D9EB955}
+ {BF6569A1-1A5A-4358-9C02-1A6A5F0FBFD9} = {71DDEE7B-E213-4E39-A7F4-4646783A27F7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DC0D56C8-D8CB-45CE-B528-F3DCF86D63ED}
diff --git a/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj b/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj
index 7971b7a9f..8f4039f7d 100644
--- a/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj
+++ b/src/Shared/Configuration/Monai.Deploy.WorkflowManager.Configuration.csproj
@@ -28,7 +28,7 @@
-
+
@@ -42,8 +42,8 @@
-
-
+
+
diff --git a/src/Shared/Configuration/packages.lock.json b/src/Shared/Configuration/packages.lock.json
index a430661b4..349690c31 100644
--- a/src/Shared/Configuration/packages.lock.json
+++ b/src/Shared/Configuration/packages.lock.json
@@ -49,17 +49,18 @@
},
"Monai.Deploy.Messaging": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
diff --git a/src/TaskManager/API/Extensions/TypeExtensions.cs b/src/TaskManager/API/Extensions/TypeExtensions.cs
index 60af78ca1..623f5cc60 100644
--- a/src/TaskManager/API/Extensions/TypeExtensions.cs
+++ b/src/TaskManager/API/Extensions/TypeExtensions.cs
@@ -56,7 +56,7 @@ public static Type GetType(this Type interfaceType, string typeString)
if (assembly is null)
{
- assembly = Assembly.Load($"{AppDomain.CurrentDomain.BaseDirectory}{name.FullName}.dll");
+ assembly = Assembly.LoadFile($"{AppDomain.CurrentDomain.BaseDirectory}{name.FullName}.dll");
}
return assembly;
diff --git a/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj b/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj
index 28e2f0bcc..729cf52a8 100644
--- a/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj
+++ b/src/TaskManager/API/Monai.Deploy.WorkflowManager.TaskManager.API.csproj
@@ -28,12 +28,12 @@
..\..\.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 ba41a921d..5ce12f832 100644
--- a/src/TaskManager/API/packages.lock.json
+++ b/src/TaskManager/API/packages.lock.json
@@ -4,17 +4,18 @@
"net6.0": {
"Monai.Deploy.Messaging": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
diff --git a/src/TaskManager/Database/packages.lock.json b/src/TaskManager/Database/packages.lock.json
index 4093d3619..e9ab2f19f 100644
--- a/src/TaskManager/Database/packages.lock.json
+++ b/src/TaskManager/Database/packages.lock.json
@@ -174,16 +174,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
@@ -300,9 +301,9 @@
"monai.deploy.workflowmanager.taskmanager.api": {
"type": "Project",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "MongoDB.Bson": "2.17.1"
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "MongoDB.Bson": "[2.17.1, )"
}
}
}
diff --git a/src/TaskManager/Plug-ins/AideClinicalReview/AideClinicalReviewPlugin.cs b/src/TaskManager/Plug-ins/AideClinicalReview/AideClinicalReviewPlugin.cs
index 0d0f0ae7d..2414132eb 100644
--- a/src/TaskManager/Plug-ins/AideClinicalReview/AideClinicalReviewPlugin.cs
+++ b/src/TaskManager/Plug-ins/AideClinicalReview/AideClinicalReviewPlugin.cs
@@ -199,6 +199,7 @@ protected override void Dispose(bool disposing)
}
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
+
public async ValueTask DisposeAsync()
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
@@ -206,6 +207,7 @@ public async ValueTask DisposeAsync()
GC.SuppressFinalize(this);
}
- public override Task HandleTimeout(string identity) { return Task.CompletedTask; } // not implemented
+ public override Task HandleTimeout(string identity)
+ { return Task.CompletedTask; } // not implemented
}
}
diff --git a/src/TaskManager/Plug-ins/AideClinicalReview/packages.lock.json b/src/TaskManager/Plug-ins/AideClinicalReview/packages.lock.json
index 04a3a9ec9..a530729f1 100644
--- a/src/TaskManager/Plug-ins/AideClinicalReview/packages.lock.json
+++ b/src/TaskManager/Plug-ins/AideClinicalReview/packages.lock.json
@@ -129,16 +129,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
@@ -222,9 +223,9 @@
"monai.deploy.workflowmanager.taskmanager.api": {
"type": "Project",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "MongoDB.Bson": "2.17.1"
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "MongoDB.Bson": "[2.17.1, )"
}
}
}
diff --git a/src/TaskManager/Plug-ins/Argo/ArgoPlugin.cs b/src/TaskManager/Plug-ins/Argo/ArgoPlugin.cs
index 297e08ad7..78413cf73 100644
--- a/src/TaskManager/Plug-ins/Argo/ArgoPlugin.cs
+++ b/src/TaskManager/Plug-ins/Argo/ArgoPlugin.cs
@@ -19,15 +19,15 @@
using Argo;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using Monai.Deploy.Messaging.Configuration;
using Monai.Deploy.Messaging.Events;
+using Monai.Deploy.WorkflowManager.Configuration;
using Monai.Deploy.WorkflowManager.TaskManager.API;
+using Monai.Deploy.WorkflowManager.TaskManager.API.Extensions;
using Monai.Deploy.WorkflowManager.TaskManager.Argo.Logging;
using Monai.Deploy.WorkflowManager.TaskManager.Argo.StaticValues;
-using Monai.Deploy.WorkflowManager.TaskManager.API.Extensions;
using Newtonsoft.Json;
-using Microsoft.Extensions.Options;
-using Monai.Deploy.WorkflowManager.Configuration;
-using Monai.Deploy.Messaging.Configuration;
namespace Monai.Deploy.WorkflowManager.TaskManager.Argo
{
diff --git a/src/TaskManager/Plug-ins/Argo/ArgoProvider.cs b/src/TaskManager/Plug-ins/Argo/ArgoProvider.cs
index 502518c2e..b91f7df8b 100644
--- a/src/TaskManager/Plug-ins/Argo/ArgoProvider.cs
+++ b/src/TaskManager/Plug-ins/Argo/ArgoProvider.cs
@@ -53,8 +53,6 @@ public IArgoClient CreateClient(string baseUrl, string? apiToken, bool allowInse
}
return new ArgoClient(httpClient) { BaseUrl = baseUrl };
}
-
-
}
#pragma warning restore CA1054 // URI-like parameters should not be strings
diff --git a/src/TaskManager/Plug-ins/Argo/AssemblyInfo.cs b/src/TaskManager/Plug-ins/Argo/AssemblyInfo.cs
index 2937cbf1d..67e23cb8e 100644
--- a/src/TaskManager/Plug-ins/Argo/AssemblyInfo.cs
+++ b/src/TaskManager/Plug-ins/Argo/AssemblyInfo.cs
@@ -16,5 +16,4 @@
using System.Runtime.CompilerServices;
-[assembly: InternalsVisibleTo("Monai.Deploy.WorkflowManager.TaskManager.Runner")]
[assembly: InternalsVisibleTo("Monai.Deploy.WorkflowManager.TaskManager.Argo.Tests")]
diff --git a/src/TaskManager/Plug-ins/Argo/KubernetesProvider.cs b/src/TaskManager/Plug-ins/Argo/KubernetesProvider.cs
index ed9dc838a..4c711b908 100644
--- a/src/TaskManager/Plug-ins/Argo/KubernetesProvider.cs
+++ b/src/TaskManager/Plug-ins/Argo/KubernetesProvider.cs
@@ -31,10 +31,9 @@ public KubernetesProvider(ILogger logger)
public IKubernetes CreateClient()
{
-
var configuration = KubernetesClientConfiguration.BuildDefaultConfig();
_logger.CreatingKubernetesClient(configuration.Host, configuration.Namespace);
-
+
return new Kubernetes(configuration);
}
}
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 579779051..52d3d327a 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
-
-
+
+
@@ -33,7 +33,7 @@
all
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 dc62f32dd..2dc65f55e 100644
--- a/src/TaskManager/Plug-ins/Argo/packages.lock.json
+++ b/src/TaskManager/Plug-ins/Argo/packages.lock.json
@@ -34,17 +34,18 @@
},
"Monai.Deploy.Messaging": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
@@ -552,22 +553,22 @@
"monai.deploy.workflowmanager.configuration": {
"type": "Project",
"dependencies": {
- "Karambolo.Extensions.Logging.File": "3.3.1",
- "Microsoft.Extensions.Configuration": "6.0.1",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Newtonsoft.Json": "13.0.1",
- "System.IO.Abstractions": "17.1.1"
+ "Karambolo.Extensions.Logging.File": "[3.3.1, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Microsoft.Extensions.Logging": "[6.0.0, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Newtonsoft.Json": "[13.0.1, )",
+ "System.IO.Abstractions": "[17.1.1, )"
}
},
"monai.deploy.workflowmanager.taskmanager.api": {
"type": "Project",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "MongoDB.Bson": "2.17.1"
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "MongoDB.Bson": "[2.17.1, )"
}
}
}
diff --git a/src/TaskManager/Plug-ins/Docker/AssemblyInfo.cs b/src/TaskManager/Plug-ins/Docker/AssemblyInfo.cs
new file mode 100644
index 000000000..d87829114
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2021-2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Monai.Deploy.WorkflowManager.TaskManager.Docker.Tests")]
diff --git a/src/TaskManager/Plug-ins/Docker/ContainerMonitorException.cs b/src/TaskManager/Plug-ins/Docker/ContainerMonitorException.cs
new file mode 100644
index 000000000..d6646f531
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/ContainerMonitorException.cs
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Runtime.Serialization;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ [Serializable]
+ internal class ContainerMonitorException : Exception
+ {
+ public ContainerMonitorException()
+ {
+ }
+
+ public ContainerMonitorException(string? message) : base(message)
+ {
+ }
+
+ public ContainerMonitorException(string? message, Exception? innerException) : base(message, innerException)
+ {
+ }
+
+ protected ContainerMonitorException(SerializationInfo info, StreamingContext context) : base(info, context)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/TaskManager/Plug-ins/Docker/ContainerStatusMonitor.cs b/src/TaskManager/Plug-ins/Docker/ContainerStatusMonitor.cs
new file mode 100644
index 000000000..61fa920bb
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/ContainerStatusMonitor.cs
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.IO.Abstractions;
+using Ardalis.GuardClauses;
+using Docker.DotNet.Models;
+using Microsoft.AspNetCore.StaticFiles;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using Monai.Deploy.Messaging.API;
+using Monai.Deploy.Messaging.Events;
+using Monai.Deploy.Messaging.Messages;
+using Monai.Deploy.Storage.API;
+using Monai.Deploy.WorkflowManager.Configuration;
+using Monai.Deploy.WorkflowManager.TaskManager.API;
+using Monai.Deploy.WorkflowManager.TaskManager.Docker.Logging;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ public interface IContainerStatusMonitor
+ {
+ Task Start(TaskDispatchEvent taskDispatchEvent,
+ TimeSpan containerTimeout,
+ string containerId,
+ ContainerVolumeMount intermediateVolumeMount,
+ IReadOnlyList outputVolumeMounts,
+ CancellationToken cancellationToken = default);
+ }
+
+ public class ContainerStatusMonitor : IContainerStatusMonitor, IDisposable
+ {
+ private readonly IOptions _options;
+ private readonly IServiceScope _scope;
+ private readonly ILogger _logger;
+ private readonly IFileSystem _fileSystem;
+ private bool _disposedValue;
+
+ public ContainerStatusMonitor(
+ IServiceScopeFactory serviceScopeFactory,
+ ILogger logger,
+ IFileSystem fileSystem,
+ IOptions options)
+ {
+ if (serviceScopeFactory is null)
+ {
+ throw new ArgumentNullException(nameof(serviceScopeFactory));
+ }
+
+ _scope = serviceScopeFactory.CreateScope();
+ _logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
+ _options = options ?? throw new ArgumentNullException(nameof(options));
+ }
+
+ public async Task Start(
+ TaskDispatchEvent taskDispatchEvent,
+ TimeSpan containerTimeout,
+ string containerId,
+ ContainerVolumeMount intermediateVolumeMount,
+ IReadOnlyList outputVolumeMounts,
+ CancellationToken cancellationToken = default)
+ {
+ Guard.Against.Null(taskDispatchEvent, nameof(taskDispatchEvent));
+ Guard.Against.Null(containerTimeout, nameof(containerTimeout));
+ Guard.Against.NullOrWhiteSpace(containerId, nameof(containerId));
+
+ var dockerClientFactory = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IDockerClientFactory));
+ var dockerClient = dockerClientFactory.CreateClient(new Uri(taskDispatchEvent.TaskPluginArguments[Keys.BaseUrl]));
+
+ var pollingPeriod = TimeSpan.FromSeconds(1);
+
+ var timeToRetry = (int)containerTimeout.TotalSeconds;
+ while (timeToRetry-- > 0)
+ {
+ try
+ {
+ var response = await dockerClient.Containers.InspectContainerAsync(containerId, cancellationToken).ConfigureAwait(false);
+
+ if (IsContainerCompleted(response.State))
+ {
+ await UploadOutputArtifacts(intermediateVolumeMount, outputVolumeMounts, cancellationToken).ConfigureAwait(false);
+ await SendCallbackMessage(taskDispatchEvent, containerId).ConfigureAwait(false);
+ return;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorMonitoringContainerStatus(containerId, ex);
+ }
+ finally
+ {
+ await Task.Delay(pollingPeriod, cancellationToken).ConfigureAwait(false);
+ }
+ }
+
+ _logger.TimedOutMonitoringContainerStatus(containerId);
+ }
+
+ internal static bool IsContainerCompleted(ContainerState state)
+ {
+ if (Strings.DockerEndStates.Contains(state.Status, StringComparer.InvariantCultureIgnoreCase) &&
+ !string.IsNullOrWhiteSpace(state.FinishedAt))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ private async Task UploadOutputArtifacts(ContainerVolumeMount intermediateVolumeMount, IReadOnlyList outputVolumeMounts, CancellationToken cancellationToken)
+ {
+ Guard.Against.Null(outputVolumeMounts, nameof(outputVolumeMounts));
+
+ var storageService = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IStorageService));
+ var contentTypeProvider = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IContentTypeProvider));
+
+ if (intermediateVolumeMount is not null)
+ {
+ await UploadOutputArtifacts(storageService, contentTypeProvider, intermediateVolumeMount.Source, intermediateVolumeMount.TaskManagerPath, cancellationToken).ConfigureAwait(false);
+ }
+
+ foreach (var output in outputVolumeMounts)
+ {
+ await UploadOutputArtifacts(storageService, contentTypeProvider, output.Source, output.TaskManagerPath, cancellationToken).ConfigureAwait(false);
+ }
+ }
+
+ private async Task UploadOutputArtifacts(IStorageService storageService, IContentTypeProvider contentTypeProvider, Messaging.Common.Storage destination, string artifactsPath, CancellationToken cancellationToken)
+ {
+ Guard.Against.Null(destination, nameof(destination));
+ Guard.Against.NullOrWhiteSpace(artifactsPath, nameof(artifactsPath));
+
+ IEnumerable files;
+ try
+ {
+ files = _fileSystem.Directory.EnumerateFiles(artifactsPath, "*", SearchOption.AllDirectories);
+ }
+ catch (Exception ex)
+ {
+ throw new ContainerMonitorException("Directory doesn't exist or no permission to access the directory.", ex);
+ }
+
+ if (!files.Any())
+ {
+ _logger.NoFilesFoundForUpload(artifactsPath);
+ }
+ foreach (var file in files)
+ {
+ try
+ {
+ var objectName = file.Replace(artifactsPath, string.Empty).TrimStart('/');
+ objectName = _fileSystem.Path.Combine(destination.RelativeRootPath, objectName);
+ _logger.UploadingFile(file, destination.Bucket, objectName);
+ if (!contentTypeProvider.TryGetContentType(file, out var contentType))
+ {
+ contentType = GetContentType(_fileSystem.Path.GetExtension(file));
+ }
+ _logger.ContentTypeForFile(objectName, contentType);
+ using var stream = _fileSystem.File.OpenRead(file);
+ await storageService.PutObjectAsync(destination.Bucket, objectName, stream, stream.Length, contentType, null, cancellationToken).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorUploadingFile(file, ex);
+ }
+ }
+ }
+
+ private static string GetContentType(string? ext)
+ {
+ if (string.IsNullOrWhiteSpace(ext))
+ {
+ return Strings.MimeTypeUnknown;
+ }
+
+ return ext.ToLowerInvariant() switch
+ {
+ Strings.FileExtensionDicom => Strings.MimeTypeDicom,
+ _ => Strings.MimeTypeUnknown
+ };
+ }
+
+ private async Task SendCallbackMessage(TaskDispatchEvent taskDispatchEvent, string containerId)
+ {
+ Guard.Against.Null(taskDispatchEvent, nameof(taskDispatchEvent));
+ Guard.Against.NullOrWhiteSpace(containerId, nameof(containerId));
+
+ _logger.SendingCallbackMessage(containerId);
+ var message = new JsonMessage(new TaskCallbackEvent
+ {
+ CorrelationId = taskDispatchEvent.CorrelationId,
+ ExecutionId = taskDispatchEvent.ExecutionId,
+ Identity = containerId,
+ Outputs = taskDispatchEvent.Outputs ?? new List(),
+ TaskId = taskDispatchEvent.TaskId,
+ WorkflowInstanceId = taskDispatchEvent.WorkflowInstanceId,
+ }, applicationId: Strings.ApplicationId, correlationId: taskDispatchEvent.CorrelationId);
+
+ var messageBrokerPublisherService = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IMessageBrokerPublisherService));
+ await messageBrokerPublisherService.Publish(_options.Value.Messaging.Topics.TaskCallbackRequest, message.ToMessage()).ConfigureAwait(false);
+ }
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposedValue)
+ {
+ if (disposing)
+ {
+ _scope.Dispose();
+ }
+
+ _disposedValue = true;
+ }
+ }
+
+ public void Dispose()
+ {
+ // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
+ Dispose(disposing: true);
+ GC.SuppressFinalize(this);
+ }
+ }
+}
diff --git a/src/TaskManager/Plug-ins/Docker/ContainerVolumeMount.cs b/src/TaskManager/Plug-ins/Docker/ContainerVolumeMount.cs
new file mode 100644
index 000000000..5faae1407
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/ContainerVolumeMount.cs
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Ardalis.GuardClauses;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ public class ContainerVolumeMount
+ {
+ public ContainerVolumeMount(Messaging.Common.Storage source, string containerPath, string hostPath, string taskManagerPath)
+ {
+ Guard.Against.Null(source, nameof(source));
+ Guard.Against.NullOrWhiteSpace(containerPath, nameof(containerPath));
+ Guard.Against.NullOrWhiteSpace(hostPath, nameof(hostPath));
+ Guard.Against.NullOrWhiteSpace(taskManagerPath, nameof(taskManagerPath));
+
+ Source = source;
+ ContainerPath = containerPath;
+ HostPath = hostPath;
+ TaskManagerPath = taskManagerPath;
+ }
+
+ public Messaging.Common.Storage Source { get; }
+ public string ContainerPath { get; }
+ public string HostPath { get; }
+ public string TaskManagerPath { get; }
+ }
+}
diff --git a/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs b/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs
new file mode 100644
index 000000000..2c3b5c476
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/DockerPlugin.cs
@@ -0,0 +1,450 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Globalization;
+using Ardalis.GuardClauses;
+using Docker.DotNet;
+using Docker.DotNet.Models;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Monai.Deploy.Messaging.Events;
+using Monai.Deploy.Storage.API;
+using Monai.Deploy.WorkflowManager.TaskManager.API;
+using Monai.Deploy.WorkflowManager.TaskManager.Docker.Logging;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ public class DockerPlugin : TaskPluginBase
+ {
+ private TimeSpan _containerTimeout;
+ private readonly IDockerClient _dockerClient;
+ private readonly ILogger _logger;
+ private readonly IServiceScope _scope;
+ private readonly string _hostTemporaryStoragePath;
+
+ public DockerPlugin(
+ IServiceScopeFactory serviceScopeFactory,
+ ILogger logger,
+ TaskDispatchEvent taskDispatchEvent)
+ : base(taskDispatchEvent)
+ {
+ Guard.Against.Null(serviceScopeFactory, nameof(serviceScopeFactory));
+
+ _logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ _scope = serviceScopeFactory.CreateScope() ?? throw new ArgumentNullException(nameof(serviceScopeFactory));
+
+ ValidateEvent();
+ Initialize();
+
+ _hostTemporaryStoragePath = Environment.GetEnvironmentVariable(Strings.HostTemporaryStorageEnvironmentVariableName) ?? throw new ApplicationException($"Environment variable {Strings.HostTemporaryStorageEnvironmentVariableName} is not set.");
+ var dockerClientFactory = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IDockerClientFactory));
+ _dockerClient = dockerClientFactory.CreateClient(new Uri(Event.TaskPluginArguments[Keys.BaseUrl]));
+ }
+
+ private void Initialize()
+ {
+ if (Event.TaskPluginArguments.ContainsKey(Keys.TaskTimeoutMinutes) &&
+ int.TryParse(Event.TaskPluginArguments[Keys.TaskTimeoutMinutes], out var timeoutMinutes))
+ {
+ _containerTimeout = TimeSpan.FromMinutes(timeoutMinutes);
+ }
+ else
+ {
+ _containerTimeout = TimeSpan.FromMinutes(5);
+ }
+
+ _logger.Initialized(Event.TaskPluginArguments[Keys.BaseUrl], _containerTimeout.TotalMinutes);
+ }
+
+ private void ValidateEvent()
+ {
+ if (Event.TaskPluginArguments is null || Event.TaskPluginArguments.Count == 0)
+ {
+ throw new InvalidTaskException($"Required parameters to execute Argo workflow are missing: {string.Join(',', Keys.RequiredParameters)}");
+ }
+
+ foreach (var key in Keys.RequiredParameters)
+ {
+ if (!Event.TaskPluginArguments.ContainsKey(key))
+ {
+ throw new InvalidTaskException($"Required parameter to execute Argo workflow is missing: {key}");
+ }
+ }
+
+ if (!Uri.IsWellFormedUriString(Event.TaskPluginArguments[Keys.BaseUrl], UriKind.Absolute))
+ {
+ throw new InvalidTaskException($"The value '{Event.TaskPluginArguments[Keys.BaseUrl]}' provided for '{Keys.BaseUrl}' is not a valid URI.");
+ }
+
+ Event.Inputs.ForEach(p => ValidateStorageMappings(p));
+ Event.Outputs.ForEach(p => ValidateStorageMappings(p));
+ }
+
+ private void ValidateStorageMappings(Messaging.Common.Storage storage)
+ {
+ Guard.Against.Null(storage, nameof(storage));
+
+ if (!Event.TaskPluginArguments.ContainsKey(storage.Name))
+ {
+ throw new InvalidTaskException($"The mapping for storage '{storage.Name}' is not defined as an envrionment variable.");
+ }
+ }
+
+ public override async Task ExecuteTask(CancellationToken cancellationToken = default)
+ {
+ List inputVolumeMounts;
+ ContainerVolumeMount intermediateVolumeMount;
+ List outputVolumeMounts;
+
+ try
+ {
+ inputVolumeMounts = await SetupInputs(cancellationToken).ConfigureAwait(false);
+ intermediateVolumeMount = SetupIntermediateVolume();
+ outputVolumeMounts = SetupOutputs();
+ }
+ catch (Exception exception)
+ {
+ _logger.ErrorGeneratingVolumeMounts(exception);
+ return new ExecutionStatus { Status = TaskExecutionStatus.Failed, FailureReason = FailureReason.PluginError, Errors = exception.Message };
+ }
+
+ try
+ {
+ var imageCreateParameters = new ImagesCreateParameters()
+ {
+ FromImage = Event.TaskPluginArguments[Keys.ContainerImage],
+ };
+
+ // Pull image.
+ await _dockerClient.Images.CreateImageAsync(imageCreateParameters, new AuthConfig(), new Progress(), cancellationToken).ConfigureAwait(false);
+ }
+ catch (Exception exception)
+ {
+ _logger.ErrorPullingContainerImage(Event.TaskPluginArguments[Keys.ContainerImage], exception);
+ return new ExecutionStatus { Status = TaskExecutionStatus.Failed, FailureReason = FailureReason.PluginError, Errors = exception.Message };
+ }
+
+ CreateContainerParameters parameters;
+ try
+ {
+ parameters = BuildContainerSpecification(inputVolumeMounts, intermediateVolumeMount, outputVolumeMounts);
+ }
+ catch (Exception exception)
+ {
+ _logger.ErrorGeneratingContainerSpecification(exception);
+ return new ExecutionStatus { Status = TaskExecutionStatus.Failed, FailureReason = FailureReason.PluginError, Errors = exception.Message };
+ }
+
+ string containerId;
+ try
+ {
+ var response = await _dockerClient.Containers.CreateContainerAsync(parameters, cancellationToken).ConfigureAwait(false);
+ containerId = response.ID;
+
+ if (response.Warnings.Any())
+ {
+ _logger.ContainerCreatedWithWarnings(containerId, string.Join(".", response.Warnings));
+ }
+
+ _logger.CreatedContainer(containerId);
+
+ _ = await _dockerClient.Containers.StartContainerAsync(containerId, new ContainerStartParameters(), cancellationToken).ConfigureAwait(false);
+ _logger.StartedContainer(containerId);
+ }
+ catch (Exception exception)
+ {
+ _logger.ErrorDeployingContainer(exception);
+ return new ExecutionStatus { Status = TaskExecutionStatus.Failed, FailureReason = FailureReason.PluginError, Errors = exception.Message };
+ }
+
+ try
+ {
+ var monitor = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IContainerStatusMonitor));
+ _ = Task.Run(async () =>
+ {
+ await monitor.Start(Event, _containerTimeout, containerId, intermediateVolumeMount, outputVolumeMounts, cancellationToken);
+ });
+ }
+ catch (Exception exception)
+ {
+ _logger.ErrorLaunchingContainerMonitor(containerId, exception);
+ }
+ return new ExecutionStatus() { Status = TaskExecutionStatus.Accepted };
+ }
+
+ public override async Task GetStatus(string identity, CancellationToken cancellationToken = default)
+ {
+ Guard.Against.NullOrWhiteSpace(identity, nameof(identity));
+
+ try
+ {
+ var response = await _dockerClient.Containers.InspectContainerAsync(identity, cancellationToken).ConfigureAwait(false);
+ var retryCount = 12;
+ while ((response == null || !ContainerStatusMonitor.IsContainerCompleted(response.State)) && retryCount-- > 0)
+ {
+ await Task.Delay(250, cancellationToken).ConfigureAwait(false);
+ response = await _dockerClient.Containers.InspectContainerAsync(identity, cancellationToken).ConfigureAwait(false);
+ }
+
+ if (response == null)
+ {
+ throw new InvalidOperationException($"Unable to obtain status for container {identity}");
+ }
+
+ var stats = GetExecutuionStats(response);
+ if (ContainerStatusMonitor.IsContainerCompleted(response.State))
+ {
+ return new ExecutionStatus
+ {
+ Status = TaskExecutionStatus.Succeeded,
+ FailureReason = FailureReason.None,
+ Stats = stats
+ };
+ }
+ else if (response.State.OOMKilled || response.State.Dead)
+ {
+ return new ExecutionStatus
+ {
+ Status = TaskExecutionStatus.Failed,
+ FailureReason = FailureReason.ExternalServiceError,
+ Errors = $"Exit code={response.State.ExitCode}",
+ Stats = stats
+ };
+ }
+ else
+ {
+ return new ExecutionStatus
+ {
+ Status = TaskExecutionStatus.Failed,
+ FailureReason = FailureReason.Unknown,
+ Errors = $"Exit code={response.State.ExitCode}. Status={response.State.Status}.",
+ Stats = stats
+ };
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorGettingStatusFromDocker(identity, ex);
+ return new ExecutionStatus
+ {
+ Status = TaskExecutionStatus.Failed,
+ FailureReason = FailureReason.ExternalServiceError,
+ Errors = ex.Message
+ };
+ }
+ }
+
+ private Dictionary GetExecutuionStats(ContainerInspectResponse response)
+ {
+ Guard.Against.Null(response, nameof(response));
+
+ TimeSpan? duration = null;
+
+ if (DateTime.TryParse(response.State.FinishedAt, out var completedTime))
+ {
+ duration = completedTime.Subtract(response.Created);
+ }
+
+ return new Dictionary
+ {
+ { "workflowId", Event.WorkflowInstanceId },
+ { "duration", duration.HasValue ? duration.Value.TotalMilliseconds.ToString(CultureInfo.InvariantCulture) : string.Empty },
+ { "startedAt", response.Created.ToString("s") },
+ { "finishedAt", completedTime.ToString("s") }
+ };
+ }
+
+ public override async Task HandleTimeout(string identity)
+ {
+ try
+ {
+ await _dockerClient.Containers.KillContainerAsync(identity, new ContainerKillParameters()).ConfigureAwait(false);
+ _logger.TerminatedContainer(identity);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorTerminatingContainer(identity, ex);
+ throw;
+ }
+ }
+
+ private CreateContainerParameters BuildContainerSpecification(IList inputs, ContainerVolumeMount intermediateVolumeMount, IList outputs)
+ {
+ var entrypoint = Event.TaskPluginArguments[Keys.EntryPoint].Split(',');
+ var command = Event.TaskPluginArguments[Keys.Command].Split(',');
+
+ var volumeMounts = new List();
+
+ foreach (var input in inputs)
+ {
+ var mount = new Mount { Type = "bind", ReadOnly = true, Source = input.HostPath, Target = input.ContainerPath };
+ volumeMounts.Add(mount);
+ _logger.DockerInputMapped(input.HostPath, input.ContainerPath);
+ }
+
+ foreach (var output in outputs)
+ {
+ var mount = new Mount { Type = "bind", ReadOnly = false, Source = output.HostPath, Target = output.ContainerPath };
+ volumeMounts.Add(mount);
+ _logger.DockerOutputMapped(output.HostPath, output.ContainerPath);
+ }
+
+ if (intermediateVolumeMount is not null)
+ {
+ volumeMounts.Add(new Mount { Type = "bind", ReadOnly = false, Source = intermediateVolumeMount.HostPath, Target = intermediateVolumeMount.ContainerPath });
+ _logger.DockerIntermediateVolumeMapped(intermediateVolumeMount.HostPath, intermediateVolumeMount.ContainerPath);
+ }
+
+ var envvars = new List();
+
+ foreach (var key in Event.TaskPluginArguments.Keys)
+ {
+ if (key.StartsWith(Keys.EnvironmentVariableKeyPrefix, false, CultureInfo.InvariantCulture))
+ {
+ var envVarKey = key.Replace(Keys.EnvironmentVariableKeyPrefix, string.Empty);
+ envvars.Add($"{envVarKey}={Event.TaskPluginArguments[key]}");
+ _logger.DockerEnvironmentVariableAdded(envVarKey, Event.TaskPluginArguments[key]);
+ }
+ }
+
+ var parameters = new CreateContainerParameters()
+ {
+ Name = Event.ExecutionId,
+ Env = envvars,
+ Entrypoint = entrypoint,
+ Cmd = command,
+ Image = Event.TaskPluginArguments[Keys.ContainerImage],
+ HostConfig = new HostConfig()
+ {
+ Runtime = Strings.RuntimeNvidia,
+ Mounts = volumeMounts,
+ }
+ };
+
+ return parameters;
+ }
+
+ private async Task> SetupInputs(CancellationToken cancellationToken = default)
+ {
+ var volumeMounts = new List();
+
+ if (Event.Inputs.Count == 0)
+ {
+ _logger.NoInputVolumesConfigured();
+ return volumeMounts;
+ }
+
+ var storageService = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IStorageService));
+
+ // Container Path of the Input Directory.
+ var containerPath = Path.Combine(Event.TaskPluginArguments[Keys.TemporaryStorageContainerPath], Event.ExecutionId, "inputs");
+ // Host Path of the Input Directory.
+ var hostPath = Path.Combine(_hostTemporaryStoragePath, Event.ExecutionId, "inputs");
+
+ foreach (var input in Event.Inputs)
+ {
+ var objects = await storageService.ListObjectsAsync(input.Bucket, input.RelativeRootPath, true, cancellationToken).ConfigureAwait(false);
+ if (objects.Count == 0)
+ {
+ _logger.NoFilesFoundIn(input.Bucket, input.RelativeRootPath);
+ continue;
+ }
+
+ var inputDirName = input.Name;
+
+ // Host Path of the Directory for this Input File.
+ // /id/
+ var inputHostDirRoot = Path.Combine(hostPath, inputDirName);
+ var inputContainerDirRoot = Path.Combine(containerPath, inputDirName);
+
+ // eg: /monai/input
+ var volumeMount = new ContainerVolumeMount(input, Event.TaskPluginArguments[input.Name], inputHostDirRoot, inputContainerDirRoot);
+ volumeMounts.Add(volumeMount);
+
+ // For each file, download from bucket and store in Task Manager Container.
+ foreach (var obj in objects)
+ {
+ // Task Manager Container Path of the Input File.
+ var filePath = Path.Combine(inputContainerDirRoot, obj.FilePath.Replace(input.RelativeRootPath, "").TrimStart('/'));
+
+ // Task Manager Container Path of the Directory for this Input File.
+ var fileDirectory = Path.GetDirectoryName(filePath);
+ Directory.CreateDirectory(fileDirectory!);
+
+ _logger.DownloadingArtifactFromStorageService(obj.Filename, filePath);
+ using var stream = await storageService.GetObjectAsync(input.Bucket, obj.FilePath, cancellationToken).ConfigureAwait(false) as MemoryStream;
+ using var fileStream = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write);
+ stream!.WriteTo(fileStream);
+ }
+ }
+
+ return volumeMounts;
+ }
+
+ private ContainerVolumeMount SetupIntermediateVolume()
+ {
+ if (Event.TaskPluginArguments.ContainsKey(Keys.WorkingDirectory))
+ {
+ var containerPath = Path.Combine(Event.TaskPluginArguments[Keys.TemporaryStorageContainerPath], Event.ExecutionId, "temp");
+ var hostPath = Path.Combine(_hostTemporaryStoragePath, Event.ExecutionId, "temp");
+
+ Directory.CreateDirectory(containerPath);
+
+ return new ContainerVolumeMount(Event.IntermediateStorage, Event.TaskPluginArguments[Keys.WorkingDirectory], hostPath, containerPath);
+ }
+
+ return default!;
+ }
+
+ private List SetupOutputs()
+ {
+ var volumeMounts = new List();
+
+ if (Event.Outputs.Count == 0)
+ {
+ _logger.NoOutputVolumesConfigured();
+ return volumeMounts;
+ }
+
+ // Container Path of the Output Directory.
+ var containerRootPath = Path.Combine(Event.TaskPluginArguments[Keys.TemporaryStorageContainerPath], Event.ExecutionId, "outputs");
+
+ // Host Path of the Output Directory.
+ var hostRootPath = Path.Combine(_hostTemporaryStoragePath, Event.ExecutionId, "outputs");
+
+ foreach (var output in Event.Outputs)
+ {
+ var hostPath = Path.Combine(hostRootPath, output.Name);
+ var containerPath = Path.Combine(containerRootPath, output.Name);
+ Directory.CreateDirectory(containerPath);
+
+ volumeMounts.Add(new ContainerVolumeMount(output, Event.TaskPluginArguments[output.Name], hostPath, containerPath));
+ }
+
+ return volumeMounts;
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ if (!DisposedValue && disposing)
+ {
+ _scope.Dispose();
+ }
+
+ base.Dispose(disposing);
+ }
+ }
+}
diff --git a/src/TaskManager/Plug-ins/Docker/IDockerClientFactory.cs b/src/TaskManager/Plug-ins/Docker/IDockerClientFactory.cs
new file mode 100644
index 000000000..4fd66a521
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/IDockerClientFactory.cs
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Docker.DotNet;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ public interface IDockerClientFactory
+ {
+ IDockerClient CreateClient(Uri dockerEndpoint);
+ }
+
+ public class DockerClientFactory : IDockerClientFactory
+ {
+ public IDockerClient CreateClient(Uri dockerEndpoint)
+ {
+ return new DockerClientConfiguration(dockerEndpoint).CreateClient();
+ }
+ }
+}
diff --git a/src/TaskManager/Plug-ins/Docker/Keys.cs b/src/TaskManager/Plug-ins/Docker/Keys.cs
new file mode 100644
index 000000000..14f3652ed
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/Keys.cs
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ internal static class Keys
+ {
+ ///
+ /// Key for the endpoint where the Docker server is running.
+ ///
+ public static readonly string BaseUrl = "server_url";
+
+ ///
+ /// Key for the image of the container to deploy the MAP.
+ ///
+ public static readonly string ContainerImage = "container_image";
+
+ ///
+ /// Key for the entrypoint to the container.
+ ///
+ public static readonly string EntryPoint = "entrypoint";
+
+ ///
+ /// Key for the command to execute by the container.
+ ///
+ public static readonly string Command = "command";
+
+ ///
+ /// Key for task timeout value.
+ ///
+ public static readonly string TaskTimeoutMinutes = "task_timeout_minutes";
+
+ ///
+ /// Key for priority classnames on task plugin arguments side
+ ///
+ public static readonly string TemporaryStorageContainerPath = "temp_storage_container_path";
+
+ ///
+ /// Prefix for envrionment variables.
+ ///
+ public static readonly string EnvironmentVariableKeyPrefix = "env_";
+
+ ///
+ /// Key to the intermediate volume map path.
+ ///
+ public static readonly string WorkingDirectory = "env_MONAI_WORKDIR";
+
+ ///
+ /// Required arguments to run the Docker workflow.
+ ///
+ public static readonly IReadOnlyList RequiredParameters =
+ new List {
+ BaseUrl,
+ EntryPoint,
+ Command,
+ ContainerImage,
+ TemporaryStorageContainerPath
+ };
+ }
+}
diff --git a/src/TaskManager/Plug-ins/Docker/Logging/Log.cs b/src/TaskManager/Plug-ins/Docker/Logging/Log.cs
new file mode 100644
index 000000000..66ce7ee6e
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/Logging/Log.cs
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.Extensions.Logging;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker.Logging
+{
+ public static partial class Log
+ {
+ [LoggerMessage(EventId = 1000, Level = LogLevel.Information, Message = "Docker plugin initialized: base URL={baseUrl}, timeout={timeoutMinutes} minutes.")]
+ public static partial void Initialized(this ILogger logger, string baseUrl, double timeoutMinutes);
+
+ [LoggerMessage(EventId = 1001, Level = LogLevel.Error, Message = "Error generating Container Specification.")]
+ public static partial void ErrorGeneratingContainerSpecification(this ILogger logger, Exception ex);
+
+ [LoggerMessage(EventId = 1002, Level = LogLevel.Error, Message = "Error deploying Container.")]
+ public static partial void ErrorDeployingContainer(this ILogger logger, Exception ex);
+
+ [LoggerMessage(EventId = 1003, Level = LogLevel.Information, Message = "Docker container created: container Id={containerId}.")]
+ public static partial void CreatedContainer(this ILogger logger, string containerId);
+
+ [LoggerMessage(EventId = 1004, Level = LogLevel.Information, Message = "Docker container started: container Id={containerId}.")]
+ public static partial void StartedContainer(this ILogger logger, string containerId);
+
+ [LoggerMessage(EventId = 1005, Level = LogLevel.Information, Message = "Docker container terminated: container Id={containerId}.")]
+ public static partial void TerminatedContainer(this ILogger logger, string containerId);
+
+ [LoggerMessage(EventId = 1006, Level = LogLevel.Information, Message = "Input volume mapping host=={hostPath}, container={containerPath}.")]
+ public static partial void DockerInputMapped(this ILogger logger, string hostPath, string containerPath);
+
+ [LoggerMessage(EventId = 1007, Level = LogLevel.Information, Message = "Output volume mapping host=={hostPath}, container={containerPath}.")]
+ public static partial void DockerOutputMapped(this ILogger logger, string hostPath, string containerPath);
+
+ [LoggerMessage(EventId = 1008, Level = LogLevel.Information, Message = "Environment variabled added {key}={value}.")]
+ public static partial void DockerEnvironmentVariableAdded(this ILogger logger, string key, string value);
+
+ [LoggerMessage(EventId = 1009, Level = LogLevel.Error, Message = "Error retreiving status from container {identity}.")]
+ public static partial void ErrorGettingStatusFromDocker(this ILogger logger, string identity, Exception ex);
+
+ [LoggerMessage(EventId = 1010, Level = LogLevel.Debug, Message = "Downloading artifact {source} to {target}.")]
+ public static partial void DownloadingArtifactFromStorageService(this ILogger logger, string source, string target);
+
+ [LoggerMessage(EventId = 1011, Level = LogLevel.Warning, Message = "No input volumes configured for the task.")]
+ public static partial void NoInputVolumesConfigured(this ILogger logger);
+
+ [LoggerMessage(EventId = 1012, Level = LogLevel.Warning, Message = "No files found in bucket {bucket} - {path}.")]
+ public static partial void NoFilesFoundIn(this ILogger logger, string bucket, string path);
+
+ [LoggerMessage(EventId = 1013, Level = LogLevel.Warning, Message = "No output volumes configured for the task.")]
+ public static partial void NoOutputVolumesConfigured(this ILogger logger);
+
+ [LoggerMessage(EventId = 10014, Level = LogLevel.Information, Message = "Intermediate volume mapping host=={hostPath}, container={containerPath}.")]
+ public static partial void DockerIntermediateVolumeMapped(this ILogger logger, string hostPath, string containerPath);
+
+ [LoggerMessage(EventId = 1015, Level = LogLevel.Error, Message = "Error generating volume mounts.")]
+ public static partial void ErrorGeneratingVolumeMounts(this ILogger logger, Exception exception);
+
+ [LoggerMessage(EventId = 1016, Level = LogLevel.Error, Message = "Error uploading file {file}.")]
+ public static partial void ErrorUploadingFile(this ILogger logger, string file, Exception exception);
+
+ [LoggerMessage(EventId = 1017, Level = LogLevel.Debug, Message = "Uploading {source} to {bucket} - {destination}")]
+ public static partial void UploadingFile(this ILogger logger, string source, string bucket, string destination);
+
+ [LoggerMessage(EventId = 1018, Level = LogLevel.Information, Message = "Sending task callback event for completed container {containerId}.")]
+ public static partial void SendingCallbackMessage(this ILogger logger, string containerId);
+
+ [LoggerMessage(EventId = 1019, Level = LogLevel.Error, Message = "Error monitoring container {containerId}.")]
+ public static partial void ErrorMonitoringContainerStatus(this ILogger logger, string containerId, Exception ex);
+
+ [LoggerMessage(EventId = 1020, Level = LogLevel.Warning, Message = "Timeout waiting for container to complete {containerId}.")]
+ public static partial void TimedOutMonitoringContainerStatus(this ILogger logger, string containerId);
+
+ [LoggerMessage(EventId = 1021, Level = LogLevel.Warning, Message = "No files found in {artifactsPath} for upload.")]
+ public static partial void NoFilesFoundForUpload(this ILogger logger, string artifactsPath);
+
+ [LoggerMessage(EventId = 1022, Level = LogLevel.Debug, Message = "Content type set to {contentType} for {filename}.")]
+ public static partial void ContentTypeForFile(this ILogger logger, string filename, string contentType);
+
+ [LoggerMessage(EventId = 1023, Level = LogLevel.Error, Message = "Error pulling container image {image}.")]
+ public static partial void ErrorPullingContainerImage(this ILogger logger, string image, Exception ex);
+
+ [LoggerMessage(EventId = 1024, Level = LogLevel.Error, Message = "Error starting container monitoring for container {container}.")]
+ public static partial void ErrorLaunchingContainerMonitor(this ILogger logger, string container, Exception ex);
+
+ [LoggerMessage(EventId = 1025, Level = LogLevel.Warning, Message = "Container '{container}' created with warnings: {warnings}.")]
+ public static partial void ContainerCreatedWithWarnings(this ILogger logger, string container, string warnings);
+
+ [LoggerMessage(EventId = 1026, Level = LogLevel.Error, Message = "Error terminating container '{container}'.")]
+ public static partial void ErrorTerminatingContainer(this ILogger logger, string container, Exception ex);
+ }
+}
diff --git a/src/TaskManager/Plug-ins/Docker/Monai.Deploy.WorkflowManager.TaskManager.Docker.csproj b/src/TaskManager/Plug-ins/Docker/Monai.Deploy.WorkflowManager.TaskManager.Docker.csproj
new file mode 100644
index 000000000..fbf6b8547
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/Monai.Deploy.WorkflowManager.TaskManager.Docker.csproj
@@ -0,0 +1,40 @@
+
+
+
+
+
+ net6.0
+ enable
+ enable
+ ..\..\..\.sonarlint\project-monai_monai-deploy-workflow-managercsharp.ruleset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TaskManager/Plug-ins/Docker/Strings.cs b/src/TaskManager/Plug-ins/Docker/Strings.cs
new file mode 100644
index 000000000..9a67ec631
--- /dev/null
+++ b/src/TaskManager/Plug-ins/Docker/Strings.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Collections.Specialized;
+
+namespace Monai.Deploy.WorkflowManager.TaskManager.Docker
+{
+ internal static class Strings
+ {
+ public const string ApplicationId = "Docker";
+ public const string HostTemporaryStorageEnvironmentVariableName = "HOST_TEMP_STORAGE";
+ public static readonly string RuntimeNvidia = "nvidia";
+
+ public const string DockerStatusCreated = "created";
+ public const string DockerStatusRunning = "running";
+ public const string DockerStatusPaused = "paused";
+ public const string DockerStatusRestarting = "restarting";
+ public const string DockerStatusRemoving = "removing";
+ public const string DockerStatusExited = "exited";
+ public const string DockerStatusDead = "dead";
+
+ public static readonly List DockerEndStates = new() { DockerStatusExited, DockerStatusDead };
+
+ public const string MimeTypeDicom = "application/dicom";
+ public const string MimeTypeUnknown = "application/unknown";
+
+ public const string FileExtensionDicom = ".dcm";
+ }
+}
diff --git a/src/TaskManager/Plug-ins/TestPlugin/Monai.Deploy.WorkflowManager.TaskManager.TestPlugin.csproj b/src/TaskManager/Plug-ins/TestPlugin/Monai.Deploy.WorkflowManager.TaskManager.TestPlugin.csproj
index 4cd61708f..72e815379 100644
--- a/src/TaskManager/Plug-ins/TestPlugin/Monai.Deploy.WorkflowManager.TaskManager.TestPlugin.csproj
+++ b/src/TaskManager/Plug-ins/TestPlugin/Monai.Deploy.WorkflowManager.TaskManager.TestPlugin.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/src/TaskManager/TaskManager/Extensions/TaskManagerExtensions.cs b/src/TaskManager/TaskManager/Extensions/TaskManagerExtensions.cs
index 3d1a4395a..0e1597d91 100644
--- a/src/TaskManager/TaskManager/Extensions/TaskManagerExtensions.cs
+++ b/src/TaskManager/TaskManager/Extensions/TaskManagerExtensions.cs
@@ -19,6 +19,7 @@
using Microsoft.Extensions.Hosting;
using Monai.Deploy.TaskManager.API;
using Monai.Deploy.WorkflowManager.TaskManager.Argo;
+using Monai.Deploy.WorkflowManager.TaskManager.Docker;
using Monai.Deploy.WorkflowManager.TaskManager.Services;
namespace Monai.Deploy.WorkflowManager.TaskManager.Extensions
@@ -38,8 +39,13 @@ public static IServiceCollection AddTaskManager(this IServiceCollection services
{
Guard.Against.Null(hostContext, nameof(hostContext));
+ // TODO: the plug-in dependencies need to be injected dynamically similar to how storage lib is loaded
services.AddSingleton();
services.AddSingleton();
+
+ services.AddTransient();
+ services.AddTransient();
+
services.AddTransient();
services.AddSingleton();
diff --git a/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj b/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj
index 3fd9a2d1e..5f4427591 100644
--- a/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj
+++ b/src/TaskManager/TaskManager/Monai.Deploy.WorkflowManager.TaskManager.csproj
@@ -25,6 +25,10 @@
false
+
+
+
+
@@ -43,8 +47,8 @@
-
-
+
+
@@ -54,9 +58,9 @@
-
+
-
+
@@ -64,6 +68,7 @@
+
diff --git a/src/TaskManager/TaskManager/PluginStrings.cs b/src/TaskManager/TaskManager/PluginStrings.cs
index 0eb898862..712641b5c 100644
--- a/src/TaskManager/TaskManager/PluginStrings.cs
+++ b/src/TaskManager/TaskManager/PluginStrings.cs
@@ -20,5 +20,9 @@ public static class PluginStrings
{
// note not to be confused with the ApplicationId Monai.Deploy.WorkflowManager.TaskManager.Argo
public const string Argo = "argo";
+
+ public const string Docker = "docker";
+
+ public static readonly IReadOnlyList PlugsRequiresPermanentAccoutns = new List() { Argo, Docker };
}
}
diff --git a/src/TaskManager/TaskManager/Program.cs b/src/TaskManager/TaskManager/Program.cs
index 5c4e0dc06..55fc2b4f4 100644
--- a/src/TaskManager/TaskManager/Program.cs
+++ b/src/TaskManager/TaskManager/Program.cs
@@ -15,6 +15,7 @@
*/
using System.IO.Abstractions;
+using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
@@ -85,6 +86,8 @@ private static void ConfigureServices(HostBuilderContext hostContext, IServiceCo
services.AddTransient();
services.AddTransient();
+ services.AddTransient();
+
services.AddTaskManager(hostContext);
}
}
diff --git a/src/TaskManager/TaskManager/TaskManager.cs b/src/TaskManager/TaskManager/TaskManager.cs
index 5d18b0ecd..ff23713cd 100644
--- a/src/TaskManager/TaskManager/TaskManager.cs
+++ b/src/TaskManager/TaskManager/TaskManager.cs
@@ -26,10 +26,10 @@
using Monai.Deploy.Storage.API;
using Monai.Deploy.Storage.S3Policy.Policies;
using Monai.Deploy.TaskManager.API;
-using Monai.Deploy.WorkflowManager.TaskManager.API;
-using Monai.Deploy.WorkflowManager.TaskManager.API.Models;
using Monai.Deploy.WorkflowManager.Configuration;
+using Monai.Deploy.WorkflowManager.TaskManager.API;
using Monai.Deploy.WorkflowManager.TaskManager.API.Extensions;
+using Monai.Deploy.WorkflowManager.TaskManager.API.Models;
using Monai.Deploy.WorkflowManager.TaskManager.Logging;
namespace Monai.Deploy.WorkflowManager.TaskManager
@@ -341,9 +341,9 @@ private async Task HandleDispatchTask(JsonMessage message)
try
{
- if (string.Equals(message.Body.TaskPluginType,
- PluginStrings.Argo,
- StringComparison.InvariantCultureIgnoreCase))
+ if (PluginStrings.PlugsRequiresPermanentAccoutns.Contains(
+ message.Body.TaskPluginType,
+ StringComparer.InvariantCultureIgnoreCase))
{
eventInfo.AddUserAccount(await AddCredentialsToPlugin(message).ConfigureAwait(false));
}
diff --git a/src/TaskManager/TaskManager/appsettings.Development.json b/src/TaskManager/TaskManager/appsettings.Development.json
index a99041dfd..e8a31ff72 100644
--- a/src/TaskManager/TaskManager/appsettings.Development.json
+++ b/src/TaskManager/TaskManager/appsettings.Development.json
@@ -125,4 +125,4 @@
}
},
"AllowedHosts": "*"
-}
+}
\ No newline at end of file
diff --git a/src/TaskManager/TaskManager/appsettings.json b/src/TaskManager/TaskManager/appsettings.json
index 002998540..cf23d16be 100644
--- a/src/TaskManager/TaskManager/appsettings.json
+++ b/src/TaskManager/TaskManager/appsettings.json
@@ -17,6 +17,7 @@
"taskTimeoutMinutes": 60,
"plug-ins": {
"argo": "Monai.Deploy.WorkflowManager.TaskManager.Argo.ArgoPlugin, Monai.Deploy.WorkflowManager.TaskManager.Argo",
+ "docker": "Monai.Deploy.WorkflowManager.TaskManager.Docker.DockerPlugin, Monai.Deploy.WorkflowManager.TaskManager.Docker",
"aide_clinical_review": "Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview.AideClinicalReviewPlugin, Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview",
"test": "Monai.Deploy.WorkflowManager.TaskManager.TestPlugin.TestPlugin, Monai.Deploy.WorkflowManager.TaskManager.TestPlugin"
},
@@ -116,4 +117,4 @@
]
}
}
-}
+}
\ No newline at end of file
diff --git a/src/TaskManager/TaskManager/packages.lock.json b/src/TaskManager/TaskManager/packages.lock.json
index 3c621edbc..e2e1249d2 100644
--- a/src/TaskManager/TaskManager/packages.lock.json
+++ b/src/TaskManager/TaskManager/packages.lock.json
@@ -82,26 +82,27 @@
},
"Monai.Deploy.Messaging": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Messaging.RabbitMQ": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "IIzty1xAAn3pTSK9VPI5o22nZDGyPyKWNiGstC4bkzIHdxghPEX/ErR7IVkClxCc9kK8X+4sReGFksdGKShQnw==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "sbHA1Rt+O2SuucQOULq/SCUEFq46fUIDFtllxBL94wZSNMf7nioPRVi+kU6j6JrUBqWT+F1A/qUxwvANbrkHNQ==",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012"
+ "Monai.Deploy.Messaging": "0.1.6-rc0001"
}
},
"Monai.Deploy.Storage": {
@@ -180,6 +181,16 @@
"Microsoft.Win32.Registry": "5.0.0"
}
},
+ "Docker.DotNet": {
+ "type": "Transitive",
+ "resolved": "3.125.10",
+ "contentHash": "sKu8AFiRPao1IqYPUT2mAxT0c7F+dgEfOonuVfgn5FYdHccHdL9Ge4Jsem0KHlxYzqE6QpOFDt1hR/J1XzqogQ==",
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1",
+ "System.Buffers": "4.5.1",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ }
+ },
"Fractions": {
"type": "Transitive",
"resolved": "7.0.0",
@@ -1243,45 +1254,53 @@
"monai.deploy.workflowmanager.configuration": {
"type": "Project",
"dependencies": {
- "Karambolo.Extensions.Logging.File": "3.3.1",
- "Microsoft.Extensions.Configuration": "6.0.1",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Newtonsoft.Json": "13.0.1",
- "System.IO.Abstractions": "17.1.1"
+ "Karambolo.Extensions.Logging.File": "[3.3.1, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Microsoft.Extensions.Logging": "[6.0.0, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Newtonsoft.Json": "[13.0.1, )",
+ "System.IO.Abstractions": "[17.1.1, )"
}
},
"monai.deploy.workflowmanager.taskmanager.api": {
"type": "Project",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "MongoDB.Bson": "2.17.1"
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "MongoDB.Bson": "[2.17.1, )"
}
},
"monai.deploy.workflowmanager.taskmanager.argo": {
"type": "Project",
"dependencies": {
- "IdentityModel.OidcClient": "5.0.2",
- "KubernetesClient": "7.2.19",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Configuration": "1.0.0",
- "Monai.Deploy.WorkflowManager.TaskManager.API": "1.0.0",
- "Newtonsoft.Json": "13.0.1"
+ "IdentityModel.OidcClient": "[5.0.2, )",
+ "KubernetesClient": "[7.2.19, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.TaskManager.API": "[1.0.0, )",
+ "Newtonsoft.Json": "[13.0.1, )"
}
},
"monai.deploy.workflowmanager.taskmanager.database": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.WorkflowManager.TaskManager.API": "1.0.0",
- "MongoDB.Bson": "2.17.1",
- "MongoDB.Driver": "2.17.1"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.TaskManager.API": "[1.0.0, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "MongoDB.Driver": "[2.17.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.taskmanager.docker": {
+ "type": "Project",
+ "dependencies": {
+ "Docker.DotNet": "[3.125.10, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.TaskManager.API": "[1.0.0, )"
}
}
}
diff --git a/src/WorkflowManager/ConditionsResolver/Monai.Deploy.WorkflowManager.ConditionsResolver.csproj b/src/WorkflowManager/ConditionsResolver/Monai.Deploy.WorkflowManager.ConditionsResolver.csproj
index 48d664a42..f5324de01 100644
--- a/src/WorkflowManager/ConditionsResolver/Monai.Deploy.WorkflowManager.ConditionsResolver.csproj
+++ b/src/WorkflowManager/ConditionsResolver/Monai.Deploy.WorkflowManager.ConditionsResolver.csproj
@@ -1,45 +1,45 @@
-
-
-
-
-
- net6.0
- enable
- enable
- ..\..\.sonarlint\project-monai_monai-deploy-workflow-managercsharp.ruleset
-
-
-
-
-
-
+
+
+
+
+
+ net6.0
+ enable
+ enable
+ ..\..\.sonarlint\project-monai_monai-deploy-workflow-managercsharp.ruleset
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WorkflowManager/ConditionsResolver/packages.lock.json b/src/WorkflowManager/ConditionsResolver/packages.lock.json
new file mode 100644
index 000000000..98693857a
--- /dev/null
+++ b/src/WorkflowManager/ConditionsResolver/packages.lock.json
@@ -0,0 +1,893 @@
+{
+ "version": 1,
+ "dependencies": {
+ "net6.0": {
+ "Ardalis.GuardClauses": {
+ "type": "Direct",
+ "requested": "[4.0.1, )",
+ "resolved": "4.0.1",
+ "contentHash": "RemnImQf/BWR8oYqFpdw+hn+b4Q1w+pGujkRiSfjQhMPuiERwGn4UMmQv+6UDE4qbPlnIN+e3e40JkvBhzgfzg==",
+ "dependencies": {
+ "JetBrains.Annotations": "2021.3.0"
+ }
+ },
+ "AWSSDK.Core": {
+ "type": "Transitive",
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
+ },
+ "AWSSDK.SecurityToken": {
+ "type": "Transitive",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
+ "dependencies": {
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
+ }
+ },
+ "DnsClient": {
+ "type": "Transitive",
+ "resolved": "1.6.1",
+ "contentHash": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ }
+ },
+ "JetBrains.Annotations": {
+ "type": "Transitive",
+ "resolved": "2021.3.0",
+ "contentHash": "Ddxjs5RRjf+c8m9m++WvhW1lz1bqNhsTjWvCLbQN9bvKbkJeR9MhtfNwKgBRRdG2yLHcXFr5Lf7fsvvkiPaDRg=="
+ },
+ "Microsoft.AspNetCore.Authentication.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "VloMLDJMf3n/9ic5lCBOa42IBYJgyB1JhzLsL68Zqg+2bEPWfGBj/xCJy/LrKTArN0coOcZp3wyVTZlx0y9pHQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authentication.Core": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "XlVJzJ5wPOYW+Y0J6Q/LVTEyfS4ssLXmt60T0SPP+D8abVhBTl+cgw2gDHlyKYIkcJg7btMVh383NDkMVqD/fg==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http": "2.2.0",
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authorization": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "/L0W8H3jMYWyaeA9gBJqS/tSWBegP9aaTM0mjRhxTttBY9z4RVDRYJ2CwPAmAXIuPr3r1sOw+CS8jFVRGHRezQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authorization.Policy": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "aJCo6niDRKuNg2uS2WMEmhJTooQUGARhV2ENQ2tO5443zVHUo19MSgrgGo9FIrfD+4yKPF8Q+FF33WkWfPbyKw==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Authorization": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Hosting.Server.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Features": "2.2.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "YogBSMotWPAS/X5967pZ+yyWPQkThxhmzAwyCHCSSldzYBkW5W5d6oPfBaPqQOnSHYTpSOSOkpZoAce0vwb6+A==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.WebUtilities": "2.2.0",
+ "Microsoft.Extensions.ObjectPool": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Features": "2.2.0",
+ "System.Text.Encodings.Web": "4.5.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Extensions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "2DgZ9rWrJtuR7RYiew01nGRzuQBDaGHGmK56Rk54vsLLsCdzuFUPqbDTJCS1qJQWTbmbIQ9wGIOjpxA1t0l7/w==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0",
+ "System.Buffers": "4.5.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Features": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Mvc.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ET6uZpfVbGR1NjCuLaLy197cQ3qZUjzl7EG5SL4GfJH/c9KRE89MMBrQegqWsh0w1iRUB/zQaK0anAjxa/pz4g==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Mvc.Core": {
+ "type": "Transitive",
+ "resolved": "2.2.5",
+ "contentHash": "/8sr8ixIUD57UFwUntha9bOwex7/AkZfdk1f9oNJG1Ek7p/uuKVa7fuHmYZpQOf35Oxrt+2Ku4WPwMSbNxOuWg==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Core": "2.2.0",
+ "Microsoft.AspNetCore.Authorization.Policy": "2.2.0",
+ "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http": "2.2.0",
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
+ "Microsoft.AspNetCore.Mvc.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.ResponseCaching.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Routing": "2.2.0",
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Extensions.DependencyInjection": "2.2.0",
+ "Microsoft.Extensions.DependencyModel": "2.1.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "System.Diagnostics.DiagnosticSource": "4.5.0",
+ "System.Threading.Tasks.Extensions": "4.5.1"
+ }
+ },
+ "Microsoft.AspNetCore.ResponseCaching.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "CIHWEKrHzZfFp7t57UXsueiSA/raku56TgRYauV/W1+KAQq6vevz60zjEKaazt3BI76zwMz3B4jGWnCwd8kwQw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Routing": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "jAhDBy0wryOnMhhZTtT9z63gJbvCzFuLm8yC6pHzuVu9ZD1dzg0ltxIwT4cfwuNkIL/TixdKsm3vpVOpG8euWQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.ObjectPool": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Routing.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "lRRaPN7jDlUCVCp9i0W+PB0trFaKB0bgMJD7hEJS9Uo4R9MXaMC8X2tJhPLmeVE3SGDdYI4QNKdVmhNvMJGgPQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.WebUtilities": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
+ "dependencies": {
+ "Microsoft.Net.Http.Headers": "2.2.0",
+ "System.Text.Encodings.Web": "4.5.0"
+ }
+ },
+ "Microsoft.DotNet.PlatformAbstractions": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "9KPDwvb/hLEVXYruVHVZ8BkebC8j17DmPb56LnqRF74HqSPLjCkrlFUjOtFpQPA2DeADBRTI/e69aCfRBfrhxw==",
+ "dependencies": {
+ "System.AppContext": "4.1.0",
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "BUyFU9t+HzlSE7ri4B+AQN2BgTgHv/uM82s5ZkgU1BApyzWzIl48nDsG5wR1t0pniNuuyTBzG3qCW8152/NtSw==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
+ },
+ "Microsoft.Extensions.DependencyModel": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "nS2XKqi+1A1umnYNLX2Fbm/XnzCxs5i+zXVJ3VC6r9t2z0NZr9FLnJN4VQpKigdcWH/iFTbMuX6M6WQJcTjVIg==",
+ "dependencies": {
+ "Microsoft.DotNet.PlatformAbstractions": "2.1.0",
+ "Newtonsoft.Json": "9.0.1",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Dynamic.Runtime": "4.0.11",
+ "System.Linq": "4.1.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "xRbKuDnoKClu/lC3fCqF5f0UqEqVI8iYJ0RN4XpUHajvcfCWYcFC46NEzaUg2Fub7hznTG9m6XNScrVHl1iaSA==",
+ "dependencies": {
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "6.0.8",
+ "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
+ "Microsoft.Extensions.Options": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "8mNPugigemlybm8f+KcwB5FOEyJ8mZ72stKvOJJqpUFYjfTjFDKFKYB2L98gru1SaxVD9akjw8OyvtbWkAEimQ=="
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Options": "6.0.0",
+ "System.Diagnostics.DiagnosticSource": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg=="
+ },
+ "Microsoft.Extensions.ObjectPool": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
+ },
+ "Microsoft.Extensions.Options": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Primitives": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Net.Http.Headers": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0",
+ "System.Buffers": "4.5.0"
+ }
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ=="
+ },
+ "Microsoft.NETCore.Targets": {
+ "type": "Transitive",
+ "resolved": "1.0.1",
+ "contentHash": "rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw=="
+ },
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "Monai.Deploy.Messaging": {
+ "type": "Transitive",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
+ "Microsoft.Extensions.Logging": "6.0.0",
+ "Newtonsoft.Json": "13.0.1",
+ "RabbitMQ.Client": "6.4.0",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "Monai.Deploy.Storage": {
+ "type": "Transitive",
+ "resolved": "0.2.5",
+ "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==",
+ "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",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "Monai.Deploy.Storage.S3Policy": {
+ "type": "Transitive",
+ "resolved": "0.2.5",
+ "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Newtonsoft.Json": "13.0.1"
+ }
+ },
+ "MongoDB.Bson": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "IBr5w6ygeUCTobiS4J2UlYeIsnjSJvOOf31g60EkRa3NIeyrYs7Y51HeOvJ8r6NPcKv1hLj8xwoop6hDTetAdA==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ }
+ },
+ "MongoDB.Driver": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "A5Yvm3RUdkSYnvKWVb/bZfvhzG+L+t0n80JuUXf0p2QG1TbtqHE9hX/FBK+BoF7sw9rzUTw8VHYeqX5rT0rxdA==",
+ "dependencies": {
+ "MongoDB.Bson": "2.17.1",
+ "MongoDB.Driver.Core": "2.17.1",
+ "MongoDB.Libmongocrypt": "1.5.5"
+ }
+ },
+ "MongoDB.Driver.Core": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "lfuuQvCXcco6mG096PL8xRO+dBdHsDTR3DiYfK/ICHgFlL5RfKlBuE0xClEGKtaZ4Spe28/fF/GUcrrA/yfoAQ==",
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "MongoDB.Bson": "2.17.1",
+ "MongoDB.Libmongocrypt": "1.5.5",
+ "SharpCompress": "0.30.1",
+ "System.Buffers": "4.5.1"
+ }
+ },
+ "MongoDB.Libmongocrypt": {
+ "type": "Transitive",
+ "resolved": "1.5.5",
+ "contentHash": "0DV4l2PjXirSJHD/b+LpOK3IfUDvkbpvvZBM2w1aYL6E/4vbhfyr/FP5laDNx2zRylqN1hIZO+EL7NgO/5GpVg=="
+ },
+ "Newtonsoft.Json": {
+ "type": "Transitive",
+ "resolved": "13.0.1",
+ "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
+ },
+ "RabbitMQ.Client": {
+ "type": "Transitive",
+ "resolved": "6.4.0",
+ "contentHash": "1znR1gGU+xYVSpO5z8nQolcUKA/yydnxQn7Ug9+RUXxTSLMm/eE58VKGwahPBjELXvDnX0k/kBrAitFLRjx9LA==",
+ "dependencies": {
+ "System.Memory": "4.5.4",
+ "System.Threading.Channels": "4.7.1"
+ }
+ },
+ "runtime.native.System": {
+ "type": "Transitive",
+ "resolved": "4.0.0",
+ "contentHash": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "SharpCompress": {
+ "type": "Transitive",
+ "resolved": "0.30.1",
+ "contentHash": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw=="
+ },
+ "System.AppContext": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==",
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Buffers": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
+ },
+ "System.Collections": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.ComponentModel.Annotations": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
+ },
+ "System.Diagnostics.Debug": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Dynamic.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Globalization": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.Abstractions": {
+ "type": "Transitive",
+ "resolved": "17.1.1",
+ "contentHash": "LWOM12Bd0kp/gaH4g1o/O2/6JDcHF/fuctF1IqDZt0aAqU2BwGiMihi9Cdcm5jJz8La1wFWbRPuRui8WeX6m8w=="
+ },
+ "System.IO.FileSystem": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.FileSystem.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==",
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Linq": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.4",
+ "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
+ },
+ "System.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "4.0.12",
+ "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.CompilerServices.Unsafe": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
+ },
+ "System.Runtime.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Handles": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.InteropServices": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation": {
+ "type": "Transitive",
+ "resolved": "4.0.0",
+ "contentHash": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Threading": "4.0.11",
+ "runtime.native.System": "4.0.0"
+ }
+ },
+ "System.Security.AccessControl": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
+ },
+ "System.Text.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encodings.Web": {
+ "type": "Transitive",
+ "resolved": "4.5.0",
+ "contentHash": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g=="
+ },
+ "System.Threading": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Channels": {
+ "type": "Transitive",
+ "resolved": "4.7.1",
+ "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA=="
+ },
+ "System.Threading.Tasks": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "WSKUTtLhPR8gllzIWO2x6l4lmAIfbyMAiTlyXAis4QBDonXK4b4S6F8zGARX4/P8wH3DH+sLdhamCiHn+fTU1A=="
+ },
+ "monai.deploy.workflowmanager.common": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.contracts": {
+ "type": "Project",
+ "dependencies": {
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "Newtonsoft.Json": "[13.0.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.database": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "MongoDB.Driver": "[2.17.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.logging": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.storage": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/WorkflowManager/Contracts/Monai.Deploy.WorkflowManager.Contracts.csproj b/src/WorkflowManager/Contracts/Monai.Deploy.WorkflowManager.Contracts.csproj
index 85f8ddaf1..8bf1159cb 100644
--- a/src/WorkflowManager/Contracts/Monai.Deploy.WorkflowManager.Contracts.csproj
+++ b/src/WorkflowManager/Contracts/Monai.Deploy.WorkflowManager.Contracts.csproj
@@ -27,13 +27,13 @@
-
-
+
+
-
+
diff --git a/src/WorkflowManager/Database/packages.lock.json b/src/WorkflowManager/Database/packages.lock.json
index 374d309e4..b644e562b 100644
--- a/src/WorkflowManager/Database/packages.lock.json
+++ b/src/WorkflowManager/Database/packages.lock.json
@@ -49,15 +49,15 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"AWSSDK.SecurityToken": {
"type": "Transitive",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"DnsClient": {
@@ -296,23 +296,38 @@
"System.Linq": "4.1.0"
}
},
+ "Microsoft.Extensions.Diagnostics.HealthChecks": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "xRbKuDnoKClu/lC3fCqF5f0UqEqVI8iYJ0RN4XpUHajvcfCWYcFC46NEzaUg2Fub7hznTG9m6XNScrVHl1iaSA==",
+ "dependencies": {
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "6.0.8",
+ "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
+ "Microsoft.Extensions.Options": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "8mNPugigemlybm8f+KcwB5FOEyJ8mZ72stKvOJJqpUFYjfTjFDKFKYB2L98gru1SaxVD9akjw8OyvtbWkAEimQ=="
+ },
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "EcnaSsPTqx2MGnHrmWOD0ugbuuqVT8iICqSqPzi45V5/MA1LjUNb0kwgcxBGqizV1R+WeBK7/Gw25Jzkyk9bIw==",
+ "resolved": "6.0.0",
+ "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
+ "Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "+k4AEn68HOJat5gj1TWa6X28WlirNQO9sPIIeQbia+91n03esEtMSSoekSTpMjUzjqtJWQN3McVx0GvSPFHF/Q==",
+ "resolved": "6.0.0",
+ "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "2.2.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0"
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
}
},
"Microsoft.Extensions.Logging": {
@@ -370,16 +385,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"MongoDB.Driver.Core": {
@@ -519,8 +535,8 @@
},
"System.IO.Abstractions": {
"type": "Transitive",
- "resolved": "17.0.18",
- "contentHash": "x0iIMdP+PCLIkz8h13xHCecaiysFgHPe9mM3FdyfSmkl5+MtMCmgFFIe38Aibkzd0UAY/OMoXMKGR2RK10rebQ=="
+ "resolved": "17.1.1",
+ "contentHash": "LWOM12Bd0kp/gaH4g1o/O2/6JDcHF/fuctF1IqDZt0aAqU2BwGiMihi9Cdcm5jJz8La1wFWbRPuRui8WeX6m8w=="
},
"System.IO.FileSystem": {
"type": "Transitive",
@@ -807,9 +823,9 @@
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "[3.7.1.191, )",
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
"Microsoft.Extensions.Configuration": "[6.0.1, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"MongoDB.Bson": "[2.17.1, )",
"Newtonsoft.Json": "[13.0.1, )"
}
diff --git a/src/WorkflowManager/Logging/Logging/Log.cs b/src/WorkflowManager/Logging/Logging/Log.cs
index 02b4f064e..33862c13b 100644
--- a/src/WorkflowManager/Logging/Logging/Log.cs
+++ b/src/WorkflowManager/Logging/Logging/Log.cs
@@ -154,7 +154,13 @@ public static void LogControllerEndTime(this ILogger logger, ResultExecutedConte
var jsonString = JsonConvert.SerializeObject(objectLog);
- logger.LogInformation(29, message: jsonString);
+ logger.LogInformation(30, message: jsonString);
}
+
+ [LoggerMessage(EventId = 31, Level = LogLevel.Warning, Message = "Unable to locate a matching workflow for the given workflow request.")]
+ public static partial void NoMatchingWorkflowFoundForPayload(this ILogger logger);
+
+ [LoggerMessage(EventId = 32, Level = LogLevel.Debug, Message = "Verifying artifact existence on bucket {bucket}: {artifactKey}={artifactValue}.")]
+ public static partial void VerifyArtifactExistence(this ILogger logger, string bucket, string artifactKey, string artifactValue);
}
}
diff --git a/src/WorkflowManager/Logging/packages.lock.json b/src/WorkflowManager/Logging/packages.lock.json
index 3a9d39658..0ac6abeef 100644
--- a/src/WorkflowManager/Logging/packages.lock.json
+++ b/src/WorkflowManager/Logging/packages.lock.json
@@ -41,15 +41,15 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"AWSSDK.SecurityToken": {
"type": "Transitive",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"JetBrains.Annotations": {
@@ -258,23 +258,38 @@
"System.Linq": "4.1.0"
}
},
+ "Microsoft.Extensions.Diagnostics.HealthChecks": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "xRbKuDnoKClu/lC3fCqF5f0UqEqVI8iYJ0RN4XpUHajvcfCWYcFC46NEzaUg2Fub7hznTG9m6XNScrVHl1iaSA==",
+ "dependencies": {
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "6.0.8",
+ "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
+ "Microsoft.Extensions.Options": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "8mNPugigemlybm8f+KcwB5FOEyJ8mZ72stKvOJJqpUFYjfTjFDKFKYB2L98gru1SaxVD9akjw8OyvtbWkAEimQ=="
+ },
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "EcnaSsPTqx2MGnHrmWOD0ugbuuqVT8iICqSqPzi45V5/MA1LjUNb0kwgcxBGqizV1R+WeBK7/Gw25Jzkyk9bIw==",
+ "resolved": "6.0.0",
+ "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
+ "Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "+k4AEn68HOJat5gj1TWa6X28WlirNQO9sPIIeQbia+91n03esEtMSSoekSTpMjUzjqtJWQN3McVx0GvSPFHF/Q==",
+ "resolved": "6.0.0",
+ "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "2.2.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0"
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
}
},
"Microsoft.Extensions.Logging": {
@@ -332,16 +347,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"MongoDB.Bson": {
@@ -467,8 +483,8 @@
},
"System.IO.Abstractions": {
"type": "Transitive",
- "resolved": "17.0.18",
- "contentHash": "x0iIMdP+PCLIkz8h13xHCecaiysFgHPe9mM3FdyfSmkl5+MtMCmgFFIe38Aibkzd0UAY/OMoXMKGR2RK10rebQ=="
+ "resolved": "17.1.1",
+ "contentHash": "LWOM12Bd0kp/gaH4g1o/O2/6JDcHF/fuctF1IqDZt0aAqU2BwGiMihi9Cdcm5jJz8La1wFWbRPuRui8WeX6m8w=="
},
"System.IO.FileSystem": {
"type": "Transitive",
@@ -741,9 +757,9 @@
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "[3.7.1.191, )",
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
"Microsoft.Extensions.Configuration": "[6.0.1, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"MongoDB.Bson": "[2.17.1, )",
"Newtonsoft.Json": "[13.0.1, )"
}
diff --git a/src/WorkflowManager/PayloadListener/packages.lock.json b/src/WorkflowManager/PayloadListener/packages.lock.json
index de9573d6d..ec77ee866 100644
--- a/src/WorkflowManager/PayloadListener/packages.lock.json
+++ b/src/WorkflowManager/PayloadListener/packages.lock.json
@@ -39,15 +39,15 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"AWSSDK.SecurityToken": {
"type": "Transitive",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"DnsClient": {
@@ -432,16 +432,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage.S3Policy": {
@@ -920,7 +921,7 @@
"Microsoft.Extensions.Configuration": "[6.0.1, )",
"Microsoft.Extensions.Logging": "[6.0.0, )",
"Microsoft.Extensions.Options": "[6.0.0, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"Monai.Deploy.Storage": "[0.2.5, )",
"Newtonsoft.Json": "[13.0.1, )",
"System.IO.Abstractions": "[17.1.1, )"
@@ -929,9 +930,9 @@
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "[3.7.1.191, )",
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
"Microsoft.Extensions.Configuration": "[6.0.1, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"MongoDB.Bson": "[2.17.1, )",
"Newtonsoft.Json": "[13.0.1, )"
}
@@ -968,9 +969,9 @@
"monai.deploy.workloadmanager.workfowexecuter": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "[3.7.1.191, )",
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
"Ardalis.GuardClauses": "[4.0.1, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"Monai.Deploy.Storage": "[0.2.5, )",
"Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
"Monai.Deploy.WorkflowManager.ConditionsResolver": "[1.0.0, )",
diff --git a/src/WorkflowManager/Storage/packages.lock.json b/src/WorkflowManager/Storage/packages.lock.json
index 141f744b8..0ed395c1d 100644
--- a/src/WorkflowManager/Storage/packages.lock.json
+++ b/src/WorkflowManager/Storage/packages.lock.json
@@ -28,15 +28,15 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"AWSSDK.SecurityToken": {
"type": "Transitive",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"JetBrains.Annotations": {
@@ -361,16 +361,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage.S3Policy": {
@@ -779,9 +780,9 @@
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "[3.7.1.191, )",
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
"Microsoft.Extensions.Configuration": "[6.0.1, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"MongoDB.Bson": "[2.17.1, )",
"Newtonsoft.Json": "[13.0.1, )"
}
diff --git a/src/WorkflowManager/WorkflowExecuter/Common/ArtifactMapper.cs b/src/WorkflowManager/WorkflowExecuter/Common/ArtifactMapper.cs
index 2b4fa3de2..294d90b46 100644
--- a/src/WorkflowManager/WorkflowExecuter/Common/ArtifactMapper.cs
+++ b/src/WorkflowManager/WorkflowExecuter/Common/ArtifactMapper.cs
@@ -15,9 +15,11 @@
*/
using Ardalis.GuardClauses;
+using Microsoft.Extensions.Logging;
using Monai.Deploy.Storage.API;
using Monai.Deploy.WorkflowManager.Contracts.Models;
using Monai.Deploy.WorkflowManager.Database.Interfaces;
+using Monai.Deploy.WorkflowManager.Logging.Logging;
namespace Monai.Deploy.WorkflowManager.WorkfowExecuter.Common
{
@@ -25,14 +27,16 @@ public class ArtifactMapper : IArtifactMapper
{
private readonly IWorkflowInstanceRepository _workflowInstanceRepository;
private readonly IStorageService _storageService;
+ private readonly ILogger _logger;
public ArtifactMapper(
IWorkflowInstanceRepository workflowInstanceRepository,
- IStorageService storageService
- )
+ IStorageService storageService,
+ ILogger logger)
{
_workflowInstanceRepository = workflowInstanceRepository ?? throw new ArgumentNullException(nameof(workflowInstanceRepository));
_storageService = storageService ?? throw new ArgumentNullException(nameof(storageService));
+ _logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public async Task> ConvertArtifactVariablesToPath(Artifact[] artifacts, string payloadId, string workflowInstanceId, string bucketId, bool shouldExistYet = true)
@@ -137,12 +141,12 @@ private static bool TrimArtifactVariable(string valueString, out string variable
var artifactName = variableWords[4];
var outputArtifact = task.OutputArtifacts?.FirstOrDefault(a => a.Key == artifactName);
- if (outputArtifact is null)
+ if (!outputArtifact.HasValue)
{
return default;
}
- return await VerifyExists((KeyValuePair)outputArtifact, bucketId, shouldExistYet);
+ return await VerifyExists(outputArtifact.Value, bucketId, shouldExistYet);
}
}
@@ -158,6 +162,7 @@ private static bool TrimArtifactVariable(string valueString, out string variable
if (shouldExistYet)
{
+ _logger.VerifyArtifactExistence(bucketId, artifact.Key, artifact.Value);
artifact = await _storageService.VerifyObjectExistsAsync(bucketId, artifact);
}
diff --git a/src/WorkflowManager/WorkflowExecuter/Monai.Deploy.WorkloadManager.WorkfowExecuter.csproj b/src/WorkflowManager/WorkflowExecuter/Monai.Deploy.WorkloadManager.WorkfowExecuter.csproj
index 87289cd15..48c9c944e 100644
--- a/src/WorkflowManager/WorkflowExecuter/Monai.Deploy.WorkloadManager.WorkfowExecuter.csproj
+++ b/src/WorkflowManager/WorkflowExecuter/Monai.Deploy.WorkloadManager.WorkfowExecuter.csproj
@@ -26,13 +26,13 @@
-
-
+
+
-
+
diff --git a/src/WorkflowManager/WorkflowExecuter/Services/WorkflowExecuterService.cs b/src/WorkflowManager/WorkflowExecuter/Services/WorkflowExecuterService.cs
index 209ff3d93..9c28f5ac5 100644
--- a/src/WorkflowManager/WorkflowExecuter/Services/WorkflowExecuterService.cs
+++ b/src/WorkflowManager/WorkflowExecuter/Services/WorkflowExecuterService.cs
@@ -90,6 +90,7 @@ public async Task ProcessPayload(WorkflowRequestEvent message, Payload pay
{
Guard.Against.Null(message, nameof(message));
+ using var loggerScope = _logger.BeginScope($"Correlation ID={message.CorrelationId}, Payload ID={payload.PayloadId}");
var processed = true;
var workflows = new List();
@@ -99,6 +100,7 @@ public async Task ProcessPayload(WorkflowRequestEvent message, Payload pay
if (workflows is null || workflows.Any() is false)
{
+ _logger.NoMatchingWorkflowFoundForPayload();
return false;
}
@@ -124,6 +126,7 @@ public async Task ProcessPayload(WorkflowRequestEvent message, Payload pay
if (!processed)
{
+ _logger.LogWarning("!processed");
return false;
}
diff --git a/src/WorkflowManager/WorkflowExecuter/packages.lock.json b/src/WorkflowManager/WorkflowExecuter/packages.lock.json
index 2133608e9..dfa8a3006 100644
--- a/src/WorkflowManager/WorkflowExecuter/packages.lock.json
+++ b/src/WorkflowManager/WorkflowExecuter/packages.lock.json
@@ -13,26 +13,27 @@
},
"AWSSDK.SecurityToken": {
"type": "Direct",
- "requested": "[3.7.1.191, )",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "requested": "[3.7.1.193, )",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"Monai.Deploy.Messaging": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
@@ -58,8 +59,8 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"DnsClient": {
"type": "Transitive",
@@ -922,7 +923,7 @@
"Microsoft.Extensions.Configuration": "[6.0.1, )",
"Microsoft.Extensions.Logging": "[6.0.0, )",
"Microsoft.Extensions.Options": "[6.0.0, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"Monai.Deploy.Storage": "[0.2.5, )",
"Newtonsoft.Json": "[13.0.1, )",
"System.IO.Abstractions": "[17.1.1, )"
@@ -931,9 +932,9 @@
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "[3.7.1.191, )",
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
"Microsoft.Extensions.Configuration": "[6.0.1, )",
- "Monai.Deploy.Messaging": "[0.1.3-rc0012, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
"MongoDB.Bson": "[2.17.1, )",
"Newtonsoft.Json": "[13.0.1, )"
}
diff --git a/src/WorkflowManager/WorkflowManager/Monai.Deploy.WorkflowManager.csproj b/src/WorkflowManager/WorkflowManager/Monai.Deploy.WorkflowManager.csproj
index ea1c1559b..b2bd136a9 100644
--- a/src/WorkflowManager/WorkflowManager/Monai.Deploy.WorkflowManager.csproj
+++ b/src/WorkflowManager/WorkflowManager/Monai.Deploy.WorkflowManager.csproj
@@ -31,8 +31,8 @@
-
-
+
+
@@ -48,7 +48,7 @@
-
+
all
diff --git a/src/WorkflowManager/WorkflowManager/packages.lock.json b/src/WorkflowManager/WorkflowManager/packages.lock.json
index 4d12c26f1..b31627210 100644
--- a/src/WorkflowManager/WorkflowManager/packages.lock.json
+++ b/src/WorkflowManager/WorkflowManager/packages.lock.json
@@ -138,11 +138,11 @@
},
"Monai.Deploy.Messaging.RabbitMQ": {
"type": "Direct",
- "requested": "[0.1.3-rc0012, )",
- "resolved": "0.1.3-rc0012",
- "contentHash": "IIzty1xAAn3pTSK9VPI5o22nZDGyPyKWNiGstC4bkzIHdxghPEX/ErR7IVkClxCc9kK8X+4sReGFksdGKShQnw==",
+ "requested": "[0.1.6-rc0001, )",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "sbHA1Rt+O2SuucQOULq/SCUEFq46fUIDFtllxBL94wZSNMf7nioPRVi+kU6j6JrUBqWT+F1A/qUxwvANbrkHNQ==",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012"
+ "Monai.Deploy.Messaging": "0.1.6-rc0001"
}
},
"Monai.Deploy.Storage.MinIO": {
@@ -186,15 +186,15 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"AWSSDK.SecurityToken": {
"type": "Transitive",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"Crc32.NET": {
@@ -774,16 +774,17 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Storage": {
@@ -1663,119 +1664,119 @@
"monai.deploy.workflowmanager.authentication": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.AspNetCore.Authentication.JwtBearer": "6.0.8",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.8, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.common": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Storage": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.conditionsresolver": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Storage": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.configuration": {
"type": "Project",
"dependencies": {
- "Karambolo.Extensions.Logging.File": "3.3.1",
- "Microsoft.Extensions.Configuration": "6.0.1",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Newtonsoft.Json": "13.0.1",
- "System.IO.Abstractions": "17.1.1"
+ "Karambolo.Extensions.Logging.File": "[3.3.1, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Microsoft.Extensions.Logging": "[6.0.0, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Newtonsoft.Json": "[13.0.1, )",
+ "System.IO.Abstractions": "[17.1.1, )"
}
},
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "3.7.1.191",
- "Microsoft.Extensions.Configuration": "6.0.1",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "MongoDB.Bson": "2.17.1",
- "Newtonsoft.Json": "13.0.1"
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "Newtonsoft.Json": "[13.0.1, )"
}
},
"monai.deploy.workflowmanager.database": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "MongoDB.Bson": "2.17.1",
- "MongoDB.Driver": "2.17.1"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "MongoDB.Driver": "[2.17.1, )"
}
},
"monai.deploy.workflowmanager.logging": {
"type": "Project",
"dependencies": {
- "Microsoft.AspNetCore.Mvc.Core": "2.2.5",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0"
+ "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.monaibackgroundservice": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.Hosting": "6.0.1",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkloadManager.WorkfowExecuter": "1.0.0"
+ "Microsoft.Extensions.Hosting": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkloadManager.WorkfowExecuter": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.payloadlistener": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.Configuration": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "Monai.Deploy.WorkloadManager.WorkfowExecuter": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Hosting.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkloadManager.WorkfowExecuter": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.storage": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )"
}
},
"monai.deploy.workloadmanager.workfowexecuter": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "3.7.1.191",
- "Ardalis.GuardClauses": "4.0.1",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.ConditionsResolver": "1.0.0",
- "Monai.Deploy.WorkflowManager.Configuration": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "Monai.Deploy.WorkflowManager.Storage": "1.0.0",
- "Newtonsoft.Json": "13.0.1"
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.ConditionsResolver": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )",
+ "Newtonsoft.Json": "[13.0.1, )"
}
}
}
diff --git a/tests/IntegrationTests/TaskManager.IntegrationTests/Monai.Deploy.WorkflowManager.TaskManager.IntegrationTests.csproj b/tests/IntegrationTests/TaskManager.IntegrationTests/Monai.Deploy.WorkflowManager.TaskManager.IntegrationTests.csproj
index 2be6a1171..33a9dfbd5 100644
--- a/tests/IntegrationTests/TaskManager.IntegrationTests/Monai.Deploy.WorkflowManager.TaskManager.IntegrationTests.csproj
+++ b/tests/IntegrationTests/TaskManager.IntegrationTests/Monai.Deploy.WorkflowManager.TaskManager.IntegrationTests.csproj
@@ -30,7 +30,7 @@
-
+
diff --git a/tests/IntegrationTests/WorkflowExecutor.IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests.csproj b/tests/IntegrationTests/WorkflowExecutor.IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests.csproj
index 2018631b3..d79c36205 100644
--- a/tests/IntegrationTests/WorkflowExecutor.IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests.csproj
+++ b/tests/IntegrationTests/WorkflowExecutor.IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests.csproj
@@ -39,7 +39,7 @@
-
+
diff --git a/tests/UnitTests/Database.Tests/packages.lock.json b/tests/UnitTests/Database.Tests/packages.lock.json
new file mode 100644
index 000000000..53d6ddce2
--- /dev/null
+++ b/tests/UnitTests/Database.Tests/packages.lock.json
@@ -0,0 +1,1535 @@
+{
+ "version": 1,
+ "dependencies": {
+ "net6.0": {
+ "coverlet.collector": {
+ "type": "Direct",
+ "requested": "[3.1.2, )",
+ "resolved": "3.1.2",
+ "contentHash": "wuLDIDKD5XMt0A7lE31JPenT7QQwZPFkP5rRpdJeblyXZ9MGLI8rYjvm5fvAKln+2/X+4IxxQDxBtwdrqKNLZw=="
+ },
+ "Microsoft.NET.Test.Sdk": {
+ "type": "Direct",
+ "requested": "[17.3.1, )",
+ "resolved": "17.3.1",
+ "contentHash": "jH9W5uYannaJ3HhrPBkzSidf3WkqP6XI+Yke0ODYVuFWM6GLVtBAyNgXvU/uQXPBsHq4aysLTsrN1FvG2hlKoQ==",
+ "dependencies": {
+ "Microsoft.CodeCoverage": "17.3.1",
+ "Microsoft.TestPlatform.TestHost": "17.3.1"
+ }
+ },
+ "Moq": {
+ "type": "Direct",
+ "requested": "[4.18.2, )",
+ "resolved": "4.18.2",
+ "contentHash": "SjxKYS5nX6prcaT8ZjbkONh3vnh0Rxru09+gQ1a07v4TM530Oe/jq3Q4dOZPfo1wq0LYmTgLOZKrqRfEx4auPw==",
+ "dependencies": {
+ "Castle.Core": "5.1.0"
+ }
+ },
+ "xunit": {
+ "type": "Direct",
+ "requested": "[2.4.2, )",
+ "resolved": "2.4.2",
+ "contentHash": "6Mj73Ont3zj2CJuoykVJfE0ZmRwn7C+pTuRP8c4bnaaTFjwNG6tGe0prJ1yIbMe9AHrpDys63ctWacSsFJWK/w==",
+ "dependencies": {
+ "xunit.analyzers": "1.0.0",
+ "xunit.assert": "2.4.2",
+ "xunit.core": "[2.4.2]"
+ }
+ },
+ "xunit.runner.visualstudio": {
+ "type": "Direct",
+ "requested": "[2.4.5, )",
+ "resolved": "2.4.5",
+ "contentHash": "OwHamvBdUKgqsXfBzWiCW/O98BTx81UKzx2bieIOQI7CZFE5NEQZGi8PBQGIKawDW96xeRffiNf20SjfC0x9hw=="
+ },
+ "Ardalis.GuardClauses": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "RemnImQf/BWR8oYqFpdw+hn+b4Q1w+pGujkRiSfjQhMPuiERwGn4UMmQv+6UDE4qbPlnIN+e3e40JkvBhzgfzg==",
+ "dependencies": {
+ "JetBrains.Annotations": "2021.3.0"
+ }
+ },
+ "AWSSDK.Core": {
+ "type": "Transitive",
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
+ },
+ "AWSSDK.SecurityToken": {
+ "type": "Transitive",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
+ "dependencies": {
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
+ }
+ },
+ "Castle.Core": {
+ "type": "Transitive",
+ "resolved": "5.1.0",
+ "contentHash": "31UJpTHOiWq95CDOHazE3Ub/hE/PydNWsJMwnEVTqFFP4WhAugwpaVGxzOxKgNeSUUeqS2W6lxV+q7u1pAOfXg==",
+ "dependencies": {
+ "System.Diagnostics.EventLog": "6.0.0"
+ }
+ },
+ "DnsClient": {
+ "type": "Transitive",
+ "resolved": "1.6.1",
+ "contentHash": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ }
+ },
+ "JetBrains.Annotations": {
+ "type": "Transitive",
+ "resolved": "2021.3.0",
+ "contentHash": "Ddxjs5RRjf+c8m9m++WvhW1lz1bqNhsTjWvCLbQN9bvKbkJeR9MhtfNwKgBRRdG2yLHcXFr5Lf7fsvvkiPaDRg=="
+ },
+ "Microsoft.AspNetCore.Authentication.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "VloMLDJMf3n/9ic5lCBOa42IBYJgyB1JhzLsL68Zqg+2bEPWfGBj/xCJy/LrKTArN0coOcZp3wyVTZlx0y9pHQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authentication.Core": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "XlVJzJ5wPOYW+Y0J6Q/LVTEyfS4ssLXmt60T0SPP+D8abVhBTl+cgw2gDHlyKYIkcJg7btMVh383NDkMVqD/fg==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http": "2.2.0",
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authorization": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "/L0W8H3jMYWyaeA9gBJqS/tSWBegP9aaTM0mjRhxTttBY9z4RVDRYJ2CwPAmAXIuPr3r1sOw+CS8jFVRGHRezQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authorization.Policy": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "aJCo6niDRKuNg2uS2WMEmhJTooQUGARhV2ENQ2tO5443zVHUo19MSgrgGo9FIrfD+4yKPF8Q+FF33WkWfPbyKw==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Authorization": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Hosting.Server.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Features": "2.2.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "YogBSMotWPAS/X5967pZ+yyWPQkThxhmzAwyCHCSSldzYBkW5W5d6oPfBaPqQOnSHYTpSOSOkpZoAce0vwb6+A==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.WebUtilities": "2.2.0",
+ "Microsoft.Extensions.ObjectPool": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Features": "2.2.0",
+ "System.Text.Encodings.Web": "4.5.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Extensions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "2DgZ9rWrJtuR7RYiew01nGRzuQBDaGHGmK56Rk54vsLLsCdzuFUPqbDTJCS1qJQWTbmbIQ9wGIOjpxA1t0l7/w==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0",
+ "System.Buffers": "4.5.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Features": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Mvc.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ET6uZpfVbGR1NjCuLaLy197cQ3qZUjzl7EG5SL4GfJH/c9KRE89MMBrQegqWsh0w1iRUB/zQaK0anAjxa/pz4g==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Mvc.Core": {
+ "type": "Transitive",
+ "resolved": "2.2.5",
+ "contentHash": "/8sr8ixIUD57UFwUntha9bOwex7/AkZfdk1f9oNJG1Ek7p/uuKVa7fuHmYZpQOf35Oxrt+2Ku4WPwMSbNxOuWg==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Core": "2.2.0",
+ "Microsoft.AspNetCore.Authorization.Policy": "2.2.0",
+ "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http": "2.2.0",
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
+ "Microsoft.AspNetCore.Mvc.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.ResponseCaching.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Routing": "2.2.0",
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Extensions.DependencyInjection": "2.2.0",
+ "Microsoft.Extensions.DependencyModel": "2.1.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "System.Diagnostics.DiagnosticSource": "4.5.0",
+ "System.Threading.Tasks.Extensions": "4.5.1"
+ }
+ },
+ "Microsoft.AspNetCore.ResponseCaching.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "CIHWEKrHzZfFp7t57UXsueiSA/raku56TgRYauV/W1+KAQq6vevz60zjEKaazt3BI76zwMz3B4jGWnCwd8kwQw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Routing": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "jAhDBy0wryOnMhhZTtT9z63gJbvCzFuLm8yC6pHzuVu9ZD1dzg0ltxIwT4cfwuNkIL/TixdKsm3vpVOpG8euWQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.ObjectPool": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Routing.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "lRRaPN7jDlUCVCp9i0W+PB0trFaKB0bgMJD7hEJS9Uo4R9MXaMC8X2tJhPLmeVE3SGDdYI4QNKdVmhNvMJGgPQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.WebUtilities": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
+ "dependencies": {
+ "Microsoft.Net.Http.Headers": "2.2.0",
+ "System.Text.Encodings.Web": "4.5.0"
+ }
+ },
+ "Microsoft.CodeCoverage": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "WqB7Ik4v8ku0Y9HZShqTStZdq8R1lyhsZr7IMp8zV/OcL5sHVYvlMnardQR+SDQc3dmbniCIl9mYxYM+V7x8MA=="
+ },
+ "Microsoft.DotNet.PlatformAbstractions": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "9KPDwvb/hLEVXYruVHVZ8BkebC8j17DmPb56LnqRF74HqSPLjCkrlFUjOtFpQPA2DeADBRTI/e69aCfRBfrhxw==",
+ "dependencies": {
+ "System.AppContext": "4.1.0",
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "BUyFU9t+HzlSE7ri4B+AQN2BgTgHv/uM82s5ZkgU1BApyzWzIl48nDsG5wR1t0pniNuuyTBzG3qCW8152/NtSw==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
+ },
+ "Microsoft.Extensions.DependencyModel": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "nS2XKqi+1A1umnYNLX2Fbm/XnzCxs5i+zXVJ3VC6r9t2z0NZr9FLnJN4VQpKigdcWH/iFTbMuX6M6WQJcTjVIg==",
+ "dependencies": {
+ "Microsoft.DotNet.PlatformAbstractions": "2.1.0",
+ "Newtonsoft.Json": "9.0.1",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Dynamic.Runtime": "4.0.11",
+ "System.Linq": "4.1.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "xRbKuDnoKClu/lC3fCqF5f0UqEqVI8iYJ0RN4XpUHajvcfCWYcFC46NEzaUg2Fub7hznTG9m6XNScrVHl1iaSA==",
+ "dependencies": {
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "6.0.8",
+ "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
+ "Microsoft.Extensions.Options": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "8mNPugigemlybm8f+KcwB5FOEyJ8mZ72stKvOJJqpUFYjfTjFDKFKYB2L98gru1SaxVD9akjw8OyvtbWkAEimQ=="
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Options": "6.0.0",
+ "System.Diagnostics.DiagnosticSource": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg=="
+ },
+ "Microsoft.Extensions.ObjectPool": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
+ },
+ "Microsoft.Extensions.Options": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Primitives": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Net.Http.Headers": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0",
+ "System.Buffers": "4.5.0"
+ }
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ=="
+ },
+ "Microsoft.NETCore.Targets": {
+ "type": "Transitive",
+ "resolved": "1.1.0",
+ "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
+ },
+ "Microsoft.TestPlatform.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "n1WSFCMiFt6KmD5JzV+Wye5Ntomez3YP2+d15bu5PS5Z1U0g+V7VBLdJIaJRnahz5BsXJDTnLYNVOUdntwjx6Q==",
+ "dependencies": {
+ "NuGet.Frameworks": "5.11.0",
+ "System.Reflection.Metadata": "1.6.0"
+ }
+ },
+ "Microsoft.TestPlatform.TestHost": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "co/GMz6rGxpzn2aJYTDDim61HvEk+SHBVtbXnu2RSrz20HxkaraEh0kltCsMkmLAX/6Hz5sa6NquLngBlURTow==",
+ "dependencies": {
+ "Microsoft.TestPlatform.ObjectModel": "17.3.1",
+ "Newtonsoft.Json": "9.0.1"
+ }
+ },
+ "Microsoft.Win32.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "Monai.Deploy.Messaging": {
+ "type": "Transitive",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
+ "Microsoft.Extensions.Logging": "6.0.0",
+ "Newtonsoft.Json": "13.0.1",
+ "RabbitMQ.Client": "6.4.0",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "MongoDB.Bson": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "IBr5w6ygeUCTobiS4J2UlYeIsnjSJvOOf31g60EkRa3NIeyrYs7Y51HeOvJ8r6NPcKv1hLj8xwoop6hDTetAdA==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ }
+ },
+ "MongoDB.Driver": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "A5Yvm3RUdkSYnvKWVb/bZfvhzG+L+t0n80JuUXf0p2QG1TbtqHE9hX/FBK+BoF7sw9rzUTw8VHYeqX5rT0rxdA==",
+ "dependencies": {
+ "MongoDB.Bson": "2.17.1",
+ "MongoDB.Driver.Core": "2.17.1",
+ "MongoDB.Libmongocrypt": "1.5.5"
+ }
+ },
+ "MongoDB.Driver.Core": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "lfuuQvCXcco6mG096PL8xRO+dBdHsDTR3DiYfK/ICHgFlL5RfKlBuE0xClEGKtaZ4Spe28/fF/GUcrrA/yfoAQ==",
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "MongoDB.Bson": "2.17.1",
+ "MongoDB.Libmongocrypt": "1.5.5",
+ "SharpCompress": "0.30.1",
+ "System.Buffers": "4.5.1"
+ }
+ },
+ "MongoDB.Libmongocrypt": {
+ "type": "Transitive",
+ "resolved": "1.5.5",
+ "contentHash": "0DV4l2PjXirSJHD/b+LpOK3IfUDvkbpvvZBM2w1aYL6E/4vbhfyr/FP5laDNx2zRylqN1hIZO+EL7NgO/5GpVg=="
+ },
+ "NETStandard.Library": {
+ "type": "Transitive",
+ "resolved": "1.6.1",
+ "contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.Win32.Primitives": "4.3.0",
+ "System.AppContext": "4.3.0",
+ "System.Collections": "4.3.0",
+ "System.Collections.Concurrent": "4.3.0",
+ "System.Console": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tools": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Calendars": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.Compression": "4.3.0",
+ "System.IO.Compression.ZipFile": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Linq.Expressions": "4.3.0",
+ "System.Net.Http": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Net.Sockets": "4.3.0",
+ "System.ObjectModel": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Security.Cryptography.X509Certificates": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Text.Encoding.Extensions": "4.3.0",
+ "System.Text.RegularExpressions": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "System.Threading.Timer": "4.3.0",
+ "System.Xml.ReaderWriter": "4.3.0",
+ "System.Xml.XDocument": "4.3.0"
+ }
+ },
+ "Newtonsoft.Json": {
+ "type": "Transitive",
+ "resolved": "13.0.1",
+ "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
+ },
+ "NuGet.Frameworks": {
+ "type": "Transitive",
+ "resolved": "5.11.0",
+ "contentHash": "eaiXkUjC4NPcquGWzAGMXjuxvLwc6XGKMptSyOGQeT0X70BUZObuybJFZLA0OfTdueLd3US23NBPTBb6iF3V1Q=="
+ },
+ "RabbitMQ.Client": {
+ "type": "Transitive",
+ "resolved": "6.4.0",
+ "contentHash": "1znR1gGU+xYVSpO5z8nQolcUKA/yydnxQn7Ug9+RUXxTSLMm/eE58VKGwahPBjELXvDnX0k/kBrAitFLRjx9LA==",
+ "dependencies": {
+ "System.Memory": "4.5.4",
+ "System.Threading.Channels": "4.7.1"
+ }
+ },
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q=="
+ },
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA=="
+ },
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw=="
+ },
+ "runtime.native.System": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "runtime.native.System.IO.Compression": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "runtime.native.System.Net.Http": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "runtime.native.System.Security.Cryptography.Apple": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
+ "dependencies": {
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
+ }
+ },
+ "runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
+ "dependencies": {
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A=="
+ },
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ=="
+ },
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
+ },
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g=="
+ },
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg=="
+ },
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ=="
+ },
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A=="
+ },
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
+ },
+ "SharpCompress": {
+ "type": "Transitive",
+ "resolved": "0.30.1",
+ "contentHash": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw=="
+ },
+ "System.AppContext": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Buffers": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
+ },
+ "System.Collections": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Collections.Concurrent": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.ComponentModel.Annotations": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
+ },
+ "System.Console": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.Diagnostics.Debug": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Diagnostics.EventLog": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
+ },
+ "System.Diagnostics.Tools": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Diagnostics.Tracing": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Dynamic.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Globalization": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization.Calendars": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0"
+ }
+ },
+ "System.IO": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.Abstractions": {
+ "type": "Transitive",
+ "resolved": "17.1.1",
+ "contentHash": "LWOM12Bd0kp/gaH4g1o/O2/6JDcHF/fuctF1IqDZt0aAqU2BwGiMihi9Cdcm5jJz8La1wFWbRPuRui8WeX6m8w=="
+ },
+ "System.IO.Compression": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Buffers": "4.3.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.IO.Compression": "4.3.0"
+ }
+ },
+ "System.IO.Compression.ZipFile": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
+ "dependencies": {
+ "System.Buffers": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.Compression": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Linq": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Linq.Expressions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.ObjectModel": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Emit.Lightweight": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Reflection.TypeExtensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.4",
+ "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
+ },
+ "System.Net.Http": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.DiagnosticSource": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Extensions": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.OpenSsl": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Security.Cryptography.X509Certificates": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.Net.Http": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Net.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Net.Sockets": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Reflection": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
+ "dependencies": {
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Metadata": {
+ "type": "Transitive",
+ "resolved": "1.6.0",
+ "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
+ },
+ "System.Reflection.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.TypeExtensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Resources.ResourceManager": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "System.Runtime.CompilerServices.Unsafe": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
+ },
+ "System.Runtime.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime.Handles": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime.InteropServices": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Threading": "4.3.0",
+ "runtime.native.System": "4.3.0"
+ }
+ },
+ "System.Runtime.Numerics": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
+ "dependencies": {
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Security.AccessControl": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Cryptography.Algorithms": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Cng": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Csp": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.Collections.Concurrent": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.X509Certificates": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Calendars": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Cng": "4.3.0",
+ "System.Security.Cryptography.Csp": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.OpenSsl": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.Net.Http": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Principal.Windows": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
+ },
+ "System.Text.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Text.Encoding.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.Text.Encodings.Web": {
+ "type": "Transitive",
+ "resolved": "4.5.0",
+ "contentHash": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g=="
+ },
+ "System.Text.RegularExpressions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Threading": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Threading.Channels": {
+ "type": "Transitive",
+ "resolved": "4.7.1",
+ "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA=="
+ },
+ "System.Threading.Tasks": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "WSKUTtLhPR8gllzIWO2x6l4lmAIfbyMAiTlyXAis4QBDonXK4b4S6F8zGARX4/P8wH3DH+sLdhamCiHn+fTU1A=="
+ },
+ "System.Threading.Timer": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Xml.ReaderWriter": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Text.Encoding.Extensions": "4.3.0",
+ "System.Text.RegularExpressions": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "System.Threading.Tasks.Extensions": "4.3.0"
+ }
+ },
+ "System.Xml.XDocument": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tools": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Xml.ReaderWriter": "4.3.0"
+ }
+ },
+ "xunit.abstractions": {
+ "type": "Transitive",
+ "resolved": "2.0.3",
+ "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg=="
+ },
+ "xunit.analyzers": {
+ "type": "Transitive",
+ "resolved": "1.0.0",
+ "contentHash": "BeO8hEgs/c8Ls2647fPfieMngncvf0D0xYNDfIO59MolxtCtVjFRd6SRc+7tj8VMqkVOuJcnc9eh4ngI2cAmLQ=="
+ },
+ "xunit.assert": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "pxJISOFjn2XTTi1mcDCkRZrTFb9OtRRCtx2kZFNF51GdReLr1ls2rnyxvAS4JO247K3aNtflvh5Q0346K5BROA==",
+ "dependencies": {
+ "NETStandard.Library": "1.6.1"
+ }
+ },
+ "xunit.core": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "KB4yGCxNqIVyekhJLXtKSEq6BaXVp/JO3mbGVE1hxypZTLEe7h+sTbAhpA+yZW2dPtXTuiW+C1B2oxxHEkrmOw==",
+ "dependencies": {
+ "xunit.extensibility.core": "[2.4.2]",
+ "xunit.extensibility.execution": "[2.4.2]"
+ }
+ },
+ "xunit.extensibility.core": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "W1BoXTIN1C6kpVSMw25huSet25ky6IAQUNovu3zGOGN/jWnbgSoTyCrlIhmXSg0tH5nEf8q7h3OjNHOjyu5PfA==",
+ "dependencies": {
+ "NETStandard.Library": "1.6.1",
+ "xunit.abstractions": "2.0.3"
+ }
+ },
+ "xunit.extensibility.execution": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "CZmgcKkwpyo8FlupZdWpJCryrAOWLh1FBPG6gmVZuPQkGQsim/oL4PcP4nfrC2hHgXUFtluvaJ0Sp9PQKUMNpg==",
+ "dependencies": {
+ "NETStandard.Library": "1.6.1",
+ "xunit.extensibility.core": "[2.4.2]"
+ }
+ },
+ "monai.deploy.workflowmanager.contracts": {
+ "type": "Project",
+ "dependencies": {
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "Newtonsoft.Json": "[13.0.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.database": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "MongoDB.Driver": "[2.17.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.logging": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/UnitTests/PayloadListener.Tests/packages.lock.json b/tests/UnitTests/PayloadListener.Tests/packages.lock.json
new file mode 100644
index 000000000..f28bd3ea4
--- /dev/null
+++ b/tests/UnitTests/PayloadListener.Tests/packages.lock.json
@@ -0,0 +1,1092 @@
+{
+ "version": 1,
+ "dependencies": {
+ "net6.0": {
+ "coverlet.collector": {
+ "type": "Direct",
+ "requested": "[3.1.2, )",
+ "resolved": "3.1.2",
+ "contentHash": "wuLDIDKD5XMt0A7lE31JPenT7QQwZPFkP5rRpdJeblyXZ9MGLI8rYjvm5fvAKln+2/X+4IxxQDxBtwdrqKNLZw=="
+ },
+ "Microsoft.NET.Test.Sdk": {
+ "type": "Direct",
+ "requested": "[17.3.1, )",
+ "resolved": "17.3.1",
+ "contentHash": "jH9W5uYannaJ3HhrPBkzSidf3WkqP6XI+Yke0ODYVuFWM6GLVtBAyNgXvU/uQXPBsHq4aysLTsrN1FvG2hlKoQ==",
+ "dependencies": {
+ "Microsoft.CodeCoverage": "17.3.1",
+ "Microsoft.TestPlatform.TestHost": "17.3.1"
+ }
+ },
+ "Moq": {
+ "type": "Direct",
+ "requested": "[4.18.2, )",
+ "resolved": "4.18.2",
+ "contentHash": "SjxKYS5nX6prcaT8ZjbkONh3vnh0Rxru09+gQ1a07v4TM530Oe/jq3Q4dOZPfo1wq0LYmTgLOZKrqRfEx4auPw==",
+ "dependencies": {
+ "Castle.Core": "5.1.0"
+ }
+ },
+ "NUnit": {
+ "type": "Direct",
+ "requested": "[3.13.3, )",
+ "resolved": "3.13.3",
+ "contentHash": "KNPDpls6EfHwC3+nnA67fh5wpxeLb3VLFAfLxrug6JMYDLHH6InaQIWR7Sc3y75d/9IKzMksH/gi08W7XWbmnQ==",
+ "dependencies": {
+ "NETStandard.Library": "2.0.0"
+ }
+ },
+ "NUnit3TestAdapter": {
+ "type": "Direct",
+ "requested": "[4.2.1, )",
+ "resolved": "4.2.1",
+ "contentHash": "kgH8VKsrcZZgNGQXRpVCrM7TnNz9li3b/snH+YmnXUNqsaWa1Xw9EQWHpbzq4Li2FbTjTE/E5N5HdLNXzZ8BpQ=="
+ },
+ "Ardalis.GuardClauses": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "RemnImQf/BWR8oYqFpdw+hn+b4Q1w+pGujkRiSfjQhMPuiERwGn4UMmQv+6UDE4qbPlnIN+e3e40JkvBhzgfzg==",
+ "dependencies": {
+ "JetBrains.Annotations": "2021.3.0"
+ }
+ },
+ "AWSSDK.Core": {
+ "type": "Transitive",
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
+ },
+ "AWSSDK.SecurityToken": {
+ "type": "Transitive",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
+ "dependencies": {
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
+ }
+ },
+ "Castle.Core": {
+ "type": "Transitive",
+ "resolved": "5.1.0",
+ "contentHash": "31UJpTHOiWq95CDOHazE3Ub/hE/PydNWsJMwnEVTqFFP4WhAugwpaVGxzOxKgNeSUUeqS2W6lxV+q7u1pAOfXg==",
+ "dependencies": {
+ "System.Diagnostics.EventLog": "6.0.0"
+ }
+ },
+ "DnsClient": {
+ "type": "Transitive",
+ "resolved": "1.6.1",
+ "contentHash": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ }
+ },
+ "JetBrains.Annotations": {
+ "type": "Transitive",
+ "resolved": "2021.3.0",
+ "contentHash": "Ddxjs5RRjf+c8m9m++WvhW1lz1bqNhsTjWvCLbQN9bvKbkJeR9MhtfNwKgBRRdG2yLHcXFr5Lf7fsvvkiPaDRg=="
+ },
+ "Karambolo.Extensions.Logging.File": {
+ "type": "Transitive",
+ "resolved": "3.3.1",
+ "contentHash": "wkPTc/UEuSAwbO3/Ee+oCdotxncmc/DKwjM533Z0BKvJm94NLOvU2i7pifgMd6uAUJ8jy69OcFZRu7hXKbMW6g==",
+ "dependencies": {
+ "Microsoft.Extensions.FileProviders.Physical": "3.0.0",
+ "Microsoft.Extensions.Logging.Configuration": "3.0.0",
+ "Microsoft.Extensions.Options.ConfigurationExtensions": "3.0.0",
+ "System.Threading.Channels": "4.7.1"
+ }
+ },
+ "Microsoft.AspNetCore.Authentication.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "VloMLDJMf3n/9ic5lCBOa42IBYJgyB1JhzLsL68Zqg+2bEPWfGBj/xCJy/LrKTArN0coOcZp3wyVTZlx0y9pHQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authentication.Core": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "XlVJzJ5wPOYW+Y0J6Q/LVTEyfS4ssLXmt60T0SPP+D8abVhBTl+cgw2gDHlyKYIkcJg7btMVh383NDkMVqD/fg==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http": "2.2.0",
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authorization": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "/L0W8H3jMYWyaeA9gBJqS/tSWBegP9aaTM0mjRhxTttBY9z4RVDRYJ2CwPAmAXIuPr3r1sOw+CS8jFVRGHRezQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Authorization.Policy": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "aJCo6niDRKuNg2uS2WMEmhJTooQUGARhV2ENQ2tO5443zVHUo19MSgrgGo9FIrfD+4yKPF8Q+FF33WkWfPbyKw==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Authorization": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Hosting.Server.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Features": "2.2.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "YogBSMotWPAS/X5967pZ+yyWPQkThxhmzAwyCHCSSldzYBkW5W5d6oPfBaPqQOnSHYTpSOSOkpZoAce0vwb6+A==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.WebUtilities": "2.2.0",
+ "Microsoft.Extensions.ObjectPool": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Features": "2.2.0",
+ "System.Text.Encodings.Web": "4.5.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Extensions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "2DgZ9rWrJtuR7RYiew01nGRzuQBDaGHGmK56Rk54vsLLsCdzuFUPqbDTJCS1qJQWTbmbIQ9wGIOjpxA1t0l7/w==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0",
+ "System.Buffers": "4.5.0"
+ }
+ },
+ "Microsoft.AspNetCore.Http.Features": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Mvc.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "ET6uZpfVbGR1NjCuLaLy197cQ3qZUjzl7EG5SL4GfJH/c9KRE89MMBrQegqWsh0w1iRUB/zQaK0anAjxa/pz4g==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Net.Http.Headers": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Mvc.Core": {
+ "type": "Transitive",
+ "resolved": "2.2.5",
+ "contentHash": "/8sr8ixIUD57UFwUntha9bOwex7/AkZfdk1f9oNJG1Ek7p/uuKVa7fuHmYZpQOf35Oxrt+2Ku4WPwMSbNxOuWg==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Authentication.Core": "2.2.0",
+ "Microsoft.AspNetCore.Authorization.Policy": "2.2.0",
+ "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Http": "2.2.0",
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
+ "Microsoft.AspNetCore.Mvc.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.ResponseCaching.Abstractions": "2.2.0",
+ "Microsoft.AspNetCore.Routing": "2.2.0",
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Extensions.DependencyInjection": "2.2.0",
+ "Microsoft.Extensions.DependencyModel": "2.1.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "System.Diagnostics.DiagnosticSource": "4.5.0",
+ "System.Threading.Tasks.Extensions": "4.5.1"
+ }
+ },
+ "Microsoft.AspNetCore.ResponseCaching.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "CIHWEKrHzZfFp7t57UXsueiSA/raku56TgRYauV/W1+KAQq6vevz60zjEKaazt3BI76zwMz3B4jGWnCwd8kwQw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Routing": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "jAhDBy0wryOnMhhZTtT9z63gJbvCzFuLm8yC6pHzuVu9ZD1dzg0ltxIwT4cfwuNkIL/TixdKsm3vpVOpG8euWQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
+ "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
+ "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
+ "Microsoft.Extensions.ObjectPool": "2.2.0",
+ "Microsoft.Extensions.Options": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.Routing.Abstractions": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "lRRaPN7jDlUCVCp9i0W+PB0trFaKB0bgMJD7hEJS9Uo4R9MXaMC8X2tJhPLmeVE3SGDdYI4QNKdVmhNvMJGgPQ==",
+ "dependencies": {
+ "Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
+ }
+ },
+ "Microsoft.AspNetCore.WebUtilities": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
+ "dependencies": {
+ "Microsoft.Net.Http.Headers": "2.2.0",
+ "System.Text.Encodings.Web": "4.5.0"
+ }
+ },
+ "Microsoft.CodeCoverage": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "WqB7Ik4v8ku0Y9HZShqTStZdq8R1lyhsZr7IMp8zV/OcL5sHVYvlMnardQR+SDQc3dmbniCIl9mYxYM+V7x8MA=="
+ },
+ "Microsoft.DotNet.PlatformAbstractions": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "9KPDwvb/hLEVXYruVHVZ8BkebC8j17DmPb56LnqRF74HqSPLjCkrlFUjOtFpQPA2DeADBRTI/e69aCfRBfrhxw==",
+ "dependencies": {
+ "System.AppContext": "4.1.0",
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "BUyFU9t+HzlSE7ri4B+AQN2BgTgHv/uM82s5ZkgU1BApyzWzIl48nDsG5wR1t0pniNuuyTBzG3qCW8152/NtSw==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Binder": {
+ "type": "Transitive",
+ "resolved": "3.0.0",
+ "contentHash": "iw3UL25Cw9GBILJOs8srwcId2UCz5+BxTu//EN5dO2dOFNtHcNJgnUiqIlmcGi0orIco0pDuDXuIDvhkrY/sGQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "3.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
+ },
+ "Microsoft.Extensions.DependencyModel": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "nS2XKqi+1A1umnYNLX2Fbm/XnzCxs5i+zXVJ3VC6r9t2z0NZr9FLnJN4VQpKigdcWH/iFTbMuX6M6WQJcTjVIg==",
+ "dependencies": {
+ "Microsoft.DotNet.PlatformAbstractions": "2.1.0",
+ "Newtonsoft.Json": "9.0.1",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Dynamic.Runtime": "4.0.11",
+ "System.Linq": "4.1.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "xRbKuDnoKClu/lC3fCqF5f0UqEqVI8iYJ0RN4XpUHajvcfCWYcFC46NEzaUg2Fub7hznTG9m6XNScrVHl1iaSA==",
+ "dependencies": {
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "6.0.8",
+ "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
+ "Microsoft.Extensions.Options": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "8mNPugigemlybm8f+KcwB5FOEyJ8mZ72stKvOJJqpUFYjfTjFDKFKYB2L98gru1SaxVD9akjw8OyvtbWkAEimQ=="
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.FileProviders.Physical": {
+ "type": "Transitive",
+ "resolved": "3.0.0",
+ "contentHash": "76yB1N8hvzDaTqx3epda5sl/3HATw2FskztmmLmfWuvaooaNgbDa37Jyc7IyBCC4PreXEW/XLEET9w6fiJZOFg==",
+ "dependencies": {
+ "Microsoft.Extensions.FileProviders.Abstractions": "3.0.0",
+ "Microsoft.Extensions.FileSystemGlobbing": "3.0.0"
+ }
+ },
+ "Microsoft.Extensions.FileSystemGlobbing": {
+ "type": "Transitive",
+ "resolved": "3.0.0",
+ "contentHash": "E1GcUu8JvY/8QfqMUYTs6HlDLefMYhEzeHsjrhRqOZguBmDTFU8d8m+mGtHEyYHWMRT1TEiha0a8I2AuozDUWQ=="
+ },
+ "Microsoft.Extensions.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Options": "6.0.0",
+ "System.Diagnostics.DiagnosticSource": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg=="
+ },
+ "Microsoft.Extensions.Logging.Configuration": {
+ "type": "Transitive",
+ "resolved": "3.0.0",
+ "contentHash": "Z+3mqptSt3pCo0Nl4pmwK+nTpBpRxNe2lFaBCCtsT0bb88GeFKvw6Mg+0IeEgDrfj7h4qzMYRbL5cSFMpENQZA==",
+ "dependencies": {
+ "Microsoft.Extensions.Logging": "3.0.0",
+ "Microsoft.Extensions.Options.ConfigurationExtensions": "3.0.0"
+ }
+ },
+ "Microsoft.Extensions.ObjectPool": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
+ },
+ "Microsoft.Extensions.Options": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Options.ConfigurationExtensions": {
+ "type": "Transitive",
+ "resolved": "3.0.0",
+ "contentHash": "g4V1TXEKUDgOnp1ZKREKSvITYxcUsTqfxNlOaCG7/xlCurLLzFupm+ULkGqIBUIBK+q3kHmt42pVyHwGIcCBmg==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "3.0.0",
+ "Microsoft.Extensions.Configuration.Binder": "3.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0",
+ "Microsoft.Extensions.Options": "3.0.0"
+ }
+ },
+ "Microsoft.Extensions.Primitives": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Net.Http.Headers": {
+ "type": "Transitive",
+ "resolved": "2.2.0",
+ "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "2.2.0",
+ "System.Buffers": "4.5.0"
+ }
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ=="
+ },
+ "Microsoft.NETCore.Targets": {
+ "type": "Transitive",
+ "resolved": "1.0.1",
+ "contentHash": "rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw=="
+ },
+ "Microsoft.TestPlatform.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "n1WSFCMiFt6KmD5JzV+Wye5Ntomez3YP2+d15bu5PS5Z1U0g+V7VBLdJIaJRnahz5BsXJDTnLYNVOUdntwjx6Q==",
+ "dependencies": {
+ "NuGet.Frameworks": "5.11.0",
+ "System.Reflection.Metadata": "1.6.0"
+ }
+ },
+ "Microsoft.TestPlatform.TestHost": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "co/GMz6rGxpzn2aJYTDDim61HvEk+SHBVtbXnu2RSrz20HxkaraEh0kltCsMkmLAX/6Hz5sa6NquLngBlURTow==",
+ "dependencies": {
+ "Microsoft.TestPlatform.ObjectModel": "17.3.1",
+ "Newtonsoft.Json": "9.0.1"
+ }
+ },
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "Monai.Deploy.Messaging": {
+ "type": "Transitive",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
+ "Microsoft.Extensions.Logging": "6.0.0",
+ "Newtonsoft.Json": "13.0.1",
+ "RabbitMQ.Client": "6.4.0",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "Monai.Deploy.Storage": {
+ "type": "Transitive",
+ "resolved": "0.2.5",
+ "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==",
+ "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",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "Monai.Deploy.Storage.S3Policy": {
+ "type": "Transitive",
+ "resolved": "0.2.5",
+ "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Newtonsoft.Json": "13.0.1"
+ }
+ },
+ "MongoDB.Bson": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "IBr5w6ygeUCTobiS4J2UlYeIsnjSJvOOf31g60EkRa3NIeyrYs7Y51HeOvJ8r6NPcKv1hLj8xwoop6hDTetAdA==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ }
+ },
+ "MongoDB.Driver": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "A5Yvm3RUdkSYnvKWVb/bZfvhzG+L+t0n80JuUXf0p2QG1TbtqHE9hX/FBK+BoF7sw9rzUTw8VHYeqX5rT0rxdA==",
+ "dependencies": {
+ "MongoDB.Bson": "2.17.1",
+ "MongoDB.Driver.Core": "2.17.1",
+ "MongoDB.Libmongocrypt": "1.5.5"
+ }
+ },
+ "MongoDB.Driver.Core": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "lfuuQvCXcco6mG096PL8xRO+dBdHsDTR3DiYfK/ICHgFlL5RfKlBuE0xClEGKtaZ4Spe28/fF/GUcrrA/yfoAQ==",
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "MongoDB.Bson": "2.17.1",
+ "MongoDB.Libmongocrypt": "1.5.5",
+ "SharpCompress": "0.30.1",
+ "System.Buffers": "4.5.1"
+ }
+ },
+ "MongoDB.Libmongocrypt": {
+ "type": "Transitive",
+ "resolved": "1.5.5",
+ "contentHash": "0DV4l2PjXirSJHD/b+LpOK3IfUDvkbpvvZBM2w1aYL6E/4vbhfyr/FP5laDNx2zRylqN1hIZO+EL7NgO/5GpVg=="
+ },
+ "NETStandard.Library": {
+ "type": "Transitive",
+ "resolved": "2.0.0",
+ "contentHash": "7jnbRU+L08FXKMxqUflxEXtVymWvNOrS8yHgu9s6EM8Anr6T/wIX4nZ08j/u3Asz+tCufp3YVwFSEvFTPYmBPA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0"
+ }
+ },
+ "Newtonsoft.Json": {
+ "type": "Transitive",
+ "resolved": "13.0.1",
+ "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
+ },
+ "NuGet.Frameworks": {
+ "type": "Transitive",
+ "resolved": "5.11.0",
+ "contentHash": "eaiXkUjC4NPcquGWzAGMXjuxvLwc6XGKMptSyOGQeT0X70BUZObuybJFZLA0OfTdueLd3US23NBPTBb6iF3V1Q=="
+ },
+ "RabbitMQ.Client": {
+ "type": "Transitive",
+ "resolved": "6.4.0",
+ "contentHash": "1znR1gGU+xYVSpO5z8nQolcUKA/yydnxQn7Ug9+RUXxTSLMm/eE58VKGwahPBjELXvDnX0k/kBrAitFLRjx9LA==",
+ "dependencies": {
+ "System.Memory": "4.5.4",
+ "System.Threading.Channels": "4.7.1"
+ }
+ },
+ "runtime.native.System": {
+ "type": "Transitive",
+ "resolved": "4.0.0",
+ "contentHash": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "SharpCompress": {
+ "type": "Transitive",
+ "resolved": "0.30.1",
+ "contentHash": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw=="
+ },
+ "System.AppContext": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==",
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Buffers": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
+ },
+ "System.Collections": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.ComponentModel.Annotations": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
+ },
+ "System.Diagnostics.Debug": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Diagnostics.EventLog": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
+ },
+ "System.Dynamic.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Globalization": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.Abstractions": {
+ "type": "Transitive",
+ "resolved": "17.1.1",
+ "contentHash": "LWOM12Bd0kp/gaH4g1o/O2/6JDcHF/fuctF1IqDZt0aAqU2BwGiMihi9Cdcm5jJz8La1wFWbRPuRui8WeX6m8w=="
+ },
+ "System.IO.FileSystem": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.FileSystem.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==",
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Linq": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.4",
+ "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
+ },
+ "System.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "4.0.12",
+ "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Metadata": {
+ "type": "Transitive",
+ "resolved": "1.6.0",
+ "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
+ },
+ "System.Reflection.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.CompilerServices.Unsafe": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
+ },
+ "System.Runtime.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Handles": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.InteropServices": {
+ "type": "Transitive",
+ "resolved": "4.1.0",
+ "contentHash": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation": {
+ "type": "Transitive",
+ "resolved": "4.0.0",
+ "contentHash": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Threading": "4.0.11",
+ "runtime.native.System": "4.0.0"
+ }
+ },
+ "System.Security.AccessControl": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
+ },
+ "System.Text.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encodings.Web": {
+ "type": "Transitive",
+ "resolved": "4.5.0",
+ "contentHash": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g=="
+ },
+ "System.Threading": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Channels": {
+ "type": "Transitive",
+ "resolved": "4.7.1",
+ "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA=="
+ },
+ "System.Threading.Tasks": {
+ "type": "Transitive",
+ "resolved": "4.0.11",
+ "contentHash": "k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "WSKUTtLhPR8gllzIWO2x6l4lmAIfbyMAiTlyXAis4QBDonXK4b4S6F8zGARX4/P8wH3DH+sLdhamCiHn+fTU1A=="
+ },
+ "monai.deploy.workflowmanager.common": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.conditionsresolver": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.configuration": {
+ "type": "Project",
+ "dependencies": {
+ "Karambolo.Extensions.Logging.File": "[3.3.1, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Microsoft.Extensions.Logging": "[6.0.0, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Newtonsoft.Json": "[13.0.1, )",
+ "System.IO.Abstractions": "[17.1.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.contracts": {
+ "type": "Project",
+ "dependencies": {
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "Newtonsoft.Json": "[13.0.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.database": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "MongoDB.Driver": "[2.17.1, )"
+ }
+ },
+ "monai.deploy.workflowmanager.logging": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.payloadlistener": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Hosting.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkloadManager.WorkfowExecuter": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.storage": {
+ "type": "Project",
+ "dependencies": {
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workloadmanager.workfowexecuter": {
+ "type": "Project",
+ "dependencies": {
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.ConditionsResolver": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )",
+ "Newtonsoft.Json": "[13.0.1, )"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/UnitTests/TaskManager.AideClinicalReview.Tests/packages.lock.json b/tests/UnitTests/TaskManager.AideClinicalReview.Tests/packages.lock.json
new file mode 100644
index 000000000..c6f3efe75
--- /dev/null
+++ b/tests/UnitTests/TaskManager.AideClinicalReview.Tests/packages.lock.json
@@ -0,0 +1,1258 @@
+{
+ "version": 1,
+ "dependencies": {
+ "net6.0": {
+ "coverlet.collector": {
+ "type": "Direct",
+ "requested": "[3.1.2, )",
+ "resolved": "3.1.2",
+ "contentHash": "wuLDIDKD5XMt0A7lE31JPenT7QQwZPFkP5rRpdJeblyXZ9MGLI8rYjvm5fvAKln+2/X+4IxxQDxBtwdrqKNLZw=="
+ },
+ "Microsoft.NET.Test.Sdk": {
+ "type": "Direct",
+ "requested": "[17.3.1, )",
+ "resolved": "17.3.1",
+ "contentHash": "jH9W5uYannaJ3HhrPBkzSidf3WkqP6XI+Yke0ODYVuFWM6GLVtBAyNgXvU/uQXPBsHq4aysLTsrN1FvG2hlKoQ==",
+ "dependencies": {
+ "Microsoft.CodeCoverage": "17.3.1",
+ "Microsoft.TestPlatform.TestHost": "17.3.1"
+ }
+ },
+ "Moq": {
+ "type": "Direct",
+ "requested": "[4.18.2, )",
+ "resolved": "4.18.2",
+ "contentHash": "SjxKYS5nX6prcaT8ZjbkONh3vnh0Rxru09+gQ1a07v4TM530Oe/jq3Q4dOZPfo1wq0LYmTgLOZKrqRfEx4auPw==",
+ "dependencies": {
+ "Castle.Core": "5.1.0"
+ }
+ },
+ "xunit": {
+ "type": "Direct",
+ "requested": "[2.4.2, )",
+ "resolved": "2.4.2",
+ "contentHash": "6Mj73Ont3zj2CJuoykVJfE0ZmRwn7C+pTuRP8c4bnaaTFjwNG6tGe0prJ1yIbMe9AHrpDys63ctWacSsFJWK/w==",
+ "dependencies": {
+ "xunit.analyzers": "1.0.0",
+ "xunit.assert": "2.4.2",
+ "xunit.core": "[2.4.2]"
+ }
+ },
+ "xunit.runner.visualstudio": {
+ "type": "Direct",
+ "requested": "[2.4.5, )",
+ "resolved": "2.4.5",
+ "contentHash": "OwHamvBdUKgqsXfBzWiCW/O98BTx81UKzx2bieIOQI7CZFE5NEQZGi8PBQGIKawDW96xeRffiNf20SjfC0x9hw=="
+ },
+ "Ardalis.GuardClauses": {
+ "type": "Transitive",
+ "resolved": "4.0.1",
+ "contentHash": "RemnImQf/BWR8oYqFpdw+hn+b4Q1w+pGujkRiSfjQhMPuiERwGn4UMmQv+6UDE4qbPlnIN+e3e40JkvBhzgfzg==",
+ "dependencies": {
+ "JetBrains.Annotations": "2021.3.0"
+ }
+ },
+ "AWSSDK.Core": {
+ "type": "Transitive",
+ "resolved": "3.7.12.26",
+ "contentHash": "Axc3mHH1B+KChD4soiFnolvVxD8dVKeEsVFQ0jOxn+VBhHEizUd3oNq0id/AFYkJL6hdC3NGmbs0Y4OGtT5eEg=="
+ },
+ "AWSSDK.SecurityToken": {
+ "type": "Transitive",
+ "resolved": "3.7.1.190",
+ "contentHash": "6njZoO/BBDWIAeN5DrIjZdQXOt6SSpE+x1A8JRWC9moyz3sqwU3l4uePZSpDyrQuLre+dkj1088Z62u9HX6FpQ==",
+ "dependencies": {
+ "AWSSDK.Core": "[3.7.12.26, 4.0.0)"
+ }
+ },
+ "Castle.Core": {
+ "type": "Transitive",
+ "resolved": "5.1.0",
+ "contentHash": "31UJpTHOiWq95CDOHazE3Ub/hE/PydNWsJMwnEVTqFFP4WhAugwpaVGxzOxKgNeSUUeqS2W6lxV+q7u1pAOfXg==",
+ "dependencies": {
+ "System.Diagnostics.EventLog": "6.0.0"
+ }
+ },
+ "JetBrains.Annotations": {
+ "type": "Transitive",
+ "resolved": "2021.3.0",
+ "contentHash": "Ddxjs5RRjf+c8m9m++WvhW1lz1bqNhsTjWvCLbQN9bvKbkJeR9MhtfNwKgBRRdG2yLHcXFr5Lf7fsvvkiPaDRg=="
+ },
+ "Microsoft.CodeCoverage": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "WqB7Ik4v8ku0Y9HZShqTStZdq8R1lyhsZr7IMp8zV/OcL5sHVYvlMnardQR+SDQc3dmbniCIl9mYxYM+V7x8MA=="
+ },
+ "Microsoft.Extensions.Configuration": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "BUyFU9t+HzlSE7ri4B+AQN2BgTgHv/uM82s5ZkgU1BApyzWzIl48nDsG5wR1t0pniNuuyTBzG3qCW8152/NtSw==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "xRbKuDnoKClu/lC3fCqF5f0UqEqVI8iYJ0RN4XpUHajvcfCWYcFC46NEzaUg2Fub7hznTG9m6XNScrVHl1iaSA==",
+ "dependencies": {
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "6.0.8",
+ "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
+ "Microsoft.Extensions.Options": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.8",
+ "contentHash": "8mNPugigemlybm8f+KcwB5FOEyJ8mZ72stKvOJJqpUFYjfTjFDKFKYB2L98gru1SaxVD9akjw8OyvtbWkAEimQ=="
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Hosting.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "6.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Options": "6.0.0",
+ "System.Diagnostics.DiagnosticSource": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg=="
+ },
+ "Microsoft.Extensions.Options": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+ "Microsoft.Extensions.Primitives": "6.0.0"
+ }
+ },
+ "Microsoft.Extensions.Primitives": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "1.1.0",
+ "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A=="
+ },
+ "Microsoft.NETCore.Targets": {
+ "type": "Transitive",
+ "resolved": "1.1.0",
+ "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
+ },
+ "Microsoft.TestPlatform.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "n1WSFCMiFt6KmD5JzV+Wye5Ntomez3YP2+d15bu5PS5Z1U0g+V7VBLdJIaJRnahz5BsXJDTnLYNVOUdntwjx6Q==",
+ "dependencies": {
+ "NuGet.Frameworks": "5.11.0",
+ "System.Reflection.Metadata": "1.6.0"
+ }
+ },
+ "Microsoft.TestPlatform.TestHost": {
+ "type": "Transitive",
+ "resolved": "17.3.1",
+ "contentHash": "co/GMz6rGxpzn2aJYTDDim61HvEk+SHBVtbXnu2RSrz20HxkaraEh0kltCsMkmLAX/6Hz5sa6NquLngBlURTow==",
+ "dependencies": {
+ "Microsoft.TestPlatform.ObjectModel": "17.3.1",
+ "Newtonsoft.Json": "9.0.1"
+ }
+ },
+ "Microsoft.Win32.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "Monai.Deploy.Messaging": {
+ "type": "Transitive",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
+ "Microsoft.Extensions.Logging": "6.0.0",
+ "Newtonsoft.Json": "13.0.1",
+ "RabbitMQ.Client": "6.4.0",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "Monai.Deploy.Storage": {
+ "type": "Transitive",
+ "resolved": "0.2.5",
+ "contentHash": "EkctSwMUPm+omInxEGAbPPXz6dyd8nY4BAzrdGKt9MHsL1OesFXsgUXsmlCx+ltauohiiTSfjgd9eeVkUUD8MA==",
+ "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",
+ "System.IO.Abstractions": "17.1.1"
+ }
+ },
+ "Monai.Deploy.Storage.S3Policy": {
+ "type": "Transitive",
+ "resolved": "0.2.5",
+ "contentHash": "wtvoeDf7MsuUE48Sggs6FYNOkLFUfQ5mPZer75jb63b9SKQjK2S34IdS8SnHVovNes1xhWInTB9YT2HUNgtzig==",
+ "dependencies": {
+ "Ardalis.GuardClauses": "4.0.1",
+ "Newtonsoft.Json": "13.0.1"
+ }
+ },
+ "MongoDB.Bson": {
+ "type": "Transitive",
+ "resolved": "2.17.1",
+ "contentHash": "IBr5w6ygeUCTobiS4J2UlYeIsnjSJvOOf31g60EkRa3NIeyrYs7Y51HeOvJ8r6NPcKv1hLj8xwoop6hDTetAdA==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ }
+ },
+ "NETStandard.Library": {
+ "type": "Transitive",
+ "resolved": "1.6.1",
+ "contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.Win32.Primitives": "4.3.0",
+ "System.AppContext": "4.3.0",
+ "System.Collections": "4.3.0",
+ "System.Collections.Concurrent": "4.3.0",
+ "System.Console": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tools": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Calendars": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.Compression": "4.3.0",
+ "System.IO.Compression.ZipFile": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Linq.Expressions": "4.3.0",
+ "System.Net.Http": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Net.Sockets": "4.3.0",
+ "System.ObjectModel": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Security.Cryptography.X509Certificates": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Text.Encoding.Extensions": "4.3.0",
+ "System.Text.RegularExpressions": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "System.Threading.Timer": "4.3.0",
+ "System.Xml.ReaderWriter": "4.3.0",
+ "System.Xml.XDocument": "4.3.0"
+ }
+ },
+ "Newtonsoft.Json": {
+ "type": "Transitive",
+ "resolved": "13.0.1",
+ "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
+ },
+ "NuGet.Frameworks": {
+ "type": "Transitive",
+ "resolved": "5.11.0",
+ "contentHash": "eaiXkUjC4NPcquGWzAGMXjuxvLwc6XGKMptSyOGQeT0X70BUZObuybJFZLA0OfTdueLd3US23NBPTBb6iF3V1Q=="
+ },
+ "RabbitMQ.Client": {
+ "type": "Transitive",
+ "resolved": "6.4.0",
+ "contentHash": "1znR1gGU+xYVSpO5z8nQolcUKA/yydnxQn7Ug9+RUXxTSLMm/eE58VKGwahPBjELXvDnX0k/kBrAitFLRjx9LA==",
+ "dependencies": {
+ "System.Memory": "4.5.4",
+ "System.Threading.Channels": "4.7.1"
+ }
+ },
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q=="
+ },
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA=="
+ },
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw=="
+ },
+ "runtime.native.System": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "runtime.native.System.IO.Compression": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "runtime.native.System.Net.Http": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "runtime.native.System.Security.Cryptography.Apple": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
+ "dependencies": {
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
+ }
+ },
+ "runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
+ "dependencies": {
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A=="
+ },
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ=="
+ },
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
+ },
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g=="
+ },
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg=="
+ },
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ=="
+ },
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A=="
+ },
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
+ },
+ "System.AppContext": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Buffers": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Collections": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Collections.Concurrent": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.ComponentModel.Annotations": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
+ },
+ "System.Console": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.Diagnostics.Debug": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Diagnostics.EventLog": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
+ },
+ "System.Diagnostics.Tools": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Diagnostics.Tracing": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization.Calendars": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0"
+ }
+ },
+ "System.IO": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.Abstractions": {
+ "type": "Transitive",
+ "resolved": "17.1.1",
+ "contentHash": "LWOM12Bd0kp/gaH4g1o/O2/6JDcHF/fuctF1IqDZt0aAqU2BwGiMihi9Cdcm5jJz8La1wFWbRPuRui8WeX6m8w=="
+ },
+ "System.IO.Compression": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Buffers": "4.3.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.IO.Compression": "4.3.0"
+ }
+ },
+ "System.IO.Compression.ZipFile": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
+ "dependencies": {
+ "System.Buffers": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.Compression": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Linq": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Linq.Expressions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.ObjectModel": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Emit.Lightweight": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Reflection.TypeExtensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.4",
+ "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
+ },
+ "System.Net.Http": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.DiagnosticSource": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Extensions": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.OpenSsl": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Security.Cryptography.X509Certificates": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.Net.Http": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Net.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Net.Sockets": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Reflection": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
+ "dependencies": {
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Metadata": {
+ "type": "Transitive",
+ "resolved": "1.6.0",
+ "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
+ },
+ "System.Reflection.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.TypeExtensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Resources.ResourceManager": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "System.Runtime.CompilerServices.Unsafe": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
+ },
+ "System.Runtime.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime.Handles": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime.InteropServices": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Threading": "4.3.0",
+ "runtime.native.System": "4.3.0"
+ }
+ },
+ "System.Runtime.Numerics": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
+ "dependencies": {
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Algorithms": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Cng": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Csp": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.Collections.Concurrent": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.OpenSsl": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.X509Certificates": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Calendars": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Cng": "4.3.0",
+ "System.Security.Cryptography.Csp": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.OpenSsl": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.Net.Http": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Text.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Text.Encoding.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.Text.RegularExpressions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Threading": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Threading.Channels": {
+ "type": "Transitive",
+ "resolved": "4.7.1",
+ "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA=="
+ },
+ "System.Threading.Tasks": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Threading.Timer": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Xml.ReaderWriter": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Text.Encoding.Extensions": "4.3.0",
+ "System.Text.RegularExpressions": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "System.Threading.Tasks.Extensions": "4.3.0"
+ }
+ },
+ "System.Xml.XDocument": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tools": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Xml.ReaderWriter": "4.3.0"
+ }
+ },
+ "xunit.abstractions": {
+ "type": "Transitive",
+ "resolved": "2.0.3",
+ "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg=="
+ },
+ "xunit.analyzers": {
+ "type": "Transitive",
+ "resolved": "1.0.0",
+ "contentHash": "BeO8hEgs/c8Ls2647fPfieMngncvf0D0xYNDfIO59MolxtCtVjFRd6SRc+7tj8VMqkVOuJcnc9eh4ngI2cAmLQ=="
+ },
+ "xunit.assert": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "pxJISOFjn2XTTi1mcDCkRZrTFb9OtRRCtx2kZFNF51GdReLr1ls2rnyxvAS4JO247K3aNtflvh5Q0346K5BROA==",
+ "dependencies": {
+ "NETStandard.Library": "1.6.1"
+ }
+ },
+ "xunit.core": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "KB4yGCxNqIVyekhJLXtKSEq6BaXVp/JO3mbGVE1hxypZTLEe7h+sTbAhpA+yZW2dPtXTuiW+C1B2oxxHEkrmOw==",
+ "dependencies": {
+ "xunit.extensibility.core": "[2.4.2]",
+ "xunit.extensibility.execution": "[2.4.2]"
+ }
+ },
+ "xunit.extensibility.core": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "W1BoXTIN1C6kpVSMw25huSet25ky6IAQUNovu3zGOGN/jWnbgSoTyCrlIhmXSg0tH5nEf8q7h3OjNHOjyu5PfA==",
+ "dependencies": {
+ "NETStandard.Library": "1.6.1",
+ "xunit.abstractions": "2.0.3"
+ }
+ },
+ "xunit.extensibility.execution": {
+ "type": "Transitive",
+ "resolved": "2.4.2",
+ "contentHash": "CZmgcKkwpyo8FlupZdWpJCryrAOWLh1FBPG6gmVZuPQkGQsim/oL4PcP4nfrC2hHgXUFtluvaJ0Sp9PQKUMNpg==",
+ "dependencies": {
+ "NETStandard.Library": "1.6.1",
+ "xunit.extensibility.core": "[2.4.2]"
+ }
+ },
+ "monai.deploy.workflowmanager.taskmanager.aideclinicalreview": {
+ "type": "Project",
+ "dependencies": {
+ "Monai.Deploy.WorkflowManager.TaskManager.API": "[1.0.0, )"
+ }
+ },
+ "monai.deploy.workflowmanager.taskmanager.api": {
+ "type": "Project",
+ "dependencies": {
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "MongoDB.Bson": "[2.17.1, )"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/UnitTests/TaskManager.Argo.Tests/ArgoPluginTest.cs b/tests/UnitTests/TaskManager.Argo.Tests/ArgoPluginTest.cs
index f89a43be7..0f8c697d9 100644
--- a/tests/UnitTests/TaskManager.Argo.Tests/ArgoPluginTest.cs
+++ b/tests/UnitTests/TaskManager.Argo.Tests/ArgoPluginTest.cs
@@ -477,7 +477,7 @@ public async Task ArgoPlugin_GetStatus_WaitUntilSucceededPhase()
_argoClient.Verify(p => p.WorkflowService_GetWorkflowAsync(It.Is(p => p.Equals("namespace", StringComparison.OrdinalIgnoreCase)), It.Is(p => p.Equals("identity", StringComparison.OrdinalIgnoreCase)), It.IsAny(), It.IsAny(), It.IsAny()), Times.Exactly(3));
}
- [Fact(DisplayName = "ExecuteTask - Stats contains info")]
+ [Fact(DisplayName = "GetStatus - Stats contains info")]
public async Task ArgoPlugin_GetStatus_HasStatsInfo()
{
var tryCount = 0;
diff --git a/tests/UnitTests/TaskManager.Docker.Tests/ContainerStatusMonitorTest.cs b/tests/UnitTests/TaskManager.Docker.Tests/ContainerStatusMonitorTest.cs
new file mode 100644
index 000000000..527b90429
--- /dev/null
+++ b/tests/UnitTests/TaskManager.Docker.Tests/ContainerStatusMonitorTest.cs
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.IO.Abstractions;
+using System.IO.Abstractions.TestingHelpers;
+using Docker.DotNet;
+using Docker.DotNet.Models;
+using Microsoft.AspNetCore.StaticFiles;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using Monai.Deploy.Messaging.API;
+using Monai.Deploy.Messaging.Common;
+using Monai.Deploy.Messaging.Events;
+using Monai.Deploy.Storage.API;
+using Monai.Deploy.WorkflowManager.Configuration;
+using Monai.Deploy.WorkflowManager.TaskManager.Docker;
+using Moq;
+using Credentials = Monai.Deploy.Messaging.Common.Credentials;
+
+namespace TaskManager.Docker.Tests
+{
+ public class ContainerStatusMonitorTest
+ {
+ private readonly Mock _serviceScopeFactory;
+ private readonly Mock> _logger;
+ private readonly IOptions _options;
+ private readonly Mock _serviceScope;
+
+ private readonly Mock _dockerClientFactory;
+ private readonly Mock _dockerClient;
+ private readonly Mock _storageService;
+ private readonly Mock _contentTypeProvider;
+ private readonly Mock _messageBrokerPublisherService;
+ private readonly Mock _containerStatusMonitor;
+ private readonly IFileSystem _fileSystem;
+
+ public ContainerStatusMonitorTest()
+ {
+ _logger = new Mock>();
+ _serviceScopeFactory = new Mock();
+ _serviceScope = new Mock();
+ _options = Options.Create(new WorkflowManagerOptions());
+ _options.Value.Messaging.PublisherSettings.Add("endpoint", "1.2.2.3/virtualhost");
+ _options.Value.Messaging.PublisherSettings.Add("username", "username");
+ _options.Value.Messaging.PublisherSettings.Add("password", "password");
+ _options.Value.Messaging.PublisherSettings.Add("exchange", "exchange");
+ _options.Value.Messaging.PublisherSettings.Add("virtualHost", "vhost");
+ _options.Value.Messaging.Topics.TaskCallbackRequest = "md.tasks.callback";
+ _dockerClientFactory = new Mock();
+ _dockerClient = new Mock();
+ _storageService = new Mock();
+ _contentTypeProvider = new Mock();
+ _messageBrokerPublisherService = new Mock();
+ _containerStatusMonitor = new Mock();
+ _fileSystem = new MockFileSystem();
+
+ _serviceScopeFactory.Setup(p => p.CreateScope()).Returns(_serviceScope.Object);
+
+ var serviceProvider = new Mock();
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IDockerClientFactory)))
+ .Returns(_dockerClientFactory.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IStorageService)))
+ .Returns(_storageService.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IContentTypeProvider)))
+ .Returns(_contentTypeProvider.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IMessageBrokerPublisherService)))
+ .Returns(_messageBrokerPublisherService.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IContainerStatusMonitor)))
+ .Returns(_containerStatusMonitor.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IFileSystem)))
+ .Returns(_fileSystem);
+
+ _serviceScope.Setup(x => x.ServiceProvider).Returns(serviceProvider.Object);
+ _dockerClientFactory.Setup(p => p.CreateClient(It.IsAny())).Returns(_dockerClient.Object);
+
+ _logger.Setup(p => p.IsEnabled(It.IsAny())).Returns(true);
+ }
+
+ [Fact(DisplayName = "Start - when called without any artifacts expect to send callback event")]
+ public async Task Start_WhenCalledWithoutAnyArtifacts_ExpectToSendCallbackEvent()
+ {
+ _fileSystem.Directory.CreateDirectory("/taskmanagerpath/working");
+ _fileSystem.Directory.CreateDirectory("/taskmanagerpath/output");
+ var intermediateVolumeMount = new ContainerVolumeMount(new Storage { Bucket = "bucket", RelativeRootPath = "/svc" }, "/containerpath", "/hostpath", "/taskmanagerpath/working");
+ var outputVolumeMounts = new List() { new ContainerVolumeMount(new Storage { Bucket = "bucket", RelativeRootPath = "/svc" }, "/containerpath", "/hostpath", "/taskmanagerpath/output") };
+ var monitor = new ContainerStatusMonitor(_serviceScopeFactory.Object, _logger.Object, _fileSystem, _options);
+ var taskDispatchEvent = GenerateTaskDispatchEventWithValidArguments();
+
+ _storageService.Setup(p => p.PutObjectAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny()));
+ _dockerClient.Setup(p => p.Containers.InspectContainerAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new ContainerInspectResponse
+ {
+ State = new ContainerState
+ {
+ Status = Strings.DockerStatusExited,
+ FinishedAt = DateTime.MinValue.ToString("s")
+ }
+ });
+
+ await monitor.Start(taskDispatchEvent, TimeSpan.FromSeconds(3), "container", intermediateVolumeMount, outputVolumeMounts, CancellationToken.None);
+
+ _storageService.Verify(p => p.PutObjectAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())
+ , Times.Never());
+ _messageBrokerPublisherService.Verify(p => p.Publish(It.IsAny(), It.IsAny()), Times.Once());
+ }
+
+ [Fact(DisplayName = "Start - when called expect to upload artifacts and send callback event")]
+ public async Task Start_WhenCalled_ExpectToUploadArtifactsAndSendCallbackEvent()
+ {
+ var files = new List() { "/taskmanagerpath/working/a.json", "/taskmanagerpath/output/b.dcm" };
+ CreateFiles(files);
+ var intermediateVolumeMount = new ContainerVolumeMount(new Storage { Bucket = "bucket", RelativeRootPath = "/svc" }, "/containerpath", "/hostpath", "/taskmanagerpath/working");
+ var outputVolumeMounts = new List() { new ContainerVolumeMount(new Storage { Bucket = "bucket", RelativeRootPath = "/svc" }, "/containerpath", "/hostpath", "/taskmanagerpath/output") };
+ var monitor = new ContainerStatusMonitor(_serviceScopeFactory.Object, _logger.Object, _fileSystem, _options);
+ var taskDispatchEvent = GenerateTaskDispatchEventWithValidArguments();
+
+ _storageService.Setup(p => p.PutObjectAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny()));
+ _dockerClient.Setup(p => p.Containers.InspectContainerAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new ContainerInspectResponse
+ {
+ State = new ContainerState
+ {
+ Status = Strings.DockerStatusExited,
+ FinishedAt = DateTime.MinValue.ToString("s")
+ }
+ });
+
+ await monitor.Start(taskDispatchEvent, TimeSpan.FromSeconds(3), "container", intermediateVolumeMount, outputVolumeMounts, CancellationToken.None);
+
+ _storageService.Verify(p => p.PutObjectAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())
+ , Times.Exactly(2));
+ _messageBrokerPublisherService.Verify(p => p.Publish(It.IsAny(), It.IsAny()), Times.Once());
+ }
+
+ private void CreateFiles(List files)
+ {
+ foreach (var file in files)
+ {
+ var dir = _fileSystem.Path.GetDirectoryName(file);
+ _fileSystem.Directory.CreateDirectory(dir);
+ using var stream = _fileSystem.File.CreateText(file);
+ stream.WriteLine(file);
+ }
+ }
+
+ private static TaskDispatchEvent GenerateTaskDispatchEventWithValidArguments()
+ {
+ Environment.SetEnvironmentVariable(Strings.HostTemporaryStorageEnvironmentVariableName, "storage");
+ var message = GenerateTaskDispatchEvent();
+ message.TaskPluginArguments[Keys.BaseUrl] = "http://api-endpoint/";
+ message.TaskPluginArguments[Keys.Command] = "command";
+ message.TaskPluginArguments[Keys.ContainerImage] = "image";
+ message.TaskPluginArguments[Keys.EntryPoint] = "entrypoint";
+ message.TaskPluginArguments[Keys.TemporaryStorageContainerPath] = "path";
+ message.TaskPluginArguments[Keys.TaskTimeoutMinutes] = "100";
+ message.TaskPluginArguments[Keys.WorkingDirectory] = "/working-dir";
+ message.TaskPluginArguments[$"{Keys.EnvironmentVariableKeyPrefix}MyVariable"] = "MyVariable";
+ message.TaskPluginArguments["input-dicom"] = "some-path";
+ message.TaskPluginArguments["output"] = "some-path";
+ return message;
+ }
+
+ private static TaskDispatchEvent GenerateTaskDispatchEvent()
+ {
+ var message = new TaskDispatchEvent
+ {
+ CorrelationId = Guid.NewGuid().ToString(),
+ ExecutionId = Guid.NewGuid().ToString(),
+ TaskPluginType = Guid.NewGuid().ToString(),
+ WorkflowInstanceId = Guid.NewGuid().ToString(),
+ TaskId = Guid.NewGuid().ToString(),
+ IntermediateStorage = new Storage
+ {
+ Name = Guid.NewGuid().ToString(),
+ Endpoint = Guid.NewGuid().ToString(),
+ Credentials = new Credentials
+ {
+ AccessKey = Guid.NewGuid().ToString(),
+ AccessToken = Guid.NewGuid().ToString()
+ },
+ Bucket = Guid.NewGuid().ToString(),
+ RelativeRootPath = Guid.NewGuid().ToString(),
+ }
+ };
+ message.Inputs.Add(new Storage
+ {
+ Name = "input-dicom",
+ Endpoint = Guid.NewGuid().ToString(),
+ Credentials = new Credentials
+ {
+ AccessKey = Guid.NewGuid().ToString(),
+ AccessToken = Guid.NewGuid().ToString()
+ },
+ Bucket = Guid.NewGuid().ToString(),
+ RelativeRootPath = Guid.NewGuid().ToString(),
+ });
+ message.Outputs.Add(new Storage
+ {
+ Name = "output",
+ Endpoint = Guid.NewGuid().ToString(),
+ Credentials = new Credentials
+ {
+ AccessKey = Guid.NewGuid().ToString(),
+ AccessToken = Guid.NewGuid().ToString()
+ },
+ Bucket = Guid.NewGuid().ToString(),
+ RelativeRootPath = Guid.NewGuid().ToString(),
+ });
+ return message;
+ }
+ }
+}
diff --git a/tests/UnitTests/TaskManager.Docker.Tests/DockerPluginTest.cs b/tests/UnitTests/TaskManager.Docker.Tests/DockerPluginTest.cs
new file mode 100644
index 000000000..a9aa2ab55
--- /dev/null
+++ b/tests/UnitTests/TaskManager.Docker.Tests/DockerPluginTest.cs
@@ -0,0 +1,474 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Text;
+using Docker.DotNet;
+using Docker.DotNet.Models;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Monai.Deploy.Messaging.Common;
+using Monai.Deploy.Messaging.Events;
+using Monai.Deploy.Storage.API;
+using Monai.Deploy.WorkflowManager.SharedTest;
+using Monai.Deploy.WorkflowManager.TaskManager.API;
+using Monai.Deploy.WorkflowManager.TaskManager.Docker;
+using Moq;
+using Credentials = Monai.Deploy.Messaging.Common.Credentials;
+
+namespace TaskManager.Docker.Tests
+{
+ public class DockerPluginTest
+ {
+ private readonly Mock> _logger;
+ private readonly Mock _serviceScopeFactory;
+ private readonly Mock _serviceScope;
+
+ private readonly Mock _dockerClientFactory;
+ private readonly Mock _dockerClient;
+ private readonly Mock _storageService;
+ private readonly Mock _containerStatusMonitor;
+
+ public DockerPluginTest()
+ {
+ _logger = new Mock>();
+ _serviceScopeFactory = new Mock();
+ _serviceScope = new Mock();
+ _dockerClientFactory = new Mock();
+ _dockerClient = new Mock();
+ _storageService = new Mock();
+ _containerStatusMonitor = new Mock();
+
+ _serviceScopeFactory.Setup(p => p.CreateScope()).Returns(_serviceScope.Object);
+
+ var serviceProvider = new Mock();
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IDockerClientFactory)))
+ .Returns(_dockerClientFactory.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IStorageService)))
+ .Returns(_storageService.Object);
+ serviceProvider
+ .Setup(x => x.GetService(typeof(IContainerStatusMonitor)))
+ .Returns(_containerStatusMonitor.Object);
+
+ _serviceScope.Setup(x => x.ServiceProvider).Returns(serviceProvider.Object);
+ _dockerClientFactory.Setup(p => p.CreateClient(It.IsAny())).Returns(_dockerClient.Object);
+
+ _logger.Setup(p => p.IsEnabled(It.IsAny())).Returns(true);
+ }
+
+ [Fact(DisplayName = "Throws when missing required plug-in arguments")]
+ public void GivenDockerPlugIn_WhenInitializedWIthMissingPlugInArguments_ExpectToThrow()
+ {
+ var message = GenerateTaskDispatchEvent();
+ Assert.Throws(() => new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message));
+
+ foreach (var key in Keys.RequiredParameters.Take(Keys.RequiredParameters.Count - 1))
+ {
+ message.TaskPluginArguments.Add(key, Guid.NewGuid().ToString());
+ Assert.Throws(() => new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message));
+ }
+ message.TaskPluginArguments[Keys.RequiredParameters[Keys.RequiredParameters.Count - 1]] = Guid.NewGuid().ToString();
+ Assert.Throws(() => new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message));
+
+ message.TaskPluginArguments[Keys.BaseUrl] = "/api";
+ Assert.Throws(() => new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message));
+ }
+
+ [Fact(DisplayName = "Initializes values")]
+ public void GivenDockerPlugIn_WhenInitialized_ExpectValuesToBeInitialized()
+ {
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ _ = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ _logger.VerifyLogging($"Docker plugin initialized: base URL=http://api-endpoint/, timeout=100 minutes.", LogLevel.Information, Times.Once());
+ }
+
+ [Fact(DisplayName = "ExecuteTask - when docker service is unavilable returns failure status")]
+ public async Task ExecuteTask_WhenDockerServiceIsUnavailable_ExpectFailureStatus()
+ {
+ var payloadFiles = new List()
+ {
+ new VirtualFileInfo( "file.dcm", "path/to/file.dcm", "etag", 1000)
+ };
+ _dockerClient.Setup(p => p.Images.CreateImageAsync(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny>(),
+ It.IsAny()))
+ .ThrowsAsync(new Exception("error"));
+ _storageService.Setup(p => p.ListObjectsAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(payloadFiles);
+ _storageService.Setup(p => p.GetObjectAsync(It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes("hello")));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Failed, result.Status);
+ Assert.Equal(FailureReason.PluginError, result.FailureReason);
+ Assert.Equal("error", result.Errors);
+
+ runner.Dispose();
+ }
+
+ [Fact(DisplayName = "ExecuteTask - when storage service is unavailable returns failure status")]
+ public async Task ExecuteTask_WhenStorageServiceIsUnavailable_ExpectFailureStatus()
+ {
+ _dockerClient.Setup(p => p.Images.CreateImageAsync(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny>(),
+ It.IsAny()))
+ .ThrowsAsync(new Exception("error"));
+ _storageService.Setup(p => p.ListObjectsAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .ThrowsAsync(new Exception("error"));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Failed, result.Status);
+ Assert.Equal(FailureReason.PluginError, result.FailureReason);
+ Assert.Equal("error", result.Errors);
+
+ runner.Dispose();
+ }
+
+ [Fact(DisplayName = "ExecuteTask - when unable to create container return failure status")]
+ public async Task ExecuteTask_WhenFailedToCreateContainer_ExpectFailureStatus()
+ {
+ var payloadFiles = new List()
+ {
+ new VirtualFileInfo( "file.dcm", "path/to/file.dcm", "etag", 1000)
+ };
+ var contianerId = Guid.NewGuid().ToString();
+
+ _dockerClient.Setup(p => p.Images.CreateImageAsync(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny>(),
+ It.IsAny()));
+ _dockerClient.Setup(p => p.Containers.CreateContainerAsync(
+ It.IsAny(),
+ It.IsAny()))
+ .ThrowsAsync(new Exception("error"));
+
+ _storageService.Setup(p => p.ListObjectsAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(payloadFiles);
+ _storageService.Setup(p => p.GetObjectAsync(It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes("hello")));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Failed, result.Status);
+ Assert.Equal(FailureReason.PluginError, result.FailureReason);
+ Assert.Equal("error", result.Errors);
+ runner.Dispose();
+ }
+
+ [Fact(DisplayName = "ExecuteTask - when unable to monitor container expect task to be accepted")]
+ public async Task ExecuteTask_WhenFailedToMonitorContainer_ExpectTaskToBeAccepted()
+ {
+ var payloadFiles = new List()
+ {
+ new VirtualFileInfo( "file.dcm", "path/to/file.dcm", "etag", 1000)
+ };
+ var contianerId = Guid.NewGuid().ToString();
+
+ _dockerClient.Setup(p => p.Images.CreateImageAsync(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny>(),
+ It.IsAny()));
+ _dockerClient.Setup(p => p.Containers.CreateContainerAsync(
+ It.IsAny(),
+ It.IsAny()))
+ .ReturnsAsync(new CreateContainerResponse { ID = contianerId, Warnings = new List() { "warning" } });
+ _containerStatusMonitor.Setup(p => p.Start(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny>(),
+ It.IsAny()))
+ .ThrowsAsync(new Exception("error"));
+ _storageService.Setup(p => p.ListObjectsAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(payloadFiles);
+ _storageService.Setup(p => p.GetObjectAsync(It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes("hello")));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Accepted, result.Status);
+ Assert.Equal(FailureReason.None, result.FailureReason);
+ Assert.Empty(result.Errors);
+ runner.Dispose();
+ }
+
+ [Fact(DisplayName = "ExecuteTask - when called with a valid event expect task to be accepted and monitored in the background")]
+ public async Task ExecuteTask_WhenCalledWithValidEvent_ExpectTaskToBeAcceptedAndMonitored()
+ {
+ var payloadFiles = new List()
+ {
+ new VirtualFileInfo( "file.dcm", "path/to/file.dcm", "etag", 1000)
+ };
+ var contianerId = Guid.NewGuid().ToString();
+
+ _dockerClient.Setup(p => p.Images.CreateImageAsync(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny>(),
+ It.IsAny()));
+ _dockerClient.Setup(p => p.Containers.CreateContainerAsync(
+ It.IsAny(),
+ It.IsAny()))
+ .ReturnsAsync(new CreateContainerResponse { ID = contianerId, Warnings = new List() { "warning" } });
+
+ _storageService.Setup(p => p.ListObjectsAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(payloadFiles);
+ _storageService.Setup(p => p.GetObjectAsync(It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes("hello")));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Accepted, result.Status);
+ Assert.Equal(FailureReason.None, result.FailureReason);
+ Assert.Equal(String.Empty, result.Errors);
+
+ runner.Dispose();
+ }
+
+ [Fact(DisplayName = "GetStatus - when contianer status is unknown expect failure status")]
+ public async Task GetStatus_WhenContainerStatusIsUnknown_ExpectFalureStatus()
+ {
+ var tryCount = 0;
+ _dockerClient.Setup(p => p.Containers.InspectContainerAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(
+ new ContainerInspectResponse
+ {
+ State = new ContainerState
+ {
+ Status = Strings.DockerStatusPaused,
+ FinishedAt = DateTime.MinValue.ToString("s"),
+ ExitCode = 100
+ }
+ });
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.GetStatus("identity", CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Failed, result.Status);
+ Assert.Equal(FailureReason.Unknown, result.FailureReason);
+ Assert.Equal($"Exit code=100. Status=paused.", result.Errors);
+
+ _dockerClient.Verify(p => p.Containers.InspectContainerAsync(
+ It.Is(p => p.Equals("identity", StringComparison.OrdinalIgnoreCase)),
+ It.IsAny()), Times.AtLeastOnce());
+ }
+
+ [Fact(DisplayName = "GetStatus - when contianer is killed or dead expect failure status")]
+ public async Task GetStatus_WhenContainerIsKilledOrDead_ExpectFalureStatus()
+ {
+ var tryCount = 0;
+ _dockerClient.Setup(p => p.Containers.InspectContainerAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(
+ new ContainerInspectResponse
+ {
+ State = new ContainerState
+ {
+ OOMKilled = true,
+ FinishedAt = DateTime.MinValue.ToString("s"),
+ ExitCode = 100
+ }
+ });
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.GetStatus("identity", CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Failed, result.Status);
+ Assert.Equal(FailureReason.ExternalServiceError, result.FailureReason);
+ Assert.Equal($"Exit code=100", result.Errors);
+
+ _dockerClient.Verify(p => p.Containers.InspectContainerAsync(
+ It.Is(p => p.Equals("identity", StringComparison.OrdinalIgnoreCase)),
+ It.IsAny()), Times.AtLeastOnce());
+ }
+
+ [Fact(DisplayName = "GetStatus - when Docker is unavailable expect failure status")]
+ public async Task GetStatus_WhenDockerIsDown_ExpectFalureStatus()
+ {
+ var tryCount = 0;
+ _dockerClient.Setup(p => p.Containers.InspectContainerAsync(It.IsAny(), It.IsAny()))
+ .ThrowsAsync(new Exception("error"));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.GetStatus("identity", CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Failed, result.Status);
+ Assert.Equal(FailureReason.ExternalServiceError, result.FailureReason);
+ Assert.Equal($"error", result.Errors);
+
+ _dockerClient.Verify(p => p.Containers.InspectContainerAsync(
+ It.Is(p => p.Equals("identity", StringComparison.OrdinalIgnoreCase)),
+ It.IsAny()), Times.AtLeastOnce());
+ }
+
+ [Fact(DisplayName = "GetStatus - Waits until Succeeded Phase")]
+ public async Task GetStatus_WhenCalled_ExpectToWaitUntilFinalStatuses()
+ {
+ var tryCount = 0;
+ _dockerClient.Setup(p => p.Containers.InspectContainerAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync((string containerId, CancellationToken cancellationToken) =>
+ {
+ if (tryCount++ < 2)
+ {
+ return new ContainerInspectResponse
+ {
+ State = new ContainerState
+ {
+ Status = Strings.DockerStatusRunning,
+ FinishedAt = DateTime.MinValue.ToString("s")
+ }
+ };
+ }
+
+ return new ContainerInspectResponse
+ {
+ State = new ContainerState
+ {
+ Status = Strings.DockerStatusExited,
+ FinishedAt = DateTime.MinValue.ToString("s")
+ }
+ };
+ });
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+ var result = await runner.GetStatus("identity", CancellationToken.None).ConfigureAwait(false);
+
+ Assert.Equal(TaskExecutionStatus.Succeeded, result.Status);
+ Assert.Equal(FailureReason.None, result.FailureReason);
+ Assert.Empty(result.Errors);
+
+ _dockerClient.Verify(p => p.Containers.InspectContainerAsync(
+ It.Is(p => p.Equals("identity", StringComparison.OrdinalIgnoreCase)),
+ It.IsAny()), Times.Exactly(3));
+ }
+
+ [Fact(DisplayName = "HandleTimeout - when called expecte to terminate container")]
+ public async Task HandleTimeout_WhenCalled_ExpectToTerminateContainer()
+ {
+ _dockerClient.Setup(p => p.Containers.KillContainerAsync(It.IsAny(), It.IsAny(), It.IsAny()));
+
+ var message = GenerateTaskDispatchEventWithValidArguments();
+
+ var runner = new DockerPlugin(_serviceScopeFactory.Object, _logger.Object, message);
+
+ var exception = await Record.ExceptionAsync(async () =>
+ {
+ await runner.HandleTimeout("identity").ConfigureAwait(false);
+ });
+
+ Assert.Null(exception);
+ }
+
+ private static TaskDispatchEvent GenerateTaskDispatchEventWithValidArguments()
+ {
+ Environment.SetEnvironmentVariable(Strings.HostTemporaryStorageEnvironmentVariableName, "storage");
+ var message = GenerateTaskDispatchEvent();
+ message.TaskPluginArguments[Keys.BaseUrl] = "http://api-endpoint/";
+ message.TaskPluginArguments[Keys.Command] = "command";
+ message.TaskPluginArguments[Keys.ContainerImage] = "image";
+ message.TaskPluginArguments[Keys.EntryPoint] = "entrypoint";
+ message.TaskPluginArguments[Keys.TemporaryStorageContainerPath] = "path";
+ message.TaskPluginArguments[Keys.TaskTimeoutMinutes] = "100";
+ message.TaskPluginArguments[Keys.WorkingDirectory] = "/working-dir";
+ message.TaskPluginArguments[$"{Keys.EnvironmentVariableKeyPrefix}MyVariable"] = "MyVariable";
+ message.TaskPluginArguments["input-dicom"] = "some-path";
+ message.TaskPluginArguments["output"] = "some-path";
+ return message;
+ }
+
+ private static TaskDispatchEvent GenerateTaskDispatchEvent()
+ {
+ var message = new TaskDispatchEvent
+ {
+ CorrelationId = Guid.NewGuid().ToString(),
+ ExecutionId = Guid.NewGuid().ToString(),
+ TaskPluginType = Guid.NewGuid().ToString(),
+ WorkflowInstanceId = Guid.NewGuid().ToString(),
+ TaskId = Guid.NewGuid().ToString(),
+ IntermediateStorage = new Storage
+ {
+ Name = Guid.NewGuid().ToString(),
+ Endpoint = Guid.NewGuid().ToString(),
+ Credentials = new Credentials
+ {
+ AccessKey = Guid.NewGuid().ToString(),
+ AccessToken = Guid.NewGuid().ToString()
+ },
+ Bucket = Guid.NewGuid().ToString(),
+ RelativeRootPath = Guid.NewGuid().ToString(),
+ }
+ };
+ message.Inputs.Add(new Storage
+ {
+ Name = "input-dicom",
+ Endpoint = Guid.NewGuid().ToString(),
+ Credentials = new Credentials
+ {
+ AccessKey = Guid.NewGuid().ToString(),
+ AccessToken = Guid.NewGuid().ToString()
+ },
+ Bucket = Guid.NewGuid().ToString(),
+ RelativeRootPath = Guid.NewGuid().ToString(),
+ });
+ message.Outputs.Add(new Storage
+ {
+ Name = "output",
+ Endpoint = Guid.NewGuid().ToString(),
+ Credentials = new Credentials
+ {
+ AccessKey = Guid.NewGuid().ToString(),
+ AccessToken = Guid.NewGuid().ToString()
+ },
+ Bucket = Guid.NewGuid().ToString(),
+ RelativeRootPath = Guid.NewGuid().ToString(),
+ });
+ return message;
+ }
+ }
+}
diff --git a/tests/UnitTests/TaskManager.Docker.Tests/Monai.Deploy.WorkflowManager.TaskManager.Docker.Tests.csproj b/tests/UnitTests/TaskManager.Docker.Tests/Monai.Deploy.WorkflowManager.TaskManager.Docker.Tests.csproj
new file mode 100644
index 000000000..7b4e6c612
--- /dev/null
+++ b/tests/UnitTests/TaskManager.Docker.Tests/Monai.Deploy.WorkflowManager.TaskManager.Docker.Tests.csproj
@@ -0,0 +1,50 @@
+
+
+
+
+
+ net6.0
+ enable
+ enable
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
diff --git a/tests/UnitTests/TaskManager.Docker.Tests/Usings.cs b/tests/UnitTests/TaskManager.Docker.Tests/Usings.cs
new file mode 100644
index 000000000..ffb0fd08f
--- /dev/null
+++ b/tests/UnitTests/TaskManager.Docker.Tests/Usings.cs
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2022 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+global using Xunit;
\ No newline at end of file
diff --git a/tests/UnitTests/TaskManager.Tests/Monai.Deploy.WorkflowManager.TaskManager.Tests.csproj b/tests/UnitTests/TaskManager.Tests/Monai.Deploy.WorkflowManager.TaskManager.Tests.csproj
index 2fe7e5a5c..253b3a331 100644
--- a/tests/UnitTests/TaskManager.Tests/Monai.Deploy.WorkflowManager.TaskManager.Tests.csproj
+++ b/tests/UnitTests/TaskManager.Tests/Monai.Deploy.WorkflowManager.TaskManager.Tests.csproj
@@ -27,7 +27,7 @@
-
+
diff --git a/tests/UnitTests/WorkflowExecuter.Tests/Common/ArtifactMapperTests.cs b/tests/UnitTests/WorkflowExecuter.Tests/Common/ArtifactMapperTests.cs
index 15ade425e..7363fef79 100644
--- a/tests/UnitTests/WorkflowExecuter.Tests/Common/ArtifactMapperTests.cs
+++ b/tests/UnitTests/WorkflowExecuter.Tests/Common/ArtifactMapperTests.cs
@@ -19,6 +19,7 @@
using System.IO;
using System.Threading.Tasks;
using FluentAssertions;
+using Microsoft.Extensions.Logging;
using Monai.Deploy.Messaging.Events;
using Monai.Deploy.Storage.API;
using Monai.Deploy.WorkflowManager.Contracts.Models;
@@ -35,13 +36,15 @@ public class ArtifactMapperTests
private readonly Mock _workflowInstanceRepository;
private readonly Mock _storageService;
+ private readonly Mock> _logger;
public ArtifactMapperTests()
{
_workflowInstanceRepository = new Mock();
_storageService = new Mock();
+ _logger = new Mock>();
- ArtifactMapper = new ArtifactMapper(_workflowInstanceRepository.Object, _storageService.Object);
+ ArtifactMapper = new ArtifactMapper(_workflowInstanceRepository.Object, _storageService.Object, _logger.Object);
}
[Fact]
diff --git a/tests/UnitTests/WorkflowManager.Tests/DummyMessagingService.cs b/tests/UnitTests/WorkflowManager.Tests/DummyMessagingService.cs
index aa2342cb9..398101e2a 100644
--- a/tests/UnitTests/WorkflowManager.Tests/DummyMessagingService.cs
+++ b/tests/UnitTests/WorkflowManager.Tests/DummyMessagingService.cs
@@ -14,8 +14,10 @@
* limitations under the License.
*/
using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.HealthChecks;
using Monai.Deploy.Messaging;
using Monai.Deploy.Messaging.API;
using Monai.Deploy.Messaging.Common;
@@ -23,20 +25,22 @@
namespace Monai.Deploy.WorkflowManager.Tests
{
- internal class DummyMessagePublisherRegistrar : PublisherServiceRegistrationBase
+ internal class DummyMessageSubscriberHealtCheck : SubscriberServiceHealthCheckRegistrationBase
+ {
+ public override IHealthChecksBuilder Configure(IHealthChecksBuilder builder, HealthStatus? failureStatus = null, IEnumerable tags = null, TimeSpan? timeout = null) => builder;
+ }
+
+ internal class DummyMessagePublisherHealtCheck : PublisherServiceHealthCheckRegistrationBase
{
- public DummyMessagePublisherRegistrar(string fullyQualifiedAssemblyName) : base(fullyQualifiedAssemblyName)
- {
- }
+ public override IHealthChecksBuilder Configure(IHealthChecksBuilder builder, HealthStatus? failureStatus = null, IEnumerable tags = null, TimeSpan? timeout = null) => builder;
+ }
+ internal class DummyMessagePublisherRegistrar : PublisherServiceRegistrationBase
+ {
public override IServiceCollection Configure(IServiceCollection services) => services;
}
internal class DummyMessageSubscriberRegistrar : SubscriberServiceRegistrationBase
{
- public DummyMessageSubscriberRegistrar(string fullyQualifiedAssemblyName) : base(fullyQualifiedAssemblyName)
- {
- }
-
public override IServiceCollection Configure(IServiceCollection services) => services;
}
diff --git a/tests/UnitTests/WorkflowManager.Tests/packages.lock.json b/tests/UnitTests/WorkflowManager.Tests/packages.lock.json
index 1a77409c9..881b9a627 100644
--- a/tests/UnitTests/WorkflowManager.Tests/packages.lock.json
+++ b/tests/UnitTests/WorkflowManager.Tests/packages.lock.json
@@ -46,12 +46,12 @@
},
"Microsoft.NET.Test.Sdk": {
"type": "Direct",
- "requested": "[17.3.0, )",
- "resolved": "17.3.0",
- "contentHash": "ch4JCT7AZdBzvCAKD36t6fDsl7NEzzunwW7MwXUG2uFPoWcMd8B8KYg5fiwxnpdXJHodJk6yIBdSwMpN3Ikt9w==",
+ "requested": "[17.3.1, )",
+ "resolved": "17.3.1",
+ "contentHash": "jH9W5uYannaJ3HhrPBkzSidf3WkqP6XI+Yke0ODYVuFWM6GLVtBAyNgXvU/uQXPBsHq4aysLTsrN1FvG2hlKoQ==",
"dependencies": {
- "Microsoft.CodeCoverage": "17.3.0",
- "Microsoft.TestPlatform.TestHost": "17.3.0"
+ "Microsoft.CodeCoverage": "17.3.1",
+ "Microsoft.TestPlatform.TestHost": "17.3.1"
}
},
"Moq": {
@@ -99,15 +99,15 @@
},
"AWSSDK.Core": {
"type": "Transitive",
- "resolved": "3.7.12.27",
- "contentHash": "pCX0yHPFuREXOqGaEQoCSlPZwsiijT1rBBiyk1pdD19Db8gVFglO7wMbxl37OhRNcLZprmtWJFvaDfuzeV10Wg=="
+ "resolved": "3.7.12.29",
+ "contentHash": "bxSbEjbCyAzjmUpxVKXiQhkXEvb3w9OHL7AOL9LItY1f5xLB9/qbtHoi5FvmZXTPPi2RahPJr9fDyHMLwQnxiA=="
},
"AWSSDK.SecurityToken": {
"type": "Transitive",
- "resolved": "3.7.1.191",
- "contentHash": "tTIqJ/QKaPzTu5ZPdRFa2sW9p5F441RLV7nDdTAVVuu6oLyemna0bTtE+luGLaw17oE4GZHpa5n5p0oJmpzcxA==",
+ "resolved": "3.7.1.193",
+ "contentHash": "xDZAerod8OUtyIgIYPiGRO+PRdGDjepGGgH2/DuAK/aoARU/FinaFr+yuUjJItrP53dCezbpdFVSRa1BFpIGfA==",
"dependencies": {
- "AWSSDK.Core": "[3.7.12.27, 4.0.0)"
+ "AWSSDK.Core": "[3.7.12.29, 4.0.0)"
}
},
"Castle.Core": {
@@ -373,8 +373,8 @@
},
"Microsoft.CodeCoverage": {
"type": "Transitive",
- "resolved": "17.3.0",
- "contentHash": "/xxz+e29F2V5pePtInjbLffoqWVTm60KCX87vSj2laNboeWq65WFJ634fGtBcMZO3VEfOmh9/XcoWEfLlWWG+g=="
+ "resolved": "17.3.1",
+ "contentHash": "WqB7Ik4v8ku0Y9HZShqTStZdq8R1lyhsZr7IMp8zV/OcL5sHVYvlMnardQR+SDQc3dmbniCIl9mYxYM+V7x8MA=="
},
"Microsoft.CSharp": {
"type": "Transitive",
@@ -788,8 +788,8 @@
},
"Microsoft.TestPlatform.ObjectModel": {
"type": "Transitive",
- "resolved": "17.3.0",
- "contentHash": "6NRzi6QbmWV49Psf8A9z1LTJU4nBrlJdCcDOUyD4Ttm1J2wvksu98GlV+52CkxtpgNsUjGr9Mv1Rbb1/dB06yQ==",
+ "resolved": "17.3.1",
+ "contentHash": "n1WSFCMiFt6KmD5JzV+Wye5Ntomez3YP2+d15bu5PS5Z1U0g+V7VBLdJIaJRnahz5BsXJDTnLYNVOUdntwjx6Q==",
"dependencies": {
"NuGet.Frameworks": "5.11.0",
"System.Reflection.Metadata": "1.6.0"
@@ -797,10 +797,10 @@
},
"Microsoft.TestPlatform.TestHost": {
"type": "Transitive",
- "resolved": "17.3.0",
- "contentHash": "uOJALDWtKXZkISKuNI7kOlRi/lk2CqXZtLkNS0Ei+RXqRUjUpCsjAPYSP+DJ/a4QwJ5cI9CVF52vtajnGOaEpw==",
+ "resolved": "17.3.1",
+ "contentHash": "co/GMz6rGxpzn2aJYTDDim61HvEk+SHBVtbXnu2RSrz20HxkaraEh0kltCsMkmLAX/6Hz5sa6NquLngBlURTow==",
"dependencies": {
- "Microsoft.TestPlatform.ObjectModel": "17.3.0",
+ "Microsoft.TestPlatform.ObjectModel": "17.3.1",
"Newtonsoft.Json": "9.0.1"
}
},
@@ -829,24 +829,25 @@
},
"Monai.Deploy.Messaging": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "cTVT2sId7/mGKTwuUvBqnoOAN7CBZmSlZK3WMXdBlmsHs3vHi5wvjho0sUP7psl7hhivd/cSP5cfZ8x2Sry3Xg==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "hQMo8/7sWrn14KnTodUN8UkuPVnCDOScgMvfG3jErx6Tm6Bpyp6h4PXwL56Q2U0Og2pVG7X7aX2N0XpY+HWQMA==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.8",
"Microsoft.Extensions.Logging": "6.0.0",
"Newtonsoft.Json": "13.0.1",
"RabbitMQ.Client": "6.4.0",
"System.ComponentModel.Annotations": "5.0.0",
- "System.IO.Abstractions": "17.0.18"
+ "System.IO.Abstractions": "17.1.1"
}
},
"Monai.Deploy.Messaging.RabbitMQ": {
"type": "Transitive",
- "resolved": "0.1.3-rc0012",
- "contentHash": "IIzty1xAAn3pTSK9VPI5o22nZDGyPyKWNiGstC4bkzIHdxghPEX/ErR7IVkClxCc9kK8X+4sReGFksdGKShQnw==",
+ "resolved": "0.1.6-rc0001",
+ "contentHash": "sbHA1Rt+O2SuucQOULq/SCUEFq46fUIDFtllxBL94wZSNMf7nioPRVi+kU6j6JrUBqWT+F1A/qUxwvANbrkHNQ==",
"dependencies": {
- "Monai.Deploy.Messaging": "0.1.3-rc0012"
+ "Monai.Deploy.Messaging": "0.1.6-rc0001"
}
},
"Monai.Deploy.Storage": {
@@ -1696,147 +1697,147 @@
"monai.deploy.workflowmanager": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Karambolo.Extensions.Logging.File": "3.3.1",
- "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "6.0.8",
- "Microsoft.AspNetCore.Mvc.Versioning": "5.0.0",
- "Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer": "5.0.0",
- "Microsoft.EntityFrameworkCore": "6.0.8",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Hosting": "6.0.1",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Console": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.Messaging.RabbitMQ": "0.1.3-rc0012",
- "Monai.Deploy.Storage.MinIO": "0.2.5",
- "Monai.Deploy.WorkflowManager.Authentication": "1.0.0",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.Configuration": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "Monai.Deploy.WorkflowManager.MonaiBackgroundService": "1.0.0",
- "Monai.Deploy.WorkflowManager.PayloadListener": "1.0.0",
- "Newtonsoft.Json": "13.0.1",
- "Swashbuckle.AspNetCore": "6.4.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Karambolo.Extensions.Logging.File": "[3.3.1, )",
+ "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "[6.0.8, )",
+ "Microsoft.AspNetCore.Mvc.Versioning": "[5.0.0, )",
+ "Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer": "[5.0.0, )",
+ "Microsoft.EntityFrameworkCore": "[6.0.8, )",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )",
+ "Microsoft.Extensions.Hosting": "[6.0.1, )",
+ "Microsoft.Extensions.Logging": "[6.0.0, )",
+ "Microsoft.Extensions.Logging.Console": "[6.0.0, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.Messaging.RabbitMQ": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage.MinIO": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Authentication": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.MonaiBackgroundService": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.PayloadListener": "[1.0.0, )",
+ "Newtonsoft.Json": "[13.0.1, )",
+ "Swashbuckle.AspNetCore": "[6.4.0, )"
}
},
"monai.deploy.workflowmanager.authentication": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.AspNetCore.Authentication.JwtBearer": "6.0.8",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.8, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.common": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Storage": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.conditionsresolver": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Storage": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.configuration": {
"type": "Project",
"dependencies": {
- "Karambolo.Extensions.Logging.File": "3.3.1",
- "Microsoft.Extensions.Configuration": "6.0.1",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Newtonsoft.Json": "13.0.1",
- "System.IO.Abstractions": "17.1.1"
+ "Karambolo.Extensions.Logging.File": "[3.3.1, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Microsoft.Extensions.Logging": "[6.0.0, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Newtonsoft.Json": "[13.0.1, )",
+ "System.IO.Abstractions": "[17.1.1, )"
}
},
"monai.deploy.workflowmanager.contracts": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "3.7.1.191",
- "Microsoft.Extensions.Configuration": "6.0.1",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "MongoDB.Bson": "2.17.1",
- "Newtonsoft.Json": "13.0.1"
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Microsoft.Extensions.Configuration": "[6.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "Newtonsoft.Json": "[13.0.1, )"
}
},
"monai.deploy.workflowmanager.database": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
- "Microsoft.Extensions.Options": "6.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "MongoDB.Bson": "2.17.1",
- "MongoDB.Driver": "2.17.1"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Microsoft.Extensions.Options": "[6.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "MongoDB.Bson": "[2.17.1, )",
+ "MongoDB.Driver": "[2.17.1, )"
}
},
"monai.deploy.workflowmanager.logging": {
"type": "Project",
"dependencies": {
- "Microsoft.AspNetCore.Mvc.Core": "2.2.5",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.1",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0"
+ "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.monaibackgroundservice": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.Hosting": "6.0.1",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkloadManager.WorkfowExecuter": "1.0.0"
+ "Microsoft.Extensions.Hosting": "[6.0.1, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkloadManager.WorkfowExecuter": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.payloadlistener": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.Configuration": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "Monai.Deploy.WorkloadManager.WorkfowExecuter": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Microsoft.Extensions.Hosting.Abstractions": "[6.0.0, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkloadManager.WorkfowExecuter": "[1.0.0, )"
}
},
"monai.deploy.workflowmanager.storage": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "4.0.1",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0"
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )"
}
},
"monai.deploy.workloadmanager.workfowexecuter": {
"type": "Project",
"dependencies": {
- "AWSSDK.SecurityToken": "3.7.1.191",
- "Ardalis.GuardClauses": "4.0.1",
- "Monai.Deploy.Messaging": "0.1.3-rc0012",
- "Monai.Deploy.Storage": "0.2.5",
- "Monai.Deploy.WorkflowManager.Common": "1.0.0",
- "Monai.Deploy.WorkflowManager.ConditionsResolver": "1.0.0",
- "Monai.Deploy.WorkflowManager.Configuration": "1.0.0",
- "Monai.Deploy.WorkflowManager.Contracts": "1.0.0",
- "Monai.Deploy.WorkflowManager.Database": "1.0.0",
- "Monai.Deploy.WorkflowManager.Logging": "1.0.0",
- "Monai.Deploy.WorkflowManager.Storage": "1.0.0",
- "Newtonsoft.Json": "13.0.1"
+ "AWSSDK.SecurityToken": "[3.7.1.193, )",
+ "Ardalis.GuardClauses": "[4.0.1, )",
+ "Monai.Deploy.Messaging": "[0.1.6-rc0001, )",
+ "Monai.Deploy.Storage": "[0.2.5, )",
+ "Monai.Deploy.WorkflowManager.Common": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.ConditionsResolver": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Configuration": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Contracts": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Database": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Logging": "[1.0.0, )",
+ "Monai.Deploy.WorkflowManager.Storage": "[1.0.0, )",
+ "Newtonsoft.Json": "[13.0.1, )"
}
}
}
diff --git a/tests/run-tests.sh b/tests/run-tests.sh
index c5caaf8ae..2198d3093 100644
--- a/tests/run-tests.sh
+++ b/tests/run-tests.sh
@@ -23,13 +23,13 @@ fi
if [ -f /.dockerenv ]; then
echo "##### Installing apt packages..."
apt-get update
- apt-get install -y dcmtk sudo sqlite3
+ apt-get install -y dcmtk sudo
fi
if [ ! -z ${CI} ]; then
echo "##### Installing apt packages..."
sudo apt-get update
- sudo apt-get install -y dcmtk sqlite3
+ sudo apt-get install -y dcmtk
fi
if [ -d "$RESULTS_DIR" ]; then