Skip to content

Commit b67394d

Browse files
committed
METAL-1721: Pass force to provisioner's detach
1 parent b225f3f commit b67394d

File tree

4 files changed

+11
-11
lines changed

4 files changed

+11
-11
lines changed

internal/controller/metal3.io/baremetalhost_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ func (r *BareMetalHostReconciler) actionPowerOffBeforeDeleting(prov provisioner.
538538
}
539539

540540
// Manage deletion of the host.
541-
func (r *BareMetalHostReconciler) actionDeleting(prov provisioner.Provisioner, info *reconcileInfo) actionResult {
541+
func (r *BareMetalHostReconciler) actionDeleting(prov provisioner.Provisioner, info *reconcileInfo, force bool) actionResult {
542542
info.log.Info(
543543
"marked to be deleted",
544544
"timestamp", info.host.DeletionTimestamp,
@@ -550,7 +550,7 @@ func (r *BareMetalHostReconciler) actionDeleting(prov provisioner.Provisioner, i
550550
return deleteComplete{}
551551
}
552552

553-
provResult, err := prov.Delete()
553+
provResult, err := prov.Delete(force)
554554
if err != nil {
555555
return actionError{fmt.Errorf("failed to delete: %w", err)}
556556
}
@@ -616,8 +616,8 @@ func hasCustomDeploy(host *metal3api.BareMetalHost) bool {
616616
}
617617

618618
// detachHost() detaches the host from the Provisioner.
619-
func (r *BareMetalHostReconciler) detachHost(prov provisioner.Provisioner, info *reconcileInfo) actionResult {
620-
provResult, err := prov.Detach()
619+
func (r *BareMetalHostReconciler) detachHost(prov provisioner.Provisioner, info *reconcileInfo, force bool) actionResult {
620+
provResult, err := prov.Detach(force)
621621
if err != nil {
622622
return actionError{fmt.Errorf("failed to detach: %w", err)}
623623
}

internal/controller/metal3.io/host_state_machine.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,12 +316,12 @@ func (hsm *hostStateMachine) checkDetachedHost(info *reconcileInfo) (result acti
316316
// Only allow detaching hosts in Provisioned/ExternallyProvisioned/Ready/Available states
317317
switch info.host.Status.Provisioning.State {
318318
case metal3api.StateProvisioned, metal3api.StateExternallyProvisioned, metal3api.StateReady, metal3api.StateAvailable:
319-
return hsm.Reconciler.detachHost(hsm.Provisioner, info)
319+
return hsm.Reconciler.detachHost(hsm.Provisioner, info, false)
320320
default:
321321
info.log.Info("host not in allowed detaching state, checking for force annotation")
322322
if hasForceDetachAnnotation(hsm.Host) {
323323
info.log.Info("forcing detach of host", "host", info.host.Name, "annotation", hsm.Host.GetAnnotations()[metal3api.DetachedAnnotation])
324-
return hsm.Reconciler.detachHost(hsm.Provisioner, info)
324+
return hsm.Reconciler.detachHost(hsm.Provisioner, info, true)
325325
}
326326
info.log.Info("host cannot be detached yet, waiting for the current operation to finish", "provisioningState", info.host.Status.Provisioning.State, "annotation", hsm.Host.GetAnnotations()[metal3api.DetachedAnnotation])
327327
}
@@ -650,5 +650,5 @@ func (hsm *hostStateMachine) handlePoweringOffBeforeDelete(info *reconcileInfo)
650650
}
651651

652652
func (hsm *hostStateMachine) handleDeleting(info *reconcileInfo) actionResult {
653-
return hsm.Reconciler.actionDeleting(hsm.Provisioner, info)
653+
return hsm.Reconciler.actionDeleting(hsm.Provisioner, info, false)
654654
}

internal/controller/metal3.io/host_state_machine_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,11 +1378,11 @@ func (m *mockProvisioner) Deprovision(_ bool, _ metal3api.AutomatedCleaningMode)
13781378
return m.getNextResultByMethod("Deprovision"), err
13791379
}
13801380

1381-
func (m *mockProvisioner) Delete() (result provisioner.Result, err error) {
1381+
func (m *mockProvisioner) Delete(_ bool) (result provisioner.Result, err error) {
13821382
return m.getNextResultByMethod("Delete"), err
13831383
}
13841384

1385-
func (m *mockProvisioner) Detach() (result provisioner.Result, err error) {
1385+
func (m *mockProvisioner) Detach(_ bool) (result provisioner.Result, err error) {
13861386
res := m.getNextResultByMethod("Detach")
13871387
return res, err
13881388
}

pkg/provisioner/ironic/delete_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,9 @@ func deleteTest(t *testing.T, detach bool) {
217217

218218
var result provisioner.Result
219219
if detach {
220-
result, err = prov.Detach()
220+
result, err = prov.Detach(false)
221221
} else {
222-
result, err = prov.Delete()
222+
result, err = prov.Delete(false)
223223
}
224224

225225
assert.Equal(t, tc.expectedDirty, result.Dirty)

0 commit comments

Comments
 (0)