Skip to content

Commit 862efd6

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 f26c139 commit 862efd6

30 files changed

Lines changed: 534 additions & 1020 deletions

File tree

.secrets.baseline

Lines changed: 6 additions & 6 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": 885
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": 1496
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": [

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: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,9 @@ type FeatureStoreSpec struct {
127127
AuthzConfig *AuthzConfig `json:"authz,omitempty"`
128128
CronJob *FeastCronJob `json:"cronJob,omitempty"`
129129
BatchEngine *BatchEngineConfig `json:"batchEngine,omitempty"`
130-
// Dqm configures Data Quality Monitoring behaviour.
130+
// DataQualityMonitoring configures Data Quality Monitoring behaviour.
131131
// +optional
132-
Dqm *DqmConfig `json:"dqm,omitempty"`
132+
DataQualityMonitoring *DataQualityMonitoringConfig `json:"dqm,omitempty"`
133133
// Replicas is the desired number of pod replicas. Used by the scale sub-resource.
134134
// Mutually exclusive with services.scaling.autoscaling.
135135
// +kubebuilder:default=1
@@ -232,25 +232,11 @@ type BatchEngineConfig struct {
232232
ConfigMapKey string `json:"configMapKey,omitempty"`
233233
}
234234

235-
// DqmConfig defines the Data Quality Monitoring configuration.
236-
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.
235+
// DataQualityMonitoringConfig defines the Data Quality Monitoring configuration.
236+
type DataQualityMonitoringConfig struct {
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: 9 additions & 49 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: DataQualityMonitoring 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_-]*$
@@ -6487,6 +6496,15 @@ spec:
64876496
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
64886497
type: string
64896498
type: object
6499+
dqm:
6500+
description: DataQualityMonitoring configures Data Quality Monitoring behaviour.
6501+
properties:
6502+
autoBaseline:
6503+
default: true
6504+
description: AutoBaseline controls whether baseline distribution
6505+
is computed automatically on feast apply. Defaults to true.
6506+
type: boolean
6507+
type: object
64906508
feastProject:
64916509
description: FeastProject is the Feast project id.
64926510
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: DataQualityMonitoring 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_-]*$
@@ -6495,6 +6504,15 @@ spec:
64956504
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
64966505
type: string
64976506
type: object
6507+
dqm:
6508+
description: DataQualityMonitoring configures Data Quality Monitoring behaviour.
6509+
properties:
6510+
autoBaseline:
6511+
default: true
6512+
description: AutoBaseline controls whether baseline distribution
6513+
is computed automatically on feast apply. Defaults to true.
6514+
type: boolean
6515+
type: object
64986516
feastProject:
64996517
description: FeastProject is the Feast project id.
65006518
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+
#### DataQualityMonitoringConfig
125+
126+
127+
128+
DataQualityMonitoringConfig 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` _[DataQualityMonitoringConfig](#dataqualitymonitoringconfig)_ | DataQualityMonitoring 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: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ func getServiceRepoConfig(
106106
}
107107
}
108108

109-
if appliedSpec.Dqm != nil {
110-
setRepoConfigDqm(appliedSpec.Dqm, &repoConfig)
109+
if appliedSpec.DataQualityMonitoring != nil {
110+
setRepoConfigDataQualityMonitoring(appliedSpec.DataQualityMonitoring, &repoConfig)
111111
}
112112

113113
return repoConfig, nil
@@ -490,18 +490,12 @@ func coerceStringToYamlType(v string) interface{} {
490490
return v
491491
}
492492

493-
func setRepoConfigDqm(dqmConfig *feastdevv1.DqmConfig, repoConfig *RepoConfig) {
494-
if dqmConfig.Distribution == nil || dqmConfig.Distribution.Initial == nil || dqmConfig.Distribution.Initial.Enabled == nil {
493+
func setRepoConfigDataQualityMonitoring(dqmConfig *feastdevv1.DataQualityMonitoringConfig, repoConfig *RepoConfig) {
494+
if dqmConfig.AutoBaseline == nil {
495495
return
496496
}
497-
repoConfig.FeatureServer = &FeatureServerYamlConfig{
498-
Dqm: &DqmYamlConfig{
499-
Distribution: &DqmDistributionYamlConfig{
500-
Initial: &DqmInitialDistributionYamlConfig{
501-
Enabled: *dqmConfig.Distribution.Initial.Enabled,
502-
},
503-
},
504-
},
497+
repoConfig.DataQualityMonitoring = &DataQualityMonitoringYamlConfig{
498+
AutoBaseline: *dqmConfig.AutoBaseline,
505499
}
506500
}
507501

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

Lines changed: 10 additions & 17 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
325-
featureStore.Spec.Dqm = &feastdevv1.DqmConfig{
326-
Distribution: &feastdevv1.DqmDistributionConfig{
327-
Initial: &feastdevv1.DqmInitialDistributionConfig{
328-
Enabled: &dqmEnabled,
329-
},
330-
},
324+
dqmAutoBaseline := false
325+
featureStore.Spec.DataQualityMonitoring = &feastdevv1.DataQualityMonitoringConfig{
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.DataQualityMonitoring).NotTo(BeNil())
332+
Expect(repoConfig.DataQualityMonitoring.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.DataQualityMonitoring).To(BeNil())
352345
})
353346

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

0 commit comments

Comments
 (0)