Add mirrorBody option to HTTP mirroring
This commit is contained in:
parent
51f7f610c9
commit
eb99c8c785
19 changed files with 165 additions and 22 deletions
|
@ -290,6 +290,7 @@ func (c configBuilder) buildMirroring(ctx context.Context, tService *traefikv1al
|
|||
Mirroring: &dynamic.Mirroring{
|
||||
Service: fullNameMain,
|
||||
Mirrors: mirrorServices,
|
||||
MirrorBody: tService.Spec.Mirroring.MirrorBody,
|
||||
MaxBodySize: tService.Spec.Mirroring.MaxBodySize,
|
||||
},
|
||||
}
|
||||
|
|
|
@ -53,6 +53,9 @@ type TraefikServiceSpec struct {
|
|||
type Mirroring struct {
|
||||
LoadBalancerSpec `json:",inline"`
|
||||
|
||||
// MirrorBody defines whether the body of the request should be mirrored.
|
||||
// Default value is true.
|
||||
MirrorBody *bool `json:"mirrorBody,omitempty"`
|
||||
// MaxBodySize defines the maximum size allowed for the body of the request.
|
||||
// If the body is larger, the request is not mirrored.
|
||||
// Default value is -1, which means unlimited size.
|
||||
|
|
|
@ -972,6 +972,11 @@ func (in *MirrorService) DeepCopy() *MirrorService {
|
|||
func (in *Mirroring) DeepCopyInto(out *Mirroring) {
|
||||
*out = *in
|
||||
in.LoadBalancerSpec.DeepCopyInto(&out.LoadBalancerSpec)
|
||||
if in.MirrorBody != nil {
|
||||
in, out := &in.MirrorBody, &out.MirrorBody
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.MaxBodySize != nil {
|
||||
in, out := &in.MaxBodySize, &out.MaxBodySize
|
||||
*out = new(int64)
|
||||
|
|
|
@ -61,6 +61,7 @@ func Test_buildConfiguration(t *testing.T) {
|
|||
"traefik/http/services/Service01/loadBalancer/servers/0/url": "foobar",
|
||||
"traefik/http/services/Service01/loadBalancer/servers/1/url": "foobar",
|
||||
"traefik/http/services/Service02/mirroring/service": "foobar",
|
||||
"traefik/http/services/Service02/mirroring/mirrorBody": "true",
|
||||
"traefik/http/services/Service02/mirroring/maxBodySize": "42",
|
||||
"traefik/http/services/Service02/mirroring/mirrors/0/name": "foobar",
|
||||
"traefik/http/services/Service02/mirroring/mirrors/0/percent": "42",
|
||||
|
@ -676,6 +677,7 @@ func Test_buildConfiguration(t *testing.T) {
|
|||
"Service02": {
|
||||
Mirroring: &dynamic.Mirroring{
|
||||
Service: "foobar",
|
||||
MirrorBody: func(v bool) *bool { return &v }(true),
|
||||
MaxBodySize: func(v int64) *int64 { return &v }(42),
|
||||
Mirrors: []dynamic.MirrorService{
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue