Adds support for command overrides to container recipes.
This commit is contained in:
parent
3c8efbd0a0
commit
e42f1ddbd7
|
@ -498,10 +498,17 @@ namespace KubernetesWorkflow
|
||||||
Ports = CreateContainerPorts(recipe),
|
Ports = CreateContainerPorts(recipe),
|
||||||
Env = CreateEnv(recipe),
|
Env = CreateEnv(recipe),
|
||||||
VolumeMounts = CreateContainerVolumeMounts(recipe),
|
VolumeMounts = CreateContainerVolumeMounts(recipe),
|
||||||
Resources = CreateResourceLimits(recipe)
|
Resources = CreateResourceLimits(recipe),
|
||||||
|
Command = CreateCommandList(recipe)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IList<string> CreateCommandList(ContainerRecipe recipe)
|
||||||
|
{
|
||||||
|
if (recipe.CommandOverride == null || !recipe.CommandOverride.Command.Any()) return null!;
|
||||||
|
return recipe.CommandOverride.Command.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
private V1ResourceRequirements CreateResourceLimits(ContainerRecipe recipe)
|
private V1ResourceRequirements CreateResourceLimits(ContainerRecipe recipe)
|
||||||
{
|
{
|
||||||
return new V1ResourceRequirements
|
return new V1ResourceRequirements
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
namespace KubernetesWorkflow.Recipe
|
||||||
|
{
|
||||||
|
public class CommandOverride
|
||||||
|
{
|
||||||
|
public CommandOverride(params string[] command)
|
||||||
|
{
|
||||||
|
Command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string[] Command { get; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,13 +2,14 @@
|
||||||
{
|
{
|
||||||
public class ContainerRecipe
|
public class ContainerRecipe
|
||||||
{
|
{
|
||||||
public ContainerRecipe(int number, string? nameOverride, string image, ContainerResources resources, SchedulingAffinity schedulingAffinity, bool setCriticalPriority, Port[] exposedPorts, Port[] internalPorts, EnvVar[] envVars, PodLabels podLabels, PodAnnotations podAnnotations, VolumeMount[] volumes, ContainerAdditionals additionals)
|
public ContainerRecipe(int number, string? nameOverride, string image, ContainerResources resources, SchedulingAffinity schedulingAffinity, CommandOverride commandOverride, bool setCriticalPriority, Port[] exposedPorts, Port[] internalPorts, EnvVar[] envVars, PodLabels podLabels, PodAnnotations podAnnotations, VolumeMount[] volumes, ContainerAdditionals additionals)
|
||||||
{
|
{
|
||||||
Number = number;
|
Number = number;
|
||||||
NameOverride = nameOverride;
|
NameOverride = nameOverride;
|
||||||
Image = image;
|
Image = image;
|
||||||
Resources = resources;
|
Resources = resources;
|
||||||
SchedulingAffinity = schedulingAffinity;
|
SchedulingAffinity = schedulingAffinity;
|
||||||
|
CommandOverride = commandOverride;
|
||||||
SetCriticalPriority = setCriticalPriority;
|
SetCriticalPriority = setCriticalPriority;
|
||||||
ExposedPorts = exposedPorts;
|
ExposedPorts = exposedPorts;
|
||||||
InternalPorts = internalPorts;
|
InternalPorts = internalPorts;
|
||||||
|
@ -35,6 +36,7 @@
|
||||||
public string? NameOverride { get; }
|
public string? NameOverride { get; }
|
||||||
public ContainerResources Resources { get; }
|
public ContainerResources Resources { get; }
|
||||||
public SchedulingAffinity SchedulingAffinity { get; }
|
public SchedulingAffinity SchedulingAffinity { get; }
|
||||||
|
public CommandOverride CommandOverride { get; }
|
||||||
public bool SetCriticalPriority { get; }
|
public bool SetCriticalPriority { get; }
|
||||||
public string Image { get; }
|
public string Image { get; }
|
||||||
public Port[] ExposedPorts { get; }
|
public Port[] ExposedPorts { get; }
|
||||||
|
|
|
@ -14,6 +14,7 @@ namespace KubernetesWorkflow.Recipe
|
||||||
private RecipeComponentFactory factory = null!;
|
private RecipeComponentFactory factory = null!;
|
||||||
private ContainerResources resources = new ContainerResources();
|
private ContainerResources resources = new ContainerResources();
|
||||||
private SchedulingAffinity schedulingAffinity = new SchedulingAffinity();
|
private SchedulingAffinity schedulingAffinity = new SchedulingAffinity();
|
||||||
|
private CommandOverride commandOverride = new CommandOverride();
|
||||||
private bool setCriticalPriority;
|
private bool setCriticalPriority;
|
||||||
|
|
||||||
public ContainerRecipe CreateRecipe(int index, int containerNumber, RecipeComponentFactory factory, StartupConfig config)
|
public ContainerRecipe CreateRecipe(int index, int containerNumber, RecipeComponentFactory factory, StartupConfig config)
|
||||||
|
@ -24,7 +25,7 @@ namespace KubernetesWorkflow.Recipe
|
||||||
|
|
||||||
Initialize(config);
|
Initialize(config);
|
||||||
|
|
||||||
var recipe = new ContainerRecipe(containerNumber, config.NameOverride, Image, resources, schedulingAffinity, setCriticalPriority,
|
var recipe = new ContainerRecipe(containerNumber, config.NameOverride, Image, resources, schedulingAffinity, commandOverride, setCriticalPriority,
|
||||||
exposedPorts.ToArray(),
|
exposedPorts.ToArray(),
|
||||||
internalPorts.ToArray(),
|
internalPorts.ToArray(),
|
||||||
envVars.ToArray(),
|
envVars.ToArray(),
|
||||||
|
@ -43,6 +44,7 @@ namespace KubernetesWorkflow.Recipe
|
||||||
this.factory = null!;
|
this.factory = null!;
|
||||||
resources = new ContainerResources();
|
resources = new ContainerResources();
|
||||||
schedulingAffinity = new SchedulingAffinity();
|
schedulingAffinity = new SchedulingAffinity();
|
||||||
|
commandOverride = new CommandOverride();
|
||||||
setCriticalPriority = false;
|
setCriticalPriority = false;
|
||||||
|
|
||||||
return recipe;
|
return recipe;
|
||||||
|
@ -130,6 +132,11 @@ namespace KubernetesWorkflow.Recipe
|
||||||
schedulingAffinity = new SchedulingAffinity(notIn);
|
schedulingAffinity = new SchedulingAffinity(notIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void OverrideCommand(params string[] command)
|
||||||
|
{
|
||||||
|
commandOverride = new CommandOverride(command);
|
||||||
|
}
|
||||||
|
|
||||||
protected void SetSystemCriticalPriority()
|
protected void SetSystemCriticalPriority()
|
||||||
{
|
{
|
||||||
setCriticalPriority = true;
|
setCriticalPriority = true;
|
||||||
|
|
Loading…
Reference in New Issue