From f7c69d6f24fdca2f6eb0f8a06fd85a701d3698dd Mon Sep 17 00:00:00 2001 From: ThatBen Date: Fri, 15 Sep 2023 12:25:10 +0200 Subject: [PATCH] Nicer deployment names. --- Core/CoreInterface.cs | 6 ++++++ KubernetesWorkflow/ContainerRecipe.cs | 15 +++++++++++++-- KubernetesWorkflow/ContainerRecipeFactory.cs | 2 +- KubernetesWorkflow/K8sController.cs | 2 +- KubernetesWorkflow/K8sNameUtils.cs | 19 +++++++++++++++++++ KubernetesWorkflow/PodLabels.cs | 15 +-------------- 6 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 KubernetesWorkflow/K8sNameUtils.cs diff --git a/Core/CoreInterface.cs b/Core/CoreInterface.cs index fca6e62..43a66b5 100644 --- a/Core/CoreInterface.cs +++ b/Core/CoreInterface.cs @@ -30,6 +30,12 @@ namespace Core workflow.DownloadContainerLog(container, logHandler, tailLines); return logHandler.DownloadLog(); } + + public string ExecuteContainerCommand(RunningContainer container, string command, params string[] args) + { + var workflow = entryPoint.Tools.CreateWorkflow(); + return workflow.ExecuteCommand(container, command, args); + } } public interface IHasContainer diff --git a/KubernetesWorkflow/ContainerRecipe.cs b/KubernetesWorkflow/ContainerRecipe.cs index 318d3ce..991928f 100644 --- a/KubernetesWorkflow/ContainerRecipe.cs +++ b/KubernetesWorkflow/ContainerRecipe.cs @@ -2,9 +2,10 @@ { public class ContainerRecipe { - public ContainerRecipe(int number, string image, ContainerResources resources, Port[] exposedPorts, Port[] internalPorts, EnvVar[] envVars, PodLabels podLabels, PodAnnotations podAnnotations, VolumeMount[] volumes, object[] additionals) + public ContainerRecipe(int number, string? nameOverride, string image, ContainerResources resources, Port[] exposedPorts, Port[] internalPorts, EnvVar[] envVars, PodLabels podLabels, PodAnnotations podAnnotations, VolumeMount[] volumes, object[] additionals) { Number = number; + NameOverride = nameOverride; Image = image; Resources = resources; ExposedPorts = exposedPorts; @@ -14,10 +15,20 @@ PodAnnotations = podAnnotations; Volumes = volumes; Additionals = additionals; + + if (NameOverride != null) + { + Name = $"{K8sNameUtils.Format(NameOverride)}-{Number}"; + } + else + { + Name = $"ctnr{Number}"; + } } - public string Name { get { return $"ctnr{Number}"; } } + public string Name { get; } public int Number { get; } + public string? NameOverride { get; } public ContainerResources Resources { get; } public string Image { get; } public Port[] ExposedPorts { get; } diff --git a/KubernetesWorkflow/ContainerRecipeFactory.cs b/KubernetesWorkflow/ContainerRecipeFactory.cs index f8c88ef..c8d26f7 100644 --- a/KubernetesWorkflow/ContainerRecipeFactory.cs +++ b/KubernetesWorkflow/ContainerRecipeFactory.cs @@ -21,7 +21,7 @@ namespace KubernetesWorkflow Initialize(config); - var recipe = new ContainerRecipe(containerNumber, Image, Resources, + var recipe = new ContainerRecipe(containerNumber, config.NameOverride, Image, Resources, exposedPorts.ToArray(), internalPorts.ToArray(), envVars.ToArray(), diff --git a/KubernetesWorkflow/K8sController.cs b/KubernetesWorkflow/K8sController.cs index ff53f66..a3a69fd 100644 --- a/KubernetesWorkflow/K8sController.cs +++ b/KubernetesWorkflow/K8sController.cs @@ -399,7 +399,7 @@ namespace KubernetesWorkflow { return new V1ObjectMeta { - Name = "deploy-" + workflowNumberSource.WorkflowNumber, + Name = string.Join('-',containerRecipes.Select(r => r.Name)), NamespaceProperty = K8sNamespace, Labels = GetSelector(containerRecipes), Annotations = GetAnnotations(containerRecipes) diff --git a/KubernetesWorkflow/K8sNameUtils.cs b/KubernetesWorkflow/K8sNameUtils.cs new file mode 100644 index 0000000..c888870 --- /dev/null +++ b/KubernetesWorkflow/K8sNameUtils.cs @@ -0,0 +1,19 @@ +namespace KubernetesWorkflow +{ + public static class K8sNameUtils + { + public static string Format(string s) + { + var result = s.ToLowerInvariant() + .Replace(" ", "-") + .Replace(":", "-") + .Replace("/", "-") + .Replace("\\", "-") + .Replace("[", "-") + .Replace("]", "-") + .Replace(",", "-"); + + return result.Trim('-'); + } + } +} diff --git a/KubernetesWorkflow/PodLabels.cs b/KubernetesWorkflow/PodLabels.cs index 78aa518..d8b7333 100644 --- a/KubernetesWorkflow/PodLabels.cs +++ b/KubernetesWorkflow/PodLabels.cs @@ -6,7 +6,7 @@ public void Add(string key, string value) { - labels.Add(key, Format(value)); + labels.Add(key, K8sNameUtils.Format(value)); } public PodLabels Clone() @@ -21,19 +21,6 @@ labels.Clear(); } - private static string Format(string s) - { - var result = s.ToLowerInvariant() - .Replace(":", "-") - .Replace("/", "-") - .Replace("\\", "-") - .Replace("[", "-") - .Replace("]", "-") - .Replace(",", "-"); - - return result.Trim('-'); - } - internal Dictionary GetLabels() { return labels;