Example #1
0
        public void Catalog_RegistrationDeregistration()
        {
            var c = ClientTest.MakeClient();
            var service = new AgentService()
            {
                ID = "redis1",
                Service = "redis",
                Tags = new[] {"master", "v1"},
                Port = 8000
            };

            var check = new AgentCheck()
            {
                Node = "foobar",
                CheckID = "service:redis1",
                Name = "Redis health check",
                Notes = "Script based health check",
                Status = CheckStatus.Passing,
                ServiceID = "redis1"
            };

            var reg = new CatalogRegistration()
            {
                Datacenter = "dc1",
                Node = "foobar",
                Address = "192.168.10.10",
                Service = service,
                Check = check
            };

            c.Catalog.Register(reg);

            var node = c.Catalog.Node("foobar");
            Assert.IsTrue(node.Response.Services.ContainsKey("redis1"));

            var health = c.Health.Node("foobar");
            Assert.AreEqual("service:redis1", health.Response[0].CheckID);

            var dereg = new CatalogDeregistration()
            {
                Datacenter = "dc1",
                Node = "foobar",
                Address = "192.168.10.10",
                CheckID = "service:redis1"
            };

            c.Catalog.Deregister(dereg);

            health = c.Health.Node("foobar");
            Assert.AreEqual(0, health.Response.Length);

            dereg = new CatalogDeregistration()
            {
                Datacenter = "dc1",
                Node = "foobar",
                Address = "192.168.10.10"
            };

            c.Catalog.Deregister(dereg);

            node = c.Catalog.Node("foobar");
            Assert.IsNull(node.Response);
        }
        public async Task PreparedQuery_Test()
        {
            var client = new ConsulClient();

            var registration = new CatalogRegistration()
            {
                Datacenter = "dc1",
                Node = "foobar",
                Address = "192.168.10.10",
                Service = new AgentService()
                {
                    ID = "redis1",
                    Service = "redis",
                    Tags = new[] { "master", "v1" },
                    Port = 8000
                }
            };

            await client.Catalog.Register(registration);

            Assert.NotNull((await client.Catalog.Node("foobar")).Response);

            var mgmtquerytoken = new QueryOptions() { Token = "yep" };

            var def = new PreparedQueryDefinition { Service = new ServiceQuery() { Service = "redis" } };

            var id = (await client.PreparedQuery.Create(def)).Response;
            def.ID = id;

            var defs = (await client.PreparedQuery.Get(id)).Response;

            Assert.NotNull(defs);
            Assert.True(defs.Length == 1);
            Assert.Equal(def.Service.Service, defs[0].Service.Service);

            defs = null;
            defs = (await client.PreparedQuery.List(mgmtquerytoken)).Response;

            Assert.NotNull(defs);
            Assert.True(defs.Length == 1);
            Assert.Equal(def.Service.Service, defs[0].Service.Service);

            def.Name = "my-query";

            await client.PreparedQuery.Update(def);

            defs = null;
            defs = (await client.PreparedQuery.Get(id)).Response;

            Assert.NotNull(defs);
            Assert.True(defs.Length == 1);
            Assert.Equal(def.Name, defs[0].Name);

            var results = (await client.PreparedQuery.Execute(id)).Response;

            Assert.NotNull(results);
            Assert.True(results.Nodes.Length == 1);
            Assert.Equal(results.Nodes[0].Node.Name, "foobar");

            results = null;
            results = (await client.PreparedQuery.Execute("my-query")).Response;

            Assert.NotNull(results);
            Assert.True(results.Nodes.Length == 1);
            Assert.Equal(results.Nodes[0].Node.Name, "foobar");

            await client.PreparedQuery.Delete(id);

            defs = null;
            defs = (await client.PreparedQuery.List(mgmtquerytoken)).Response;

            Assert.True(defs.Length == 0);
        }
Example #3
0
        public async Task Catalog_EnableTagOverride()
        {
            var service = new AgentService()
            {
                ID = "redis1",
                Service = "redis",
                Tags = new[] { "master", "v1" },
                Port = 8000
            };

            var registration = new CatalogRegistration()
            {
                Datacenter = "dc1",
                Node = "foobar",
                Address = "192.168.10.10",
                Service = service
            };

            using (IConsulClient client = new ConsulClient())
            {
                await client.Catalog.Register(registration);

                var node = await client.Catalog.Node("foobar");

                Assert.Contains("redis1", node.Response.Services.Keys);
                Assert.False(node.Response.Services["redis1"].EnableTagOverride);

                var services = await client.Catalog.Service("redis");

                Assert.NotEmpty(services.Response);
                Assert.Equal("redis", services.Response[0].ServiceName);

                Assert.False(services.Response[0].ServiceEnableTagOverride);
            }

            // Use a new scope
            using (IConsulClient client = new ConsulClient())
            {
                service.EnableTagOverride = true;

                await client.Catalog.Register(registration);
                var node = await client.Catalog.Node("foobar");

                Assert.Contains("redis1", node.Response.Services.Keys);
                Assert.True(node.Response.Services["redis1"].EnableTagOverride);

                var services = await client.Catalog.Service("redis");

                Assert.NotEmpty(services.Response);
                Assert.Equal("redis", services.Response[0].ServiceName);

                Assert.True(services.Response[0].ServiceEnableTagOverride);
            }
        }
Example #4
0
        public async Task Catalog_RegistrationDeregistration()
        {
            var svcID   = KVTest.GenerateTestKeyName();
            var service = new AgentService
            {
                ID      = svcID,
                Service = "redis",
                Tags    = new[] { "master", "v1" },
                Port    = 8000
            };

            var check = new AgentCheck
            {
                Node      = "foobar",
                CheckID   = "service:" + svcID,
                Name      = "Redis health check",
                Notes     = "Script based health check",
                Status    = HealthStatus.Passing,
                ServiceID = svcID
            };

            var registration = new CatalogRegistration
            {
                Datacenter = "dc1",
                Node       = "foobar",
                Address    = "192.168.10.10",
                Service    = service,
                Check      = check
            };

            await _client.Catalog.Register(registration);

            var node = await _client.Catalog.Node("foobar");

            Assert.True(node.Response.Services.ContainsKey(svcID));

            var health = await _client.Health.Node("foobar");

            Assert.Equal("service:" + svcID, health.Response[0].CheckID);

            var dereg = new CatalogDeregistration
            {
                Datacenter = "dc1",
                Node       = "foobar",
                Address    = "192.168.10.10",
                CheckID    = "service:" + svcID
            };

            await _client.Catalog.Deregister(dereg);

            health = await _client.Health.Node("foobar");

            Assert.Empty(health.Response);

            dereg = new CatalogDeregistration
            {
                Datacenter = "dc1",
                Node       = "foobar",
                Address    = "192.168.10.10"
            };

            await _client.Catalog.Deregister(dereg);

            node = await _client.Catalog.Node("foobar");

            Assert.Null(node.Response);
        }
Example #5
0
        public async Task Catalog_EnableTagOverride()
        {
            var svcID   = KVTest.GenerateTestKeyName();
            var service = new AgentService
            {
                ID      = svcID,
                Service = svcID,
                Tags    = new[] { "master", "v1" },
                Port    = 8000
            };

            var registration = new CatalogRegistration
            {
                Datacenter = "dc1",
                Node       = "foobar",
                Address    = "192.168.10.10",
                Service    = service
            };

            using (IConsulClient client = new ConsulClient(c =>
            {
                c.Token = TestHelper.MasterToken;
                c.Address = TestHelper.HttpUri;
            }))
            {
                await client.Catalog.Register(registration);

                var node = await client.Catalog.Node("foobar");

                Assert.Contains(svcID, node.Response.Services.Keys);
                Assert.False(node.Response.Services[svcID].EnableTagOverride);

                var services = await client.Catalog.Service(svcID);

                Assert.NotEmpty(services.Response);
                Assert.Equal(svcID, services.Response[0].ServiceName);

                Assert.False(services.Response[0].ServiceEnableTagOverride);
            }

            // Use a new scope
            using (IConsulClient client = new ConsulClient(c =>
            {
                c.Token = TestHelper.MasterToken;
                c.Address = TestHelper.HttpUri;
            }))
            {
                service.EnableTagOverride = true;

                await client.Catalog.Register(registration);

                var node = await client.Catalog.Node("foobar");

                Assert.Contains(svcID, node.Response.Services.Keys);
                Assert.True(node.Response.Services[svcID].EnableTagOverride);

                var services = await client.Catalog.Service(svcID);

                Assert.NotEmpty(services.Response);
                Assert.Equal(svcID, services.Response[0].ServiceName);

                Assert.True(services.Response[0].ServiceEnableTagOverride);
            }
        }
Example #6
0
        public async Task PreparedQuery_Test()
        {
            var client = new ConsulClient();

            var registration = new CatalogRegistration()
            {
                Datacenter = "dc1",
                Node       = "foobaz",
                Address    = "192.168.10.10",
                Service    = new AgentService()
                {
                    ID      = "sql1",
                    Service = "sql",
                    Tags    = new[] { "master", "v1" },
                    Port    = 8000
                }
            };

            await client.Catalog.Register(registration);

            Assert.NotNull((await client.Catalog.Node("foobaz")).Response);

            var mgmtquerytoken = new QueryOptions()
            {
                Token = "yep"
            };

            var def = new PreparedQueryDefinition {
                Service = new ServiceQuery()
                {
                    Service = "sql"
                }
            };

            var id = (await client.PreparedQuery.Create(def)).Response;

            def.ID = id;

            var defs = (await client.PreparedQuery.Get(id)).Response;

            Assert.NotNull(defs);
            Assert.True(defs.Length == 1);
            Assert.Equal(def.Service.Service, defs[0].Service.Service);

            defs = null;
            defs = (await client.PreparedQuery.List(mgmtquerytoken)).Response;

            Assert.NotNull(defs);
            Assert.True(defs.Length == 1);
            Assert.Equal(def.Service.Service, defs[0].Service.Service);

            def.Name = "my-query";

            await client.PreparedQuery.Update(def);

            defs = null;
            defs = (await client.PreparedQuery.Get(id)).Response;

            Assert.NotNull(defs);
            Assert.True(defs.Length == 1);
            Assert.Equal(def.Name, defs[0].Name);

            var results = (await client.PreparedQuery.Execute(id)).Response;

            Assert.NotNull(results);
            var nodes = results.Nodes.Where(n => n.Node.Name == "foobaz").ToArray();

            Assert.True(nodes.Length == 1);
            Assert.Equal(nodes[0].Node.Name, "foobaz");

            results = null;
            results = (await client.PreparedQuery.Execute("my-query")).Response;

            Assert.NotNull(results);
            nodes = results.Nodes.Where(n => n.Node.Name == "foobaz").ToArray();
            Assert.True(nodes.Length == 1);
            Assert.Equal(results.Nodes[0].Node.Name, "foobaz");

            await client.PreparedQuery.Delete(id);

            defs = null;
            defs = (await client.PreparedQuery.List(mgmtquerytoken)).Response;

            Assert.True(defs.Length == 0);
        }
        public async Task <bool> CatalogRegister(CatalogRegistration reg, WriteOptions q)
        {
            var result = await _consulClient.Catalog.Register(reg, q);

            return(result.StatusCode == HttpStatusCode.OK);
        }
Example #8
0
 public Task <WriteResult> Register(CatalogRegistration reg, WriteOptions q, CancellationToken ct = new CancellationToken())
 {
     throw new System.NotImplementedException();
 }