Skip to content

Commit 594636b

Browse files
committed
fix(vm): give actionable guidance in agent and class condition messages
- guest agent not responding / version unsupported: tell the user to install/start/update the agent in the guest OS - VirtualMachineClass not found: advise specifying an existing class in spec.virtualMachineClassName (full resource name, period) - sizing-policy mismatch: drop the doubled prefix, lead with the VirtualMachine, keep the concrete details and existing guidance Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com>
1 parent 92afada commit 594636b

4 files changed

Lines changed: 9 additions & 9 deletions

File tree

images/virtualization-artifact/pkg/controller/service/size_policy_service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (s *SizePolicyService) CheckVMMatchedSizePolicy(vm *v1alpha2.VirtualMachine
6565
}
6666

6767
if len(errs) > 0 {
68-
return fmt.Errorf("sizing policy validation has failed: %w: %w", errors.Join(errs...), ErrSizingPolicyValidation)
68+
return fmt.Errorf("does not match the VirtualMachineClass sizing policy: %w: %w", errors.Join(errs...), ErrSizingPolicyValidation)
6969
}
7070

7171
return nil

images/virtualization-artifact/pkg/controller/vm/internal/agent.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (h *AgentHandler) syncAgentReady(vm *v1alpha2.VirtualMachine, kvvmi *virtv1
9595
case metav1.ConditionTrue:
9696
cb.Status(status).Reason(vmcondition.ReasonAgentReady).Message(c.Message)
9797
case metav1.ConditionFalse:
98-
cb.Status(status).Reason(vmcondition.ReasonAgentNotReady).Message(c.Message)
98+
cb.Status(status).Reason(vmcondition.ReasonAgentNotReady).Message("The guest agent is not responding. Make sure the guest agent is installed and running in the guest OS.")
9999
}
100100

101101
return
@@ -104,7 +104,7 @@ func (h *AgentHandler) syncAgentReady(vm *v1alpha2.VirtualMachine, kvvmi *virtv1
104104

105105
cb.Status(metav1.ConditionFalse).
106106
Reason(vmcondition.ReasonAgentNotReady).
107-
Message("Failed to connect to VM Agent.")
107+
Message("The guest agent is not responding. Make sure the guest agent is installed and running in the guest OS.")
108108
}
109109

110110
func (h *AgentHandler) syncAgentVersionNotSupport(vm *v1alpha2.VirtualMachine, kvvmi *virtv1.VirtualMachineInstance) {
@@ -138,7 +138,7 @@ func (h *AgentHandler) syncAgentVersionNotSupport(vm *v1alpha2.VirtualMachine, k
138138
for _, c := range kvvmi.Status.Conditions {
139139
status := conditionStatus(string(c.Status))
140140
if c.Type == virtv1.VirtualMachineInstanceUnsupportedAgent && status == metav1.ConditionTrue {
141-
cb.Status(status).Reason(vmcondition.ReasonAgentNotSupported).Message("The guest agent version is not supported.")
141+
cb.Status(status).Reason(vmcondition.ReasonAgentNotSupported).Message("The guest agent version is not supported. Update the guest agent in the guest OS.")
142142
return
143143
}
144144
}

images/virtualization-artifact/pkg/controller/vm/internal/class.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func (h *ClassHandler) Handle(ctx context.Context, s state.VirtualMachineState)
7878
if class != nil && class.Status.Phase == v1alpha2.ClassPhaseReady {
7979
if (class.Spec.CPU.Type == v1alpha2.CPUTypeDiscovery || class.Spec.CPU.Type == v1alpha2.CPUTypeFeatures) && len(class.Status.CpuFeatures.Enabled) == 0 {
8080
mgr.Update(cb.
81-
Message("No enabled processor features found").
81+
Message("The VirtualMachineClass has no enabled CPU features.").
8282
Reason(vmcondition.ReasonClassNotReady).
8383
Status(metav1.ConditionFalse).
8484
Condition())
@@ -90,10 +90,10 @@ func (h *ClassHandler) Handle(ctx context.Context, s state.VirtualMachineState)
9090
return reconcile.Result{}, nil
9191
}
9292
className := current.Spec.VirtualMachineClassName
93-
msg := fmt.Sprintf("VirtualMachineClassName %q is not ready", className)
93+
msg := fmt.Sprintf("VirtualMachineClass %q is not ready yet.", className)
9494
reason := vmcondition.ReasonClassNotReady
9595
if class == nil {
96-
msg = fmt.Sprintf("VirtualMachineClassName %q not found", className)
96+
msg = fmt.Sprintf("VirtualMachineClass %q not found. Specify an existing VirtualMachineClass in spec.virtualMachineClassName.", className)
9797
h.recorder.Event(changed, corev1.EventTypeWarning, reason.String(), "VirtualMachineClass not available: waiting for the VirtualMachineClass")
9898
log.Info("VirtualMachineClass not available: waiting for the VirtualMachineClass")
9999
}

images/virtualization-artifact/pkg/controller/vm/internal/size_policy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (h *SizePolicyHandler) Handle(ctx context.Context, s state.VirtualMachineSt
7272

7373
switch {
7474
case vmClass == nil:
75-
cb.Message(fmt.Sprintf("VirtualMachineClass %q not found.", changed.Spec.VirtualMachineClassName)).
75+
cb.Message(fmt.Sprintf("VirtualMachineClass %q not found. Specify an existing VirtualMachineClass in spec.virtualMachineClassName.", changed.Spec.VirtualMachineClassName)).
7676
Reason(vmcondition.ReasonVirtualMachineClassNotFound).
7777
Status(metav1.ConditionFalse)
7878
case vmClass.Status.Phase == v1alpha2.ClassPhaseTerminating:
@@ -82,7 +82,7 @@ func (h *SizePolicyHandler) Handle(ctx context.Context, s state.VirtualMachineSt
8282
default:
8383
err = h.service.CheckVMMatchedSizePolicy(changed, vmClass)
8484
if err != nil {
85-
cb.Message(fmt.Sprintf("Size policy matching errors: %s.", err.Error())).
85+
cb.Message(fmt.Sprintf("The VirtualMachine %s.", err.Error())).
8686
Reason(vmcondition.ReasonSizingPolicyNotMatched).
8787
Status(metav1.ConditionFalse)
8888
}

0 commit comments

Comments
 (0)