Skip to content

Commit

Permalink
fix: Populate ImagePullSecrets in Adapter Deployment and Add Correspo…
Browse files Browse the repository at this point in the history
…nding Tests (kaito-project#656)

**Reason for Change**:
fix the bug that adapter with ImagePullSecrets will not be populated to
its deployment

**Requirements**

- [x] added unit tests and e2e tests (if applicable).

**Issue Fixed**:
<!-- If this PR fixes GitHub issue 4321, add "Fixes #4321" to the next
line. -->

**Notes for Reviewers**:

---------

Co-authored-by: qfai <quke@microsoft.com>
Co-authored-by: Fei Guo <guofei@microsoft.com>
  • Loading branch information
3 people authored and smritidahal653 committed Nov 14, 2024
1 parent e7a7d65 commit 66013bb
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
7 changes: 7 additions & 0 deletions pkg/inference/preset-inferences.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,13 @@ func GetInferenceImageInfo(ctx context.Context, workspaceObj *kaitov1alpha1.Work
imageTag := presetObj.Tag
registryName := os.Getenv("PRESET_REGISTRY_NAME")
imageName = fmt.Sprintf("%s/kaito-%s:%s", registryName, imageName, imageTag)
if len(workspaceObj.Inference.Adapters) > 0 {
for _, adapter := range workspaceObj.Inference.Adapters {
for _, secretName := range adapter.Source.ImagePullSecrets {
imagePullSecretRefs = append(imagePullSecretRefs, corev1.LocalObjectReference{Name: secretName})
}
}
}
return imageName, imagePullSecretRefs
}
}
Expand Down
20 changes: 17 additions & 3 deletions pkg/inference/preset-inferences_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,14 @@ func TestCreatePresetInference(t *testing.T) {

workspace := test.MockWorkspaceWithPreset
workspace.Resource.Count = &tc.nodeCount

expectedSecrets := []string{"fake-secret"}
if tc.hasAdapters {
workspace.Inference.Adapters = []v1alpha1.AdapterSpec{
{
Source: &v1alpha1.DataSource{
Name: "Adapter-1",
Image: "fake.kaito.com/kaito-image:0.0.1",
Name: "Adapter-1",
Image: "fake.kaito.com/kaito-image:0.0.1",
ImagePullSecrets: expectedSecrets,
},
Strength: &ValidStrength,
},
Expand Down Expand Up @@ -151,6 +152,19 @@ func TestCreatePresetInference(t *testing.T) {

// Check for adapter volume
if tc.hasAdapters {
var actualSecrets []string
if tc.workload == "Deployment" {
for _, secret := range createdObject.(*appsv1.Deployment).Spec.Template.Spec.ImagePullSecrets {
actualSecrets = append(actualSecrets, secret.Name)
}
} else {
for _, secret := range createdObject.(*appsv1.StatefulSet).Spec.Template.Spec.ImagePullSecrets {
actualSecrets = append(actualSecrets, secret.Name)
}
}
if !reflect.DeepEqual(expectedSecrets, actualSecrets) {
t.Errorf("%s: ImagePullSecrets are not expected, got %v, expect %v", k, actualSecrets, expectedSecrets)
}
found := false
for _, volume := range createdObject.(*appsv1.Deployment).Spec.Template.Spec.Volumes {
if volume.Name == tc.expectedVolume {
Expand Down
6 changes: 6 additions & 0 deletions test/e2e/inference_with_adapters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ var validAdapters2 = []kaitov1alpha1.AdapterSpec{
Source: &kaitov1alpha1.DataSource{
Name: imageName2,
Image: fullImageName2,
ImagePullSecrets: []string{
aiModelsRegistrySecret,
},
},
Strength: &DefaultStrength,
},
Expand Down Expand Up @@ -82,6 +85,9 @@ func validateInitContainers(workspaceObj *kaitov1alpha1.Workspace, expectedInitC
return false
}

if dep.Spec.Template.Spec.ImagePullSecrets == nil || len(dep.Spec.Template.Spec.ImagePullSecrets) == 0 {
return false
}
if len(initContainers) != len(expectedInitContainers) {
return false
}
Expand Down

0 comments on commit 66013bb

Please sign in to comment.