Package generic

import "github.com/chaos-mesh/chaos-mesh/pkg/selector/generic"

Overview ▾


const InjectAnnotationKey = "chaos-mesh.org/inject"

func FilterObjectsByMode

func FilterObjectsByMode(mode v1alpha1.SelectorMode, value string, count int) ([]uint, error)

FilterObjectsByMode filters objects by mode

func RandomFixedIndexes

func RandomFixedIndexes(start, end, count uint) []uint

RandomFixedIndexes returns the `count` random indexes between `start` and `end`. [start, end)

type ListFunc

type ListFunc func(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error

type Option

type Option struct {
    ClusterScoped         bool
    TargetNamespace       string
    EnableFilterNamespace bool

type Selector

Selector is an interface implemented by things that know how to list objects from cluster and whether this object matches the selector.

type Selector interface {
    // ListFunc returns the function to list object from kubernetes cluster.
    // If no method is specified, returns `nil` directly. (default: `List` function of `client.Client`)
    // If needed, `List` function of `client.Reader` can be returned. Only `field selector` uses it for now.
    // When registering the Selector, it's important to note that multiple ListFunc will be overwritten in the SelectorChain.
    ListFunc(client.Reader) ListFunc
    // ListOption returns the client.ListOption that modifies options for a list request.
    // If no option is specified, returns `nil` directly.
    // When registering a Selector, it is important to note that multiple ListOptions will all apply to
    // the same `client.ListOptions` and will be overwritten if they have the same fields in the SelectorChain.
    ListOption() client.ListOption
    // Match returns whether the object matches the selector
    Match(client.Object) bool

type SelectorChain

type SelectorChain []Selector

func (SelectorChain) ListObjects

func (s SelectorChain) ListObjects(c client.Client, r client.Reader,
    listObj func(listFunc ListFunc, opts client.ListOptions) error) error

func (SelectorChain) Match

func (s SelectorChain) Match(obj client.Object) bool