diff --git a/controllers/consoleplugin/config/config.go b/controllers/consoleplugin/config/config.go index 9d4b450f1..e16e800d9 100644 --- a/controllers/consoleplugin/config/config.go +++ b/controllers/consoleplugin/config/config.go @@ -87,6 +87,19 @@ type FilterConfig struct { Placeholder string `yaml:"placeholder,omitempty" json:"placeholder,omitempty"` } +type ScopeConfig struct { + ID string `yaml:"id" json:"id"` + Name string `yaml:"name" json:"name"` + ShortName string `yaml:"shortName" json:"shortName"` + Description string `yaml:"description" json:"description"` + Labels []string `yaml:"labels" json:"labels"` + Feature string `yaml:"feature,omitempty" json:"feature,omitempty"` + Groups []string `yaml:"groups,omitempty" json:"groups,omitempty"` + Filter string `yaml:"filter,omitempty" json:"filter,omitempty"` + Filters []string `yaml:"filters,omitempty" json:"filters,omitempty"` + StepInto string `yaml:"stepInto,omitempty" json:"stepInto,omitempty"` +} + type FieldConfig struct { Name string `yaml:"name" json:"name"` Type string `yaml:"type" json:"type"` @@ -101,17 +114,17 @@ type Deduper struct { } type FrontendConfig struct { - RecordTypes []api.ConnTrackOutputRecordTypeEnum `yaml:"recordTypes" json:"recordTypes"` - Columns []ColumnConfig `yaml:"columns" json:"columns"` - Sampling int `yaml:"sampling" json:"sampling"` - Features []string `yaml:"features" json:"features"` - Deduper Deduper `yaml:"deduper" json:"deduper"` - Fields []FieldConfig `yaml:"fields" json:"fields"` - + RecordTypes []api.ConnTrackOutputRecordTypeEnum `yaml:"recordTypes" json:"recordTypes"` PortNaming flowslatest.ConsolePluginPortConfig `yaml:"portNaming,omitempty" json:"portNaming,omitempty"` + Columns []ColumnConfig `yaml:"columns" json:"columns"` Filters []FilterConfig `yaml:"filters,omitempty" json:"filters,omitempty"` + Scopes []ScopeConfig `yaml:"scopes" json:"scopes"` QuickFilters []flowslatest.QuickFilter `yaml:"quickFilters,omitempty" json:"quickFilters,omitempty"` AlertNamespaces []string `yaml:"alertNamespaces,omitempty" json:"alertNamespaces,omitempty"` + Sampling int `yaml:"sampling" json:"sampling"` + Features []string `yaml:"features" json:"features"` + Deduper Deduper `yaml:"deduper" json:"deduper"` + Fields []FieldConfig `yaml:"fields" json:"fields"` } type PluginConfig struct { diff --git a/controllers/consoleplugin/config/static-frontend-config.yaml b/controllers/consoleplugin/config/static-frontend-config.yaml index 83b64b504..a7792e978 100644 --- a/controllers/consoleplugin/config/static-frontend-config.yaml +++ b/controllers/consoleplugin/config/static-frontend-config.yaml @@ -904,6 +904,127 @@ filters: name: Network events flow monitoring component: text hint: Specify a single network event. +scopes: + - id: cluster + name: Cluster + shortName: Cl + description: Cluster name or identifier + labels: + - K8S_ClusterName + feature: multiCluster + filter: cluster_name + stepInto: zone + - id: zone + name: Zone + shortName: AZ + description: Availability zone + labels: + - SrcK8S_Zone + - DstK8S_Zone + feature: zones + groups: + - clusters + filters: + - src_zone + - dst_zone + stepInto: host + - id: host + name: Node + shortName: Node + description: Node on which the resources are running + labels: + - SrcK8S_HostName + - DstK8S_HostName + groups: + - clusters + - zones + - clusters+zones + filters: + - src_host_name + - dst_host_name + stepInto: resource + - id: namespace + name: Namespace + shortName: NS + description: Resource namespace + labels: + - SrcK8S_Namespace + - DstK8S_Namespace + groups: + - clusters + - clusters+zones + - clusters+hosts + - zones + - zones+hosts + - hosts + filters: + - src_namespace + - dst_namespace + stepInto: owner + - id: owner + name: Owner + shortName: Own + description: Controller owner, such as a Deployment + labels: + - SrcK8S_OwnerName + - SrcK8S_OwnerType + - DstK8S_OwnerName + - DstK8S_OwnerType + - SrcK8S_Namespace + - DstK8S_Namespace + groups: + - clusters + - clusters+zones + - clusters+hosts + - clusters+namespaces + - zones + - zones+hosts + - zones+namespaces + - hosts + - hosts+namespaces + - namespaces + filters: + - src_owner_name + - dst_owner_name + stepInto: resource + - id: resource + name: Resource + shortName: Res + description: Base resource, such as a Pod, a Service or a Node + labels: + - SrcK8S_Name + - SrcK8S_Type + - SrcK8S_OwnerName + - SrcK8S_OwnerType + - SrcK8S_Namespace + - SrcAddr + - SrcK8S_HostName + - DstK8S_Name + - DstK8S_Type + - DstK8S_OwnerName + - DstK8S_OwnerType + - DstK8S_Namespace + - DstAddr + - DstK8S_HostName + groups: + - clusters + - clusters+zones + - clusters+hosts + - clusters+namespaces + - clusters+owners + - zones + - zones+hosts + - zones+namespaces + - zones+owners + - hosts + - hosts+namespaces + - hosts+owners + - namespaces + - namespaces+owners + - owners + filters: + - src_resource + - dst_resource # Fields definition, used to generate documentation fields: - name: TimeFlowStartMs diff --git a/controllers/consoleplugin/consoleplugin_test.go b/controllers/consoleplugin/consoleplugin_test.go index 2c463ac71..9db9822fd 100644 --- a/controllers/consoleplugin/consoleplugin_test.go +++ b/controllers/consoleplugin/consoleplugin_test.go @@ -338,6 +338,7 @@ func TestConfigMapContent(t *testing.T) { assert.Empty(config.Frontend.Features) assert.NotEmpty(config.Frontend.Columns) assert.NotEmpty(config.Frontend.Filters) + assert.NotEmpty(config.Frontend.Scopes) assert.Equal(config.Frontend.Sampling, 1) assert.Equal(config.Frontend.Deduper.Mark, false) assert.Equal(config.Frontend.Deduper.Merge, true)