Skip to content

Commit c190315

Browse files
fix: Review comments and relevent code fixed
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Signed-off-by: Jitendra Yejare <11752425+jyejare@users.noreply.github.com>
1 parent 89af0da commit c190315

30 files changed

Lines changed: 521 additions & 1007 deletions

File tree

.secrets.baseline

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,7 @@
957957
"filename": "infra/feast-operator/api/v1/featurestore_types.go",
958958
"hashed_secret": "44e17306b837162269a410204daaa5ecee4ec22c",
959959
"is_verified": false,
960-
"line_number": 879
960+
"line_number": 889
961961
}
962962
],
963963
"infra/feast-operator/api/v1/zz_generated.deepcopy.go": [
@@ -966,21 +966,21 @@
966966
"filename": "infra/feast-operator/api/v1/zz_generated.deepcopy.go",
967967
"hashed_secret": "f914fc9324de1bec1ad13dec94a8ea2ddb41fc87",
968968
"is_verified": false,
969-
"line_number": 785
969+
"line_number": 810
970970
},
971971
{
972972
"type": "Secret Keyword",
973973
"filename": "infra/feast-operator/api/v1/zz_generated.deepcopy.go",
974974
"hashed_secret": "44e17306b837162269a410204daaa5ecee4ec22c",
975975
"is_verified": false,
976-
"line_number": 846
976+
"line_number": 871
977977
},
978978
{
979979
"type": "Secret Keyword",
980980
"filename": "infra/feast-operator/api/v1/zz_generated.deepcopy.go",
981981
"hashed_secret": "c2028031c154bbe86fd69bef740855c74b927dcf",
982982
"is_verified": false,
983-
"line_number": 1491
983+
"line_number": 1516
984984
}
985985
],
986986
"infra/feast-operator/api/v1alpha1/featurestore_types.go": [
@@ -1163,14 +1163,14 @@
11631163
"filename": "infra/feast-operator/internal/controller/services/repo_config.go",
11641164
"hashed_secret": "44e17306b837162269a410204daaa5ecee4ec22c",
11651165
"is_verified": false,
1166-
"line_number": 129
1166+
"line_number": 133
11671167
},
11681168
{
11691169
"type": "Secret Keyword",
11701170
"filename": "infra/feast-operator/internal/controller/services/repo_config.go",
11711171
"hashed_secret": "e2fb052132fd6a07a56af2013e0b62a1f510572c",
11721172
"is_verified": false,
1173-
"line_number": 220
1173+
"line_number": 224
11741174
}
11751175
],
11761176
"infra/feast-operator/internal/controller/services/services.go": [
@@ -1562,5 +1562,5 @@
15621562
}
15631563
]
15641564
},
1565-
"generated_at": "2026-05-01T07:12:24Z"
1565+
"generated_at": "2026-05-08T11:04:28Z"
15661566
}

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ install-python-dependencies-minimal: ## Install minimal Python dependencies usin
105105
# Used in github actions/ci
106106
install-python-dependencies-ci: ## Install Python CI dependencies using uv pip sync
107107
# Create virtualenv if it doesn't exist
108-
uv venv .venv
108+
@if [ ! -d .venv ]; then \
109+
echo "Creating virtualenv..."; \
110+
uv venv .venv; \
111+
fi
109112
# Install CPU-only torch first to prevent CUDA dependency issues (Linux only)
110113
@if [ "$$(uname -s)" = "Linux" ]; then \
111114
echo "Installing dependencies with torch CPU index for Linux..."; \

docs/how-to-guides/feature-monitoring.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,8 @@ Baseline computation is:
5151
To skip automatic baseline computation on `feast apply`, set the DQM config in `feature_store.yaml`:
5252

5353
```yaml
54-
feature_server:
55-
type: local
56-
dqm:
57-
distribution:
58-
initial:
59-
enabled: false
54+
dqm:
55+
auto_baseline: false
6056
```
6157
6258
When using the Feast operator, set this in the `FeatureStore` CR:
@@ -67,9 +63,7 @@ kind: FeatureStore
6763
spec:
6864
feastProject: my_project
6965
dqm:
70-
distribution:
71-
initial:
72-
enabled: false
66+
autoBaseline: false
7367
```
7468

7569
## 3. Scheduled monitoring with the CLI

infra/feast-operator/api/v1/featurestore_types.go

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -234,23 +234,9 @@ type BatchEngineConfig struct {
234234

235235
// DqmConfig defines the Data Quality Monitoring configuration.
236236
type DqmConfig struct {
237-
// Distribution controls distribution-related DQM behaviour.
238-
// +optional
239-
Distribution *DqmDistributionConfig `json:"distribution,omitempty"`
240-
}
241-
242-
// DqmDistributionConfig controls distribution monitoring settings.
243-
type DqmDistributionConfig struct {
244-
// Initial controls automatic baseline distribution computation on feast apply.
245-
// +optional
246-
Initial *DqmInitialDistributionConfig `json:"initial,omitempty"`
247-
}
248-
249-
// DqmInitialDistributionConfig controls the initial baseline distribution computation.
250-
type DqmInitialDistributionConfig struct {
251-
// Enabled controls whether baseline distribution is computed on feast apply. Defaults to true.
237+
// AutoBaseline controls whether baseline distribution is computed automatically on feast apply. Defaults to true.
252238
// +kubebuilder:default=true
253-
Enabled *bool `json:"enabled,omitempty"`
239+
AutoBaseline *bool `json:"autoBaseline,omitempty"`
254240
}
255241

256242
// JobSpec describes how the job execution will look like.

infra/feast-operator/api/v1/zz_generated.deepcopy.go

Lines changed: 4 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,15 @@ spec:
529529
description: The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
530530
type: string
531531
type: object
532+
dqm:
533+
description: Dqm configures Data Quality Monitoring behaviour.
534+
properties:
535+
autoBaseline:
536+
default: true
537+
description: AutoBaseline controls whether baseline distribution
538+
is computed automatically on feast apply. Defaults to true.
539+
type: boolean
540+
type: object
532541
feastProject:
533542
description: FeastProject is the Feast project id.
534543
pattern: ^[A-Za-z0-9][A-Za-z0-9_-]*$
@@ -6459,6 +6468,15 @@ spec:
64596468
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
64606469
type: string
64616470
type: object
6471+
dqm:
6472+
description: Dqm configures Data Quality Monitoring behaviour.
6473+
properties:
6474+
autoBaseline:
6475+
default: true
6476+
description: AutoBaseline controls whether baseline distribution
6477+
is computed automatically on feast apply. Defaults to true.
6478+
type: boolean
6479+
type: object
64626480
feastProject:
64636481
description: FeastProject is the Feast project id.
64646482
pattern: ^[A-Za-z0-9][A-Za-z0-9_-]*$

infra/feast-operator/dist/install.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,15 @@ spec:
537537
description: The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
538538
type: string
539539
type: object
540+
dqm:
541+
description: Dqm configures Data Quality Monitoring behaviour.
542+
properties:
543+
autoBaseline:
544+
default: true
545+
description: AutoBaseline controls whether baseline distribution
546+
is computed automatically on feast apply. Defaults to true.
547+
type: boolean
548+
type: object
540549
feastProject:
541550
description: FeastProject is the Feast project id.
542551
pattern: ^[A-Za-z0-9][A-Za-z0-9_-]*$
@@ -6467,6 +6476,15 @@ spec:
64676476
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
64686477
type: string
64696478
type: object
6479+
dqm:
6480+
description: Dqm configures Data Quality Monitoring behaviour.
6481+
properties:
6482+
autoBaseline:
6483+
default: true
6484+
description: AutoBaseline controls whether baseline distribution
6485+
is computed automatically on feast apply. Defaults to true.
6486+
type: boolean
6487+
type: object
64706488
feastProject:
64716489
description: FeastProject is the Feast project id.
64726490
pattern: ^[A-Za-z0-9][A-Za-z0-9_-]*$

infra/feast-operator/docs/api/markdown/ref.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,20 @@ _Appears in:_
121121
| `image` _string_ | |
122122

123123

124+
#### DqmConfig
125+
126+
127+
128+
DqmConfig defines the Data Quality Monitoring configuration.
129+
130+
_Appears in:_
131+
- [FeatureStoreSpec](#featurestorespec)
132+
133+
| Field | Description |
134+
| --- | --- |
135+
| `autoBaseline` _boolean_ | AutoBaseline controls whether baseline distribution is computed automatically on feast apply. Defaults to true. |
136+
137+
124138
#### FeastCronJob
125139

126140

@@ -275,6 +289,7 @@ _Appears in:_
275289
| `authz` _[AuthzConfig](#authzconfig)_ | |
276290
| `cronJob` _[FeastCronJob](#feastcronjob)_ | |
277291
| `batchEngine` _[BatchEngineConfig](#batchengineconfig)_ | |
292+
| `dqm` _[DqmConfig](#dqmconfig)_ | Dqm configures Data Quality Monitoring behaviour. |
278293
| `replicas` _integer_ | Replicas is the desired number of pod replicas. Used by the scale sub-resource.
279294
Mutually exclusive with services.scaling.autoscaling. |
280295
| `materialization` _[MaterializationConfig](#materializationconfig)_ | Materialization controls feature materialization behavior (batch size, pull strategy).

infra/feast-operator/internal/controller/services/repo_config.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -482,17 +482,11 @@ func coerceStringToYamlType(v string) interface{} {
482482
}
483483

484484
func setRepoConfigDqm(dqmConfig *feastdevv1.DqmConfig, repoConfig *RepoConfig) {
485-
if dqmConfig.Distribution == nil || dqmConfig.Distribution.Initial == nil || dqmConfig.Distribution.Initial.Enabled == nil {
485+
if dqmConfig.AutoBaseline == nil {
486486
return
487487
}
488-
repoConfig.FeatureServer = &FeatureServerYamlConfig{
489-
Dqm: &DqmYamlConfig{
490-
Distribution: &DqmDistributionYamlConfig{
491-
Initial: &DqmInitialDistributionYamlConfig{
492-
Enabled: *dqmConfig.Distribution.Initial.Enabled,
493-
},
494-
},
495-
},
488+
repoConfig.Dqm = &DqmYamlConfig{
489+
AutoBaseline: *dqmConfig.AutoBaseline,
496490
}
497491
}
498492

infra/feast-operator/internal/controller/services/repo_config_test.go

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -319,36 +319,29 @@ var _ = Describe("Repo Config", func() {
319319
Expect(repoConfig.OnlineStore).To(Equal(expectedOnlineConfig))
320320
Expect(repoConfig.Registry).To(Equal(expectedRegistryConfig))
321321

322-
By("Having DQM config with initial distribution disabled")
322+
By("Having DQM config with auto_baseline disabled")
323323
featureStore = minimalFeatureStore()
324-
dqmEnabled := false
324+
dqmAutoBaseline := false
325325
featureStore.Spec.Dqm = &feastdevv1.DqmConfig{
326-
Distribution: &feastdevv1.DqmDistributionConfig{
327-
Initial: &feastdevv1.DqmInitialDistributionConfig{
328-
Enabled: &dqmEnabled,
329-
},
330-
},
326+
AutoBaseline: &dqmAutoBaseline,
331327
}
332328
ApplyDefaultsToStatus(featureStore)
333329
repoConfig, err = getServiceRepoConfig(featureStore, emptyMockExtractConfigFromSecret, emptyMockExtractConfigFromConfigMap, false)
334330
Expect(err).NotTo(HaveOccurred())
335-
Expect(repoConfig.FeatureServer).NotTo(BeNil())
336-
Expect(repoConfig.FeatureServer.Dqm).NotTo(BeNil())
337-
Expect(repoConfig.FeatureServer.Dqm.Distribution).NotTo(BeNil())
338-
Expect(repoConfig.FeatureServer.Dqm.Distribution.Initial).NotTo(BeNil())
339-
Expect(repoConfig.FeatureServer.Dqm.Distribution.Initial.Enabled).To(BeFalse())
331+
Expect(repoConfig.Dqm).NotTo(BeNil())
332+
Expect(repoConfig.Dqm.AutoBaseline).To(BeFalse())
340333

341334
fsYaml, marshalErr := yaml.Marshal(repoConfig)
342335
Expect(marshalErr).NotTo(HaveOccurred())
343-
Expect(string(fsYaml)).To(ContainSubstring("feature_server:"))
344-
Expect(string(fsYaml)).To(ContainSubstring("enabled: false"))
336+
Expect(string(fsYaml)).To(ContainSubstring("dqm:"))
337+
Expect(string(fsYaml)).To(ContainSubstring("auto_baseline: false"))
345338

346-
By("Having no DQM config — feature_server should be nil")
339+
By("Having no DQM config — dqm should be nil")
347340
featureStore = minimalFeatureStore()
348341
ApplyDefaultsToStatus(featureStore)
349342
repoConfig, err = getServiceRepoConfig(featureStore, emptyMockExtractConfigFromSecret, emptyMockExtractConfigFromConfigMap, false)
350343
Expect(err).NotTo(HaveOccurred())
351-
Expect(repoConfig.FeatureServer).To(BeNil())
344+
Expect(repoConfig.Dqm).To(BeNil())
352345
})
353346

354347
It("should set feature_server block with type local and all options", func() {

0 commit comments

Comments
 (0)