Skip to content

Commit 0ab3bc9

Browse files
committed
debug missing identities
1 parent 5fa8e42 commit 0ab3bc9

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

azure/services/virtualmachines/virtualmachines.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,14 @@ import (
3939
)
4040

4141
const serviceName = "virtualmachine"
42-
const vmMissingUAI = "VM is missing expected user assigned identity with client ID: "
42+
43+
func vmMissingUAI(expectedKey string, actualIdentities []infrav1.UserAssignedIdentity) string {
44+
var actual []string
45+
for _, a := range actualIdentities {
46+
actual = append(actual, a.ProviderID)
47+
}
48+
return "VM is missing expected user assigned identity with ID " + expectedKey + ", VM has identities " + strings.Join(actual, ", ")
49+
}
4350

4451
// VMScope defines the scope interface for a virtual machines service.
4552
type VMScope interface {
@@ -173,7 +180,7 @@ func (s *Service) checkUserAssignedIdentities(specIdentities []infrav1.UserAssig
173180
for _, expectedIdentity := range specIdentities {
174181
_, exists := actualMap[expectedIdentity.ProviderID]
175182
if !exists {
176-
s.Scope.SetConditionFalse(infrav1.VMIdentitiesReadyCondition, infrav1.UserAssignedIdentityMissingReason, clusterv1.ConditionSeverityWarning, vmMissingUAI+expectedIdentity.ProviderID)
183+
s.Scope.SetConditionFalse(infrav1.VMIdentitiesReadyCondition, infrav1.UserAssignedIdentityMissingReason, clusterv1.ConditionSeverityWarning, vmMissingUAI(expectedIdentity.ProviderID, vmIdentities))
177184
return
178185
}
179186
}

azure/services/virtualmachines/virtualmachines_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ func TestCheckUserAssignedIdentities(t *testing.T) {
358358
scopeMock := mock_virtualmachines.NewMockVMScope(mockCtrl)
359359

360360
if tc.expectedKey != "" {
361-
scopeMock.EXPECT().SetConditionFalse(infrav1.VMIdentitiesReadyCondition, infrav1.UserAssignedIdentityMissingReason, clusterv1.ConditionSeverityWarning, vmMissingUAI+tc.expectedKey).Times(1)
361+
scopeMock.EXPECT().SetConditionFalse(infrav1.VMIdentitiesReadyCondition, infrav1.UserAssignedIdentityMissingReason, clusterv1.ConditionSeverityWarning, vmMissingUAI(tc.expectedKey, tc.actualIdentities)).Times(1)
362362
}
363363
s := &Service{
364364
Scope: scopeMock,

controllers/azuremachine_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,8 @@ func (amr *AzureMachineReconciler) reconcileNormal(ctx context.Context, machineS
289289
if cond != nil && cond.Status == corev1.ConditionFalse && cond.Reason == infrav1.UserAssignedIdentityMissingReason {
290290
amr.Recorder.Eventf(machineScope.AzureMachine, corev1.EventTypeWarning, infrav1.UserAssignedIdentityMissingReason, "VM is unhealthy")
291291
machineScope.SetFailureReason(azure.UnsupportedChange)
292-
machineScope.SetFailureMessage(errors.New("VM identities are not ready"))
293-
return reconcile.Result{}, errors.New("VM identities are not ready")
292+
machineScope.SetFailureMessage(errors.New(cond.Message))
293+
return reconcile.Result{}, errors.New(cond.Message)
294294
}
295295

296296
ams, err := amr.createAzureMachineService(machineScope)

0 commit comments

Comments
 (0)