Skip to content

Commit 8a61911

Browse files
authored
Merge pull request #2093 from Jont828/ready-conditions
Only show applicable conditions for AzureClusters and AzureMachines on async services
2 parents 6a93006 + 1278516 commit 8a61911

31 files changed

+405
-126
lines changed

azure/scope/cluster.go

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -679,20 +679,7 @@ func (s *ClusterScope) PatchObject(ctx context.Context) error {
679679
ctx, _, done := tele.StartSpanWithLogger(ctx, "scope.ClusterScope.PatchObject")
680680
defer done()
681681

682-
conditions.SetSummary(s.AzureCluster,
683-
conditions.WithConditions(
684-
infrav1.ResourceGroupReadyCondition,
685-
infrav1.RouteTablesReadyCondition,
686-
infrav1.NetworkInfrastructureReadyCondition,
687-
infrav1.VnetPeeringReadyCondition,
688-
infrav1.DisksReadyCondition,
689-
infrav1.NATGatewaysReadyCondition,
690-
infrav1.LoadBalancersReadyCondition,
691-
infrav1.BastionHostReadyCondition,
692-
infrav1.VNetReadyCondition,
693-
infrav1.SubnetsReadyCondition,
694-
),
695-
)
682+
conditions.SetSummary(s.AzureCluster)
696683

697684
return s.patchHelper.Patch(
698685
ctx,

azure/scope/machine.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -547,13 +547,7 @@ func (m *MachineScope) SetAddresses(addrs []corev1.NodeAddress) {
547547

548548
// PatchObject persists the machine spec and status.
549549
func (m *MachineScope) PatchObject(ctx context.Context) error {
550-
conditions.SetSummary(m.AzureMachine,
551-
conditions.WithConditions(
552-
infrav1.VMRunningCondition,
553-
infrav1.AvailabilitySetReadyCondition,
554-
infrav1.NetworkInterfaceReadyCondition,
555-
),
556-
)
550+
conditions.SetSummary(m.AzureMachine)
557551

558552
return m.patchHelper.Patch(
559553
ctx,

azure/services/availabilitysets/availabilitysets.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func (s *Service) Reconcile(ctx context.Context) error {
7070
_, err = s.CreateResource(ctx, setSpec, serviceName)
7171
} else {
7272
log.V(2).Info("skip creation when no availability set spec is found")
73+
return nil
7374
}
7475

7576
s.Scope.UpdatePutStatus(infrav1.AvailabilitySetReadyCondition, serviceName, err)
@@ -85,25 +86,27 @@ func (s *Service) Delete(ctx context.Context) error {
8586
defer cancel()
8687

8788
var resultingErr error
88-
if setSpec := s.Scope.AvailabilitySetSpec(); setSpec == nil {
89+
setSpec := s.Scope.AvailabilitySetSpec()
90+
if setSpec == nil {
8991
log.V(2).Info("skip deletion when no availability set spec is found")
92+
return nil
93+
}
94+
95+
existingSet, err := s.Get(ctx, setSpec)
96+
if err != nil {
97+
if !azure.ResourceNotFound(err) {
98+
resultingErr = errors.Wrapf(err, "failed to get availability set %s in resource group %s", setSpec.ResourceName(), setSpec.ResourceGroupName())
99+
}
90100
} else {
91-
existingSet, err := s.Get(ctx, setSpec)
92-
if err != nil {
93-
if !azure.ResourceNotFound(err) {
94-
resultingErr = errors.Wrapf(err, "failed to get availability set %s in resource group %s", setSpec.ResourceName(), setSpec.ResourceGroupName())
95-
}
101+
availabilitySet, ok := existingSet.(compute.AvailabilitySet)
102+
if !ok {
103+
resultingErr = errors.Errorf("%T is not a compute.AvailabilitySet", existingSet)
96104
} else {
97-
availabilitySet, ok := existingSet.(compute.AvailabilitySet)
98-
if !ok {
99-
resultingErr = errors.Errorf("%T is not a compute.AvailabilitySet", existingSet)
105+
// only delete when the availability set does not have any vms
106+
if availabilitySet.AvailabilitySetProperties != nil && availabilitySet.VirtualMachines != nil && len(*availabilitySet.VirtualMachines) > 0 {
107+
log.V(2).Info("skip deleting availability set with VMs", "availability set", setSpec.ResourceName())
100108
} else {
101-
// only delete when the availability set does not have any vms
102-
if availabilitySet.AvailabilitySetProperties != nil && availabilitySet.VirtualMachines != nil && len(*availabilitySet.VirtualMachines) > 0 {
103-
log.V(2).Info("skip deleting availability set with VMs", "availability set", setSpec.ResourceName())
104-
} else {
105-
resultingErr = s.DeleteResource(ctx, setSpec, serviceName)
106-
}
109+
resultingErr = s.DeleteResource(ctx, setSpec, serviceName)
107110
}
108111
}
109112
}

azure/services/availabilitysets/availabilitysets_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,10 @@ func TestReconcileAvailabilitySets(t *testing.T) {
8989
},
9090
},
9191
{
92-
name: "noop if no availability set spec is found",
92+
name: "noop if no availability set spec returns nil",
9393
expectedError: "",
9494
expect: func(s *mock_availabilitysets.MockAvailabilitySetScopeMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
9595
s.AvailabilitySetSpec().Return(nil)
96-
s.UpdatePutStatus(infrav1.AvailabilitySetReadyCondition, serviceName, nil)
9796
},
9897
},
9998
{
@@ -167,7 +166,6 @@ func TestDeleteAvailabilitySets(t *testing.T) {
167166
expectedError: "",
168167
expect: func(s *mock_availabilitysets.MockAvailabilitySetScopeMockRecorder, m *mock_async.MockGetterMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
169168
s.AvailabilitySetSpec().Return(nil)
170-
s.UpdateDeleteStatus(infrav1.AvailabilitySetReadyCondition, serviceName, nil)
171169
},
172170
},
173171
{

azure/services/bastionhosts/bastionhosts.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ func (s *Service) Reconcile(ctx context.Context) error {
6161
var resultingErr error
6262
if bastionSpec := s.Scope.AzureBastionSpec(); bastionSpec != nil {
6363
_, resultingErr = s.CreateResource(ctx, bastionSpec, serviceName)
64+
} else {
65+
return nil
6466
}
6567

6668
s.Scope.UpdatePutStatus(infrav1.BastionHostReadyCondition, serviceName, resultingErr)
@@ -78,6 +80,8 @@ func (s *Service) Delete(ctx context.Context) error {
7880
var resultingErr error
7981
if bastionSpec := s.Scope.AzureBastionSpec(); bastionSpec != nil {
8082
resultingErr = s.DeleteResource(ctx, bastionSpec, serviceName)
83+
} else {
84+
return nil
8185
}
8286

8387
s.Scope.UpdateDeleteStatus(infrav1.BastionHostReadyCondition, serviceName, resultingErr)

azure/services/bastionhosts/bastionhosts_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ func TestReconcileBastionHosts(t *testing.T) {
6969
expectedError: "",
7070
expect: func(s *mock_bastionhosts.MockBastionScopeMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
7171
s.AzureBastionSpec().Return(nil)
72-
s.UpdatePutStatus(infrav1.BastionHostReadyCondition, serviceName, nil)
7372
},
7473
},
7574
{
@@ -140,7 +139,6 @@ func TestDeleteBastionHost(t *testing.T) {
140139
expectedError: "",
141140
expect: func(s *mock_bastionhosts.MockBastionScopeMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
142141
s.AzureBastionSpec().Return(nil)
143-
s.UpdateDeleteStatus(infrav1.BastionHostReadyCondition, serviceName, nil)
144142
},
145143
},
146144
}

azure/services/disks/disks.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,16 @@ func (s *Service) Delete(ctx context.Context) error {
6767
ctx, cancel := context.WithTimeout(ctx, reconciler.DefaultAzureServiceReconcileTimeout)
6868
defer cancel()
6969

70-
var result error
70+
specs := s.Scope.DiskSpecs()
71+
if len(specs) == 0 {
72+
return nil
73+
}
7174

7275
// We go through the list of DiskSpecs to delete each one, independently of the result of the previous one.
7376
// If multiple errors occur, we return the most pressing one.
74-
// Order of precedence (highest -> lowest) is: error that is not an operationNotDoneError (ie. error creating) -> operationNotDoneError (ie. creating in progress) -> no error (ie. created)
75-
for _, diskSpec := range s.Scope.DiskSpecs() {
77+
// Order of precedence (highest -> lowest) is: error that is not an operationNotDoneError (i.e. error creating) -> operationNotDoneError (i.e. creating in progress) -> no error (i.e. created)
78+
var result error
79+
for _, diskSpec := range specs {
7680
if err := s.DeleteResource(ctx, diskSpec, serviceName); err != nil {
7781
if !azure.IsOperationNotDoneError(err) || result == nil {
7882
result = err

azure/services/disks/disks_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ func TestDeleteDisk(t *testing.T) {
5656
expectedError string
5757
expect func(s *mock_disks.MockDiskScopeMockRecorder, r *mock_async.MockReconcilerMockRecorder)
5858
}{
59+
{
60+
name: "noop if no disk specs are found",
61+
expectedError: "",
62+
expect: func(s *mock_disks.MockDiskScopeMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
63+
s.DiskSpecs().Return([]azure.ResourceSpecGetter{})
64+
},
65+
},
5966
{
6067
name: "delete the disk",
6168
expectedError: "",

azure/services/groups/groups.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ func (s *Service) Reconcile(ctx context.Context) error {
6565
defer cancel()
6666

6767
groupSpec := s.Scope.GroupSpec()
68+
if groupSpec == nil {
69+
return nil
70+
}
6871

6972
_, err := s.CreateResource(ctx, groupSpec, serviceName)
7073
s.Scope.UpdatePutStatus(infrav1.ResourceGroupReadyCondition, serviceName, err)
@@ -80,6 +83,9 @@ func (s *Service) Delete(ctx context.Context) error {
8083
defer cancel()
8184

8285
groupSpec := s.Scope.GroupSpec()
86+
if groupSpec == nil {
87+
return nil
88+
}
8389

8490
// check that the resource group is not BYO.
8591
managed, err := s.IsGroupManaged(ctx)

azure/services/groups/groups_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ func TestReconcileGroups(t *testing.T) {
6262
expectedError string
6363
expect func(s *mock_groups.MockGroupScopeMockRecorder, m *mock_groups.MockclientMockRecorder, r *mock_async.MockReconcilerMockRecorder)
6464
}{
65+
{
66+
name: "noop if no group spec is found",
67+
expectedError: "",
68+
expect: func(s *mock_groups.MockGroupScopeMockRecorder, m *mock_groups.MockclientMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
69+
s.GroupSpec().Return(nil)
70+
},
71+
},
6572
{
6673
name: "create group succeeds",
6774
expectedError: "",
@@ -119,6 +126,13 @@ func TestDeleteGroups(t *testing.T) {
119126
expectedError string
120127
expect func(s *mock_groups.MockGroupScopeMockRecorder, m *mock_groups.MockclientMockRecorder, r *mock_async.MockReconcilerMockRecorder)
121128
}{
129+
{
130+
name: "noop if no group spec is found",
131+
expectedError: "",
132+
expect: func(s *mock_groups.MockGroupScopeMockRecorder, m *mock_groups.MockclientMockRecorder, r *mock_async.MockReconcilerMockRecorder) {
133+
s.GroupSpec().Return(nil)
134+
},
135+
},
122136
{
123137
name: "delete operation is successful for managed resource group",
124138
expectedError: "",

0 commit comments

Comments
 (0)