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 PoolBackendInfo { string name = 1; int32 weight = 2; } message PoolInfo { string name = 1; repeated PoolBackendInfo backends = 2; } message FrontendInfo { string name = 1; string address = 2; string protocol = 3; uint32 port = 4; repeated PoolInfo pools = 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; string healthcheck = 6; } message TransitionRecord { string from = 1; string to = 2; int64 at_unix_ns = 3; } message BackendEvent { string backend_name = 1; TransitionRecord transition = 2; }