Exemple #1
0
        public void Client_DefaultConfig_env()
        {
            const string addr = "1.2.3.4:5678";
            const string token = "abcd1234";
            const string auth = "username:password";
            Environment.SetEnvironmentVariable("CONSUL_HTTP_ADDR", addr);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_TOKEN", token);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_AUTH", auth);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_SSL", "1");
            Environment.SetEnvironmentVariable("CONSUL_HTTP_SSL_VERIFY", "0");

            var config = new ConsulClientConfiguration();

            Assert.AreEqual(addr, config.Address);
            Assert.AreEqual(token, config.Token);
            Assert.IsNotNull(config.HttpAuth);
            Assert.AreEqual("username", config.HttpAuth.UserName);
            Assert.AreEqual("password", config.HttpAuth.Password);
            Assert.AreEqual("https", config.Scheme);
            Assert.IsTrue(ServicePointManager.ServerCertificateValidationCallback(null, null, null,
                SslPolicyErrors.RemoteCertificateChainErrors));

            Environment.SetEnvironmentVariable("CONSUL_HTTP_ADDR", string.Empty);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_TOKEN", string.Empty);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_AUTH", string.Empty);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_SSL", string.Empty);
            Environment.SetEnvironmentVariable("CONSUL_HTTP_SSL_VERIFY", string.Empty);
            ServicePointManager.ServerCertificateValidationCallback = null;

            var client = new Client(config);

            Assert.IsNotNull(client);
        }
 public void SetUp()
 {
     var clientConfig = new ConsulClientConfiguration {Address = new Uri("http://127.0.0.1:9500")};
     var client = new ConsulClient(clientConfig);
     var adapter = new ConsulAdapter(client);
     var flipper = new Flipper(adapter);
     _feature = flipper.Feature("unobtanium");
 }
 public void SetUp()
 {
     var clientConfig = new ConsulClientConfiguration();
     clientConfig.Address = "127.0.0.1:9500";
     var client = new Client(clientConfig);
     var adapter = new ConsulAdapter(client);
     var flipper = new Flipper(adapter);
     _feature = flipper.Feature("unobtanium");
 }
        public ConsulServiceRouteManager(
            RpcOptionsConfiguration rpcOptionsConfiguration,
            ISerializer <byte[]> byteSerializer,
            ISerializer <string> stringSerializer,
            IServiceRouteFactory serviceRouteFactory,
            ILogger <ConsulServiceRouteManager> logger
            ) : base(stringSerializer)
        {
            _rpcOptionsConfiguration = rpcOptionsConfiguration;
            _configInfo          = rpcOptionsConfiguration.ConsulClientConfiguration;
            _byteSerializer      = byteSerializer;
            _serviceRouteFactory = serviceRouteFactory;
            _logger = logger;

            CreateConsul();
        }
Exemple #5
0
        public async Task Client_SetClientOptions()
        {
            var config = new ConsulClientConfiguration()
            {
                Datacenter = "foo",
                WaitTime = new TimeSpan(0, 0, 100),
                Token = "12345"
            };
            var client = new ConsulClient(config);
            var request = client.Get<KVPair>("/v1/kv/foo");

            await Assert.ThrowsAsync<ConsulRequestException>(async () => await request.Execute());

            Assert.Equal("foo", request.Params["dc"]);
            Assert.Equal("1m40s", request.Params["wait"]);
            Assert.Equal("12345", request.Params["token"]);
        }
        public static IServiceCollection AddConsulClient(this IServiceCollection services, Action <ConsulClientConfiguration> action)
        {
            var config = new ConsulClientConfiguration();

            action.Invoke(config);

            services.TryAddSingleton <ConsulConfiguration>();
            services.TryAddSingleton <IConfiguration <ConsulClientConfiguration> >(serviceProvider =>
            {
                var service = serviceProvider.GetRequiredService <ConsulConfiguration>();
                service.SetConfiguration(config);

                return(service);
            });

            return(services);
        }
Exemple #7
0
        public async Task Client_SetClientOptions()
        {
            var config = new ConsulClientConfiguration()
            {
                Datacenter = "foo",
                WaitTime   = new TimeSpan(0, 0, 100),
                Token      = "12345"
            };
            var client  = new ConsulClient(config);
            var request = client.Get <KVPair>("/v1/kv/foo");

            await Assert.ThrowsAsync <ConsulRequestException>(async() => await request.Execute());

            Assert.Equal("foo", request.Params["dc"]);
            Assert.Equal("1m40s", request.Params["wait"]);
            Assert.Equal("12345", request.Params["token"]);
        }
Exemple #8
0
        public async Task Client_ReuseAndUpdateConfig()
        {
            var config = new ConsulClientConfiguration();

            config.Address = TestHelper.HttpUri;
            config.Token   = TestHelper.MasterToken;

#pragma warning disable CS0618 // Type or member is obsolete
            using (var client = new ConsulClient(config))
#pragma warning restore CS0618 // Type or member is obsolete
            {
#pragma warning disable CS0618 // Type or member is obsolete
                config.DisableServerCertificateValidation = true;
#pragma warning restore CS0618 // Type or member is obsolete
                await client.KV.Put(new KVPair("kv/reuseconfig") { Flags = 1000 });

                Assert.Equal <ulong>(1000, (await client.KV.Get("kv/reuseconfig")).Response.Flags);
#if !CORECLR
                Assert.True(client.HttpHandler.ServerCertificateValidationCallback(null, null, null,
                                                                                   SslPolicyErrors.RemoteCertificateChainErrors));
#endif
            }

#pragma warning disable CS0618 // Type or member is obsolete
            using (var client = new ConsulClient(config))
#pragma warning restore CS0618 // Type or member is obsolete
            {
#pragma warning disable CS0618 // Type or member is obsolete
                config.DisableServerCertificateValidation = false;
#pragma warning restore CS0618 // Type or member is obsolete
                await client.KV.Put(new KVPair("kv/reuseconfig") { Flags = 2000 });

                Assert.Equal <ulong>(2000, (await client.KV.Get("kv/reuseconfig")).Response.Flags);
#if !CORECLR
                Assert.Null(client.HttpHandler.ServerCertificateValidationCallback);
#endif
            }

#pragma warning disable CS0618 // Type or member is obsolete
            using (var client = new ConsulClient(config))
#pragma warning restore CS0618 // Type or member is obsolete
            {
                await client.KV.Delete("kv/reuseconfig");
            }
        }
        private static void Build()
        {
            var _tmpConfigurations = new Dictionary <string, object>();
            var consulCfg          = new ConsulClientConfiguration();

            consulCfg.Address = new Uri(_consulServer);
            using (var client = new ConsulClient(consulCfg))
            {
                var getPair = client.KV.Get(_consulKey).GetAwaiter().GetResult();
                var data    = Encoding.UTF8.GetString(getPair.Response.Value, 0, getPair.Response.Value.Length);
                _tmpConfigurations = JsonConvert.DeserializeObject <Dictionary <string, object> >(data);
            }

            lock (_lock)
            {
                _configurations = _tmpConfigurations;
            }
        }
Exemple #10
0
        private async Task <string> GetServiceUrl(string name)
        {
            var config = new ConsulClientConfiguration
            {
                Address = new Uri("http://consul:8500")
            };

            using (var client = new ConsulClient(config))
            {
                var response = await client.Health.Service(name, string.Empty, passingOnly : true);

                var serviceEntry = response.Response != null?response.Response.FirstOrDefault() : null;

                return((serviceEntry != null)
                    ? string.Format("http://{0}:{1}", serviceEntry.Service.Address, serviceEntry.Service.Port)
                    : string.Empty);
            }
        }
        /// <summary>
        /// 实始化客户端并注册到注册中心
        /// </summary>
        /// <remarks>
        /// author:catdemon
        /// date:2019-5-16
        /// </remarks>
        /// <param name="componentManager"></param>
        private static void initConsul(IComponentManager componentManager)
        {
            /*
             * 创建Consul客户端
             */
            var consulServerSetting = _consulSetting.ConsulServerSetting;
            ConsulClientConfiguration consulClientConfiguration = new ConsulClientConfiguration()
            {
                Address = new Uri($"{consulServerSetting.Url}:{consulServerSetting.Port}")
            };

            _consulClient = new ConsulClient(x => x = consulClientConfiguration);//请求注册的 Consul 地址

            /*
             * 设置健康检查
             */
            var healthCheck = _consulSetting.HealthCheckSetting;
            var httpCheck   = new AgentServiceCheck()
            {
                DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(healthCheck.DeregisterCriticalServiceAfter), //服务启动多久后注册
                Interval = TimeSpan.FromSeconds(healthCheck.HeathInterval),                                        //健康检查时间间隔,或者称为心跳间隔
                HTTP     = $"{healthCheck.HeathUrl}:{healthCheck.Port}{healthCheck.CheckPath}",                    //健康检查地址
                Timeout  = TimeSpan.FromSeconds(healthCheck.TimeOut)
            };

            /*
             * 注册微信服信息
             */
            var micServerSetting = _consulSetting.MicServerSetting;
            var registration     = new AgentServiceRegistration()
            {
                Checks  = new[] { httpCheck },
                ID      = micServerSetting.Id.ToString(),
                Name    = micServerSetting.Name,
                Address = micServerSetting.Url,
                Port    = micServerSetting.Port,
                Tags    = micServerSetting.Tags
            };

            _consulClient.Agent.ServiceRegister(registration).Wait();//服务启动时注册,内部实现其实就是使用 Consul API 进行注册(HttpClient发起)
        }
        // Issue #1 - Don't want a trailing slash, just host and port (this needs to be done at the 'Root' of the drive)
        public ConsulPSDriveInfo(PSDriveInfo driveInfo)
            : base(driveInfo.Name,driveInfo.Provider,driveInfo.Root.TrimEnd('/'),driveInfo.Description,driveInfo.Credential,driveInfo.DisplayRoot)
        {
            // TODO: Check if the consul root is valid?

            // TODO: Support DataCenter, HttpAuthentication

            // connection is specified as a URI to the consul http interface. .
            var consulUri = new Uri(Root);

            var config = new ConsulClientConfiguration
            {
                Address = consulUri.Host + ":" + consulUri.Port,
                Scheme = consulUri.Scheme
            };

            // AuthToken taken from Credential UserName if available.
            if (driveInfo.Credential != null && !string.IsNullOrWhiteSpace(driveInfo.Credential.UserName))
                config.Token = driveInfo.Credential.UserName;

            ConsulClient = new Client(config);
        }
Exemple #13
0
        public Net2Consul(string uri, Net2ConsulMode mode)
        {
            mutex_get   = new object();
            mutex_send  = new object();
            consul_mode = mode;

            updated_list      = new List <AgentService>();
            temp_updated_list = new List <AgentService>();
            sending_queue     = new List <AgentService>();

            ConsulClientConfiguration config = new ConsulClientConfiguration();

            config.Address = new Uri(uri);

            client = new ConsulClient(config);

            main_timer          = new System.Timers.Timer();
            main_timer.Interval = 1000;
            main_timer.Elapsed += Main_timer_Elapsed;
            main_timer.Start();
            main_timer.Enabled = true;
        }
        public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app, IApplicationLifetime lifetime, ServiceEntry serviceEntity, IConfiguration configuration)
        {
            ConsulClientConfiguration consulClientConfiguration = new ConsulClientConfiguration()
            {
                Address = new Uri($"http://127.0.0.1:8500")
            };

            var consulClient = new ConsulClient(x => x = consulClientConfiguration);//请求注册的 Consul 地址

            var httpCheck = new AgentServiceCheck()
            {
                DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5), //服务启动多久后注册
                Interval = TimeSpan.FromSeconds(10),                      //健康检查时间间隔,或者称为心跳间隔
                HTTP     = $"http://localhost:51606/api/health",          //健康检查地址
                Timeout  = TimeSpan.FromSeconds(5)
            };

            // Register service with consul
            var registration = new AgentServiceRegistration()
            {
                Checks  = new[] { httpCheck },
                ID      = "donetcore",//Guid.NewGuid().ToString(),
                Name    = "my.servicename1",
                Address = "localhost",
                Port    = 51606,
                Tags    = new[] { $"urlprefix-/my.servicename" }//添加 urlprefix-/servicename 格式的 tag 标签,以便 Fabio 识别
            };

            consulClient.Agent.ServiceRegister(registration).Wait();//服务启动时注册,内部实现其实就是使用 Consul API 进行注册(HttpClient发起)
            lifetime.ApplicationStopping.Register(() =>
            {
                consulClient.Agent.ServiceDeregister(registration.ID).Wait();//服务停止时取消注册
            });



            return(app);
        }
Exemple #15
0
        public ConsulPSDriveInfo(PSDriveInfo driveInfo) : base(driveInfo)
        {
            // TODO: Check if the consul root is valid?

            // TODO: Support DataCenter, HttpAuthentication

            // connection is specified as a URI to the consul http interface. Don't want a trailing slash, just host and port.
            var consulUri = new Uri(driveInfo.Root.TrimEnd('/'));

            var config = new ConsulClientConfiguration
            {
                Address = consulUri.Host + ":" + consulUri.Port,
                Scheme  = consulUri.Scheme
            };

            // AuthToken taken from Credential UserName if available.
            if (driveInfo.Credential != null && !string.IsNullOrWhiteSpace(driveInfo.Credential.UserName))
            {
                config.Token = driveInfo.Credential.UserName;
            }

            ConsulClient = new Client(config);
        }
Exemple #16
0
        public static IConfigurationBuilder AddConsul(this IConfigurationBuilder configurationBuilder, ConsulClientConfiguration consulClientConfiguration, string folder = "")
        {
            if (consulClientConfiguration == null)
            {
                throw new ArgumentNullException(nameof(consulClientConfiguration), "The agent url can't be empty.");
            }

            if (!string.IsNullOrWhiteSpace(folder) && !folder.EndsWith("/"))
            {
                throw new ArgumentException("Folder must end with \"/\".");
            }

            return(Add(configurationBuilder, new ConsulAgentConfiguration
            {
                ClientConfiguration = consulClientConfiguration,
                QueryOptions = new ConsulQueryOptions
                {
                    RootFolder = folder
                }
            }));
        }
Exemple #17
0
 private void ConsulConfig(ConsulClientConfiguration c)
 {
     c.Address    = new Uri("http://192.168.1.102:8500");
     c.Datacenter = "dc1";
 }
Exemple #18
0
 private void consulConfig(ConsulClientConfiguration c)
 {
     c.Address    = new Uri("http://127.0.0.1:8500");
     c.Datacenter = "dc1";
 }
 private static void ConsulConfig(ConsulClientConfiguration obj)
 {
     obj.Address    = new Uri(_CONSUL_SERVER_URL);
     obj.Datacenter = _CONSUL_DEFAULT_DC;
 }
Exemple #20
0
 public void ConsulConifg(ConsulClientConfiguration c)
 {
     c.Address    = new Uri("http://127.0.0.1:8500");
     c.Datacenter = "dc1";
 }
Exemple #21
0
 private void ServiceConfig(ConsulClientConfiguration c)
 {
     //throw new NotImplementedException();
     c.Address = Configuration.GetValue <Uri>("ServiceConfig:serviceDiscoveryAddress");
 }
Exemple #22
0
 private void SetConfig(ConsulClientConfiguration config)
 {
     config.Address = new Uri(consulServerUrl);
 }
Exemple #23
0
 private void ConfiguationConsul(ConsulClientConfiguration client)
 {
     client.Address = new Uri("http://127.0.0.1:8500");
 }
Exemple #24
0
        static void ConfigureConsul(
            this IConfiguration configuration,
            IConfigurationBuilder configBuilder,
            ConsulConfigurationOptions?configOptions,
            IHostEnvironment env)
        {
            // Применяем переменную APPLICATION_NAME из переменных среды,
            // если она не задана, то используем встроенное значение env.ApplicationName.
            var applicationName = env.ApplicationName;

            if (!string.IsNullOrEmpty(configuration[ApplicationNameEnv]))
            {
                applicationName = configuration[ApplicationNameEnv];
            }

            configOptions ??= new ConsulConfigurationOptions();

            // Если находимся в DEV, то используем appsettings.development.json
            if (env.IsDevelopment())
            {
                return;
            }

            // Загружаем конфигурацию подключения в Consul из примонтированного файла.
            var consulConfigFile = ConsulConfigFileDefault;

            if (!File.Exists(ConsulConfigFileDefault) && !string.IsNullOrEmpty(configuration[ConsulConfigFileEnv]))
            {
                Console.WriteLine("Consul connection file detected by environment variable.");
                consulConfigFile = configuration[ConsulConfigFileEnv];
            }
            configBuilder.AddJsonFile(consulConfigFile, optional: false, reloadOnChange: false);

            var consulClientConfiguration = new ConsulClientConfiguration();

            var consulBuilder = new ConfigurationBuilder();

            consulBuilder.SetBasePath(env.ContentRootPath);
            consulBuilder.AddJsonFile(consulConfigFile, optional: false, reloadOnChange: false);

            var consulConfig = consulBuilder.Build();

            if (string.IsNullOrEmpty(consulConfig[ConsulConfigFileSectionName + ":Address"]))
            {
                throw new ConsulConfigurationException($"Failed to load Consul server address from {consulConfigFile}. The wrong data format may have been used.");
            }

            var consulRoot = env.EnvironmentName?.ToLower();

            if (!string.IsNullOrEmpty(consulConfig[ConsulConfigFileSectionName + ":RootFolder"]))
            {
                consulRoot = consulConfig[ConsulConfigFileSectionName + ":RootFolder"].ToLower();
            }

            consulConfig
            .GetSection(ConsulConfigFileSectionName)
            .Bind(consulClientConfiguration);

            var appsettingsFileName = string.IsNullOrEmpty(configOptions.AppsettingsFileName) ? AppsettingsFile : configOptions.AppsettingsFileName;

            if (configOptions.UseCommonAppsettings)
            {
                var commonAppsettingsFileName = string.IsNullOrEmpty(configOptions.CommonAppsettingsFileName) ? CommonAppsettingsFile : configOptions.CommonAppsettingsFileName;
                configBuilder
                .AddConsul(
                    $"{consulRoot}/{commonAppsettingsFileName}",
                    options => ConfigureConsulOptions(options, consulClientConfiguration));
            }
            // Включение конфигурации для микросервиса.
            configBuilder
            .AddConsul(
                $"{consulRoot}/{applicationName?.ToLower()}/{appsettingsFileName}",
                options => ConfigureConsulOptions(options, consulClientConfiguration));
        }
Exemple #25
0
 private void configure(ConsulClientConfiguration config)
 {
     config.Address = $"http://localhost:{Port}".ToUri();
 }
Exemple #26
0
 private void ConfigurationOverview(ConsulClientConfiguration obj)
 {
     obj.Address = new Uri("http://" + (EnvironmentVariables.MicroRegistryAddress ?? HostsEnv.GetIPAddress() + ":8500"));
     logger.Debug("Consul Client: " + obj.Address);
     obj.Datacenter = "dc1";
 }
Exemple #27
0
 private void ConsulConfig(ConsulClientConfiguration config)
 {
     //throw new NotImplementedException();
     config.Address    = new Uri("http://localhost:8500"); //63899
     config.Datacenter = "dc1";
 }
Exemple #28
0
 private static void ConfigurationOverview(ConsulClientConfiguration obj)
 {
     obj.Address    = new Uri("http://39.106.206.130:8500"); // 服务注册与发现服务器Consul地址
     obj.Datacenter = "dc1";                                 // 名称
 }
 private void ConsulConfig(ConsulClientConfiguration consul)
 {
     consul.Address = new Uri(Configuration.GetSection("ApplicationConfiguration").GetSection("ConsulAddress").Value);
 }
Exemple #30
0
 private void ConsulConfig(ConsulClientConfiguration config)
 {
     //配置注册中心地址
     config.Address    = new Uri("http://localhost:8500");
     config.Datacenter = "dc1";
 }
Exemple #31
0
        public static IWebHostBuilder UseNethium(this IWebHostBuilder builder,
                                                 Action <NethiumConfig> configureNethiumOption)
        {
            var nethiumConfig = new NethiumConfig();

            configureNethiumOption(nethiumConfig);
            nethiumConfig.CancellationToken ??= builder.GetShutdownToken();
            var bootstrapConfig = nethiumConfig.BootstrapConfig;
            var logger          = nethiumConfig.LoggerFactory?.CreateLogger <NethiumConfig>();

            if (bootstrapConfig != null)
            {
                nethiumConfig.Prefix ??= bootstrapConfig["Nethium:Consul:Prefix"] ?? throw new ArgumentNullException("Nethium:Consul:Prefix", "Consul:Prefix not specified in config");
                nethiumConfig.ConfigurationPrefix ??= bootstrapConfig["Nethium:Consul:ConfigurationPrefix"] ??
                nethiumConfig.Prefix;
                nethiumConfig.Separator ??= bootstrapConfig["Nethium:Consul:Separator"];
                nethiumConfig.Watch ??= bootstrapConfig["Nethium:Consul:Watch"];
            }

            var configurationOptions = new ConfigurationOptions
            {
                Prefix = nethiumConfig.Prefix !,
                ConfigurationPrefix = nethiumConfig.ConfigurationPrefix,
                Separator           = nethiumConfig.Separator !,
                Watch      = nethiumConfig.Watch,
                AutoReload = nethiumConfig.AutoReload ?? false
            };

            var consulHandler = new ConsulHandler
            {
                ClientConfigurationOptions = ClientConfiguration(bootstrapConfig, nethiumConfig),
                CancellationToken          = nethiumConfig.CancellationToken
            };
            var consulBuilder             = new ConsulBuilder(consulHandler);
            var consulClientConfiguration = new ConsulClientConfiguration();

            consulHandler.ClientConfigurationOptions.Invoke(consulClientConfiguration);
            foreach (var pair in bootstrapConfig.AsEnumerable())
            {
                logger?.LogInformation(pair.Key + ": " + pair.Value);
            }
            logger?.LogInformation(bootstrapConfig?["Nethium:Consul:Watch"]);
            logger?.LogInformation($"Using consul at address {consulClientConfiguration.Address} " +
                                   $"{(string.IsNullOrEmpty(consulClientConfiguration.Datacenter) ? "" : "datacenter " + consulClientConfiguration.Datacenter)}");
            logger?.LogInformation($"Consul config prefix {configurationOptions.Prefix}" +
                                   $"{(string.IsNullOrEmpty(configurationOptions.ConfigurationPrefix) ? "" : " (" + configurationOptions.ConfigurationPrefix + ") ")}" +
                                   $"{(string.IsNullOrEmpty(configurationOptions.Watch) ? "" : "watching " + configurationOptions.Watch + (configurationOptions.AutoReload ? " auto-reload" : " no auto-reload"))}");
            if (nethiumConfig.HostConfiguration)
            {
                logger?.LogInformation("Injecting Nethium config provider to host configuration");
                var consulKvEndpoint = new ConsulKvEndpoint(consulBuilder,
                                                            nethiumConfig.LoggerFactory?.CreateLogger <ConsulKvEndpoint>())
                {
                    WatchExceptionHandler = WatchExceptionHandler
                };
                var configurationBuilder = new ConfigurationBuilder();
                if (bootstrapConfig != null)
                {
                    configurationBuilder.AddConfiguration(bootstrapConfig);
                }

                var configurationRoot = configurationBuilder
                                        .AddConsul(configurationOptions, consulHandler, consulKvEndpoint)
                                        .Build();

                builder
                .UseConfiguration(configurationRoot);
            }

            builder
            .ConfigureServices(ConfigureServices(nethiumConfig, consulHandler, consulBuilder))
            .ConfigureAppConfiguration(ConfigureAppConfiguration(configurationOptions, nethiumConfig, consulHandler,
                                                                 consulBuilder));
            return(builder);
        }
Exemple #32
0
 private static void ConsulConfig(ConsulClientConfiguration c)
 {
     c.Address    = new Uri("http://127.0.0.1:8500"); //consul所在的服务器
     c.Datacenter = "dc1";                            //设置数据中心的名称
 }
Exemple #33
0
 private void ConsulConfig(ConsulClientConfiguration c)
 {
     c.Address    = new Uri("http://127.0.0.1:8500");
     c.Datacenter = "dc1";
     c.Token      = "p2BE1AtpwPbrxZdC6k+eXA==";
 }
Exemple #34
0
 /// <summary>
 /// 返回consul配置节
 /// </summary>
 /// <param name="obj"></param>
 private static void ConfigurationOverview(ConsulClientConfiguration obj)
 {
     obj.Address    = new Uri(OxygenSetting.ConsulAddress);
     obj.Datacenter = "dc1";
 }
 private static void ConfigurationOverview(ConsulClientConfiguration obj)
 {
     obj.Address    = new Uri("http://127.0.0.1:8500");
     obj.Datacenter = "dc1";
 }
Exemple #36
0
        public async Task Client_ReuseAndUpdateConfig()
        {
            var config = new ConsulClientConfiguration();

            using (var client = new ConsulClient(config))
            {
                config.DisableServerCertificateValidation = true;
                await client.KV.Put(new KVPair("kv/reuseconfig") { Flags = 1000 });
                Assert.Equal<ulong>(1000, (await client.KV.Get("kv/reuseconfig")).Response.Flags);
                Assert.True((client.Handler as WebRequestHandler).ServerCertificateValidationCallback(null, null, null,
                    SslPolicyErrors.RemoteCertificateChainErrors));
            }

            using (var client = new ConsulClient(config))
            {
                config.DisableServerCertificateValidation = false;
                await client.KV.Put(new KVPair("kv/reuseconfig") { Flags = 2000 });
                Assert.Equal<ulong>(2000, (await client.KV.Get("kv/reuseconfig")).Response.Flags);
                Assert.Null((client.Handler as WebRequestHandler).ServerCertificateValidationCallback);
            }

            using (var client = new ConsulClient(config))
            {
                await client.KV.Delete("kv/reuseconfig");
            }
        }