Documentation

Overview

    Package api defines the API of the Cilium network policy interface

    Index

    Constants

    View Source
    const (
    	// PathDelimiter is the delimiter used in the labels paths.
    	PathDelimiter = "."
    
    	// IDNameHost is the label used for the hostname ID.
    	IDNameHost = "host"
    
    	// IDNameRemoteNode is the label used to describe the
    	// ReservedIdentityRemoteNode
    	IDNameRemoteNode = "remote-node"
    
    	// IDNameWorld is the label used for the world ID.
    	IDNameWorld = "world"
    
    	// IDNameCluster is the label used to identify an unspecified endpoint
    	// inside the cluster
    	IDNameCluster = "cluster"
    
    	// IDNameHealth is the label used for the local cilium-health endpoint
    	IDNameHealth = "health"
    
    	// IDNameInit is the label used to identify any endpoint that has not
    	// received any labels yet.
    	IDNameInit = "init"
    
    	// IDNameNone is the label used to identify no endpoint or other L3 entity.
    	// It will never be assigned and this "label" is here for consistency with
    	// other Entities.
    	IDNameNone = "none"
    
    	// IDNameUnmanaged is the label used to identify unmanaged endpoints
    	IDNameUnmanaged = "unmanaged"
    
    	// IDNameUnknown is the label used to to identify an endpoint with an
    	// unknown identity.
    	IDNameUnknown = "unknown"
    )
    View Source
    const (
    	// LabelSourceUnspec is a label with unspecified source
    	LabelSourceUnspec = "unspec"
    
    	// LabelSourceAny is a label that matches any source
    	LabelSourceAny = "any"
    
    	// LabelSourceAnyKeyPrefix is prefix of a "any" label
    	LabelSourceAnyKeyPrefix = LabelSourceAny + "."
    
    	// LabelSourceK8s is a label imported from Kubernetes
    	LabelSourceK8s = "k8s"
    
    	// LabelSourceMesos is a label imported from Mesos
    	LabelSourceMesos = "mesos"
    
    	// LabelSourceK8sKeyPrefix is prefix of a Kubernetes label
    	LabelSourceK8sKeyPrefix = LabelSourceK8s + "."
    
    	// LabelSourceContainer is a label imported from the container runtime
    	LabelSourceContainer = "container"
    
    	// LabelSourceReserved is the label source for reserved types.
    	LabelSourceReserved = "reserved"
    
    	// LabelSourceCIDR is the label source for generated CIDRs.
    	LabelSourceCIDR = "cidr"
    
    	// LabelSourceReservedKeyPrefix is the prefix of a reserved label
    	LabelSourceReservedKeyPrefix = LabelSourceReserved + "."
    
    	// LabelKeyFixedIdentity is the label that can be used to define a fixed
    	// identity.
    	LabelKeyFixedIdentity = "io.cilium.fixed-identity"
    
    	// LabelSourceCiliumGenerated is for labels auto-generated by cilium without
    	// user input
    	LabelSourceCiliumGenerated = "cilium-generated"
    )

    Variables

    View Source
    var (
    	// LabelHealth is the label used for health.
    	LabelHealth = Labels{IDNameHealth: NewLabel(IDNameHealth, "", LabelSourceReserved)}
    
    	// LabelHost is the label used for the host endpoint.
    	LabelHost = Labels{IDNameHost: NewLabel(IDNameHost, "", LabelSourceReserved)}
    )

    Functions

    func GenerateK8sLabelString

    func GenerateK8sLabelString(k, v string) string

      GenerateK8sLabelString generates the string representation of a label with the provided source, key, and value in the format "LabelSourceK8s:key=value".

      func GetCiliumKeyFrom

      func GetCiliumKeyFrom(extKey string) string

        GetCiliumKeyFrom returns the label's source and key from the an extended key in the format SOURCE:KEY.

        func GetExtendedKeyFrom

        func GetExtendedKeyFrom(str string) string

          GetExtendedKeyFrom returns the extended key of a label string. For example: `k8s:foo=bar` returns `k8s.foo` `container:foo=bar` returns `container.foo` `foo=bar` returns `any.foo=bar`

          Types

          type Label

          type Label struct {
          	Key   string `json:"key"`
          	Value string `json:"value,omitempty"`
          	// Source can be one of the above values (e.g.: LabelSourceContainer).
          	//
          	// +kubebuilder:validation:Optional
          	Source string `json:"source"`
          }

            Label is the Cilium's representation of a container label.

            func NewLabel

            func NewLabel(key string, value string, source string) Label

              NewLabel returns a new label from the given key, value and source. If source is empty, the default value will be LabelSourceUnspec. If key starts with '$', the source will be overwritten with LabelSourceReserved. If key contains ':', the value before ':' will be used as source if given source is empty, otherwise the value before ':' will be deleted and unused.

              func ParseLabel

              func ParseLabel(str string) Label

                ParseLabel returns the label representation of the given string. The str should be in the form of Source:Key=Value or Source:Key if Value is empty. It also parses short forms, for example: $host will be Label{Key: "host", Source: "reserved", Value: ""}.

                func ParseSelectLabel

                func ParseSelectLabel(str string) Label

                  ParseSelectLabel returns a selecting label representation of the given string. Unlike ParseLabel, if source is unspecified, the source defaults to LabelSourceAny

                  func (*Label) DeepEqual

                  func (in *Label) DeepEqual(other *Label) bool

                    DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.

                    func (*Label) Equals

                    func (l *Label) Equals(b *Label) bool

                      Equals returns true if source, Key and Value are equal and false otherwise.

                      func (Label) FormatForKVStore

                      func (l Label) FormatForKVStore() string

                        FormatForKVStore returns the label as a formatted string, ending in a semicolon

                        DO NOT BREAK THE FORMAT OF THIS. THE RETURNED STRING IS USED AS PART OF THE KEY IN THE KEY-VALUE STORE.

                        Non-pointer receiver allows this to be called on a value in a map.

                        func (*Label) GetExtendedKey

                        func (l *Label) GetExtendedKey() string

                          GetExtendedKey returns the key of a label with the source encoded.

                          func (*Label) IsAnySource

                          func (l *Label) IsAnySource() bool

                            IsAnySource return if the label was set with source "any".

                            func (*Label) IsReservedSource

                            func (l *Label) IsReservedSource() bool

                              IsReservedSource return if the label was set with source "Reserved".

                              func (*Label) IsValid

                              func (l *Label) IsValid() bool

                                IsValid returns true if Key != "".

                                func (*Label) String

                                func (l *Label) String() string

                                  String returns the string representation of Label in the for of Source:Key=Value or Source:Key if Value is empty.

                                  func (*Label) UnmarshalJSON

                                  func (l *Label) UnmarshalJSON(data []byte) error

                                    UnmarshalJSON TODO create better explanation about unmarshall with examples

                                    type LabelArray

                                    type LabelArray []Label

                                      LabelArray is an array of labels forming a set

                                      func NewLabelArrayFromSortedList

                                      func NewLabelArrayFromSortedList(list string) LabelArray

                                        NewLabelArrayFromSortedList returns labels based on the output of SortedList() Trailing ';' will result in an empty key that must be filtered out.

                                        func NewSelectLabelArrayFromModel

                                        func NewSelectLabelArrayFromModel(base []string) LabelArray

                                          NewSelectLabelArrayFromModel parses a slice of strings and converts them into an array of selecting labels, sorted by the key.

                                          func ParseLabelArray

                                          func ParseLabelArray(labels ...string) LabelArray

                                            ParseLabelArray parses a list of labels and returns a LabelArray

                                            func ParseLabelArrayFromArray

                                            func ParseLabelArrayFromArray(base []string) LabelArray

                                              ParseLabelArrayFromArray converts an array of strings as labels and returns a LabelArray

                                              func ParseSelectLabelArray

                                              func ParseSelectLabelArray(labels ...string) LabelArray

                                                ParseSelectLabelArray parses a list of select labels and returns a LabelArray

                                                func ParseSelectLabelArrayFromArray

                                                func ParseSelectLabelArrayFromArray(base []string) LabelArray

                                                  ParseSelectLabelArrayFromArray converts an array of strings as select labels and returns a LabelArray

                                                  func (LabelArray) Contains

                                                  func (ls LabelArray) Contains(needed LabelArray) bool

                                                    Contains returns true if all ls contains all the labels in needed. If needed contains no labels, Contains() will always return true

                                                    func (LabelArray) DeepCopy

                                                    func (ls LabelArray) DeepCopy() LabelArray

                                                      DeepCopy returns a deep copy of the labels.

                                                      func (*LabelArray) DeepEqual

                                                      func (in *LabelArray) DeepEqual(other *LabelArray) bool

                                                        DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.

                                                        func (LabelArray) Equals

                                                        func (ls LabelArray) Equals(b LabelArray) bool

                                                          Equals returns true if the label arrays are the same, i.e., have the same labels in the same order.

                                                          func (LabelArray) Get

                                                          func (ls LabelArray) Get(key string) string

                                                            Get returns the value for the provided key. Implementation of the github.com/cilium/cilium/pkg/k8s/slim/k8s/apis/labels.Labels interface.

                                                            func (LabelArray) GetModel

                                                            func (ls LabelArray) GetModel() []string

                                                              GetModel returns the LabelArray as a string array with fully-qualified labels. The output is parseable by ParseLabelArrayFromArray

                                                              func (LabelArray) Has

                                                              func (ls LabelArray) Has(key string) bool

                                                                Has returns whether the provided key exists. Implementation of the github.com/cilium/cilium/pkg/k8s/slim/k8s/apis/labels.Labels interface.

                                                                func (LabelArray) Labels

                                                                func (ls LabelArray) Labels() Labels

                                                                  Labels returns the LabelArray as Labels

                                                                  func (LabelArray) Lacks

                                                                  func (ls LabelArray) Lacks(needed LabelArray) LabelArray

                                                                    Lacks is identical to Contains but returns all missing labels

                                                                    func (LabelArray) Less

                                                                    func (ls LabelArray) Less(b LabelArray) bool

                                                                      Less returns true if ls comes before b in the lexicographical order. Assumes both ls and b are already sorted.

                                                                      func (LabelArray) Sort

                                                                      func (ls LabelArray) Sort() LabelArray

                                                                        Sort is an internal utility to return all LabelArrays in sorted order, when the source material may be unsorted. 'ls' is sorted in-place, but also returns the sorted array for convenience.

                                                                        func (LabelArray) String

                                                                        func (ls LabelArray) String() string

                                                                        func (LabelArray) StringMap

                                                                        func (ls LabelArray) StringMap() map[string]string

                                                                          StringMap converts LabelArray into map[string]string Note: The source is included in the keys with a ':' separator. Note: LabelArray does not deduplicate entries, as it is an array. It is possible for the output to contain fewer entries when the source and key are repeated in a LabelArray, as that is the key of the output. This scenario is not expected.

                                                                          type LabelArrayList

                                                                          type LabelArrayList []LabelArray

                                                                            LabelArrayList is an array of LabelArrays. It is primarily intended as a simple collection

                                                                            func (LabelArrayList) DeepCopy

                                                                            func (ls LabelArrayList) DeepCopy() LabelArrayList

                                                                              DeepCopy returns a deep copy of the LabelArray, with each element also copied.

                                                                              func (*LabelArrayList) DeepEqual

                                                                              func (in *LabelArrayList) DeepEqual(other *LabelArrayList) bool

                                                                                DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.

                                                                                func (LabelArrayList) Equals

                                                                                func (ls LabelArrayList) Equals(b LabelArrayList) bool

                                                                                  Equals returns true if the label arrays lists have the same label arrays in the same order.

                                                                                  func (LabelArrayList) GetModel

                                                                                  func (ls LabelArrayList) GetModel() [][]string

                                                                                    GetModel returns the LabelArrayList as a [][]string. Each member LabelArray becomes a []string.

                                                                                    func (LabelArrayList) Sort

                                                                                    func (ls LabelArrayList) Sort() LabelArrayList

                                                                                      Sort sorts the LabelArrayList in-place, but also returns the sorted list for convenience. The LabelArrays themselves must already be sorted. This is true for all constructors of LabelArray.

                                                                                      type Labels

                                                                                      type Labels map[string]Label

                                                                                        Labels is a map of labels where the map's key is the same as the label's key.

                                                                                        func Map2Labels

                                                                                        func Map2Labels(m map[string]string, source string) Labels

                                                                                          Map2Labels transforms in the form: map[key(string)]value(string) into Labels. The source argument will overwrite the source written in the key of the given map. Example: l := Map2Labels(map[string]string{"k8s:foo": "bar"}, "cilium") fmt.Printf("%+v\n", l)

                                                                                          map[string]Label{"foo":Label{Key:"foo", Value:"bar", Source:"cilium"}}
                                                                                          

                                                                                          func NewLabelsFromModel

                                                                                          func NewLabelsFromModel(base []string) Labels

                                                                                            NewLabelsFromModel creates labels from string array.

                                                                                            func NewLabelsFromSortedList

                                                                                            func NewLabelsFromSortedList(list string) Labels

                                                                                              NewLabelsFromSortedList returns labels based on the output of SortedList()

                                                                                              func (Labels) AppendPrefixInKey

                                                                                              func (l Labels) AppendPrefixInKey(prefix string) Labels

                                                                                                AppendPrefixInKey appends the given prefix to all the Key's of the map and the respective Labels' Key.

                                                                                                func (*Labels) DeepEqual

                                                                                                func (in *Labels) DeepEqual(other *Labels) bool

                                                                                                  DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.

                                                                                                  func (Labels) Equals

                                                                                                  func (l Labels) Equals(other Labels) bool

                                                                                                    Equals returns true if the two Labels contain the same set of labels.

                                                                                                    func (Labels) FindReserved

                                                                                                    func (l Labels) FindReserved() Labels

                                                                                                      FindReserved locates all labels with reserved source in the labels and returns a copy of them. If there are no reserved labels, returns nil. TODO: return LabelArray as it is likely faster

                                                                                                      func (Labels) GetFromSource

                                                                                                      func (l Labels) GetFromSource(source string) Labels

                                                                                                        GetFromSource returns all labels that are from the given source.

                                                                                                        func (Labels) GetModel

                                                                                                        func (l Labels) GetModel() []string

                                                                                                          GetModel returns model with all the values of the labels.

                                                                                                          func (Labels) GetPrintableModel

                                                                                                          func (l Labels) GetPrintableModel() (res []string)

                                                                                                            GetPrintableModel turns the Labels into a sorted list of strings representing the labels, with CIDRs deduplicated (ie, only provide the most specific CIDR).

                                                                                                            func (Labels) IsReserved

                                                                                                            func (l Labels) IsReserved() bool

                                                                                                              IsReserved returns true if any of the labels has a reserved source.

                                                                                                              func (Labels) K8sStringMap

                                                                                                              func (l Labels) K8sStringMap() map[string]string

                                                                                                                StringMap converts Labels into map[string]string

                                                                                                                func (Labels) LabelArray

                                                                                                                func (l Labels) LabelArray() LabelArray

                                                                                                                  LabelArray returns the labels as label array, sorted by the key.

                                                                                                                  func (Labels) MergeLabels

                                                                                                                  func (l Labels) MergeLabels(from Labels)

                                                                                                                    MergeLabels merges labels from into to. It overwrites all labels with the same Key as from written into to. Example: to := Labels{Label{key1, value1, source1}, Label{key2, value3, source4}} from := Labels{Label{key1, value3, source4}} to.MergeLabels(from) fmt.Printf("%+v\n", to)

                                                                                                                    Labels{Label{key1, value3, source4}, Label{key2, value3, source4}}
                                                                                                                    

                                                                                                                    func (Labels) SHA256Sum

                                                                                                                    func (l Labels) SHA256Sum() string

                                                                                                                      SHA256Sum calculates l' internal SHA256Sum. For a particular set of labels is guarantee that it will always have the same SHA256Sum.

                                                                                                                      func (Labels) SortedList

                                                                                                                      func (l Labels) SortedList() []byte

                                                                                                                        SortedList returns the labels as a sorted list, separated by semicolon

                                                                                                                        DO NOT BREAK THE FORMAT OF THIS. THE RETURNED STRING IS USED AS KEY IN THE KEY-VALUE STORE.

                                                                                                                        func (Labels) String

                                                                                                                        func (l Labels) String() string

                                                                                                                          String returns the map of labels as human readable string

                                                                                                                          func (Labels) StringMap

                                                                                                                          func (l Labels) StringMap() map[string]string

                                                                                                                            StringMap converts Labels into map[string]string

                                                                                                                            func (Labels) ToSlice

                                                                                                                            func (l Labels) ToSlice() []Label

                                                                                                                              ToSlice returns a slice of label with the values of the given Labels' map, sorted by the key.

                                                                                                                              type OpLabels

                                                                                                                              type OpLabels struct {
                                                                                                                              	// Active labels that are enabled and disabled but not deleted
                                                                                                                              	Custom Labels
                                                                                                                              
                                                                                                                              	// Labels derived from orchestration system
                                                                                                                              	OrchestrationIdentity Labels
                                                                                                                              
                                                                                                                              	// orchestrationIdentity labels which have been disabled
                                                                                                                              	Disabled Labels
                                                                                                                              
                                                                                                                              	// orchestrationInfo - labels from orchestration which are not used in determining a security identity
                                                                                                                              	OrchestrationInfo Labels
                                                                                                                              }

                                                                                                                                OpLabels represents the the possible types.

                                                                                                                                func NewOpLabels

                                                                                                                                func NewOpLabels() OpLabels

                                                                                                                                  NewOpLabels creates new initialized OpLabels

                                                                                                                                  func (*OpLabels) AllLabels

                                                                                                                                  func (o *OpLabels) AllLabels() Labels

                                                                                                                                    AllLabels returns all Labels within the provided OpLabels.

                                                                                                                                    func (*OpLabels) DeepEqual

                                                                                                                                    func (in *OpLabels) DeepEqual(other *OpLabels) bool

                                                                                                                                      DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.

                                                                                                                                      func (*OpLabels) GetIdentityLabel

                                                                                                                                      func (o *OpLabels) GetIdentityLabel(key string) (l Label, found bool)

                                                                                                                                        GetIdentityLabel returns the value of the given Key from all IdentityLabels.

                                                                                                                                        func (*OpLabels) IdentityLabels

                                                                                                                                        func (o *OpLabels) IdentityLabels() Labels

                                                                                                                                          IdentityLabels returns map of labels that are used when determining a security identity.

                                                                                                                                          func (*OpLabels) ModifyIdentityLabels

                                                                                                                                          func (o *OpLabels) ModifyIdentityLabels(addLabels, delLabels Labels) (changed bool, err error)

                                                                                                                                          func (*OpLabels) ReplaceIdentityLabels

                                                                                                                                          func (o *OpLabels) ReplaceIdentityLabels(l Labels, logger *logrus.Entry) bool

                                                                                                                                          func (*OpLabels) ReplaceInformationLabels

                                                                                                                                          func (o *OpLabels) ReplaceInformationLabels(l Labels, logger *logrus.Entry) bool

                                                                                                                                          func (*OpLabels) SplitUserLabelChanges

                                                                                                                                          func (o *OpLabels) SplitUserLabelChanges(lbls Labels) (add, del Labels)

                                                                                                                                            SplitUserLabelChanges returns labels to 'add' and 'del'ete to make the custom labels match 'lbls' FIXME: Somewhere in the code we crash if the returned maps are non-nil but length 0. We retain this behaviour here because it's easier.

                                                                                                                                            Directories

                                                                                                                                            Path Synopsis
                                                                                                                                            Package cidr provides helper methods for generating labels for CIDRs which are partially derived from node state.
                                                                                                                                            Package cidr provides helper methods for generating labels for CIDRs which are partially derived from node state.