This commit wires the checker's state machine through to the VPP dataplane:
every backend state transition flows through a single code path that
recomputes the effective per-backend weight (with pool failover) and pushes
the result to VPP. Along the way several latent bugs in the state machine
and the sync path were fixed.
internal/vpp/reconciler.go (new)
- New Reconciler type subscribes to checker.Checker events and, on every
transition, calls Client.SyncLBStateVIP for the affected frontend. This
is the ONLY place in the codebase where backend state changes cause VPP
calls — the "single path" discipline requested during design.
- Defines an EventSource interface (checker.Checker satisfies it) so the
dependency direction stays vpp → checker; the checker never imports vpp.
internal/vpp/client.go
- Renamed ConfigSource → StateSource. The interface now has two methods:
Config() and BackendState(name) — the reconciler and the desired-state
builder both need live health state to compute effective weights.
- SetConfigSource → SetStateSource; internal cfgSrc field → stateSrc.
- New getStateSource() helper for internal locked access.
- lbSyncLoop still uses the state source for its periodic drift
reconciliation; it's fully idempotent and runs the same code path as
event-driven syncs.
internal/vpp/lbsync.go
- desiredAS grows a Flush bool so the mapping function can signal "on
transition to weight 0, flush existing flow-table entries".
- asFromBackend is now the single source of truth for the state →
(weight, flush) rule. Documented with a full truth table. Takes an
activePool parameter so it can distinguish "up in active pool" from
"up but standby".
- activePoolIndex(fe, states) implements priority failover: returns the
index of the first pool containing any StateUp backend. pool[0] wins
when at least one member is up; pool[1] takes over when pool[0] is
empty; and so on. Defaults to 0 (unobservable, since all backends map
to weight 0 when nothing is up).
- desiredFromFrontend snapshots backend states once, computes activePool,
then walks every backend through asFromBackend. No more filtering on
b.Enabled — disabled backends stay in the desired set so they keep
their AS entry in VPP with weight=0. The previous filter caused delAS
on disable, which destroyed the entry and broke enable afterwards.
- EffectiveWeights(fe, src) exported helper that returns the per-pool
per-backend weight map for one frontend. Used by the gRPC GetFrontend
handler and robot tests to observe failover without touching VPP.
- reconcileVIP computes flush at the weight-change call site:
flush = desired.Flush && cur.Weight > 0 && desired.Weight == 0
This ensures only the *transition* to disabled flushes sessions —
steady-state syncs with already-zero weight skip the call entirely.
- setASWeight now plumbs IsFlush into lb_as_set_weight.
internal/vpp/lbsync_test.go (new)
- TestAsFromBackend: 15 cases locking down the truth table, including
failover scenarios (up in standby pool, up promoted in pool[1]).
- TestActivePoolIndex: 8 cases covering pool[0]-has-up, pool[0]-all-down,
all-disabled, all-paused, all-unknown, nothing-up-anywhere, and
three-tier failover.
- TestDesiredFromFrontendFailover: 5 end-to-end scenarios wiring a fake
StateSource through desiredFromFrontend and asserting the final
per-IP weight map. Exercises the complete pipeline without VPP.
internal/checker/checker.go
- Added BackendState(name) (health.State, bool) — one-line method that
satisfies vpp.StateSource. The checker is otherwise unchanged.
- EnableBackend rewritten to reuse the existing worker (parallel to
ResumeBackend). The old code called startWorker which constructed a
brand-new Backend via health.New, throwing away the transition
history; the resulting 'backend-transition' log showed the bogus
from=unknown,to=unknown. Now uses w.backend.Enable() to record a
proper disabled→unknown transition and launches a fresh goroutine.
- Static (no-healthcheck) backends now fire their synthetic 'always up'
pass on the first iteration of runProbe instead of sleeping 30s
first. Previously static backends sat in StateUnknown for 30s after
startup — useless for deterministic testing and surprising for
operators. The fix is a simple first-iteration flag.
internal/health/state.go
- New Enable(maxHistory) method parallel to Disable. Transitions the
backend from whatever state it's in (typically StateDisabled) to
StateUnknown, resets the health counter to rise-1 so the expedited
resolution kicks in on the first probe result, and emits a transition
with code 'enabled'.
proto/maglev.proto
- PoolBackendInfo gains effective_weight: the state-aware weight that
would be programmed into VPP (distinct from the configured weight in
the YAML). Exposed via GetFrontend.
internal/grpcapi/server.go
- frontendToProto takes a vpp.StateSource, computes effective weights
via vpp.EffectiveWeights, and populates PoolBackendInfo.EffectiveWeight.
- GetFrontend and SetFrontendPoolBackendWeight updated to pass the
checker in.
cmd/maglevc/commands.go
- 'show frontends <name>' now renders every pool backend row as
<name> weight <cfg> effective <eff> [disabled]?
so both values are always visible. The VPP-style key/value format
avoids the ANSI-alignment pitfall we hit earlier and makes the output
regex-parseable for robot tests.
cmd/maglevd/main.go
- Construct and start the Reconciler alongside the VPP client. Two
extra lines, no other changes to startup.
tests/01-maglevd/maglevd-lab/maglev.yaml
- Two new static backends (static-primary, static-fallback) and a new
failover-vip frontend with one backend per pool. No healthcheck, so
the state machine resolves them to 'up' immediately via the synthetic
pass. Used by the failover robot tests.
tests/01-maglevd/01-healthcheck.robot
- Three new test cases exercising pool failover end-to-end:
1. primary up, secondary standby (initial state)
2. disable primary → fallback takes over (effective weight flips)
3. enable primary → fallback steps back
All run without VPP: they scrape 'maglevc show frontends <name>' and
regex-match the effective weight in the output. Deterministic and
fast (~2s total) because the static backends don't probe.
- Two helper keywords: Static Backend Should Be Up and
Effective Weight Should Be.
Net result: 16/16 robot tests pass. Backend state transitions now
flow through a single documented path (checker event → reconciler →
SyncLBStateVIP → desiredFromFrontend → asFromBackend → reconcileVIP →
setASWeight), and the pool failover / enable-after-disable / static-
backend-startup bugs are all fixed.
2570 lines
77 KiB
Go
2570 lines
77 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// versions:
|
|
// protoc-gen-go v1.36.11
|
|
// protoc v3.21.12
|
|
// source: proto/maglev.proto
|
|
|
|
package grpcapi
|
|
|
|
import (
|
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
reflect "reflect"
|
|
sync "sync"
|
|
unsafe "unsafe"
|
|
)
|
|
|
|
const (
|
|
// Verify that this generated code is sufficiently up-to-date.
|
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
)
|
|
|
|
type ListFrontendsRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListFrontendsRequest) Reset() {
|
|
*x = ListFrontendsRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[0]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListFrontendsRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListFrontendsRequest) ProtoMessage() {}
|
|
|
|
func (x *ListFrontendsRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[0]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ListFrontendsRequest.ProtoReflect.Descriptor instead.
|
|
func (*ListFrontendsRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
type GetFrontendRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetFrontendRequest) Reset() {
|
|
*x = GetFrontendRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetFrontendRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetFrontendRequest) ProtoMessage() {}
|
|
|
|
func (x *GetFrontendRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[1]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GetFrontendRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetFrontendRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *GetFrontendRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ListBackendsRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListBackendsRequest) Reset() {
|
|
*x = ListBackendsRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[2]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListBackendsRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListBackendsRequest) ProtoMessage() {}
|
|
|
|
func (x *ListBackendsRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[2]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ListBackendsRequest.ProtoReflect.Descriptor instead.
|
|
func (*ListBackendsRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
type GetBackendRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetBackendRequest) Reset() {
|
|
*x = GetBackendRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[3]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetBackendRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetBackendRequest) ProtoMessage() {}
|
|
|
|
func (x *GetBackendRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[3]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GetBackendRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetBackendRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
func (x *GetBackendRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type BackendRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *BackendRequest) Reset() {
|
|
*x = BackendRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[4]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BackendRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BackendRequest) ProtoMessage() {}
|
|
|
|
func (x *BackendRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[4]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use BackendRequest.ProtoReflect.Descriptor instead.
|
|
func (*BackendRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
func (x *BackendRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ListHealthChecksRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListHealthChecksRequest) Reset() {
|
|
*x = ListHealthChecksRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[5]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListHealthChecksRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListHealthChecksRequest) ProtoMessage() {}
|
|
|
|
func (x *ListHealthChecksRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[5]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ListHealthChecksRequest.ProtoReflect.Descriptor instead.
|
|
func (*ListHealthChecksRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{5}
|
|
}
|
|
|
|
type GetHealthCheckRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetHealthCheckRequest) Reset() {
|
|
*x = GetHealthCheckRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[6]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetHealthCheckRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetHealthCheckRequest) ProtoMessage() {}
|
|
|
|
func (x *GetHealthCheckRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[6]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GetHealthCheckRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetHealthCheckRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{6}
|
|
}
|
|
|
|
func (x *GetHealthCheckRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type CheckConfigRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *CheckConfigRequest) Reset() {
|
|
*x = CheckConfigRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[7]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *CheckConfigRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*CheckConfigRequest) ProtoMessage() {}
|
|
|
|
func (x *CheckConfigRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[7]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use CheckConfigRequest.ProtoReflect.Descriptor instead.
|
|
func (*CheckConfigRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{7}
|
|
}
|
|
|
|
type CheckConfigResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`
|
|
ParseError string `protobuf:"bytes,2,opt,name=parse_error,json=parseError,proto3" json:"parse_error,omitempty"` // set when YAML cannot be read or parsed
|
|
SemanticError string `protobuf:"bytes,3,opt,name=semantic_error,json=semanticError,proto3" json:"semantic_error,omitempty"` // set when YAML is valid but semantically incorrect
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *CheckConfigResponse) Reset() {
|
|
*x = CheckConfigResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[8]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *CheckConfigResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*CheckConfigResponse) ProtoMessage() {}
|
|
|
|
func (x *CheckConfigResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[8]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use CheckConfigResponse.ProtoReflect.Descriptor instead.
|
|
func (*CheckConfigResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{8}
|
|
}
|
|
|
|
func (x *CheckConfigResponse) GetOk() bool {
|
|
if x != nil {
|
|
return x.Ok
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *CheckConfigResponse) GetParseError() string {
|
|
if x != nil {
|
|
return x.ParseError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *CheckConfigResponse) GetSemanticError() string {
|
|
if x != nil {
|
|
return x.SemanticError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ReloadConfigRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ReloadConfigRequest) Reset() {
|
|
*x = ReloadConfigRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[9]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ReloadConfigRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ReloadConfigRequest) ProtoMessage() {}
|
|
|
|
func (x *ReloadConfigRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[9]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ReloadConfigRequest.ProtoReflect.Descriptor instead.
|
|
func (*ReloadConfigRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{9}
|
|
}
|
|
|
|
type ReloadConfigResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`
|
|
ParseError string `protobuf:"bytes,2,opt,name=parse_error,json=parseError,proto3" json:"parse_error,omitempty"` // set when YAML cannot be read or parsed
|
|
SemanticError string `protobuf:"bytes,3,opt,name=semantic_error,json=semanticError,proto3" json:"semantic_error,omitempty"` // set when YAML is valid but semantically incorrect
|
|
ReloadError string `protobuf:"bytes,4,opt,name=reload_error,json=reloadError,proto3" json:"reload_error,omitempty"` // set when config is valid but the reload itself failed
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) Reset() {
|
|
*x = ReloadConfigResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[10]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ReloadConfigResponse) ProtoMessage() {}
|
|
|
|
func (x *ReloadConfigResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[10]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ReloadConfigResponse.ProtoReflect.Descriptor instead.
|
|
func (*ReloadConfigResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{10}
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetOk() bool {
|
|
if x != nil {
|
|
return x.Ok
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetParseError() string {
|
|
if x != nil {
|
|
return x.ParseError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetSemanticError() string {
|
|
if x != nil {
|
|
return x.SemanticError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetReloadError() string {
|
|
if x != nil {
|
|
return x.ReloadError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type GetVPPInfoRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetVPPInfoRequest) Reset() {
|
|
*x = GetVPPInfoRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[11]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetVPPInfoRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetVPPInfoRequest) ProtoMessage() {}
|
|
|
|
func (x *GetVPPInfoRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[11]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GetVPPInfoRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetVPPInfoRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{11}
|
|
}
|
|
|
|
type VPPInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
|
|
BuildDate string `protobuf:"bytes,2,opt,name=build_date,json=buildDate,proto3" json:"build_date,omitempty"`
|
|
BuildDirectory string `protobuf:"bytes,3,opt,name=build_directory,json=buildDirectory,proto3" json:"build_directory,omitempty"`
|
|
Pid uint32 `protobuf:"varint,4,opt,name=pid,proto3" json:"pid,omitempty"`
|
|
BoottimeNs int64 `protobuf:"varint,5,opt,name=boottime_ns,json=boottimeNs,proto3" json:"boottime_ns,omitempty"` // unix timestamp (ns) when VPP started (from /sys/boottime)
|
|
ConnecttimeNs int64 `protobuf:"varint,6,opt,name=connecttime_ns,json=connecttimeNs,proto3" json:"connecttime_ns,omitempty"` // unix timestamp (ns) when maglevd connected to VPP
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPInfo) Reset() {
|
|
*x = VPPInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[12]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPInfo) ProtoMessage() {}
|
|
|
|
func (x *VPPInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[12]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use VPPInfo.ProtoReflect.Descriptor instead.
|
|
func (*VPPInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{12}
|
|
}
|
|
|
|
func (x *VPPInfo) GetVersion() string {
|
|
if x != nil {
|
|
return x.Version
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPInfo) GetBuildDate() string {
|
|
if x != nil {
|
|
return x.BuildDate
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPInfo) GetBuildDirectory() string {
|
|
if x != nil {
|
|
return x.BuildDirectory
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPInfo) GetPid() uint32 {
|
|
if x != nil {
|
|
return x.Pid
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPInfo) GetBoottimeNs() int64 {
|
|
if x != nil {
|
|
return x.BoottimeNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPInfo) GetConnecttimeNs() int64 {
|
|
if x != nil {
|
|
return x.ConnecttimeNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type GetVPPLBStateRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetVPPLBStateRequest) Reset() {
|
|
*x = GetVPPLBStateRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[13]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetVPPLBStateRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetVPPLBStateRequest) ProtoMessage() {}
|
|
|
|
func (x *GetVPPLBStateRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[13]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GetVPPLBStateRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetVPPLBStateRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{13}
|
|
}
|
|
|
|
// VPPLBConf mirrors VPP's lb_conf_get_reply: global LB plugin settings.
|
|
type VPPLBConf struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ip4SrcAddress string `protobuf:"bytes,1,opt,name=ip4_src_address,json=ip4SrcAddress,proto3" json:"ip4_src_address,omitempty"`
|
|
Ip6SrcAddress string `protobuf:"bytes,2,opt,name=ip6_src_address,json=ip6SrcAddress,proto3" json:"ip6_src_address,omitempty"`
|
|
StickyBucketsPerCore uint32 `protobuf:"varint,3,opt,name=sticky_buckets_per_core,json=stickyBucketsPerCore,proto3" json:"sticky_buckets_per_core,omitempty"`
|
|
FlowTimeout uint32 `protobuf:"varint,4,opt,name=flow_timeout,json=flowTimeout,proto3" json:"flow_timeout,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBConf) Reset() {
|
|
*x = VPPLBConf{}
|
|
mi := &file_proto_maglev_proto_msgTypes[14]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBConf) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBConf) ProtoMessage() {}
|
|
|
|
func (x *VPPLBConf) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[14]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use VPPLBConf.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBConf) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{14}
|
|
}
|
|
|
|
func (x *VPPLBConf) GetIp4SrcAddress() string {
|
|
if x != nil {
|
|
return x.Ip4SrcAddress
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBConf) GetIp6SrcAddress() string {
|
|
if x != nil {
|
|
return x.Ip6SrcAddress
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBConf) GetStickyBucketsPerCore() uint32 {
|
|
if x != nil {
|
|
return x.StickyBucketsPerCore
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBConf) GetFlowTimeout() uint32 {
|
|
if x != nil {
|
|
return x.FlowTimeout
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// VPPLBAS is one application server attached to a VIP.
|
|
type VPPLBAS struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
|
|
Weight uint32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` // 0-100
|
|
Flags uint32 `protobuf:"varint,3,opt,name=flags,proto3" json:"flags,omitempty"` // VPP AS flags (bit 0 = used, bit 1 = flushed)
|
|
NumBuckets uint32 `protobuf:"varint,4,opt,name=num_buckets,json=numBuckets,proto3" json:"num_buckets,omitempty"`
|
|
InUseSinceNs int64 `protobuf:"varint,5,opt,name=in_use_since_ns,json=inUseSinceNs,proto3" json:"in_use_since_ns,omitempty"` // unix timestamp (ns), 0 if never used
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBAS) Reset() {
|
|
*x = VPPLBAS{}
|
|
mi := &file_proto_maglev_proto_msgTypes[15]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBAS) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBAS) ProtoMessage() {}
|
|
|
|
func (x *VPPLBAS) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[15]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use VPPLBAS.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBAS) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{15}
|
|
}
|
|
|
|
func (x *VPPLBAS) GetAddress() string {
|
|
if x != nil {
|
|
return x.Address
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBAS) GetWeight() uint32 {
|
|
if x != nil {
|
|
return x.Weight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBAS) GetFlags() uint32 {
|
|
if x != nil {
|
|
return x.Flags
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBAS) GetNumBuckets() uint32 {
|
|
if x != nil {
|
|
return x.NumBuckets
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBAS) GetInUseSinceNs() int64 {
|
|
if x != nil {
|
|
return x.InUseSinceNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// VPPLBVIP mirrors VPP's lb_vip_details plus the attached application servers.
|
|
// Note: srv_type, dscp, and target_port are intentionally omitted — maglevd
|
|
// only supports GRE encap, so NAT/L3DSR-specific fields don't apply.
|
|
type VPPLBVIP struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` // CIDR, e.g. 192.0.2.1/32
|
|
Protocol uint32 `protobuf:"varint,2,opt,name=protocol,proto3" json:"protocol,omitempty"` // 6=TCP, 17=UDP, 255=any
|
|
Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` // 0 = all-port VIP
|
|
Encap string `protobuf:"bytes,4,opt,name=encap,proto3" json:"encap,omitempty"` // gre4|gre6|l3dsr|nat4|nat6
|
|
FlowTableLength uint32 `protobuf:"varint,5,opt,name=flow_table_length,json=flowTableLength,proto3" json:"flow_table_length,omitempty"`
|
|
ApplicationServers []*VPPLBAS `protobuf:"bytes,6,rep,name=application_servers,json=applicationServers,proto3" json:"application_servers,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBVIP) Reset() {
|
|
*x = VPPLBVIP{}
|
|
mi := &file_proto_maglev_proto_msgTypes[16]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBVIP) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBVIP) ProtoMessage() {}
|
|
|
|
func (x *VPPLBVIP) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[16]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use VPPLBVIP.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBVIP) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{16}
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetPrefix() string {
|
|
if x != nil {
|
|
return x.Prefix
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetProtocol() uint32 {
|
|
if x != nil {
|
|
return x.Protocol
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetEncap() string {
|
|
if x != nil {
|
|
return x.Encap
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetFlowTableLength() uint32 {
|
|
if x != nil {
|
|
return x.FlowTableLength
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetApplicationServers() []*VPPLBAS {
|
|
if x != nil {
|
|
return x.ApplicationServers
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type VPPLBState struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Conf *VPPLBConf `protobuf:"bytes,1,opt,name=conf,proto3" json:"conf,omitempty"`
|
|
Vips []*VPPLBVIP `protobuf:"bytes,2,rep,name=vips,proto3" json:"vips,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBState) Reset() {
|
|
*x = VPPLBState{}
|
|
mi := &file_proto_maglev_proto_msgTypes[17]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBState) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBState) ProtoMessage() {}
|
|
|
|
func (x *VPPLBState) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[17]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use VPPLBState.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBState) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{17}
|
|
}
|
|
|
|
func (x *VPPLBState) GetConf() *VPPLBConf {
|
|
if x != nil {
|
|
return x.Conf
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *VPPLBState) GetVips() []*VPPLBVIP {
|
|
if x != nil {
|
|
return x.Vips
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SyncVPPLBStateRequest triggers a reconciliation between the maglev config
|
|
// and the VPP load-balancer dataplane. When frontend_name is set, only that
|
|
// frontend's VIP is synced (SyncLBStateVIP) and no VIPs are removed. When
|
|
// unset, a full reconciliation runs (SyncLBStateAll), which will also remove
|
|
// stale VIPs from VPP.
|
|
type SyncVPPLBStateRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
FrontendName *string `protobuf:"bytes,1,opt,name=frontend_name,json=frontendName,proto3,oneof" json:"frontend_name,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SyncVPPLBStateRequest) Reset() {
|
|
*x = SyncVPPLBStateRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[18]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SyncVPPLBStateRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SyncVPPLBStateRequest) ProtoMessage() {}
|
|
|
|
func (x *SyncVPPLBStateRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[18]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use SyncVPPLBStateRequest.ProtoReflect.Descriptor instead.
|
|
func (*SyncVPPLBStateRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{18}
|
|
}
|
|
|
|
func (x *SyncVPPLBStateRequest) GetFrontendName() string {
|
|
if x != nil && x.FrontendName != nil {
|
|
return *x.FrontendName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type SyncVPPLBStateResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SyncVPPLBStateResponse) Reset() {
|
|
*x = SyncVPPLBStateResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[19]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SyncVPPLBStateResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SyncVPPLBStateResponse) ProtoMessage() {}
|
|
|
|
func (x *SyncVPPLBStateResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[19]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use SyncVPPLBStateResponse.ProtoReflect.Descriptor instead.
|
|
func (*SyncVPPLBStateResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{19}
|
|
}
|
|
|
|
type SetWeightRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Frontend string `protobuf:"bytes,1,opt,name=frontend,proto3" json:"frontend,omitempty"`
|
|
Pool string `protobuf:"bytes,2,opt,name=pool,proto3" json:"pool,omitempty"`
|
|
Backend string `protobuf:"bytes,3,opt,name=backend,proto3" json:"backend,omitempty"`
|
|
Weight int32 `protobuf:"varint,4,opt,name=weight,proto3" json:"weight,omitempty"` // 0-100
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SetWeightRequest) Reset() {
|
|
*x = SetWeightRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[20]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SetWeightRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SetWeightRequest) ProtoMessage() {}
|
|
|
|
func (x *SetWeightRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[20]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use SetWeightRequest.ProtoReflect.Descriptor instead.
|
|
func (*SetWeightRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{20}
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetFrontend() string {
|
|
if x != nil {
|
|
return x.Frontend
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetPool() string {
|
|
if x != nil {
|
|
return x.Pool
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetBackend() string {
|
|
if x != nil {
|
|
return x.Backend
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetWeight() int32 {
|
|
if x != nil {
|
|
return x.Weight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// WatchRequest controls which event types are streamed. All fields default to
|
|
// true (i.e. an empty request subscribes to everything at info level).
|
|
type WatchRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Log *bool `protobuf:"varint,1,opt,name=log,proto3,oneof" json:"log,omitempty"` // include log events (default: true)
|
|
LogLevel string `protobuf:"bytes,2,opt,name=log_level,json=logLevel,proto3" json:"log_level,omitempty"` // minimum log level: debug|info|warn|error (default: info)
|
|
Backend *bool `protobuf:"varint,3,opt,name=backend,proto3,oneof" json:"backend,omitempty"` // include backend transition events (default: true)
|
|
Frontend *bool `protobuf:"varint,4,opt,name=frontend,proto3,oneof" json:"frontend,omitempty"` // include frontend events (default: true)
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *WatchRequest) Reset() {
|
|
*x = WatchRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[21]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *WatchRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*WatchRequest) ProtoMessage() {}
|
|
|
|
func (x *WatchRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[21]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use WatchRequest.ProtoReflect.Descriptor instead.
|
|
func (*WatchRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{21}
|
|
}
|
|
|
|
func (x *WatchRequest) GetLog() bool {
|
|
if x != nil && x.Log != nil {
|
|
return *x.Log
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *WatchRequest) GetLogLevel() string {
|
|
if x != nil {
|
|
return x.LogLevel
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *WatchRequest) GetBackend() bool {
|
|
if x != nil && x.Backend != nil {
|
|
return *x.Backend
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *WatchRequest) GetFrontend() bool {
|
|
if x != nil && x.Frontend != nil {
|
|
return *x.Frontend
|
|
}
|
|
return false
|
|
}
|
|
|
|
type ListFrontendsResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
FrontendNames []string `protobuf:"bytes,1,rep,name=frontend_names,json=frontendNames,proto3" json:"frontend_names,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListFrontendsResponse) Reset() {
|
|
*x = ListFrontendsResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[22]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListFrontendsResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListFrontendsResponse) ProtoMessage() {}
|
|
|
|
func (x *ListFrontendsResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[22]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ListFrontendsResponse.ProtoReflect.Descriptor instead.
|
|
func (*ListFrontendsResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{22}
|
|
}
|
|
|
|
func (x *ListFrontendsResponse) GetFrontendNames() []string {
|
|
if x != nil {
|
|
return x.FrontendNames
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type PoolBackendInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` // configured weight from YAML (0-100)
|
|
EffectiveWeight int32 `protobuf:"varint,3,opt,name=effective_weight,json=effectiveWeight,proto3" json:"effective_weight,omitempty"` // state-aware weight after pool-failover logic
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PoolBackendInfo) Reset() {
|
|
*x = PoolBackendInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[23]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PoolBackendInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PoolBackendInfo) ProtoMessage() {}
|
|
|
|
func (x *PoolBackendInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[23]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use PoolBackendInfo.ProtoReflect.Descriptor instead.
|
|
func (*PoolBackendInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{23}
|
|
}
|
|
|
|
func (x *PoolBackendInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PoolBackendInfo) GetWeight() int32 {
|
|
if x != nil {
|
|
return x.Weight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *PoolBackendInfo) GetEffectiveWeight() int32 {
|
|
if x != nil {
|
|
return x.EffectiveWeight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type PoolInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Backends []*PoolBackendInfo `protobuf:"bytes,2,rep,name=backends,proto3" json:"backends,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PoolInfo) Reset() {
|
|
*x = PoolInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[24]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PoolInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PoolInfo) ProtoMessage() {}
|
|
|
|
func (x *PoolInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[24]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use PoolInfo.ProtoReflect.Descriptor instead.
|
|
func (*PoolInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{24}
|
|
}
|
|
|
|
func (x *PoolInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PoolInfo) GetBackends() []*PoolBackendInfo {
|
|
if x != nil {
|
|
return x.Backends
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type FrontendInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
|
|
Protocol string `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"`
|
|
Port uint32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
|
|
Pools []*PoolInfo `protobuf:"bytes,5,rep,name=pools,proto3" json:"pools,omitempty"`
|
|
Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *FrontendInfo) Reset() {
|
|
*x = FrontendInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[25]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *FrontendInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*FrontendInfo) ProtoMessage() {}
|
|
|
|
func (x *FrontendInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[25]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use FrontendInfo.ProtoReflect.Descriptor instead.
|
|
func (*FrontendInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{25}
|
|
}
|
|
|
|
func (x *FrontendInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetAddress() string {
|
|
if x != nil {
|
|
return x.Address
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetProtocol() string {
|
|
if x != nil {
|
|
return x.Protocol
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *FrontendInfo) GetPools() []*PoolInfo {
|
|
if x != nil {
|
|
return x.Pools
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *FrontendInfo) GetDescription() string {
|
|
if x != nil {
|
|
return x.Description
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ListBackendsResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
BackendNames []string `protobuf:"bytes,1,rep,name=backend_names,json=backendNames,proto3" json:"backend_names,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListBackendsResponse) Reset() {
|
|
*x = ListBackendsResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[26]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListBackendsResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListBackendsResponse) ProtoMessage() {}
|
|
|
|
func (x *ListBackendsResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[26]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ListBackendsResponse.ProtoReflect.Descriptor instead.
|
|
func (*ListBackendsResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{26}
|
|
}
|
|
|
|
func (x *ListBackendsResponse) GetBackendNames() []string {
|
|
if x != nil {
|
|
return x.BackendNames
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type ListHealthChecksResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListHealthChecksResponse) Reset() {
|
|
*x = ListHealthChecksResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[27]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListHealthChecksResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListHealthChecksResponse) ProtoMessage() {}
|
|
|
|
func (x *ListHealthChecksResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[27]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ListHealthChecksResponse.ProtoReflect.Descriptor instead.
|
|
func (*ListHealthChecksResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{27}
|
|
}
|
|
|
|
func (x *ListHealthChecksResponse) GetNames() []string {
|
|
if x != nil {
|
|
return x.Names
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type HTTPCheckParams struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
|
|
Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
|
|
ResponseCodeMin int32 `protobuf:"varint,3,opt,name=response_code_min,json=responseCodeMin,proto3" json:"response_code_min,omitempty"`
|
|
ResponseCodeMax int32 `protobuf:"varint,4,opt,name=response_code_max,json=responseCodeMax,proto3" json:"response_code_max,omitempty"`
|
|
ResponseRegexp string `protobuf:"bytes,5,opt,name=response_regexp,json=responseRegexp,proto3" json:"response_regexp,omitempty"`
|
|
ServerName string `protobuf:"bytes,6,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"`
|
|
InsecureSkipVerify bool `protobuf:"varint,7,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *HTTPCheckParams) Reset() {
|
|
*x = HTTPCheckParams{}
|
|
mi := &file_proto_maglev_proto_msgTypes[28]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *HTTPCheckParams) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*HTTPCheckParams) ProtoMessage() {}
|
|
|
|
func (x *HTTPCheckParams) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[28]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use HTTPCheckParams.ProtoReflect.Descriptor instead.
|
|
func (*HTTPCheckParams) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{28}
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetPath() string {
|
|
if x != nil {
|
|
return x.Path
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetHost() string {
|
|
if x != nil {
|
|
return x.Host
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetResponseCodeMin() int32 {
|
|
if x != nil {
|
|
return x.ResponseCodeMin
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetResponseCodeMax() int32 {
|
|
if x != nil {
|
|
return x.ResponseCodeMax
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetResponseRegexp() string {
|
|
if x != nil {
|
|
return x.ResponseRegexp
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetServerName() string {
|
|
if x != nil {
|
|
return x.ServerName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetInsecureSkipVerify() bool {
|
|
if x != nil {
|
|
return x.InsecureSkipVerify
|
|
}
|
|
return false
|
|
}
|
|
|
|
type TCPCheckParams struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ssl bool `protobuf:"varint,1,opt,name=ssl,proto3" json:"ssl,omitempty"`
|
|
ServerName string `protobuf:"bytes,2,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"`
|
|
InsecureSkipVerify bool `protobuf:"varint,3,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *TCPCheckParams) Reset() {
|
|
*x = TCPCheckParams{}
|
|
mi := &file_proto_maglev_proto_msgTypes[29]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *TCPCheckParams) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*TCPCheckParams) ProtoMessage() {}
|
|
|
|
func (x *TCPCheckParams) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[29]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use TCPCheckParams.ProtoReflect.Descriptor instead.
|
|
func (*TCPCheckParams) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{29}
|
|
}
|
|
|
|
func (x *TCPCheckParams) GetSsl() bool {
|
|
if x != nil {
|
|
return x.Ssl
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *TCPCheckParams) GetServerName() string {
|
|
if x != nil {
|
|
return x.ServerName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *TCPCheckParams) GetInsecureSkipVerify() bool {
|
|
if x != nil {
|
|
return x.InsecureSkipVerify
|
|
}
|
|
return false
|
|
}
|
|
|
|
type HealthCheckInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
|
|
Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
|
|
ProbeIpv4Src string `protobuf:"bytes,4,opt,name=probe_ipv4_src,json=probeIpv4Src,proto3" json:"probe_ipv4_src,omitempty"`
|
|
ProbeIpv6Src string `protobuf:"bytes,5,opt,name=probe_ipv6_src,json=probeIpv6Src,proto3" json:"probe_ipv6_src,omitempty"`
|
|
IntervalNs int64 `protobuf:"varint,6,opt,name=interval_ns,json=intervalNs,proto3" json:"interval_ns,omitempty"`
|
|
FastIntervalNs int64 `protobuf:"varint,7,opt,name=fast_interval_ns,json=fastIntervalNs,proto3" json:"fast_interval_ns,omitempty"`
|
|
DownIntervalNs int64 `protobuf:"varint,8,opt,name=down_interval_ns,json=downIntervalNs,proto3" json:"down_interval_ns,omitempty"`
|
|
TimeoutNs int64 `protobuf:"varint,9,opt,name=timeout_ns,json=timeoutNs,proto3" json:"timeout_ns,omitempty"`
|
|
Rise int32 `protobuf:"varint,10,opt,name=rise,proto3" json:"rise,omitempty"`
|
|
Fall int32 `protobuf:"varint,11,opt,name=fall,proto3" json:"fall,omitempty"`
|
|
Http *HTTPCheckParams `protobuf:"bytes,12,opt,name=http,proto3" json:"http,omitempty"`
|
|
Tcp *TCPCheckParams `protobuf:"bytes,13,opt,name=tcp,proto3" json:"tcp,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *HealthCheckInfo) Reset() {
|
|
*x = HealthCheckInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[30]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *HealthCheckInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*HealthCheckInfo) ProtoMessage() {}
|
|
|
|
func (x *HealthCheckInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[30]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use HealthCheckInfo.ProtoReflect.Descriptor instead.
|
|
func (*HealthCheckInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{30}
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetType() string {
|
|
if x != nil {
|
|
return x.Type
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetProbeIpv4Src() string {
|
|
if x != nil {
|
|
return x.ProbeIpv4Src
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetProbeIpv6Src() string {
|
|
if x != nil {
|
|
return x.ProbeIpv6Src
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetIntervalNs() int64 {
|
|
if x != nil {
|
|
return x.IntervalNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetFastIntervalNs() int64 {
|
|
if x != nil {
|
|
return x.FastIntervalNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetDownIntervalNs() int64 {
|
|
if x != nil {
|
|
return x.DownIntervalNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetTimeoutNs() int64 {
|
|
if x != nil {
|
|
return x.TimeoutNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetRise() int32 {
|
|
if x != nil {
|
|
return x.Rise
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetFall() int32 {
|
|
if x != nil {
|
|
return x.Fall
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetHttp() *HTTPCheckParams {
|
|
if x != nil {
|
|
return x.Http
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetTcp() *TCPCheckParams {
|
|
if x != nil {
|
|
return x.Tcp
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type BackendInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
|
|
State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"`
|
|
Transitions []*TransitionRecord `protobuf:"bytes,4,rep,name=transitions,proto3" json:"transitions,omitempty"`
|
|
Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"`
|
|
Healthcheck string `protobuf:"bytes,6,opt,name=healthcheck,proto3" json:"healthcheck,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *BackendInfo) Reset() {
|
|
*x = BackendInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[31]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BackendInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BackendInfo) ProtoMessage() {}
|
|
|
|
func (x *BackendInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[31]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use BackendInfo.ProtoReflect.Descriptor instead.
|
|
func (*BackendInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{31}
|
|
}
|
|
|
|
func (x *BackendInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendInfo) GetAddress() string {
|
|
if x != nil {
|
|
return x.Address
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendInfo) GetState() string {
|
|
if x != nil {
|
|
return x.State
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendInfo) GetTransitions() []*TransitionRecord {
|
|
if x != nil {
|
|
return x.Transitions
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *BackendInfo) GetEnabled() bool {
|
|
if x != nil {
|
|
return x.Enabled
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *BackendInfo) GetHealthcheck() string {
|
|
if x != nil {
|
|
return x.Healthcheck
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type TransitionRecord struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
|
|
To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
|
|
AtUnixNs int64 `protobuf:"varint,3,opt,name=at_unix_ns,json=atUnixNs,proto3" json:"at_unix_ns,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *TransitionRecord) Reset() {
|
|
*x = TransitionRecord{}
|
|
mi := &file_proto_maglev_proto_msgTypes[32]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *TransitionRecord) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*TransitionRecord) ProtoMessage() {}
|
|
|
|
func (x *TransitionRecord) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[32]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use TransitionRecord.ProtoReflect.Descriptor instead.
|
|
func (*TransitionRecord) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{32}
|
|
}
|
|
|
|
func (x *TransitionRecord) GetFrom() string {
|
|
if x != nil {
|
|
return x.From
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *TransitionRecord) GetTo() string {
|
|
if x != nil {
|
|
return x.To
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *TransitionRecord) GetAtUnixNs() int64 {
|
|
if x != nil {
|
|
return x.AtUnixNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// LogAttr is a single key/value attribute from a structured log record.
|
|
type LogAttr struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
|
|
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *LogAttr) Reset() {
|
|
*x = LogAttr{}
|
|
mi := &file_proto_maglev_proto_msgTypes[33]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *LogAttr) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LogAttr) ProtoMessage() {}
|
|
|
|
func (x *LogAttr) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[33]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use LogAttr.ProtoReflect.Descriptor instead.
|
|
func (*LogAttr) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{33}
|
|
}
|
|
|
|
func (x *LogAttr) GetKey() string {
|
|
if x != nil {
|
|
return x.Key
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LogAttr) GetValue() string {
|
|
if x != nil {
|
|
return x.Value
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// LogEvent carries a single structured log record.
|
|
type LogEvent struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
AtUnixNs int64 `protobuf:"varint,1,opt,name=at_unix_ns,json=atUnixNs,proto3" json:"at_unix_ns,omitempty"`
|
|
Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"`
|
|
Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
|
|
Attrs []*LogAttr `protobuf:"bytes,4,rep,name=attrs,proto3" json:"attrs,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *LogEvent) Reset() {
|
|
*x = LogEvent{}
|
|
mi := &file_proto_maglev_proto_msgTypes[34]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *LogEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LogEvent) ProtoMessage() {}
|
|
|
|
func (x *LogEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[34]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use LogEvent.ProtoReflect.Descriptor instead.
|
|
func (*LogEvent) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{34}
|
|
}
|
|
|
|
func (x *LogEvent) GetAtUnixNs() int64 {
|
|
if x != nil {
|
|
return x.AtUnixNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LogEvent) GetLevel() string {
|
|
if x != nil {
|
|
return x.Level
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LogEvent) GetMsg() string {
|
|
if x != nil {
|
|
return x.Msg
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LogEvent) GetAttrs() []*LogAttr {
|
|
if x != nil {
|
|
return x.Attrs
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// BackendEvent is emitted on every backend state transition.
|
|
type BackendEvent struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
BackendName string `protobuf:"bytes,1,opt,name=backend_name,json=backendName,proto3" json:"backend_name,omitempty"`
|
|
Transition *TransitionRecord `protobuf:"bytes,2,opt,name=transition,proto3" json:"transition,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *BackendEvent) Reset() {
|
|
*x = BackendEvent{}
|
|
mi := &file_proto_maglev_proto_msgTypes[35]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BackendEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BackendEvent) ProtoMessage() {}
|
|
|
|
func (x *BackendEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[35]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use BackendEvent.ProtoReflect.Descriptor instead.
|
|
func (*BackendEvent) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{35}
|
|
}
|
|
|
|
func (x *BackendEvent) GetBackendName() string {
|
|
if x != nil {
|
|
return x.BackendName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendEvent) GetTransition() *TransitionRecord {
|
|
if x != nil {
|
|
return x.Transition
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// FrontendEvent is reserved for future frontend-level events.
|
|
type FrontendEvent struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *FrontendEvent) Reset() {
|
|
*x = FrontendEvent{}
|
|
mi := &file_proto_maglev_proto_msgTypes[36]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *FrontendEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*FrontendEvent) ProtoMessage() {}
|
|
|
|
func (x *FrontendEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[36]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use FrontendEvent.ProtoReflect.Descriptor instead.
|
|
func (*FrontendEvent) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{36}
|
|
}
|
|
|
|
// Event is the envelope returned by WatchEvents.
|
|
type Event struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Types that are valid to be assigned to Event:
|
|
//
|
|
// *Event_Log
|
|
// *Event_Backend
|
|
// *Event_Frontend
|
|
Event isEvent_Event `protobuf_oneof:"event"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *Event) Reset() {
|
|
*x = Event{}
|
|
mi := &file_proto_maglev_proto_msgTypes[37]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *Event) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Event) ProtoMessage() {}
|
|
|
|
func (x *Event) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_proto_msgTypes[37]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use Event.ProtoReflect.Descriptor instead.
|
|
func (*Event) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{37}
|
|
}
|
|
|
|
func (x *Event) GetEvent() isEvent_Event {
|
|
if x != nil {
|
|
return x.Event
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Event) GetLog() *LogEvent {
|
|
if x != nil {
|
|
if x, ok := x.Event.(*Event_Log); ok {
|
|
return x.Log
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Event) GetBackend() *BackendEvent {
|
|
if x != nil {
|
|
if x, ok := x.Event.(*Event_Backend); ok {
|
|
return x.Backend
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Event) GetFrontend() *FrontendEvent {
|
|
if x != nil {
|
|
if x, ok := x.Event.(*Event_Frontend); ok {
|
|
return x.Frontend
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isEvent_Event interface {
|
|
isEvent_Event()
|
|
}
|
|
|
|
type Event_Log struct {
|
|
Log *LogEvent `protobuf:"bytes,1,opt,name=log,proto3,oneof"`
|
|
}
|
|
|
|
type Event_Backend struct {
|
|
Backend *BackendEvent `protobuf:"bytes,2,opt,name=backend,proto3,oneof"`
|
|
}
|
|
|
|
type Event_Frontend struct {
|
|
Frontend *FrontendEvent `protobuf:"bytes,3,opt,name=frontend,proto3,oneof"`
|
|
}
|
|
|
|
func (*Event_Log) isEvent_Event() {}
|
|
|
|
func (*Event_Backend) isEvent_Event() {}
|
|
|
|
func (*Event_Frontend) isEvent_Event() {}
|
|
|
|
var File_proto_maglev_proto protoreflect.FileDescriptor
|
|
|
|
const file_proto_maglev_proto_rawDesc = "" +
|
|
"\n" +
|
|
"\x12proto/maglev.proto\x12\x06maglev\"\x16\n" +
|
|
"\x14ListFrontendsRequest\"(\n" +
|
|
"\x12GetFrontendRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"\x15\n" +
|
|
"\x13ListBackendsRequest\"'\n" +
|
|
"\x11GetBackendRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"$\n" +
|
|
"\x0eBackendRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"\x19\n" +
|
|
"\x17ListHealthChecksRequest\"+\n" +
|
|
"\x15GetHealthCheckRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"\x14\n" +
|
|
"\x12CheckConfigRequest\"m\n" +
|
|
"\x13CheckConfigResponse\x12\x0e\n" +
|
|
"\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1f\n" +
|
|
"\vparse_error\x18\x02 \x01(\tR\n" +
|
|
"parseError\x12%\n" +
|
|
"\x0esemantic_error\x18\x03 \x01(\tR\rsemanticError\"\x15\n" +
|
|
"\x13ReloadConfigRequest\"\x91\x01\n" +
|
|
"\x14ReloadConfigResponse\x12\x0e\n" +
|
|
"\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1f\n" +
|
|
"\vparse_error\x18\x02 \x01(\tR\n" +
|
|
"parseError\x12%\n" +
|
|
"\x0esemantic_error\x18\x03 \x01(\tR\rsemanticError\x12!\n" +
|
|
"\freload_error\x18\x04 \x01(\tR\vreloadError\"\x13\n" +
|
|
"\x11GetVPPInfoRequest\"\xc5\x01\n" +
|
|
"\aVPPInfo\x12\x18\n" +
|
|
"\aversion\x18\x01 \x01(\tR\aversion\x12\x1d\n" +
|
|
"\n" +
|
|
"build_date\x18\x02 \x01(\tR\tbuildDate\x12'\n" +
|
|
"\x0fbuild_directory\x18\x03 \x01(\tR\x0ebuildDirectory\x12\x10\n" +
|
|
"\x03pid\x18\x04 \x01(\rR\x03pid\x12\x1f\n" +
|
|
"\vboottime_ns\x18\x05 \x01(\x03R\n" +
|
|
"boottimeNs\x12%\n" +
|
|
"\x0econnecttime_ns\x18\x06 \x01(\x03R\rconnecttimeNs\"\x16\n" +
|
|
"\x14GetVPPLBStateRequest\"\xb5\x01\n" +
|
|
"\tVPPLBConf\x12&\n" +
|
|
"\x0fip4_src_address\x18\x01 \x01(\tR\rip4SrcAddress\x12&\n" +
|
|
"\x0fip6_src_address\x18\x02 \x01(\tR\rip6SrcAddress\x125\n" +
|
|
"\x17sticky_buckets_per_core\x18\x03 \x01(\rR\x14stickyBucketsPerCore\x12!\n" +
|
|
"\fflow_timeout\x18\x04 \x01(\rR\vflowTimeout\"\x99\x01\n" +
|
|
"\aVPPLBAS\x12\x18\n" +
|
|
"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x16\n" +
|
|
"\x06weight\x18\x02 \x01(\rR\x06weight\x12\x14\n" +
|
|
"\x05flags\x18\x03 \x01(\rR\x05flags\x12\x1f\n" +
|
|
"\vnum_buckets\x18\x04 \x01(\rR\n" +
|
|
"numBuckets\x12%\n" +
|
|
"\x0fin_use_since_ns\x18\x05 \x01(\x03R\finUseSinceNs\"\xd6\x01\n" +
|
|
"\bVPPLBVIP\x12\x16\n" +
|
|
"\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1a\n" +
|
|
"\bprotocol\x18\x02 \x01(\rR\bprotocol\x12\x12\n" +
|
|
"\x04port\x18\x03 \x01(\rR\x04port\x12\x14\n" +
|
|
"\x05encap\x18\x04 \x01(\tR\x05encap\x12*\n" +
|
|
"\x11flow_table_length\x18\x05 \x01(\rR\x0fflowTableLength\x12@\n" +
|
|
"\x13application_servers\x18\x06 \x03(\v2\x0f.maglev.VPPLBASR\x12applicationServers\"Y\n" +
|
|
"\n" +
|
|
"VPPLBState\x12%\n" +
|
|
"\x04conf\x18\x01 \x01(\v2\x11.maglev.VPPLBConfR\x04conf\x12$\n" +
|
|
"\x04vips\x18\x02 \x03(\v2\x10.maglev.VPPLBVIPR\x04vips\"S\n" +
|
|
"\x15SyncVPPLBStateRequest\x12(\n" +
|
|
"\rfrontend_name\x18\x01 \x01(\tH\x00R\ffrontendName\x88\x01\x01B\x10\n" +
|
|
"\x0e_frontend_name\"\x18\n" +
|
|
"\x16SyncVPPLBStateResponse\"t\n" +
|
|
"\x10SetWeightRequest\x12\x1a\n" +
|
|
"\bfrontend\x18\x01 \x01(\tR\bfrontend\x12\x12\n" +
|
|
"\x04pool\x18\x02 \x01(\tR\x04pool\x12\x18\n" +
|
|
"\abackend\x18\x03 \x01(\tR\abackend\x12\x16\n" +
|
|
"\x06weight\x18\x04 \x01(\x05R\x06weight\"\xa3\x01\n" +
|
|
"\fWatchRequest\x12\x15\n" +
|
|
"\x03log\x18\x01 \x01(\bH\x00R\x03log\x88\x01\x01\x12\x1b\n" +
|
|
"\tlog_level\x18\x02 \x01(\tR\blogLevel\x12\x1d\n" +
|
|
"\abackend\x18\x03 \x01(\bH\x01R\abackend\x88\x01\x01\x12\x1f\n" +
|
|
"\bfrontend\x18\x04 \x01(\bH\x02R\bfrontend\x88\x01\x01B\x06\n" +
|
|
"\x04_logB\n" +
|
|
"\n" +
|
|
"\b_backendB\v\n" +
|
|
"\t_frontend\">\n" +
|
|
"\x15ListFrontendsResponse\x12%\n" +
|
|
"\x0efrontend_names\x18\x01 \x03(\tR\rfrontendNames\"h\n" +
|
|
"\x0fPoolBackendInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
|
|
"\x06weight\x18\x02 \x01(\x05R\x06weight\x12)\n" +
|
|
"\x10effective_weight\x18\x03 \x01(\x05R\x0feffectiveWeight\"S\n" +
|
|
"\bPoolInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x123\n" +
|
|
"\bbackends\x18\x02 \x03(\v2\x17.maglev.PoolBackendInfoR\bbackends\"\xb6\x01\n" +
|
|
"\fFrontendInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
|
|
"\aaddress\x18\x02 \x01(\tR\aaddress\x12\x1a\n" +
|
|
"\bprotocol\x18\x03 \x01(\tR\bprotocol\x12\x12\n" +
|
|
"\x04port\x18\x04 \x01(\rR\x04port\x12&\n" +
|
|
"\x05pools\x18\x05 \x03(\v2\x10.maglev.PoolInfoR\x05pools\x12 \n" +
|
|
"\vdescription\x18\x06 \x01(\tR\vdescription\";\n" +
|
|
"\x14ListBackendsResponse\x12#\n" +
|
|
"\rbackend_names\x18\x01 \x03(\tR\fbackendNames\"0\n" +
|
|
"\x18ListHealthChecksResponse\x12\x14\n" +
|
|
"\x05names\x18\x01 \x03(\tR\x05names\"\x8d\x02\n" +
|
|
"\x0fHTTPCheckParams\x12\x12\n" +
|
|
"\x04path\x18\x01 \x01(\tR\x04path\x12\x12\n" +
|
|
"\x04host\x18\x02 \x01(\tR\x04host\x12*\n" +
|
|
"\x11response_code_min\x18\x03 \x01(\x05R\x0fresponseCodeMin\x12*\n" +
|
|
"\x11response_code_max\x18\x04 \x01(\x05R\x0fresponseCodeMax\x12'\n" +
|
|
"\x0fresponse_regexp\x18\x05 \x01(\tR\x0eresponseRegexp\x12\x1f\n" +
|
|
"\vserver_name\x18\x06 \x01(\tR\n" +
|
|
"serverName\x120\n" +
|
|
"\x14insecure_skip_verify\x18\a \x01(\bR\x12insecureSkipVerify\"u\n" +
|
|
"\x0eTCPCheckParams\x12\x10\n" +
|
|
"\x03ssl\x18\x01 \x01(\bR\x03ssl\x12\x1f\n" +
|
|
"\vserver_name\x18\x02 \x01(\tR\n" +
|
|
"serverName\x120\n" +
|
|
"\x14insecure_skip_verify\x18\x03 \x01(\bR\x12insecureSkipVerify\"\xac\x03\n" +
|
|
"\x0fHealthCheckInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
|
|
"\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" +
|
|
"\x04port\x18\x03 \x01(\rR\x04port\x12$\n" +
|
|
"\x0eprobe_ipv4_src\x18\x04 \x01(\tR\fprobeIpv4Src\x12$\n" +
|
|
"\x0eprobe_ipv6_src\x18\x05 \x01(\tR\fprobeIpv6Src\x12\x1f\n" +
|
|
"\vinterval_ns\x18\x06 \x01(\x03R\n" +
|
|
"intervalNs\x12(\n" +
|
|
"\x10fast_interval_ns\x18\a \x01(\x03R\x0efastIntervalNs\x12(\n" +
|
|
"\x10down_interval_ns\x18\b \x01(\x03R\x0edownIntervalNs\x12\x1d\n" +
|
|
"\n" +
|
|
"timeout_ns\x18\t \x01(\x03R\ttimeoutNs\x12\x12\n" +
|
|
"\x04rise\x18\n" +
|
|
" \x01(\x05R\x04rise\x12\x12\n" +
|
|
"\x04fall\x18\v \x01(\x05R\x04fall\x12+\n" +
|
|
"\x04http\x18\f \x01(\v2\x17.maglev.HTTPCheckParamsR\x04http\x12(\n" +
|
|
"\x03tcp\x18\r \x01(\v2\x16.maglev.TCPCheckParamsR\x03tcp\"\xc9\x01\n" +
|
|
"\vBackendInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
|
|
"\aaddress\x18\x02 \x01(\tR\aaddress\x12\x14\n" +
|
|
"\x05state\x18\x03 \x01(\tR\x05state\x12:\n" +
|
|
"\vtransitions\x18\x04 \x03(\v2\x18.maglev.TransitionRecordR\vtransitions\x12\x18\n" +
|
|
"\aenabled\x18\x05 \x01(\bR\aenabled\x12 \n" +
|
|
"\vhealthcheck\x18\x06 \x01(\tR\vhealthcheck\"T\n" +
|
|
"\x10TransitionRecord\x12\x12\n" +
|
|
"\x04from\x18\x01 \x01(\tR\x04from\x12\x0e\n" +
|
|
"\x02to\x18\x02 \x01(\tR\x02to\x12\x1c\n" +
|
|
"\n" +
|
|
"at_unix_ns\x18\x03 \x01(\x03R\batUnixNs\"1\n" +
|
|
"\aLogAttr\x12\x10\n" +
|
|
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
|
|
"\x05value\x18\x02 \x01(\tR\x05value\"w\n" +
|
|
"\bLogEvent\x12\x1c\n" +
|
|
"\n" +
|
|
"at_unix_ns\x18\x01 \x01(\x03R\batUnixNs\x12\x14\n" +
|
|
"\x05level\x18\x02 \x01(\tR\x05level\x12\x10\n" +
|
|
"\x03msg\x18\x03 \x01(\tR\x03msg\x12%\n" +
|
|
"\x05attrs\x18\x04 \x03(\v2\x0f.maglev.LogAttrR\x05attrs\"k\n" +
|
|
"\fBackendEvent\x12!\n" +
|
|
"\fbackend_name\x18\x01 \x01(\tR\vbackendName\x128\n" +
|
|
"\n" +
|
|
"transition\x18\x02 \x01(\v2\x18.maglev.TransitionRecordR\n" +
|
|
"transition\"\x0f\n" +
|
|
"\rFrontendEvent\"\x9d\x01\n" +
|
|
"\x05Event\x12$\n" +
|
|
"\x03log\x18\x01 \x01(\v2\x10.maglev.LogEventH\x00R\x03log\x120\n" +
|
|
"\abackend\x18\x02 \x01(\v2\x14.maglev.BackendEventH\x00R\abackend\x123\n" +
|
|
"\bfrontend\x18\x03 \x01(\v2\x15.maglev.FrontendEventH\x00R\bfrontendB\a\n" +
|
|
"\x05event2\xa0\t\n" +
|
|
"\x06Maglev\x12L\n" +
|
|
"\rListFrontends\x12\x1c.maglev.ListFrontendsRequest\x1a\x1d.maglev.ListFrontendsResponse\x12?\n" +
|
|
"\vGetFrontend\x12\x1a.maglev.GetFrontendRequest\x1a\x14.maglev.FrontendInfo\x12I\n" +
|
|
"\fListBackends\x12\x1b.maglev.ListBackendsRequest\x1a\x1c.maglev.ListBackendsResponse\x12<\n" +
|
|
"\n" +
|
|
"GetBackend\x12\x19.maglev.GetBackendRequest\x1a\x13.maglev.BackendInfo\x12;\n" +
|
|
"\fPauseBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12<\n" +
|
|
"\rResumeBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12<\n" +
|
|
"\rEnableBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12=\n" +
|
|
"\x0eDisableBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12U\n" +
|
|
"\x10ListHealthChecks\x12\x1f.maglev.ListHealthChecksRequest\x1a .maglev.ListHealthChecksResponse\x12H\n" +
|
|
"\x0eGetHealthCheck\x12\x1d.maglev.GetHealthCheckRequest\x1a\x17.maglev.HealthCheckInfo\x12N\n" +
|
|
"\x1cSetFrontendPoolBackendWeight\x12\x18.maglev.SetWeightRequest\x1a\x14.maglev.FrontendInfo\x124\n" +
|
|
"\vWatchEvents\x12\x14.maglev.WatchRequest\x1a\r.maglev.Event0\x01\x12F\n" +
|
|
"\vCheckConfig\x12\x1a.maglev.CheckConfigRequest\x1a\x1b.maglev.CheckConfigResponse\x12I\n" +
|
|
"\fReloadConfig\x12\x1b.maglev.ReloadConfigRequest\x1a\x1c.maglev.ReloadConfigResponse\x128\n" +
|
|
"\n" +
|
|
"GetVPPInfo\x12\x19.maglev.GetVPPInfoRequest\x1a\x0f.maglev.VPPInfo\x12A\n" +
|
|
"\rGetVPPLBState\x12\x1c.maglev.GetVPPLBStateRequest\x1a\x12.maglev.VPPLBState\x12O\n" +
|
|
"\x0eSyncVPPLBState\x12\x1d.maglev.SyncVPPLBStateRequest\x1a\x1e.maglev.SyncVPPLBStateResponseB.Z,git.ipng.ch/ipng/vpp-maglev/internal/grpcapib\x06proto3"
|
|
|
|
var (
|
|
file_proto_maglev_proto_rawDescOnce sync.Once
|
|
file_proto_maglev_proto_rawDescData []byte
|
|
)
|
|
|
|
func file_proto_maglev_proto_rawDescGZIP() []byte {
|
|
file_proto_maglev_proto_rawDescOnce.Do(func() {
|
|
file_proto_maglev_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_maglev_proto_rawDesc), len(file_proto_maglev_proto_rawDesc)))
|
|
})
|
|
return file_proto_maglev_proto_rawDescData
|
|
}
|
|
|
|
var file_proto_maglev_proto_msgTypes = make([]protoimpl.MessageInfo, 38)
|
|
var file_proto_maglev_proto_goTypes = []any{
|
|
(*ListFrontendsRequest)(nil), // 0: maglev.ListFrontendsRequest
|
|
(*GetFrontendRequest)(nil), // 1: maglev.GetFrontendRequest
|
|
(*ListBackendsRequest)(nil), // 2: maglev.ListBackendsRequest
|
|
(*GetBackendRequest)(nil), // 3: maglev.GetBackendRequest
|
|
(*BackendRequest)(nil), // 4: maglev.BackendRequest
|
|
(*ListHealthChecksRequest)(nil), // 5: maglev.ListHealthChecksRequest
|
|
(*GetHealthCheckRequest)(nil), // 6: maglev.GetHealthCheckRequest
|
|
(*CheckConfigRequest)(nil), // 7: maglev.CheckConfigRequest
|
|
(*CheckConfigResponse)(nil), // 8: maglev.CheckConfigResponse
|
|
(*ReloadConfigRequest)(nil), // 9: maglev.ReloadConfigRequest
|
|
(*ReloadConfigResponse)(nil), // 10: maglev.ReloadConfigResponse
|
|
(*GetVPPInfoRequest)(nil), // 11: maglev.GetVPPInfoRequest
|
|
(*VPPInfo)(nil), // 12: maglev.VPPInfo
|
|
(*GetVPPLBStateRequest)(nil), // 13: maglev.GetVPPLBStateRequest
|
|
(*VPPLBConf)(nil), // 14: maglev.VPPLBConf
|
|
(*VPPLBAS)(nil), // 15: maglev.VPPLBAS
|
|
(*VPPLBVIP)(nil), // 16: maglev.VPPLBVIP
|
|
(*VPPLBState)(nil), // 17: maglev.VPPLBState
|
|
(*SyncVPPLBStateRequest)(nil), // 18: maglev.SyncVPPLBStateRequest
|
|
(*SyncVPPLBStateResponse)(nil), // 19: maglev.SyncVPPLBStateResponse
|
|
(*SetWeightRequest)(nil), // 20: maglev.SetWeightRequest
|
|
(*WatchRequest)(nil), // 21: maglev.WatchRequest
|
|
(*ListFrontendsResponse)(nil), // 22: maglev.ListFrontendsResponse
|
|
(*PoolBackendInfo)(nil), // 23: maglev.PoolBackendInfo
|
|
(*PoolInfo)(nil), // 24: maglev.PoolInfo
|
|
(*FrontendInfo)(nil), // 25: maglev.FrontendInfo
|
|
(*ListBackendsResponse)(nil), // 26: maglev.ListBackendsResponse
|
|
(*ListHealthChecksResponse)(nil), // 27: maglev.ListHealthChecksResponse
|
|
(*HTTPCheckParams)(nil), // 28: maglev.HTTPCheckParams
|
|
(*TCPCheckParams)(nil), // 29: maglev.TCPCheckParams
|
|
(*HealthCheckInfo)(nil), // 30: maglev.HealthCheckInfo
|
|
(*BackendInfo)(nil), // 31: maglev.BackendInfo
|
|
(*TransitionRecord)(nil), // 32: maglev.TransitionRecord
|
|
(*LogAttr)(nil), // 33: maglev.LogAttr
|
|
(*LogEvent)(nil), // 34: maglev.LogEvent
|
|
(*BackendEvent)(nil), // 35: maglev.BackendEvent
|
|
(*FrontendEvent)(nil), // 36: maglev.FrontendEvent
|
|
(*Event)(nil), // 37: maglev.Event
|
|
}
|
|
var file_proto_maglev_proto_depIdxs = []int32{
|
|
15, // 0: maglev.VPPLBVIP.application_servers:type_name -> maglev.VPPLBAS
|
|
14, // 1: maglev.VPPLBState.conf:type_name -> maglev.VPPLBConf
|
|
16, // 2: maglev.VPPLBState.vips:type_name -> maglev.VPPLBVIP
|
|
23, // 3: maglev.PoolInfo.backends:type_name -> maglev.PoolBackendInfo
|
|
24, // 4: maglev.FrontendInfo.pools:type_name -> maglev.PoolInfo
|
|
28, // 5: maglev.HealthCheckInfo.http:type_name -> maglev.HTTPCheckParams
|
|
29, // 6: maglev.HealthCheckInfo.tcp:type_name -> maglev.TCPCheckParams
|
|
32, // 7: maglev.BackendInfo.transitions:type_name -> maglev.TransitionRecord
|
|
33, // 8: maglev.LogEvent.attrs:type_name -> maglev.LogAttr
|
|
32, // 9: maglev.BackendEvent.transition:type_name -> maglev.TransitionRecord
|
|
34, // 10: maglev.Event.log:type_name -> maglev.LogEvent
|
|
35, // 11: maglev.Event.backend:type_name -> maglev.BackendEvent
|
|
36, // 12: maglev.Event.frontend:type_name -> maglev.FrontendEvent
|
|
0, // 13: maglev.Maglev.ListFrontends:input_type -> maglev.ListFrontendsRequest
|
|
1, // 14: maglev.Maglev.GetFrontend:input_type -> maglev.GetFrontendRequest
|
|
2, // 15: maglev.Maglev.ListBackends:input_type -> maglev.ListBackendsRequest
|
|
3, // 16: maglev.Maglev.GetBackend:input_type -> maglev.GetBackendRequest
|
|
4, // 17: maglev.Maglev.PauseBackend:input_type -> maglev.BackendRequest
|
|
4, // 18: maglev.Maglev.ResumeBackend:input_type -> maglev.BackendRequest
|
|
4, // 19: maglev.Maglev.EnableBackend:input_type -> maglev.BackendRequest
|
|
4, // 20: maglev.Maglev.DisableBackend:input_type -> maglev.BackendRequest
|
|
5, // 21: maglev.Maglev.ListHealthChecks:input_type -> maglev.ListHealthChecksRequest
|
|
6, // 22: maglev.Maglev.GetHealthCheck:input_type -> maglev.GetHealthCheckRequest
|
|
20, // 23: maglev.Maglev.SetFrontendPoolBackendWeight:input_type -> maglev.SetWeightRequest
|
|
21, // 24: maglev.Maglev.WatchEvents:input_type -> maglev.WatchRequest
|
|
7, // 25: maglev.Maglev.CheckConfig:input_type -> maglev.CheckConfigRequest
|
|
9, // 26: maglev.Maglev.ReloadConfig:input_type -> maglev.ReloadConfigRequest
|
|
11, // 27: maglev.Maglev.GetVPPInfo:input_type -> maglev.GetVPPInfoRequest
|
|
13, // 28: maglev.Maglev.GetVPPLBState:input_type -> maglev.GetVPPLBStateRequest
|
|
18, // 29: maglev.Maglev.SyncVPPLBState:input_type -> maglev.SyncVPPLBStateRequest
|
|
22, // 30: maglev.Maglev.ListFrontends:output_type -> maglev.ListFrontendsResponse
|
|
25, // 31: maglev.Maglev.GetFrontend:output_type -> maglev.FrontendInfo
|
|
26, // 32: maglev.Maglev.ListBackends:output_type -> maglev.ListBackendsResponse
|
|
31, // 33: maglev.Maglev.GetBackend:output_type -> maglev.BackendInfo
|
|
31, // 34: maglev.Maglev.PauseBackend:output_type -> maglev.BackendInfo
|
|
31, // 35: maglev.Maglev.ResumeBackend:output_type -> maglev.BackendInfo
|
|
31, // 36: maglev.Maglev.EnableBackend:output_type -> maglev.BackendInfo
|
|
31, // 37: maglev.Maglev.DisableBackend:output_type -> maglev.BackendInfo
|
|
27, // 38: maglev.Maglev.ListHealthChecks:output_type -> maglev.ListHealthChecksResponse
|
|
30, // 39: maglev.Maglev.GetHealthCheck:output_type -> maglev.HealthCheckInfo
|
|
25, // 40: maglev.Maglev.SetFrontendPoolBackendWeight:output_type -> maglev.FrontendInfo
|
|
37, // 41: maglev.Maglev.WatchEvents:output_type -> maglev.Event
|
|
8, // 42: maglev.Maglev.CheckConfig:output_type -> maglev.CheckConfigResponse
|
|
10, // 43: maglev.Maglev.ReloadConfig:output_type -> maglev.ReloadConfigResponse
|
|
12, // 44: maglev.Maglev.GetVPPInfo:output_type -> maglev.VPPInfo
|
|
17, // 45: maglev.Maglev.GetVPPLBState:output_type -> maglev.VPPLBState
|
|
19, // 46: maglev.Maglev.SyncVPPLBState:output_type -> maglev.SyncVPPLBStateResponse
|
|
30, // [30:47] is the sub-list for method output_type
|
|
13, // [13:30] is the sub-list for method input_type
|
|
13, // [13:13] is the sub-list for extension type_name
|
|
13, // [13:13] is the sub-list for extension extendee
|
|
0, // [0:13] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_proto_maglev_proto_init() }
|
|
func file_proto_maglev_proto_init() {
|
|
if File_proto_maglev_proto != nil {
|
|
return
|
|
}
|
|
file_proto_maglev_proto_msgTypes[18].OneofWrappers = []any{}
|
|
file_proto_maglev_proto_msgTypes[21].OneofWrappers = []any{}
|
|
file_proto_maglev_proto_msgTypes[37].OneofWrappers = []any{
|
|
(*Event_Log)(nil),
|
|
(*Event_Backend)(nil),
|
|
(*Event_Frontend)(nil),
|
|
}
|
|
type x struct{}
|
|
out := protoimpl.TypeBuilder{
|
|
File: protoimpl.DescBuilder{
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_maglev_proto_rawDesc), len(file_proto_maglev_proto_rawDesc)),
|
|
NumEnums: 0,
|
|
NumMessages: 38,
|
|
NumExtensions: 0,
|
|
NumServices: 1,
|
|
},
|
|
GoTypes: file_proto_maglev_proto_goTypes,
|
|
DependencyIndexes: file_proto_maglev_proto_depIdxs,
|
|
MessageInfos: file_proto_maglev_proto_msgTypes,
|
|
}.Build()
|
|
File_proto_maglev_proto = out.File
|
|
file_proto_maglev_proto_goTypes = nil
|
|
file_proto_maglev_proto_depIdxs = nil
|
|
}
|