public void Tags_MapTo_Metadata() { // arrange some tags in configuration var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary <string, string>() { { "consul:discovery:tags:0", "key0=value0" }, { "consul:discovery:tags:1", "key1=value1" }, { "consul:discovery:tags:2", "keyvalue" } }) .Build(); // bind to options var options = new ConsulDiscoveryOptions(); config.Bind(ConsulDiscoveryOptions.CONSUL_DISCOVERY_CONFIGURATION_PREFIX, options); var tags = ConsulRegistration.CreateTags(options); // act - get metadata from tags var result = ConsulServerUtils.GetMetadata(tags); Assert.Contains(result, k => k.Key == "key0"); Assert.Equal("value0", result["key0"]); Assert.Contains(result, k => k.Key == "key1"); Assert.Equal("value1", result["key1"]); Assert.Contains(result, k => k.Key == "keyvalue"); Assert.Equal("keyvalue", result["keyvalue"]); }
internal void Initialize(AgentServiceRegistration agentServiceRegistration) { InstanceId = agentServiceRegistration.ID; ServiceId = agentServiceRegistration.Name; Host = agentServiceRegistration.Address; Port = agentServiceRegistration.Port; Metadata = ConsulServerUtils.GetMetadata(agentServiceRegistration.Tags); }
public ConsulMetaInfo(ServiceEntry serviceEntry) { AppName = serviceEntry.Service.Service; var metadata = ConsulServerUtils.GetMetadata(serviceEntry); ServerGroup = metadata.TryGetValue("group", out var value) ? value : null; ServiceIdForDiscovery = null; InstanceId = serviceEntry.Service.ID; }
public ThisServiceInstance(ConsulDiscoveryOptions options) { ServiceId = options.ServiceName; Host = options.HostName; IsSecure = options.Scheme == "https"; Port = options.Port ?? (IsSecure ? 443 : 80); var metadata = ConsulServerUtils.GetMetadata(options.Tags); Metadata = metadata; Uri = new Uri($"{options.Scheme}://{Host}:{Port}"); }
public ConsulRegistration(AgentServiceRegistration agentServiceRegistration, ConsulDiscoveryOptions options) { AgentServiceRegistration = agentServiceRegistration; InstanceId = agentServiceRegistration.ID; ServiceId = agentServiceRegistration.Name; Host = agentServiceRegistration.Address; Port = agentServiceRegistration.Port; IsSecure = options.Scheme == "https"; Uri = new Uri($"{options.Scheme}://{Host}:{Port}"); Metadata = ConsulServerUtils.GetMetadata(agentServiceRegistration.Tags); }
/// <summary> /// Initializes a new instance of the <see cref="ConsulServiceInstance"/> class. /// </summary> /// <param name="serviceEntry">the service entry from the Consul server</param> public ConsulServiceInstance(ServiceEntry serviceEntry) { // TODO: 3.0 ID = healthService.ID; Host = ConsulServerUtils.FindHost(serviceEntry); var metadata = ConsulServerUtils.GetMetadata(serviceEntry); IsSecure = metadata.TryGetValue("secure", out var secureString) && bool.Parse(secureString); ServiceId = serviceEntry.Service.Service; Port = serviceEntry.Service.Port; Metadata = metadata; var scheme = IsSecure ? "https" : "http"; Uri = new Uri($"{scheme}://{Host}:{Port}"); }
public void FindHost_ReturnsExpected() { ServiceEntry hs = new ServiceEntry(); hs.Service = new AgentService(); hs.Node = new Node(); hs.Service.Address = "fc00:ec:cd::242:ac11:c"; string s1 = ConsulServerUtils.FindHost(hs); Assert.Equal("[fc00:ec:cd:0:0:242:ac11:c]", s1); hs.Service.Address = null; hs.Node.Address = "fc00:ec:cd::242:ac11:c"; string s2 = ConsulServerUtils.FindHost(hs); Assert.Equal("[fc00:ec:cd:0:0:242:ac11:c]", s2); }
public void FixIpv6Address_Fixes() { string s1 = ConsulServerUtils.FixIPv6Address("fc00:ec:cd::242:ac11:c"); Assert.Equal("[fc00:ec:cd:0:0:242:ac11:c]", s1); string s2 = ConsulServerUtils.FixIPv6Address("[fc00:ec:cd::242:ac11:c]"); Assert.Equal("[fc00:ec:cd:0:0:242:ac11:c]", s2); string s3 = ConsulServerUtils.FixIPv6Address("192.168.0.1"); Assert.Equal("192.168.0.1", s3); string s4 = ConsulServerUtils.FixIPv6Address("projects.spring.io"); Assert.Equal("projects.spring.io", s4); string s5 = ConsulServerUtils.FixIPv6Address("veryLongHostName"); Assert.Equal("veryLongHostName", s5); }
public ConsulServer(ServiceEntry serviceEntry) : base(ConsulServerUtils.FindHost(serviceEntry), serviceEntry.Service.Port) { _serviceEntry = serviceEntry; MetaInfo = new ConsulMetaInfo(serviceEntry); }