Skip to content

Commit 4165c41

Browse files
committed
adding default podPriorityClassName
Signed-off-by: Neil South <neil.south@answerdigital.com>
1 parent c2d6ccb commit 4165c41

File tree

2 files changed

+65
-10
lines changed

2 files changed

+65
-10
lines changed

src/TaskManager/Plug-ins/Argo/ArgoPlugin.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ private void ProcessTaskPluginArguments(Workflow workflow)
434434
Guard.Against.Null(workflow);
435435

436436
var resources = Event.GetTaskPluginArgumentsParameter<Dictionary<string, string>>(Keys.ArgoResource);
437-
var priorityClassName = Event.GetTaskPluginArgumentsParameter(Keys.TaskPriorityClassName);
437+
var priorityClassName = Event.GetTaskPluginArgumentsParameter(Keys.TaskPriorityClassName) ?? "standard";
438438
var argoParameters = Event.GetTaskPluginArgumentsParameter<Dictionary<string, string>>(Keys.ArgoParameters);
439439

440440
if (argoParameters is not null)
@@ -462,16 +462,9 @@ private void ProcessTaskPluginArguments(Workflow workflow)
462462
AddRequest(resources, template, ResourcesKeys.CpuReservation);
463463
AddRequest(resources, template, ResourcesKeys.MemoryReservation);
464464
AddRequest(resources, template, ResourcesKeys.GpuLimit);
465-
466-
if (priorityClassName is not null)
467-
{
468-
template.PriorityClassName = priorityClassName;
469-
}
470-
}
471-
if (priorityClassName is not null)
472-
{
473-
workflow.Spec.PodPriorityClassName = priorityClassName;
465+
template.PriorityClassName = priorityClassName;
474466
}
467+
workflow.Spec.PodPriorityClassName = priorityClassName;
475468
}
476469

477470
private static void AddLimit(Dictionary<string, string>? resources, Template2 template, ResourcesKey key)

tests/UnitTests/TaskManager.Argo.Tests/ArgoPluginTest.cs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,68 @@ public async Task ArgoPlugin_CreateArgoTemplate_Valid_json_Calls_Client()
806806
Times.Once);
807807
}
808808

809+
[Fact(DisplayName = "podPriorityClassName gets set if not given in workflow")]
810+
public async Task ArgoPlugin_Ensures_podPriorityClassName_is_set()
811+
{
812+
var argoTemplate = LoadArgoTemplate("SimpleTemplate.yml");
813+
Assert.NotNull(argoTemplate);
814+
815+
SetUpSimpleArgoWorkFlow(argoTemplate);
816+
817+
var message = GenerateTaskDispatchEventWithValidArguments();
818+
819+
WorkflowCreateRequest? requestMade = default;
820+
ArgoClient.Setup(a => a.Argo_CreateWorkflowAsync(It.IsAny<string>(), It.IsAny<WorkflowCreateRequest>(), It.IsAny<CancellationToken>()))
821+
.Callback<string, WorkflowCreateRequest, CancellationToken>((name, request, token) =>
822+
{
823+
requestMade = request;
824+
});
825+
826+
var defaultClassName = "standard";
827+
var runner = new ArgoPlugin(ServiceScopeFactory.Object, _logger.Object, Options, message);
828+
var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
829+
830+
Assert.NotNull(requestMade);
831+
Assert.Equal(defaultClassName, requestMade.Workflow.Spec.PodPriorityClassName);
832+
833+
foreach (var template in requestMade.Workflow.Spec.Templates)
834+
{
835+
Assert.Equal(defaultClassName, template.PriorityClassName);
836+
}
837+
}
838+
839+
[Fact(DisplayName = "podPriorityClassName gets set if given in workflow")]
840+
public async Task ArgoPlugin_Ensures_podPriorityClassName_is_set_as_given()
841+
{
842+
var argoTemplate = LoadArgoTemplate("SimpleTemplate.yml");
843+
Assert.NotNull(argoTemplate);
844+
845+
SetUpSimpleArgoWorkFlow(argoTemplate);
846+
847+
var message = GenerateTaskDispatchEventWithValidArguments();
848+
849+
var givenClassName = "fred";
850+
message.TaskPluginArguments.Add("priority", givenClassName);
851+
852+
WorkflowCreateRequest? requestMade = default;
853+
ArgoClient.Setup(a => a.Argo_CreateWorkflowAsync(It.IsAny<string>(), It.IsAny<WorkflowCreateRequest>(), It.IsAny<CancellationToken>()))
854+
.Callback<string, WorkflowCreateRequest, CancellationToken>((name, request, token) =>
855+
{
856+
requestMade = request;
857+
});
858+
859+
var runner = new ArgoPlugin(ServiceScopeFactory.Object, _logger.Object, Options, message);
860+
var result = await runner.ExecuteTask(CancellationToken.None).ConfigureAwait(false);
861+
862+
Assert.NotNull(requestMade);
863+
Assert.Equal(givenClassName, requestMade.Workflow.Spec.PodPriorityClassName);
864+
865+
foreach (var template in requestMade.Workflow.Spec.Templates)
866+
{
867+
Assert.Equal(givenClassName, template.PriorityClassName);
868+
}
869+
}
870+
809871
private void SetUpSimpleArgoWorkFlow(WorkflowTemplate argoTemplate)
810872
{
811873
Assert.NotNull(argoTemplate);

0 commit comments

Comments
 (0)