...

Package tproxyconfig

import "github.com/chaos-mesh/chaos-mesh/pkg/chaosdaemon/tproxyconfig"
Overview
Index

Overview ▾

type Config

type Config struct {
    ProxyPorts []uint32               `json:"proxy_ports,omitempty"`
    Rules      []PodHttpChaosBaseRule `json:"rules"`
    TLS        *TLSConfig             `json:"tls,omitempty"`
}

type PodHttpChaosActions

PodHttpChaosActions defines possible actions of HttpChaos.

type PodHttpChaosActions struct {
    // Abort is a rule to abort a http session.
    // +optional
    Abort *bool `json:"abort,omitempty"`

    // Delay represents the delay of the target request/response.
    // A duration string is a possibly unsigned sequence of
    // decimal numbers, each with optional fraction and a unit suffix,
    // such as "300ms", "2h45m".
    // Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
    // +optional
    Delay *string `json:"delay,omitempty"`

    // Replace is a rule to replace some contents in target.
    // +optional
    Replace *PodHttpChaosReplaceActions `json:"replace,omitempty"`

    // Patch is a rule to patch some contents in target.
    // +optional
    Patch *PodHttpChaosPatchActions `json:"patch,omitempty"`
}

type PodHttpChaosBaseRule

PodHttpChaosBaseRule defines the injection rule without source and port.

type PodHttpChaosBaseRule struct {
    // Target is the object to be selected and injected, <Request|Response>.
    Target PodHttpChaosTarget `json:"target"`

    // Selector contains the rules to select target.
    Selector PodHttpChaosSelector `json:"selector"`

    // Actions contains rules to inject target.
    Actions PodHttpChaosActions `json:"actions"`
}

type PodHttpChaosBodyPatchContent

type PodHttpChaosBodyPatchContent struct {
    // Type represents the patch type, only support `JSON` as [merge patch json](https://tools.ietf.org/html/rfc7396) currently.
    Type string `json:"type"`

    // Value is the patch contents.
    Value string `json:"value"`
}

type PodHttpChaosBodyReplaceContent

type PodHttpChaosBodyReplaceContent struct {
    // Type represents the patch type, only support `JSON` as [merge patch json](https://tools.ietf.org/html/rfc7396) currently.
    Type string `json:"type"`

    // Value is the patch contents.
    Value string `json:"value"`
}

type PodHttpChaosPatchActions

PodHttpChaosPatchActions defines possible patch-actions of HttpChaos.

type PodHttpChaosPatchActions struct {
    // Body is a rule to patch message body of target.
    // +optional
    Body *PodHttpChaosPatchBody `json:"body,omitempty"`

    // Queries is a rule to append uri queries of target(Request only).
    // For example: `[["foo", "bar"], ["foo", "unknown"]]`.
    // +optional
    Queries [][]string `json:"queries,omitempty"`

    // Headers is a rule to append http headers of target.
    // For example: `[["Set-Cookie", "<one cookie>"], ["Set-Cookie", "<another cookie>"]]`.
    // +optional
    Headers [][]string `json:"headers,omitempty"`
}

type PodHttpChaosPatchBody

PodHttpChaosPatchBody defines the patch-body action of HttpChaos.

type PodHttpChaosPatchBody struct {
    Contents PodHttpChaosBodyPatchContent `json:"contents"`
}

func (*PodHttpChaosPatchBody) UnmarshalJSON

func (p *PodHttpChaosPatchBody) UnmarshalJSON(data []byte) error

type PodHttpChaosReplaceActions

PodHttpChaosReplaceActions defines possible replace-actions of HttpChaos.

type PodHttpChaosReplaceActions struct {
    // Path is rule to to replace uri path in http request.
    // +optional
    Path *string `json:"path,omitempty"`

    // Method is a rule to replace http method in request.
    // +optional
    Method *string `json:"method,omitempty"`

    // Code is a rule to replace http status code in response.
    // +optional
    Code *int32 `json:"code,omitempty"`

    // Body is a rule to replace http message body in target.
    // +optional
    Body *PodHttpChaosReplaceBody `json:"body,omitempty"`

    // Queries is a rule to replace uri queries in http request.
    // For example, with value `{ "foo": "unknown" }`, the `/?foo=bar` will be altered to `/?foo=unknown`,
    // +optional
    Queries map[string]string `json:"queries,omitempty"`

    // Headers is a rule to replace http headers of target.
    // The key-value pairs represent header name and header value pairs.
    // +optional
    Headers map[string]string `json:"headers,omitempty"`
}

type PodHttpChaosReplaceBody

PodHttpChaosReplaceBody defines the replace-body of HttpChaos.

type PodHttpChaosReplaceBody struct {
    Contents PodHttpChaosBodyReplaceContent `json:"contents"`
}

func (*PodHttpChaosReplaceBody) UnmarshalJSON

func (p *PodHttpChaosReplaceBody) UnmarshalJSON(data []byte) error

type PodHttpChaosSelector

type PodHttpChaosSelector struct {
    // Port is a rule to select server listening on specific port.
    // +optional
    Port *int32 `json:"port,omitempty"`

    // Path is a rule to select target by uri path in http request.
    // +optional
    Path *string `json:"path,omitempty"`

    // Method is a rule to select target by http method in request.
    // +optional
    Method *string `json:"method,omitempty"`

    // Code is a rule to select target by http status code in response.
    // +optional
    Code *int32 `json:"code,omitempty"`

    // RequestHeaders is a rule to select target by http headers in request.
    // The key-value pairs represent header name and header value pairs.
    // +optional
    RequestHeaders map[string]string `json:"request_headers,omitempty"`

    // ResponseHeaders is a rule to select target by http headers in response.
    // The key-value pairs represent header name and header value pairs.
    // +optional
    ResponseHeaders map[string]string `json:"response_headers,omitempty"`
}

type PodHttpChaosTarget

PodHttpChaosTarget represents the type of an HttpChaos Action

type PodHttpChaosTarget string

type TLSConfig

type TLSConfig struct {
    CertFile TLSConfigItem  `json:"cert_file,omitempty"`
    KeyFile  TLSConfigItem  `json:"key_file,omitempty"`
    CAFile   *TLSConfigItem `json:"ca_file,omitempty"`
}

type TLSConfigItem

type TLSConfigItem struct {
    Type  string `json:"type"`
    Value []byte `json:"value"`
}