Skip to content

Commit c1f5a08

Browse files
fix: Added UIServer type to wrap UI server configuration in FeatureStore CRD
Signed-off-by: Aditya Patil <adityapatil7649@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 39d408d commit c1f5a08

16 files changed

Lines changed: 132 additions & 74 deletions

.secrets.baseline

Lines changed: 3 additions & 3 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": 958
960+
"line_number": 963
961961
}
962962
],
963963
"infra/feast-operator/api/v1/zz_generated.deepcopy.go": [
@@ -989,7 +989,7 @@
989989
"filename": "infra/feast-operator/api/v1alpha1/featurestore_types.go",
990990
"hashed_secret": "44e17306b837162269a410204daaa5ecee4ec22c",
991991
"is_verified": false,
992-
"line_number": 663
992+
"line_number": 668
993993
}
994994
],
995995
"infra/feast-operator/api/v1alpha1/zz_generated.deepcopy.go": [
@@ -1564,5 +1564,5 @@
15641564
}
15651565
]
15661566
},
1567-
"generated_at": "2026-07-31T05:29:18Z"
1567+
"generated_at": "2026-08-11T11:34:51Z"
15681568
}

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,7 @@ type FeatureStoreServices struct {
408408
OfflineStore *OfflineStore `json:"offlineStore,omitempty"`
409409
OnlineStore *OnlineStore `json:"onlineStore,omitempty"`
410410
Registry *Registry `json:"registry,omitempty"`
411-
// Creates a UI server container
412-
UI *ServerConfigs `json:"ui,omitempty"`
411+
UI *UIServer `json:"ui,omitempty"`
413412
DeploymentStrategy *appsv1.DeploymentStrategy `json:"deploymentStrategy,omitempty"`
414413
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
415414
// PodAnnotations are annotations to be applied to the Deployment's PodTemplate metadata.
@@ -498,6 +497,12 @@ type PDBConfig struct {
498497
MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
499498
}
500499

500+
// UIServer configures the UI server service
501+
type UIServer struct {
502+
// Creates a UI server container
503+
Server *ServerConfigs `json:"server,omitempty"`
504+
}
505+
501506
// OfflineStore configures the offline store service
502507
type OfflineStore struct {
503508
// Creates a remote offline server container

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,7 @@ type FeatureStoreServices struct {
295295
OfflineStore *OfflineStore `json:"offlineStore,omitempty"`
296296
OnlineStore *OnlineStore `json:"onlineStore,omitempty"`
297297
Registry *Registry `json:"registry,omitempty"`
298-
// Creates a UI server container
299-
UI *ServerConfigs `json:"ui,omitempty"`
298+
UI *UIServer `json:"ui,omitempty"`
300299
DeploymentStrategy *appsv1.DeploymentStrategy `json:"deploymentStrategy,omitempty"`
301300
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
302301
// Disable the 'feast repo initialization' initContainer
@@ -307,6 +306,12 @@ type FeatureStoreServices struct {
307306
Volumes []corev1.Volume `json:"volumes,omitempty"`
308307
}
309308

309+
// UIServer configures the UI server service
310+
type UIServer struct {
311+
// Creates a UI server container
312+
Server *ServerConfigs `json:"server,omitempty"`
313+
}
314+
310315
// OfflineStore configures the offline store service
311316
type OfflineStore struct {
312317
// Creates a remote offline server container

infra/feast-operator/config/samples/v1_featurestore_services_loglevel.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ spec:
1616
server:
1717
logLevel: debug
1818
ui:
19-
logLevel: debug
19+
server:
20+
logLevel: debug

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ _Appears in:_
267267
| `offlineStore` _[OfflineStore](#offlinestore)_ | |
268268
| `onlineStore` _[OnlineStore](#onlinestore)_ | |
269269
| `registry` _[Registry](#registry)_ | |
270-
| `ui` _[ServerConfigs](#serverconfigs)_ | Creates a UI server container |
270+
| `ui` _[UIServer](#uiserver)_ | |
271271
| `deploymentStrategy` _[DeploymentStrategy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstrategy-v1-apps)_ | |
272272
| `securityContext` _[PodSecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#podsecuritycontext-v1-core)_ | |
273273
| `podAnnotations` _object (keys:string, values:string)_ | PodAnnotations are annotations to be applied to the Deployment's PodTemplate metadata.
@@ -563,6 +563,20 @@ _Appears in:_
563563
| `batchIntervalSeconds` _integer_ | Seconds between batch flushes to the offline store. |
564564

565565

566+
#### UIServer
567+
568+
569+
570+
UIServer configures the UI server service
571+
572+
_Appears in:_
573+
- [FeatureStoreServices](#featurestoreservices)
574+
575+
| Field | Description |
576+
| --- | --- |
577+
| `server` _[ServerConfigs](#serverconfigs)_ | Creates a UI server container |
578+
579+
566580
#### OfflineStore
567581

568582

infra/feast-operator/internal/controller/featurestore_controller_loglevel_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,10 @@ var _ = Describe("FeatureStore Controller - Feast service LogLevel", func() {
7878
LogLevel: strPtr("info"),
7979
},
8080
},
81-
UI: &feastdevv1.ServerConfigs{
82-
LogLevel: strPtr("info"),
81+
UI: &feastdevv1.UIServer{
82+
Server: &feastdevv1.ServerConfigs{
83+
LogLevel: strPtr("info"),
84+
},
8385
},
8486
},
8587
},
@@ -204,7 +206,7 @@ var _ = Describe("FeatureStore Controller - Feast service LogLevel", func() {
204206
},
205207
},
206208
OfflineStore: &feastdevv1.OfflineStore{},
207-
UI: &feastdevv1.ServerConfigs{},
209+
UI: &feastdevv1.UIServer{},
208210
}
209211
Expect(k8sClient.Update(ctx, resource)).To(Succeed())
210212

infra/feast-operator/internal/controller/featurestore_controller_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -637,11 +637,11 @@ var _ = Describe("FeatureStore Controller", func() {
637637
Expect(resource.Status.Applied.Services.Registry.Local.Server.Resources).To(BeNil())
638638
Expect(resource.Status.Applied.Services.Registry.Local.Server.Image).To(Equal(&services.DefaultImage))
639639
Expect(resource.Status.Applied.Services.UI).NotTo(BeNil())
640-
Expect(resource.Status.Applied.Services.UI.Env).To(Equal(&[]corev1.EnvVar{{Name: testEnvVarName, Value: testEnvVarValue}, {Name: "fieldRefName", ValueFrom: &corev1.EnvVarSource{FieldRef: &corev1.ObjectFieldSelector{APIVersion: "v1", FieldPath: "metadata.namespace"}}}}))
641-
Expect(resource.Status.Applied.Services.UI.EnvFrom).To(Equal(withEnvFrom()))
642-
Expect(resource.Status.Applied.Services.UI.ImagePullPolicy).To(Equal(&pullPolicy))
643-
Expect(resource.Status.Applied.Services.UI.Resources).NotTo(BeNil())
644-
Expect(resource.Status.Applied.Services.UI.Image).To(Equal(&image))
640+
Expect(resource.Status.Applied.Services.UI.Server.Env).To(Equal(&[]corev1.EnvVar{{Name: testEnvVarName, Value: testEnvVarValue}, {Name: "fieldRefName", ValueFrom: &corev1.EnvVarSource{FieldRef: &corev1.ObjectFieldSelector{APIVersion: "v1", FieldPath: "metadata.namespace"}}}}))
641+
Expect(resource.Status.Applied.Services.UI.Server.EnvFrom).To(Equal(withEnvFrom()))
642+
Expect(resource.Status.Applied.Services.UI.Server.ImagePullPolicy).To(Equal(&pullPolicy))
643+
Expect(resource.Status.Applied.Services.UI.Server.Resources).NotTo(BeNil())
644+
Expect(resource.Status.Applied.Services.UI.Server.Image).To(Equal(&image))
645645
Expect(resource.Status.ServiceHostnames.OfflineStore).To(Equal(feast.GetFeastServiceName(services.OfflineFeastType) + "." + resource.Namespace + domain))
646646
Expect(resource.Status.ServiceHostnames.OnlineStore).To(Equal(feast.GetFeastServiceName(services.OnlineFeastType) + "." + resource.Namespace + domain))
647647
Expect(resource.Status.ServiceHostnames.Registry).To(Equal(feast.GetFeastServiceName(services.RegistryFeastType) + "." + resource.Namespace + domain))

infra/feast-operator/internal/controller/featurestore_controller_test_utils_test.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,16 +135,18 @@ func createFeatureStoreResource(resourceName string, image string, pullPolicy co
135135
},
136136
},
137137
},
138-
UI: &feastdevv1.ServerConfigs{
139-
ContainerConfigs: feastdevv1.ContainerConfigs{
140-
DefaultCtrConfigs: feastdevv1.DefaultCtrConfigs{
141-
Image: &image,
142-
},
143-
OptionalCtrConfigs: feastdevv1.OptionalCtrConfigs{
144-
Env: envVars,
145-
EnvFrom: envFromVar,
146-
ImagePullPolicy: &pullPolicy,
147-
Resources: &corev1.ResourceRequirements{},
138+
UI: &feastdevv1.UIServer{
139+
Server: &feastdevv1.ServerConfigs{
140+
ContainerConfigs: feastdevv1.ContainerConfigs{
141+
DefaultCtrConfigs: feastdevv1.DefaultCtrConfigs{
142+
Image: &image,
143+
},
144+
OptionalCtrConfigs: feastdevv1.OptionalCtrConfigs{
145+
Env: envVars,
146+
EnvFrom: envFromVar,
147+
ImagePullPolicy: &pullPolicy,
148+
Resources: &corev1.ResourceRequirements{},
149+
},
148150
},
149151
},
150152
},

infra/feast-operator/internal/controller/featurestore_controller_tls_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,10 @@ var _ = Describe("FeatureStore Controller - Feast service TLS", func() {
8989
},
9090
},
9191
},
92-
UI: &feastdevv1.ServerConfigs{
93-
TLS: tlsConfigs,
92+
UI: &feastdevv1.UIServer{
93+
Server: &feastdevv1.ServerConfigs{
94+
TLS: tlsConfigs,
95+
},
9496
},
9597
},
9698
},
@@ -486,7 +488,7 @@ var _ = Describe("Test mountCustomCABundle functionality", func() {
486488
Registry: &feastdevv1.Registry{Local: &feastdevv1.LocalRegistryConfig{Server: &feastdevv1.RegistryServerConfigs{ServerConfigs: feastdevv1.ServerConfigs{}}}},
487489
OnlineStore: &feastdevv1.OnlineStore{Server: &feastdevv1.ServerConfigs{}},
488490
OfflineStore: &feastdevv1.OfflineStore{Server: &feastdevv1.ServerConfigs{}},
489-
UI: &feastdevv1.ServerConfigs{},
491+
UI: &feastdevv1.UIServer{},
490492
},
491493
},
492494
}

infra/feast-operator/internal/controller/featurestore_controller_volume_volumemount_test.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,16 @@ func createFeatureStoreVolumeResource(resourceName string, image string, pullPol
198198
},
199199
},
200200
},
201-
UI: &feastdevv1.ServerConfigs{
202-
ContainerConfigs: feastdevv1.ContainerConfigs{
203-
DefaultCtrConfigs: feastdevv1.DefaultCtrConfigs{
204-
Image: &image,
205-
},
206-
OptionalCtrConfigs: feastdevv1.OptionalCtrConfigs{
207-
ImagePullPolicy: &pullPolicy,
208-
Resources: &corev1.ResourceRequirements{},
201+
UI: &feastdevv1.UIServer{
202+
Server: &feastdevv1.ServerConfigs{
203+
ContainerConfigs: feastdevv1.ContainerConfigs{
204+
DefaultCtrConfigs: feastdevv1.DefaultCtrConfigs{
205+
Image: &image,
206+
},
207+
OptionalCtrConfigs: feastdevv1.OptionalCtrConfigs{
208+
ImagePullPolicy: &pullPolicy,
209+
Resources: &corev1.ResourceRequirements{},
210+
},
209211
},
210212
},
211213
},

0 commit comments

Comments
 (0)