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"]);
        }
Exemple #2
0
 internal void Initialize(AgentServiceRegistration agentServiceRegistration)
 {
     InstanceId = agentServiceRegistration.ID;
     ServiceId  = agentServiceRegistration.Name;
     Host       = agentServiceRegistration.Address;
     Port       = agentServiceRegistration.Port;
     Metadata   = ConsulServerUtils.GetMetadata(agentServiceRegistration.Tags);
 }
Exemple #3
0
            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}");
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
 public ConsulServer(ServiceEntry serviceEntry) : base(ConsulServerUtils.FindHost(serviceEntry), serviceEntry.Service.Port)
 {
     _serviceEntry = serviceEntry;
     MetaInfo      = new ConsulMetaInfo(serviceEntry);
 }