diff --git a/cmd/thv-operator/api/v1beta1/embeddingserver_types.go b/cmd/thv-operator/api/v1beta1/embeddingserver_types.go
index 2b14b22c34..297579303c 100644
--- a/cmd/thv-operator/api/v1beta1/embeddingserver_types.go
+++ b/cmd/thv-operator/api/v1beta1/embeddingserver_types.go
@@ -4,6 +4,7 @@
package v1beta1
import (
+ corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
)
@@ -60,7 +61,7 @@ type EmbeddingServerSpec struct {
// +kubebuilder:validation:Enum=Always;Never;IfNotPresent
// +kubebuilder:default="IfNotPresent"
// +optional
- ImagePullPolicy string `json:"imagePullPolicy,omitempty"`
+ ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
// Port is the port to expose the embedding service on
// +kubebuilder:validation:Minimum=1
@@ -270,11 +271,11 @@ func (e *EmbeddingServer) IsModelCacheEnabled() bool {
}
// GetImagePullPolicy returns the image pull policy for the EmbeddingServer
-func (e *EmbeddingServer) GetImagePullPolicy() string {
+func (e *EmbeddingServer) GetImagePullPolicy() corev1.PullPolicy {
if e.Spec.ImagePullPolicy != "" {
return e.Spec.ImagePullPolicy
}
- return "IfNotPresent"
+ return corev1.PullIfNotPresent
}
func init() {
diff --git a/cmd/thv-operator/controllers/embeddingserver_controller.go b/cmd/thv-operator/controllers/embeddingserver_controller.go
index 8149ad9d85..e9ec71a3b8 100644
--- a/cmd/thv-operator/controllers/embeddingserver_controller.go
+++ b/cmd/thv-operator/controllers/embeddingserver_controller.go
@@ -526,7 +526,7 @@ func (r *EmbeddingServerReconciler) buildEmbeddingContainer(embedding *mcpv1beta
Image: embedding.Spec.Image,
Args: args,
Env: envVars,
- ImagePullPolicy: corev1.PullPolicy(embedding.GetImagePullPolicy()),
+ ImagePullPolicy: embedding.GetImagePullPolicy(),
Ports: []corev1.ContainerPort{
{
Name: "http",
diff --git a/cmd/thv-operator/controllers/embeddingserver_controller_test.go b/cmd/thv-operator/controllers/embeddingserver_controller_test.go
index 2a5d84b70b..634bbb1797 100644
--- a/cmd/thv-operator/controllers/embeddingserver_controller_test.go
+++ b/cmd/thv-operator/controllers/embeddingserver_controller_test.go
@@ -146,28 +146,28 @@ func TestEmbeddingServer_GetImagePullPolicy(t *testing.T) {
tests := []struct {
name string
- imagePullPolicy string
- expected string
+ imagePullPolicy corev1.PullPolicy
+ expected corev1.PullPolicy
}{
{
name: "default pull policy",
imagePullPolicy: "",
- expected: "IfNotPresent",
+ expected: corev1.PullIfNotPresent,
},
{
name: "Never pull policy",
- imagePullPolicy: "Never",
- expected: "Never",
+ imagePullPolicy: corev1.PullNever,
+ expected: corev1.PullNever,
},
{
name: "Always pull policy",
- imagePullPolicy: "Always",
- expected: "Always",
+ imagePullPolicy: corev1.PullAlways,
+ expected: corev1.PullAlways,
},
{
name: "IfNotPresent pull policy",
- imagePullPolicy: "IfNotPresent",
- expected: "IfNotPresent",
+ imagePullPolicy: corev1.PullIfNotPresent,
+ expected: corev1.PullIfNotPresent,
},
}
diff --git a/cmd/thv-operator/test-integration/embedding-server/embeddingserver_creation_test.go b/cmd/thv-operator/test-integration/embedding-server/embeddingserver_creation_test.go
index 8160fc709f..4290e10a3e 100644
--- a/cmd/thv-operator/test-integration/embedding-server/embeddingserver_creation_test.go
+++ b/cmd/thv-operator/test-integration/embedding-server/embeddingserver_creation_test.go
@@ -601,7 +601,7 @@ var _ = Describe("EmbeddingServer Controller Integration Tests", func() {
Spec: mcpv1beta1.EmbeddingServerSpec{
Model: "sentence-transformers/all-MiniLM-L6-v2",
Image: "ghcr.io/huggingface/text-embeddings-inference:latest",
- ImagePullPolicy: "Always",
+ ImagePullPolicy: corev1.PullAlways,
},
},
},
@@ -631,7 +631,7 @@ var _ = Describe("EmbeddingServer Controller Integration Tests", func() {
Spec: mcpv1beta1.EmbeddingServerSpec{
Model: "sentence-transformers/all-MiniLM-L6-v2",
Image: "ghcr.io/huggingface/text-embeddings-inference:latest",
- ImagePullPolicy: "Never",
+ ImagePullPolicy: corev1.PullNever,
},
},
},
diff --git a/cmd/thv-operator/test-integration/embedding-server/embeddingserver_update_test.go b/cmd/thv-operator/test-integration/embedding-server/embeddingserver_update_test.go
index b91f9d021d..95c057cca0 100644
--- a/cmd/thv-operator/test-integration/embedding-server/embeddingserver_update_test.go
+++ b/cmd/thv-operator/test-integration/embedding-server/embeddingserver_update_test.go
@@ -373,14 +373,14 @@ var _ = Describe("EmbeddingServer Controller Update Tests", func() {
Spec: mcpv1beta1.EmbeddingServerSpec{
Model: "sentence-transformers/all-MiniLM-L6-v2",
Image: "ghcr.io/huggingface/text-embeddings-inference:latest",
- ImagePullPolicy: "IfNotPresent",
+ ImagePullPolicy: corev1.PullIfNotPresent,
},
},
Updates: []UpdateStep{
{
Name: "Should update StatefulSet when ImagePullPolicy changes",
ApplyUpdate: func(es *mcpv1beta1.EmbeddingServer) {
- es.Spec.ImagePullPolicy = "Always"
+ es.Spec.ImagePullPolicy = corev1.PullAlways
},
ExpectedStatefulSet: &appsv1.StatefulSet{
Spec: appsv1.StatefulSetSpec{
diff --git a/docs/operator/crd-api.md b/docs/operator/crd-api.md
index 44e36106de..cbe2011a85 100644
--- a/docs/operator/crd-api.md
+++ b/docs/operator/crd-api.md
@@ -1251,7 +1251,7 @@ _Appears in:_
| `model` _string_ | Model is the HuggingFace embedding model to use (e.g., "sentence-transformers/all-MiniLM-L6-v2") | BAAI/bge-small-en-v1.5 | Optional: \{\}
|
| `hfTokenSecretRef` _[api.v1beta1.SecretKeyRef](#apiv1beta1secretkeyref)_ | HFTokenSecretRef is a reference to a Kubernetes Secret containing the huggingface token.
If provided, the secret value will be provided to the embedding server for authentication with huggingface. | | Optional: \{\}
|
| `image` _string_ | Image is the container image for the embedding inference server.
Images must be from HuggingFace Text Embeddings Inference (https://github.com/huggingface/text-embeddings-inference). | ghcr.io/huggingface/text-embeddings-inference:cpu-latest | Optional: \{\}
|
-| `imagePullPolicy` _string_ | ImagePullPolicy defines the pull policy for the container image | IfNotPresent | Enum: [Always Never IfNotPresent]
Optional: \{\}
|
+| `imagePullPolicy` _[PullPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#pullpolicy-v1-core)_ | ImagePullPolicy defines the pull policy for the container image | IfNotPresent | Enum: [Always Never IfNotPresent]
Optional: \{\}
|
| `port` _integer_ | Port is the port to expose the embedding service on | 8080 | Maximum: 65535
Minimum: 1
|
| `args` _string array_ | Args are additional arguments to pass to the embedding inference server | | Optional: \{\}
|
| `env` _[api.v1beta1.EnvVar](#apiv1beta1envvar) array_ | Env are environment variables to set in the container | | Optional: \{\}
|