From 478ad4324e0a07aa51d51967f83561fa5da8ca12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Bj=C3=B8rn=20Hassing?= Date: Wed, 27 Oct 2021 10:21:53 +0200 Subject: [PATCH] Prune __dependentSystemMetadata from fetched Workload, fixes #111 --- .../FnOEnvironmentDeploymentMetadata.cs | 2 +- src/CloudAndEdgeLibs/FnOModelInfo.cs | 2 +- src/CloudAndEdgeLibs/Query.cs | 2 +- src/CloudAndEdgeLibs/SystemMetadata.cs | 2 +- .../Utilities/WorkloadExtensions.cs | 17 +++++++++++++++++ .../Utilities/WorkloadInstanceManager.cs | 2 ++ .../WorkloadDefinitionManager.cs | 16 ++++++++-------- 7 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 src/ScaleUnitManagement/Utilities/WorkloadExtensions.cs diff --git a/src/CloudAndEdgeLibs/FnOEnvironmentDeploymentMetadata.cs b/src/CloudAndEdgeLibs/FnOEnvironmentDeploymentMetadata.cs index 911e389..5b577da 100644 --- a/src/CloudAndEdgeLibs/FnOEnvironmentDeploymentMetadata.cs +++ b/src/CloudAndEdgeLibs/FnOEnvironmentDeploymentMetadata.cs @@ -1,4 +1,4 @@ -namespace CloudAndEdgeLibs +namespace CloudAndEdgeLibs.Contracts { using System.Collections.Generic; using Newtonsoft.Json; diff --git a/src/CloudAndEdgeLibs/FnOModelInfo.cs b/src/CloudAndEdgeLibs/FnOModelInfo.cs index f55836c..b05ea14 100644 --- a/src/CloudAndEdgeLibs/FnOModelInfo.cs +++ b/src/CloudAndEdgeLibs/FnOModelInfo.cs @@ -1,4 +1,4 @@ -namespace CloudAndEdgeLibs +namespace CloudAndEdgeLibs.Contracts { using System; using Newtonsoft.Json; diff --git a/src/CloudAndEdgeLibs/Query.cs b/src/CloudAndEdgeLibs/Query.cs index 4b22f65..da88934 100644 --- a/src/CloudAndEdgeLibs/Query.cs +++ b/src/CloudAndEdgeLibs/Query.cs @@ -1,4 +1,4 @@ -namespace CloudAndEdgeLibs +namespace CloudAndEdgeLibs.Contracts { using Newtonsoft.Json; diff --git a/src/CloudAndEdgeLibs/SystemMetadata.cs b/src/CloudAndEdgeLibs/SystemMetadata.cs index 3ec89a8..c8178a0 100644 --- a/src/CloudAndEdgeLibs/SystemMetadata.cs +++ b/src/CloudAndEdgeLibs/SystemMetadata.cs @@ -1,4 +1,4 @@ -namespace CloudAndEdgeLibs +namespace CloudAndEdgeLibs.Contracts { using System; using System.Collections.Generic; diff --git a/src/ScaleUnitManagement/Utilities/WorkloadExtensions.cs b/src/ScaleUnitManagement/Utilities/WorkloadExtensions.cs new file mode 100644 index 0000000..ba998d3 --- /dev/null +++ b/src/ScaleUnitManagement/Utilities/WorkloadExtensions.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using CloudAndEdgeLibs; +using CloudAndEdgeLibs.Contracts; + +namespace ScaleUnitManagement.WorkloadSetupOrchestrator.Utilities +{ + public static class WorkloadExtensions + { + public static void PruneRedundancies(this List workloads) + { + foreach (Workload workload in workloads) + { + workload.__DependentSystemMetadata = new SortedSet(); + } + } + } +} diff --git a/src/ScaleUnitManagement/WorkloadSetupOrchestrator/Utilities/WorkloadInstanceManager.cs b/src/ScaleUnitManagement/WorkloadSetupOrchestrator/Utilities/WorkloadInstanceManager.cs index 92f8c60..cadf797 100644 --- a/src/ScaleUnitManagement/WorkloadSetupOrchestrator/Utilities/WorkloadInstanceManager.cs +++ b/src/ScaleUnitManagement/WorkloadSetupOrchestrator/Utilities/WorkloadInstanceManager.cs @@ -28,6 +28,8 @@ public async Task> CreateWorkloadInstances() } List workloads = await client.GetWorkloads(); + workloads.PruneRedundancies(); + var workloadInstances = new List(); var sysWorkloadInstances = new List(); diff --git a/src/ScaleUnitManagement/WorkloadSetupOrchestrator/WorkloadDefinitionManager.cs b/src/ScaleUnitManagement/WorkloadSetupOrchestrator/WorkloadDefinitionManager.cs index f2b32db..7990bfb 100644 --- a/src/ScaleUnitManagement/WorkloadSetupOrchestrator/WorkloadDefinitionManager.cs +++ b/src/ScaleUnitManagement/WorkloadSetupOrchestrator/WorkloadDefinitionManager.cs @@ -14,15 +14,17 @@ public WorkloadDefinitionManager() : base() { } public async Task UpgradeWorkloadsDefinition() { IAOSClient scaleUnitAosClient = await GetScaleUnitAosClient(); - IAOSClient hubAosClient = await GetHubAosClient(); - - List workloads = null; - await ReliableRun.Execute(async () => workloads = await hubAosClient.GetWorkloads(), "Getting workloads"); List workloadInstances = null; await ReliableRun.Execute(async () => workloadInstances = await scaleUnitAosClient.GetWorkloadInstances(), "Getting workload instances"); - await EnsureWorkloadsAreDrained(workloadInstances); + await EnsureWorkloadsAreDrained(workloadInstances, scaleUnitAosClient); + + IAOSClient hubAosClient = await GetHubAosClient(); + + List workloads = null; + await ReliableRun.Execute(async () => workloads = await hubAosClient.GetWorkloads(), "Getting workloads"); + workloads.PruneRedundancies(); foreach (WorkloadInstance workloadInstance in workloadInstances) { @@ -36,10 +38,8 @@ public async Task UpgradeWorkloadsDefinition() } } - private async Task EnsureWorkloadsAreDrained(List workloadInstances) + private async Task EnsureWorkloadsAreDrained(List workloadInstances, IAOSClient aosClient) { - IAOSClient aosClient = await GetScaleUnitAosClient(); - foreach (WorkloadInstance workloadInstance in workloadInstances) { if (WorkloadInstanceManager.IsWorkloadSYSOnSpoke(workloadInstance))