diff --git a/pkg/controllers/ragengine_status.go b/pkg/controllers/ragengine_status.go index e71a4d86d..6236fd2e7 100644 --- a/pkg/controllers/ragengine_status.go +++ b/pkg/controllers/ragengine_status.go @@ -7,6 +7,7 @@ import ( "context" kaitov1alpha1 "github.com/azure/kaito/api/v1alpha1" + "github.com/azure/kaito/pkg/utils/consts" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/klog/v2" @@ -29,5 +30,5 @@ func (c *RAGEngineReconciler) updateStatusConditionIfNotMatch(ctx context.Contex ObservedGeneration: ragObj.GetGeneration(), Message: cMessage, } - return updateObjStatus(ctx, c.Client, &client.ObjectKey{Name: ragObj.Name, Namespace: ragObj.Namespace}, "ragengine", &cObj, nil) + return updateObjStatus(ctx, c.Client, &client.ObjectKey{Name: ragObj.Name, Namespace: ragObj.Namespace}, consts.RAGEngineString, &cObj, nil) } diff --git a/pkg/controllers/ragengine_status_test.go b/pkg/controllers/ragengine_status_test.go index 4dc1370e3..0101b50c6 100644 --- a/pkg/controllers/ragengine_status_test.go +++ b/pkg/controllers/ragengine_status_test.go @@ -9,6 +9,7 @@ import ( "testing" kaitov1alpha1 "github.com/azure/kaito/api/v1alpha1" + "github.com/azure/kaito/pkg/utils/consts" "github.com/azure/kaito/pkg/utils/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -38,7 +39,7 @@ func TestUpdateRAGEngineStatus(t *testing.T) { mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.RAGEngine{}), mock.Anything).Return(nil) mockClient.StatusMock.On("Update", mock.IsType(context.Background()), mock.IsType(&kaitov1alpha1.RAGEngine{}), mock.Anything).Return(nil) - err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: ragengine.Name, Namespace: ragengine.Namespace}, "ragengine", &condition, workerNodes) + err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: ragengine.Name, Namespace: ragengine.Namespace}, consts.RAGEngineString, &condition, workerNodes) assert.Nil(t, err) }) @@ -60,7 +61,7 @@ func TestUpdateRAGEngineStatus(t *testing.T) { mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.RAGEngine{}), mock.Anything).Return(errors.New("Get operation failed")) - err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: ragengine.Name, Namespace: ragengine.Namespace}, "ragengine", &condition, workerNodes) + err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: ragengine.Name, Namespace: ragengine.Namespace}, consts.RAGEngineString, &condition, workerNodes) assert.NotNil(t, err) }) @@ -80,9 +81,9 @@ func TestUpdateRAGEngineStatus(t *testing.T) { } workerNodes := []string{"node1", "node2"} - mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.RAGEngine{}), mock.Anything).Return(apierrors.NewNotFound(schema.GroupResource{}, "ragengine")) + mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.RAGEngine{}), mock.Anything).Return(apierrors.NewNotFound(schema.GroupResource{}, consts.RAGEngineString)) - err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: ragengine.Name, Namespace: ragengine.Namespace}, "ragengine", &condition, workerNodes) + err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: ragengine.Name, Namespace: ragengine.Namespace}, consts.RAGEngineString, &condition, workerNodes) assert.Nil(t, err) }) } diff --git a/pkg/controllers/workspace_controller.go b/pkg/controllers/workspace_controller.go index 689fc04b1..6ec4e0279 100644 --- a/pkg/controllers/workspace_controller.go +++ b/pkg/controllers/workspace_controller.go @@ -132,7 +132,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionFalse, - "workspace", "workspaceFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, updateErr } @@ -148,7 +148,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka if err = c.applyTuning(ctx, wObj); err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionFalse, - "workspace", "workspaceFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, updateErr } @@ -160,7 +160,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka if job.Status.Succeeded > 0 { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionTrue, - "workspace", "workspaceSucceeded", "workspace succeeds"); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceSucceeded, "workspace succeeds"); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, updateErr } @@ -171,7 +171,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka } if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionFalse, - "workspace", "workspacePending", fmt.Sprintf("workspace has not completed, tuning job has %d active pod, %d ready pod", job.Status.Active, readyPod)); updateErr != nil { + consts.WorkspaceString, "workspacePending", fmt.Sprintf("workspace has not completed, tuning job has %d active pod, %d ready pod", job.Status.Active, readyPod)); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, updateErr } @@ -184,7 +184,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka if err := c.ensureService(ctx, wObj); err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionFalse, - "workspace", "workspaceFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, updateErr } @@ -193,7 +193,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka if err = c.applyInference(ctx, wObj); err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionFalse, - "workspace", "workspaceFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, updateErr } @@ -202,7 +202,7 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka if err = updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeSucceeded, metav1.ConditionTrue, - "workspace", "workspaceSucceeded", "workspace succeeds"); err != nil { + consts.WorkspaceString, consts.WorkspaceSucceeded, "workspace succeeds"); err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, err } @@ -212,10 +212,10 @@ func (c *WorkspaceReconciler) addOrUpdateWorkspace(ctx context.Context, wObj *ka } func (c *WorkspaceReconciler) deleteWorkspace(ctx context.Context, wObj *kaitov1alpha1.Workspace) (reconcile.Result, error) { - klog.InfoS("deleteWorkspace", "workspace", klog.KObj(wObj)) + klog.InfoS("deleteWorkspace", consts.WorkspaceString, klog.KObj(wObj)) err := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeDeleting, metav1.ConditionTrue, - "workspace", "workspaceDeleted", "workspace is being deleted") + consts.WorkspaceString, "workspaceDeleted", "workspace is being deleted") if err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return reconcile.Result{}, err @@ -410,13 +410,13 @@ func (c *WorkspaceReconciler) applyWorkspaceResource(ctx context.Context, wObj * if featuregates.FeatureGates[consts.FeatureFlagKarpenter] { if err := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeNodeClaimStatus, metav1.ConditionUnknown, - "workspace", "CreateNodeClaimPending", fmt.Sprintf("creating %d nodeClaims", newNodesCount)); err != nil { + consts.WorkspaceString, "CreateNodeClaimPending", fmt.Sprintf("creating %d nodeClaims", newNodesCount)); err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return err } } else if err := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeMachineStatus, metav1.ConditionUnknown, - "workspace", "CreateMachinePending", fmt.Sprintf("creating %d machines", newNodesCount)); err != nil { + consts.WorkspaceString, "CreateMachinePending", fmt.Sprintf("creating %d machines", newNodesCount)); err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return err } @@ -426,7 +426,7 @@ func (c *WorkspaceReconciler) applyWorkspaceResource(ctx context.Context, wObj * if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeResourceStatus, metav1.ConditionFalse, - "workspace", "workspaceResourceStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceResourceStatusFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return updateErr } @@ -443,7 +443,7 @@ func (c *WorkspaceReconciler) applyWorkspaceResource(ctx context.Context, wObj * if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeResourceStatus, metav1.ConditionFalse, - "workspace", "workspaceResourceStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceResourceStatusFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return updateErr } @@ -455,13 +455,13 @@ func (c *WorkspaceReconciler) applyWorkspaceResource(ctx context.Context, wObj * if featuregates.FeatureGates[consts.FeatureFlagKarpenter] { if err = updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeNodeClaimStatus, metav1.ConditionTrue, - "workspace", "installNodePluginsSuccess", "nodeClaim plugins have been installed successfully"); err != nil { + consts.WorkspaceString, "installNodePluginsSuccess", "nodeClaim plugins have been installed successfully"); err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return err } } else if err = updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeMachineStatus, metav1.ConditionTrue, - "workspace", "installNodePluginsSuccess", "machines plugins have been installed successfully"); err != nil { + consts.WorkspaceString, "installNodePluginsSuccess", "machines plugins have been installed successfully"); err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return err } @@ -471,7 +471,7 @@ func (c *WorkspaceReconciler) applyWorkspaceResource(ctx context.Context, wObj * if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeResourceStatus, metav1.ConditionFalse, - "workspace", "workspaceResourceStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, consts.WorkspaceResourceStatusFailed, err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return updateErr } @@ -480,7 +480,7 @@ func (c *WorkspaceReconciler) applyWorkspaceResource(ctx context.Context, wObj * if err = updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeResourceStatus, metav1.ConditionTrue, - "workspace", "workspaceResourceStatusSuccess", "workspace resource is ready"); err != nil { + consts.WorkspaceString, "workspaceResourceStatusSuccess", "workspace resource is ready"); err != nil { klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) return err } @@ -497,7 +497,7 @@ func (c *WorkspaceReconciler) getAllQualifiedNodes(ctx context.Context, wObj *ka } if len(nodeList.Items) == 0 { - klog.InfoS("no current nodes match the workspace resource spec", "workspace", klog.KObj(wObj)) + klog.InfoS("no current nodes match the workspace resource spec", consts.WorkspaceString, klog.KObj(wObj)) return nil, nil } @@ -565,7 +565,7 @@ RetryWithDifferentName: klog.ErrorS(err, "failed to create machine", "machine", newMachine.Name) if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeMachineStatus, metav1.ConditionFalse, - "workspace", "machineFailedCreation", err.Error()); updateErr != nil { + consts.WorkspaceString, "machineFailedCreation", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return nil, updateErr } @@ -578,7 +578,7 @@ RetryWithDifferentName: if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeMachineStatus, metav1.ConditionFalse, - "workspace", "checkMachineStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, "checkMachineStatusFailed", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return nil, updateErr } @@ -602,7 +602,7 @@ RetryWithDifferentName: klog.ErrorS(err, "failed to create nodeClaim", "nodeClaim", newNodeClaim.Name) if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeNodeClaimStatus, metav1.ConditionFalse, - "workspace", "nodeClaimFailedCreation", err.Error()); updateErr != nil { + consts.WorkspaceString, "nodeClaimFailedCreation", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return nil, updateErr } @@ -615,7 +615,7 @@ RetryWithDifferentName: if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeNodeClaimStatus, metav1.ConditionFalse, - "workspace", "checkNodeClaimStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, "checkNodeClaimStatusFailed", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return nil, updateErr } @@ -647,14 +647,14 @@ func (c *WorkspaceReconciler) ensureNodePlugins(ctx context.Context, wObj *kaito if featuregates.FeatureGates[consts.FeatureFlagKarpenter] { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeNodeClaimStatus, metav1.ConditionFalse, - "workspace", "checkNodeClaimStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, "checkNodeClaimStatusFailed", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return updateErr } } else { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeMachineStatus, metav1.ConditionFalse, - "workspace", "checkMachineStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, "checkMachineStatusFailed", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return updateErr } @@ -766,7 +766,7 @@ func (c *WorkspaceReconciler) applyTuning(ctx context.Context, wObj *kaitov1alph if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeTuningJobStatus, metav1.ConditionFalse, - "workspace", "WorkspaceTuningJobStatusFailed", err.Error()); updateErr != nil { + consts.WorkspaceString, "WorkspaceTuningJobStatusFailed", err.Error()); updateErr != nil { klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) return updateErr } @@ -775,8 +775,8 @@ func (c *WorkspaceReconciler) applyTuning(ctx context.Context, wObj *kaitov1alph if err := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeTuningJobStatus, metav1.ConditionTrue, - "workspace", "WorkspaceTuningJobStatusStarted", "Tuning job has started"); err != nil { - klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) + consts.WorkspaceString, "WorkspaceTuningJobStatusStarted", "Tuning job has started"); err != nil { + klog.ErrorS(err, "failed to update workspace status", consts.WorkspaceString, klog.KObj(wObj)) return err } @@ -812,7 +812,7 @@ func (c *WorkspaceReconciler) applyInference(ctx context.Context, wObj *kaitov1a } revisionStr := wObj.Annotations[kaitov1alpha1.WorkspaceRevisionAnnotation] if err = resources.GetResource(ctx, wObj.Name, wObj.Namespace, c.Client, existingObj); err == nil { - klog.InfoS("An inference workload already exists for workspace", "workspace", klog.KObj(wObj)) + klog.InfoS("An inference workload already exists for workspace", consts.WorkspaceString, klog.KObj(wObj)) if !model.SupportDistributedInference() { deployment := existingObj.(*appsv1.Deployment) if deployment.Annotations[kaitov1alpha1.WorkspaceRevisionAnnotation] != revisionStr { @@ -865,8 +865,8 @@ func (c *WorkspaceReconciler) applyInference(ctx context.Context, wObj *kaitov1a if err != nil { if updateErr := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeInferenceStatus, metav1.ConditionFalse, - "workspace", "WorkspaceInferenceStatusFailed", err.Error()); updateErr != nil { - klog.ErrorS(updateErr, "failed to update workspace status", "workspace", klog.KObj(wObj)) + consts.WorkspaceString, "WorkspaceInferenceStatusFailed", err.Error()); updateErr != nil { + klog.ErrorS(updateErr, "failed to update workspace status", consts.WorkspaceString, klog.KObj(wObj)) return updateErr } else { return err @@ -875,8 +875,8 @@ func (c *WorkspaceReconciler) applyInference(ctx context.Context, wObj *kaitov1a if err := updateStatusConditionIfNotMatch(ctx, wObj, c, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, wObj.Status, kaitov1alpha1.WorkspaceConditionTypeInferenceStatus, metav1.ConditionTrue, - "workspace", "WorkspaceInferenceStatusSuccess", "Inference has been deployed successfully"); err != nil { - klog.ErrorS(err, "failed to update workspace status", "workspace", klog.KObj(wObj)) + consts.WorkspaceString, "WorkspaceInferenceStatusSuccess", "Inference has been deployed successfully"); err != nil { + klog.ErrorS(err, "failed to update workspace status", consts.WorkspaceString, klog.KObj(wObj)) return err } return nil diff --git a/pkg/controllers/workspace_gc_finalizer.go b/pkg/controllers/workspace_gc_finalizer.go index e33e26cbf..38714cbb0 100644 --- a/pkg/controllers/workspace_gc_finalizer.go +++ b/pkg/controllers/workspace_gc_finalizer.go @@ -58,7 +58,7 @@ func (c *WorkspaceReconciler) garbageCollectWorkspace(ctx context.Context, wObj return ctrl.Result{}, updateErr } klog.InfoS("successfully removed the workspace finalizers", - "workspace", klog.KObj(wObj)) + consts.WorkspaceString, klog.KObj(wObj)) controllerutil.RemoveFinalizer(wObj, consts.WorkspaceFinalizer) return ctrl.Result{}, nil } diff --git a/pkg/controllers/workspace_status.go b/pkg/controllers/workspace_status.go index 0b26ce578..d6ae4f8a0 100644 --- a/pkg/controllers/workspace_status.go +++ b/pkg/controllers/workspace_status.go @@ -10,6 +10,7 @@ import ( "sort" kaitov1alpha1 "github.com/azure/kaito/api/v1alpha1" + "github.com/azure/kaito/pkg/utils/consts" "github.com/samber/lo" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" @@ -31,12 +32,12 @@ func updateObjStatus(ctx context.Context, c client.Client, name *client.ObjectKe var conditions *[]metav1.Condition var workerNodesField *[]string switch objType { - case "workspace": + case consts.WorkspaceString: ragObj := &kaitov1alpha1.Workspace{} obj = ragObj conditions = &ragObj.Status.Conditions workerNodesField = &ragObj.Status.WorkerNodes - case "ragengine": + case consts.RAGEngineString: wObj := &kaitov1alpha1.RAGEngine{} obj = wObj conditions = &wObj.Status.Conditions @@ -91,5 +92,5 @@ func (c *WorkspaceReconciler) updateStatusNodeListIfNotMatch(ctx context.Context return nil } klog.InfoS("updateStatusNodeList", "workspace", klog.KObj(wObj)) - return updateObjStatus(ctx, c.Client, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, "workspace", nil, nodeNameList) + return updateObjStatus(ctx, c.Client, &client.ObjectKey{Name: wObj.Name, Namespace: wObj.Namespace}, consts.WorkspaceString, nil, nodeNameList) } diff --git a/pkg/controllers/workspace_status_test.go b/pkg/controllers/workspace_status_test.go index 4993c7af6..8736b4616 100644 --- a/pkg/controllers/workspace_status_test.go +++ b/pkg/controllers/workspace_status_test.go @@ -9,6 +9,7 @@ import ( "testing" kaitov1alpha1 "github.com/azure/kaito/api/v1alpha1" + "github.com/azure/kaito/pkg/utils/consts" "github.com/azure/kaito/pkg/utils/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -38,7 +39,7 @@ func TestUpdateWorkspaceStatus(t *testing.T) { mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(nil) mockClient.StatusMock.On("Update", mock.IsType(context.Background()), mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(nil) - err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, "workspace", &condition, workerNodes) + err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, consts.WorkspaceString, &condition, workerNodes) assert.Nil(t, err) }) @@ -60,7 +61,7 @@ func TestUpdateWorkspaceStatus(t *testing.T) { mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(errors.New("Get operation failed")) - err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, "workspace", &condition, workerNodes) + err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, consts.WorkspaceString, &condition, workerNodes) assert.NotNil(t, err) }) @@ -80,9 +81,9 @@ func TestUpdateWorkspaceStatus(t *testing.T) { } workerNodes := []string{"node1", "node2"} - mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(apierrors.NewNotFound(schema.GroupResource{}, "workspace")) + mockClient.On("Get", mock.IsType(context.Background()), mock.Anything, mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(apierrors.NewNotFound(schema.GroupResource{}, consts.WorkspaceString)) - err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, "workspace", &condition, workerNodes) + err := updateObjStatus(ctx, reconciler.Client, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, consts.WorkspaceString, &condition, workerNodes) assert.Nil(t, err) }) } @@ -111,7 +112,7 @@ func TestUpdateStatusConditionIfNotMatch(t *testing.T) { } err := updateStatusConditionIfNotMatch(ctx, workspace, reconciler, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, - workspace.Status, conditionType, conditionStatus, "workspace", conditionReason, conditionMessage) + workspace.Status, conditionType, conditionStatus, consts.WorkspaceString, conditionReason, conditionMessage) assert.Nil(t, err) }) @@ -140,7 +141,7 @@ func TestUpdateStatusConditionIfNotMatch(t *testing.T) { mockClient.StatusMock.On("Update", mock.IsType(context.Background()), mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(nil) err := updateStatusConditionIfNotMatch(ctx, workspace, reconciler, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, - workspace.Status, conditionType, conditionStatus, "workspace", conditionReason, conditionMessage) + workspace.Status, conditionType, conditionStatus, consts.WorkspaceString, conditionReason, conditionMessage) assert.Nil(t, err) }) @@ -169,7 +170,7 @@ func TestUpdateStatusConditionIfNotMatch(t *testing.T) { mockClient.StatusMock.On("Update", mock.IsType(context.Background()), mock.IsType(&kaitov1alpha1.Workspace{}), mock.Anything).Return(nil) err := updateStatusConditionIfNotMatch(ctx, workspace, reconciler, &client.ObjectKey{Name: workspace.Name, Namespace: workspace.Namespace}, - workspace.Status, conditionType, conditionStatus, "workspace", conditionReason, conditionMessage) + workspace.Status, conditionType, conditionStatus, consts.WorkspaceString, conditionReason, conditionMessage) assert.Nil(t, err) }) } diff --git a/pkg/utils/consts/consts.go b/pkg/utils/consts/consts.go index c498f89bd..87d06ed2a 100644 --- a/pkg/utils/consts/consts.go +++ b/pkg/utils/consts/consts.go @@ -15,4 +15,9 @@ const ( MaxRevisionHistoryLimit = 10 GiBToBytes = 1024 * 1024 * 1024 // Conversion factor from GiB to bytes NvidiaGPU = "nvidia.com/gpu" + WorkspaceString = "workspace" + RAGEngineString = "ragengine" + WorkspaceFailed = "workspaceFailed" + WorkspaceSucceeded = "workspaceSucceeded" + WorkspaceResourceStatusFailed = "workspaceResourceStatusFailed" )