Multi-layer routing
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
This commit is contained in:
parent
8392503df7
commit
d6598f370c
37 changed files with 2834 additions and 37 deletions
|
|
@ -69,6 +69,7 @@ type Router struct {
|
|||
Middlewares []string `json:"middlewares,omitempty" toml:"middlewares,omitempty" yaml:"middlewares,omitempty" export:"true"`
|
||||
Service string `json:"service,omitempty" toml:"service,omitempty" yaml:"service,omitempty" export:"true"`
|
||||
Rule string `json:"rule,omitempty" toml:"rule,omitempty" yaml:"rule,omitempty"`
|
||||
ParentRefs []string `json:"parentRefs,omitempty" toml:"parentRefs,omitempty" yaml:"parentRefs,omitempty" label:"-" export:"true"`
|
||||
// Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
|
||||
RuleSyntax string `json:"ruleSyntax,omitempty" toml:"ruleSyntax,omitempty" yaml:"ruleSyntax,omitempty" export:"true"`
|
||||
Priority int `json:"priority,omitempty" toml:"priority,omitempty,omitzero" yaml:"priority,omitempty" export:"true"`
|
||||
|
|
|
|||
|
|
@ -1369,6 +1369,11 @@ func (in *Router) DeepCopyInto(out *Router) {
|
|||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.ParentRefs != nil {
|
||||
in, out := &in.ParentRefs, &out.ParentRefs
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.TLS != nil {
|
||||
in, out := &in.TLS, &out.TLS
|
||||
*out = new(RouterTLSConfig)
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ func (c *Configuration) GetRoutersByEntryPoints(ctx context.Context, entryPoints
|
|||
entryPointsRouters[entryPointName][rtName] = rt
|
||||
}
|
||||
|
||||
if entryPointsCount == 0 {
|
||||
// Root routers must have at least one entry point.
|
||||
if entryPointsCount == 0 && rt.ParentRefs == nil {
|
||||
rt.AddError(errors.New("no valid entryPoint for this router"), true)
|
||||
logger.Error().Msg("No valid entryPoint for this router")
|
||||
}
|
||||
|
|
@ -80,6 +81,11 @@ type RouterInfo struct {
|
|||
// It is the caller's responsibility to set the initial status.
|
||||
Status string `json:"status,omitempty"`
|
||||
Using []string `json:"using,omitempty"` // Effective entry points used by that router.
|
||||
|
||||
// ChildRefs contains the names of child routers.
|
||||
// This field is only filled during multi-layer routing computation of parentRefs,
|
||||
// and used when building the runtime configuration.
|
||||
ChildRefs []string `json:"-"`
|
||||
}
|
||||
|
||||
// AddError adds err to r.Err, if it does not already exist.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue