filterutil

package
v1.106.0-rc.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2023 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ParamFilterClusters        = "filterClusters"
	ParamFilterNodes           = "filterNodes"
	ParamFilterNamespaces      = "filterNamespaces"
	ParamFilterControllerKinds = "filterControllerKinds"
	ParamFilterControllers     = "filterControllers"
	ParamFilterPods            = "filterPods"
	ParamFilterContainers      = "filterContainers"

	ParamFilterDepartments  = "filterDepartments"
	ParamFilterEnvironments = "filterEnvironments"
	ParamFilterOwners       = "filterOwners"
	ParamFilterProducts     = "filterProducts"
	ParamFilterTeams        = "filterTeams"

	ParamFilterAnnotations = "filterAnnotations"
	ParamFilterLabels      = "filterLabels"
	ParamFilterServices    = "filterServices"

	ParamFilterAccounts      = "filterAccounts"
	ParamFilterCategories    = "filterCategories"
	ParamFilterNames         = "filterNames"
	ParamFilterProjects      = "filterProjects"
	ParamFilterProviders     = "filterProviders"
	ParamFilterProviderIDs   = "filterProviderIDs"
	ParamFilterProviderIDsV2 = "filterProviderIds"
	ParamFilterRegions       = "filterRegions"
	ParamFilterTypes         = "filterTypes"
)

Variables

AllocationPropToV1FilterParamKey maps allocation string property representations to v1 filter param keys for legacy filter config support (e.g. reports). Example mapping: "cluster" -> "filterClusters"

Map to store Kubecost Asset property to Asset Filter types. AssetPropToV1FilterParamKey maps asset string property representations to v1 filter param keys for legacy filter config support (e.g. reports). Example mapping: "category" -> "filterCategories"

Functions

func AllHTTPParamKeys

func AllHTTPParamKeys() []string

AllHTTPParamKeys returns all HTTP GET parameters used for v1 filters. It is intended to help validate HTTP queries in handlers to help avoid e.g. spelling errors.

func AllocationFilterFromParamsV1

func AllocationFilterFromParamsV1(
	params AllocationFilterV1,
	labelConfig *kubecost.LabelConfig,
	clusterMap clusters.ClusterMap,
) filter.Filter

AllocationFilterFromParamsV1 takes a set of HTTP query parameters and converts them to an AllocationFilter, which is a structured in-Go representation of a set of filters.

The HTTP query parameters are the "v1" filters attached to the Allocation API: "filterNamespaces=", "filterNodes=", etc.

It takes an optional LabelConfig, which if provided enables "label-mapped" filters like "filterDepartments".

It takes an optional ClusterMap, which if provided enables cluster name filtering. This turns all `filterClusters=foo` arguments into the equivalent of `clusterID = "foo" OR clusterName = "foo"`.

func AssetFilterFromParamsV1

func AssetFilterFromParamsV1(
	qp mapper.PrimitiveMapReader,
	clusterMap clusters.ClusterMap,
) filter.Filter

func DefaultFieldByName

func DefaultFieldByName[T ~string](field T) *ast.Field

DefaultFieldByName looks up a specific T field instance by name and returns the default ast.Field value for that type.

func GetList

func GetList(primaryKey, secondaryKey string, qp mapper.PrimitiveMapReader) []string

GetList provides a list of values from the first key if they exist, otherwise, it returns the values from the second key.

func TestingOnlySortNode

func TestingOnlySortNode(n ast.FilterNode) ast.FilterNode

TestingOnlySortNode sorts the provided node deterministically, intended only for use in unit tests to ensure that filter parsing steps produce logically- equivalent filters. This is useful only for cases where filters are constructed nondeterministically, like via a map iteration.

func ValidAssetFilterParams

func ValidAssetFilterParams() []string

ValidAssetFilterParams returns a list of all possible filter parameters

Types

type AllocationFilterV1

type AllocationFilterV1 struct {
	Annotations     []string `json:"annotations,omitempty"`
	Containers      []string `json:"containers,omitempty"`
	Controllers     []string `json:"controllers,omitempty"`
	ControllerKinds []string `json:"controllerKinds,omitempty"`
	Clusters        []string `json:"clusters,omitempty"`
	Departments     []string `json:"departments,omitempty"`
	Environments    []string `json:"environments,omitempty"`
	Labels          []string `json:"labels,omitempty"`
	Namespaces      []string `json:"namespaces,omitempty"`
	Nodes           []string `json:"nodes,omitempty"`
	Owners          []string `json:"owners,omitempty"`
	Pods            []string `json:"pods,omitempty"`
	Products        []string `json:"products,omitempty"`
	Services        []string `json:"services,omitempty"`
	Teams           []string `json:"teams,omitempty"`
}

func ConvertFilterQueryParams

func ConvertFilterQueryParams(qp mapper.PrimitiveMapReader, labelConfig *kubecost.LabelConfig) AllocationFilterV1

func (AllocationFilterV1) Equals

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL