dotnet-etcd
3.0.0-beta
See the version list below for details.
dotnet add package dotnet-etcd --version 3.0.0-beta
NuGet\Install-Package dotnet-etcd -Version 3.0.0-beta
<PackageReference Include="dotnet-etcd" Version="3.0.0-beta" />
paket add dotnet-etcd --version 3.0.0-beta
#r "nuget: dotnet-etcd, 3.0.0-beta"
// Install dotnet-etcd as a Cake Addin #addin nuget:?package=dotnet-etcd&version=3.0.0-beta&prerelease // Install dotnet-etcd as a Cake Tool #tool nuget:?package=dotnet-etcd&version=3.0.0-beta&prerelease
dotnet-etcd
A C# .NET (dotnet) GRPC client for etcd v3+
Supported .NET Versions
- .NETCoreApp 2.2
- .NETCoreApp 2.1
- .NETCoreApp 2.0
- .NETStandard 2.0
- .NETFramework 4.7.2
- .NETFramework 4.7.1
- .NETFramework 4.7
- .NETFramework 4.6.2
- .NETFramework 4.6.1
- .NETFramework 4.6
- .NETFramework 4.5.2
- .NETFramework 4.5.1
- .NETFramework 4.5
Installing Package
Nuget package is published on nuget.org and can be installed in the following ways :
Nuget Package Manager
Install-Package dotnet-etcd
.NET CLI
dotnet add package dotnet-etcd
Paket CLI
paket add dotnet-etcd
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Usage :
Add using statement at the top of your class file
using dotnet_etcd;
Client Initialization
No Basic auth or SSL
EtcdClient client = new EtcdClient(<HOSTNAME_STRING>, <PORTNO_INT>);
// E.g.
EtcdClient client = new EtcdClient("127.0.0.1", 2379);
Available Constructor Parameters
- username - String containing username for etcd basic auth. Default : Empty String
- password - String containing password for etcd basic auth. Default : Empty String
- caCert - String containing ca cert when using self signed certificates with etcd. Default : EmptyString
- clientCert - String containing client cert when using self signed certificates with client auth enabled in etcd. Default : EmptyString
- clientKey - String containing client key when using self signed certificates with client auth enabled in etcd. Default : EmptyString
- publicRootCa - Bool depicting whether to use publicy trusted roots to connect to etcd. Default : false.
Operations
A lot of methods have been implemented using etcd's default input/output parameters. I am simplifying a lot of methods by including more overloads as I come across use cases. If you have some, please feel free to raise and issue or a PR 😃
Key-Value Operations
Put a key
client.Put(<KEY_STRING>,<VALUE_STRING>);
// E.g Put key "foo/bar" with value "foobar"
client.Put("foo/bar","barfoo");
await client.PutAsync(<KEY_STRING>,<VALUE_STRING>);
// E.g Put key "foo/bar" with value "foobar" in async
await client.PutAsync("foo/bar","barfoo");
Get a key
client.GetVal(<KEY_STRING>);
// E.g Get key "foo/bar"
client.GetVal("foo/bar");
// To get full etcd response
client.Get("foo/bar");
await client.GetValAsync(<KEY_STRING>);
// E.g. Get key "foo/bar" in async
await client.GetValAsync("foo/bar");
// To get full etcd response
await client.GetAsync("foo/bar");
Get multiple keys with a common prefix
client.GetRange(<PREFIX_STRING>);
// E.g. Get all keys with pattern "foo/*"
client.GetRange("foo/");
await client.GetRangeAsync(<PREFIX_STRING>);
// E.g. Get all keys with pattern "foo/*" in async
await client.GetRangeAsync("foo/");
Delete a key
client.Delete(<KEY_STRING>);
// E.g. Delete key "foo/bar"
client.Delete("foo/bar");
await client.DeleteAsync(<KEY_STRING>);
// E.g. Delete key "foo/bar" in async
await client.DeleteAsync("foo/bar");
Delete multiple keys with a common prefix
client.DeleteRange(<PREFIX_STRING>);
// E.g. Delete all keys with pattern "foo/*"
client.DeleteRange("foo/");
await client.DeleteRangeAsync(<PREFIX_STRING>);
// E.g. Delete all keys with pattern "foo/*" in async
await client.DeleteRangeAsync("foo/");
Watch Operations
Watch a key
WatchRequest request = new WatchRequest()
{
CreateRequest = new WatchCreateRequest()
{
Key = ByteString.CopyFromUtf8("foo")
}
};
etcdClient.Watch(request, print);
-------------------------------
// Print function that prints key and value from the watch response
private static void print(WatchResponse response)
{
if (response.Events.Count == 0)
{
Console.WriteLine(response);
}
else
{
Console.WriteLine($"{response.Events[0].Kv.Key.ToStringUtf8()}:{response.Events .Kv.Value.ToStringUtf8()}");
}
}
----------------------------------
// Print function that prints key and value from the minimal watch
// response data
private static void print(WatchEvent[] response)
{
foreach(WatchEvent e1 in response)
{
Console.WriteLine($"{e1.Key}:{e1.Value}:{e1.Type}");
}
}
Watch also has a simple overload as follows
etcdClient.Watch("foo", print);
More overloads are also available. You can check them using IntelliSense (Ctrl+Shift+Space). Detailed documentation coming soon.
Cluster Operations
Add a member into the cluster
MemberAddRequest request = new MemberAddRequest();
request.PeerURLs.Add("http://example.com:2380");
request.PeerURLs.Add("http://10.0.0.1:2380");
MemberAddResponse res = etcdClient.MemberAdd(request);
// Async
MemberAddResponse res = await etcdClient.MemberAddAsync(request);
// Do something with response
Remove an existing member from the cluster
MemberRemoveRequest request = new MemberRemoveRequest
{
// ID of member to be removed
ID = 651748107021
};
MemberRemoveResponse res = etcdClient.MemberRemove(request);
// Async
MemberRemoveResponse res = await etcdClient.MemberRemoveAsync(request);
// Do something with response
Update the member configuration
MemberUpdateRequest request = new MemberUpdateRequest
{
// ID of member to be updated
ID = 651748107021
};
request.PeerURLs.Add("http://10.0.0.1:2380");
MemberUpdateResponse res = etcdClient.MemberUpdate(request);
// Async
MemberUpdateResponse res = await etcdClient.MemberUpdateAsync(request);
// Do something with response
List all the members in the cluster
MemberListRequest request = new MemberListRequest();
etcdClient.MemberList(request);
MemberListResponse res = etcdClient.MemberList(request);
// Async
MemberListResponse res = await etcdClient.MemberListAsync(request);
// Do something with response
foreach(var member in res.Members)
{
Console.WriteLine($"{member.ID} - {member.Name} - {member.PeerURLs}");
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 is compatible. netcoreapp2.1 is compatible. netcoreapp2.2 is compatible. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net45 is compatible. net451 is compatible. net452 is compatible. net46 is compatible. net461 is compatible. net462 is compatible. net463 was computed. net47 is compatible. net471 is compatible. net472 is compatible. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 2.0
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETCoreApp 2.1
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETCoreApp 2.2
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.5
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.5.1
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.5.2
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.6
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.6.1
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.6.2
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.7
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.7.1
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.7.2
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETFramework 4.8
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
-
.NETStandard 2.0
- Google.Protobuf (>= 3.9.1)
- Grpc.Core (>= 2.23.0)
NuGet packages (32)
Showing the top 5 NuGet packages that depend on dotnet-etcd:
Package | Downloads |
---|---|
NetCorePal.Extensions.Snowflake.Etcd
NetCorePal Cloud Framework |
|
cm-catalog-etcd
A CM Catalog implementation using etcd. |
|
Etcd.Configuration
Get configuration from etcd configuration center. |
|
etcd.Provider.Cluster.Extensions
etcd客户端扩展,集群客户端刷新 |
|
Ocelot.Provider.Etcd.Cluster
Provides Ocelot extensions to use etcd |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on dotnet-etcd:
Repository | Stars |
---|---|
netcorepal/netcorepal-cloud-framework
基于 ASP.NET Core 的领域驱动设计微服务架构实现方案
|
Version | Downloads | Last updated |
---|---|---|
7.2.0 | 9,276 | 10/19/2024 |
7.1.1 | 12,088 | 8/4/2024 |
7.1.0 | 101 | 7/30/2024 |
7.0.0 | 762 | 7/14/2024 |
7.0.0-beta | 9,487 | 1/7/2024 |
6.2.0-beta | 24,864 | 12/7/2022 |
6.0.1 | 145,576 | 11/9/2022 |
6.0.0-beta.0 | 3,398 | 9/27/2022 |
5.2.1 | 150,030 | 7/16/2022 |
5.2.0 | 114,098 | 3/2/2022 |
5.1.0 | 70,738 | 10/19/2021 |
5.0.2 | 29,154 | 9/6/2021 |
5.0.2-alpha | 768 | 8/22/2021 |
5.0.0-alpha | 748 | 8/9/2021 |
4.2.0 | 408,803 | 12/8/2020 |
4.1.1 | 86,858 | 7/12/2020 |
4.1.0-beta | 1,111 | 5/31/2020 |
4.0.0-beta | 1,002 | 5/10/2020 |
3.2.0 | 57,680 | 4/6/2020 |
3.1.1 | 11,754 | 3/21/2020 |
3.1.0 | 2,629 | 2/23/2020 |
3.0.0.1-beta | 1,322 | 9/6/2019 |
3.0.0 | 55,249 | 9/24/2019 |
3.0.0-beta | 3,277 | 9/6/2019 |
3.0.0-alpha | 1,052 | 8/11/2019 |
2.3.1 | 178,226 | 3/18/2019 |
2.3.0 | 1,876 | 3/9/2019 |
2.2.0 | 1,518 | 2/17/2019 |
2.1.1 | 1,677 | 2/12/2019 |
2.1.0 | 1,919 | 1/27/2019 |
2.0.1 | 8,081 | 12/9/2018 |
2.0.0 | 1,850 | 11/18/2018 |
1. Update balancer logic
2. Fix header injections