From d4f906075fedd5cf53a3a0ea3a52930819b5026e Mon Sep 17 00:00:00 2001 From: Phill Morton Date: Wed, 11 Oct 2023 01:49:14 +0100 Subject: [PATCH 1/3] add dependency map --- .../ConfigModel/ConfigService.cs | 2 ++ .../DockerCompose/DockerComposeParser.cs | 2 ++ .../Serialization/ConfigServiceParser.cs | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs b/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs index a131f9372..f559a49b9 100644 --- a/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs +++ b/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs @@ -46,5 +46,7 @@ public class ConfigService public string? Version { get; set; } public string? Architecture { get; set; } public string? CloneDirectory { get; internal set; } + + public List DependsOn { get; set; } = new List(); } } diff --git a/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs b/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs index ecee90f5a..4dd2722a3 100644 --- a/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs +++ b/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs @@ -273,6 +273,8 @@ private static void ParseService(YamlMappingNode node, ConfigService service) break; case "tty": break; + case "dependsOn": + break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); } diff --git a/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs b/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs index 0f6178386..8cf6820da 100644 --- a/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs +++ b/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs @@ -164,6 +164,13 @@ private static void HandleServiceNameMapping(YamlMappingNode yamlMappingNode, Co case "cloneDirectory": service.CloneDirectory = YamlParser.GetScalarValue(key, child.Value); break; + case "dependsOn": + if (child.Value.NodeType != YamlNodeType.Sequence) + { + throw new TyeYamlException(child.Value.Start, CoreStrings.FormatExpectedYamlSequence(key)); + } + HandleDependencies((child.Value as YamlSequenceNode)!, service.DependsOn); + break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); } @@ -578,6 +585,15 @@ private static void HandleServiceTags(YamlSequenceNode yamlSequenceNode, List dependencies) + { + foreach (var child in yamlSequenceNode!.Children) + { + var dependsOn = YamlParser.GetScalarValue(child); + dependencies.Add(dependsOn); + } + } private static void HandleServiceBindingRoutes(YamlSequenceNode yamlSequenceNode, List routes) { From 6f5f8c74c69ca471257a31dabe6076e97aa865af Mon Sep 17 00:00:00 2001 From: Phill Morton Date: Wed, 11 Oct 2023 01:51:33 +0100 Subject: [PATCH 2/3] add depends on to multi repo E2E --- test/E2ETest/testassets/projects/multirepo/vote/tye.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml b/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml index 739361fc9..918d666b4 100644 --- a/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml +++ b/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml @@ -2,6 +2,8 @@ name: VotingSample services: - name: vote project: vote.csproj + dependsOn: + - redis - name: worker include: ../worker/tye.yaml - name: redis From daf2c49a532c90936cef20a079e98d03ff6fe6b2 Mon Sep 17 00:00:00 2001 From: Phill Morton Date: Wed, 11 Oct 2023 02:01:50 +0100 Subject: [PATCH 3/3] remove docker compose varible --- src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs b/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs index 4dd2722a3..ecee90f5a 100644 --- a/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs +++ b/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs @@ -273,8 +273,6 @@ private static void ParseService(YamlMappingNode node, ConfigService service) break; case "tty": break; - case "dependsOn": - break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); }