Revision: Rename to 'maglevd'; Refactor config structure

This commit is contained in:
2026-04-10 22:15:20 +02:00
parent b84b3274b1
commit 040d6f5853
16 changed files with 2852 additions and 1942 deletions

View File

@@ -1,78 +0,0 @@
syntax = "proto3";
package healthchecker;
option go_package = "git.ipng.ch/ipng/vpp-maglev/internal/grpcapi";
// HealthChecker exposes the state of backend health for all VIPs.
service HealthChecker {
rpc ListVIPs(ListVIPsRequest) returns (ListVIPsResponse);
rpc GetVIP(GetVIPRequest) returns (VIPInfo);
rpc ListBackends(ListBackendsRequest) returns (ListBackendsResponse);
rpc GetBackend(GetBackendRequest) returns (BackendInfo);
rpc PauseBackend(PauseResumeRequest) returns (BackendInfo);
rpc ResumeBackend(PauseResumeRequest) returns (BackendInfo);
rpc WatchTransitions(WatchRequest) returns (stream TransitionEvent);
}
// ---- requests ---------------------------------------------------------------
message ListVIPsRequest {}
message GetVIPRequest {
string vip_name = 1;
}
message ListBackendsRequest {
string vip_name = 1;
}
message GetBackendRequest {
string vip_name = 1;
string backend_address = 2;
}
message PauseResumeRequest {
string vip_name = 1;
string backend_address = 2;
}
message WatchRequest {}
// ---- responses --------------------------------------------------------------
message ListVIPsResponse {
repeated string vip_names = 1;
}
message VIPInfo {
string name = 1;
string address = 2;
string protocol = 3;
uint32 port = 4;
repeated string backends = 5;
string description = 6;
}
message ListBackendsResponse {
repeated BackendInfo backends = 1;
}
message BackendInfo {
string vip_name = 1;
string address = 2;
string state = 3;
repeated TransitionRecord transitions = 4;
}
message TransitionRecord {
string from = 1;
string to = 2;
int64 at_unix_ns = 3;
}
message TransitionEvent {
string vip_name = 1;
string backend_address = 2;
TransitionRecord transition = 3;
}

120
proto/maglev.proto Normal file
View File

@@ -0,0 +1,120 @@
syntax = "proto3";
package maglev;
option go_package = "git.ipng.ch/ipng/vpp-maglev/internal/grpcapi";
// Maglev exposes the state of backend health for all frontends.
service Maglev {
rpc ListFrontends(ListFrontendsRequest) returns (ListFrontendsResponse);
rpc GetFrontend(GetFrontendRequest) returns (FrontendInfo);
rpc ListBackends(ListBackendsRequest) returns (ListBackendsResponse);
rpc GetBackend(GetBackendRequest) returns (BackendInfo);
rpc PauseBackend(PauseResumeRequest) returns (BackendInfo);
rpc ResumeBackend(PauseResumeRequest) returns (BackendInfo);
rpc ListHealthChecks(ListHealthChecksRequest) returns (ListHealthChecksResponse);
rpc GetHealthCheck(GetHealthCheckRequest) returns (HealthCheckInfo);
rpc WatchBackendEvents(WatchRequest) returns (stream BackendEvent);
}
// ---- requests ---------------------------------------------------------------
message ListFrontendsRequest {}
message GetFrontendRequest {
string name = 1;
}
message ListBackendsRequest {}
message GetBackendRequest {
string name = 1;
}
message PauseResumeRequest {
string name = 1;
}
message ListHealthChecksRequest {}
message GetHealthCheckRequest {
string name = 1;
}
message WatchRequest {}
// ---- responses --------------------------------------------------------------
message ListFrontendsResponse {
repeated string frontend_names = 1;
}
message FrontendInfo {
string name = 1;
string address = 2;
string protocol = 3;
uint32 port = 4;
repeated string backend_names = 5;
string description = 6;
}
message ListBackendsResponse {
repeated string backend_names = 1;
}
message ListHealthChecksResponse {
repeated string names = 1;
}
message HTTPCheckParams {
string path = 1;
string host = 2;
int32 response_code_min = 3;
int32 response_code_max = 4;
string response_regexp = 5;
string server_name = 6;
bool insecure_skip_verify = 7;
}
message TCPCheckParams {
bool ssl = 1;
string server_name = 2;
bool insecure_skip_verify = 3;
}
message HealthCheckInfo {
string name = 1;
string type = 2;
uint32 port = 3;
string probe_ipv4_src = 4;
string probe_ipv6_src = 5;
int64 interval_ns = 6;
int64 fast_interval_ns = 7;
int64 down_interval_ns = 8;
int64 timeout_ns = 9;
int32 rise = 10;
int32 fall = 11;
HTTPCheckParams http = 12;
TCPCheckParams tcp = 13;
}
message BackendInfo {
string name = 1;
string address = 2;
string state = 3;
repeated TransitionRecord transitions = 4;
bool enabled = 5;
int32 weight = 6;
string healthcheck = 7;
}
message TransitionRecord {
string from = 1;
string to = 2;
int64 at_unix_ns = 3;
}
message BackendEvent {
string backend_name = 1;
TransitionRecord transition = 2;
}