private static void HandleServiceBindings(YamlSequenceNode yamlSequenceNode, List <ConfigServiceBinding> bindings) { foreach (var child in yamlSequenceNode.Children) { YamlParser.ThrowIfNotYamlMapping(child); var binding = new ConfigServiceBinding(); HandleServiceBindingNameMapping((YamlMappingNode)child, binding); bindings.Add(binding); } }
private static void ParsePortSequence(YamlSequenceNode portSequence, ConfigService service) { foreach (var port in portSequence) { var portString = YamlParser.GetScalarValue(port); var binding = new ConfigServiceBinding(); if (portString.Contains(':')) { var ports = portString.Split(':'); binding.Port = int.Parse(ports[0]); binding.ContainerPort = int.Parse(ports[1]); } else { binding.Port = int.Parse(portString); binding.ContainerPort = int.Parse(portString); } // TODO how to specify protocol with docker compose. Using http for now. binding.Protocol = "http"; service.Bindings.Add(binding); } }
private static void HandleServiceBindingNameMapping(YamlMappingNode yamlMappingNode, ConfigServiceBinding binding) { foreach (var child in yamlMappingNode.Children) { var key = YamlParser.GetScalarValue(child.Key); switch (key) { case "name": binding.Name = YamlParser.GetScalarValue(key, child.Value); break; case "connectionString": binding.ConnectionString = YamlParser.GetScalarValue(key, child.Value); break; case "port": if (!int.TryParse(YamlParser.GetScalarValue(key, child.Value), out var port)) { throw new TyeYamlException(child.Value.Start, CoreStrings.FormatMustBeAnInteger(key)); } binding.Port = port; break; case "containerPort": if (!int.TryParse(YamlParser.GetScalarValue(key, child.Value), out var containerPort)) { throw new TyeYamlException(child.Value.Start, CoreStrings.FormatMustBeAnInteger(key)); } binding.ContainerPort = containerPort; break; case "host": binding.Host = YamlParser.GetScalarValue(key, child.Value); break; case "protocol": binding.Protocol = YamlParser.GetScalarValue(key, child.Value); break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); } } }