Skip to content

Commit 1663db8

Browse files
committed
Clear forced_down when removing HA maintenance
When maintenance: ha is removed, the kvm-ha-service have set forced_down=true on the nova-compute service. The operator's MaintenanceUnset path previously only re-enabled the service status but did not clear forced_down, leaving the compute service unable to accept workloads despite being marked enabled.
1 parent 39f0012 commit 1663db8

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

internal/controller/hypervisor_maintenance_controller.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,13 @@ func (hec *HypervisorMaintenanceController) reconcileComputeService(ctx context.
124124
return nil
125125
}
126126

127-
// We need to enable the host as per spec
128-
enableService := services.UpdateOpts{Status: services.ServiceEnabled}
127+
// We need to enable the host as per spec and clear forced_down
128+
// in case it was set by the HA service during maintenance.
129+
falseVal := false
130+
enableService := openstack.UpdateServiceOpts{
131+
Status: services.ServiceEnabled,
132+
ForcedDown: &falseVal,
133+
}
129134
log.Info("Enabling hypervisor", "id", serviceId)
130135
_, err := services.Update(ctx, hec.computeClient, serviceId, enableService).Extract()
131136
if err != nil {

internal/controller/hypervisor_maintenance_controller_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ var _ = Describe("HypervisorMaintenanceController", func() {
148148
Expect(k8sClient.Get(ctx, hypervisorName, hypervisor)).To(Succeed())
149149
hypervisor.Spec.Maintenance = ""
150150
Expect(k8sClient.Update(ctx, hypervisor)).To(Succeed())
151-
expectedBody := `{"status": "enabled"}`
151+
expectedBody := `{"status": "enabled", "forced_down": false}`
152152
mockServiceUpdate(expectedBody)
153153
})
154154

@@ -215,7 +215,7 @@ var _ = Describe("HypervisorMaintenanceController", func() {
215215
Message: "dontcare",
216216
})
217217
Expect(k8sClient.Status().Update(ctx, hypervisor)).To(Succeed())
218-
expectedBody := `{"status": "enabled"}`
218+
expectedBody := `{"status": "enabled", "forced_down": false}`
219219
mockServiceUpdate(expectedBody)
220220

221221
eviction := &kvmv1.Eviction{

0 commit comments

Comments
 (0)