Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TinkerbellMachine's cannot be deleted when the bound Hardware doesn't exist #368

Closed
chrisdoherty4 opened this issue May 13, 2024 · 0 comments · Fixed by #421
Closed

TinkerbellMachine's cannot be deleted when the bound Hardware doesn't exist #368

chrisdoherty4 opened this issue May 13, 2024 · 0 comments · Fixed by #421
Assignees

Comments

@chrisdoherty4
Copy link
Member

If you delete a Hardware object that's used by a TinkerbellMachine object the TinkerbellMachine controller errors out and never removes the finalizer preventing it from ever being deleted.

Expected Behaviour

Deleting a TinkerbellMachine object that's bound to a deleted Hardware object is removed.

Current Behaviour

When reconciling a deleted TinkerbellMachine resource CAPT retrieves the Hardware. If the hardware fails to be retrieved it will return an error and the TinkerbellMachine never has its finalizer removed, therefore is never deleted from Kubernetes and blocks deletion of all owning resources (e.g. CAPI Machine, CAPI Cluster etc).

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

  • Operating System and version (e.g. Linux, Windows, MacOS):

  • How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:

  • Link to your project or a code example to reproduce issue:

@chrisdoherty4 chrisdoherty4 self-assigned this May 13, 2024
jacobweinstock added a commit that referenced this issue Nov 25, 2024
Allow TinkerbellMachine to be removed when no Hardware exists:

## Description

<!--- Please describe what this PR is going to change -->
When a Hardware object corresponding to a tinkerbellmachine object no longer exists, allow the tinkerbellmachine object to be removed and clean up associated template and workflow. This means BMC operations to power the machine off and modify the Hardware object will all be skipped.

While the tinkerbellmachine object can be deleted if the finalizer is removed manually this improves the user experience.

## Why is this needed

<!--- Link to issue you have raised -->

Fixes: #368

## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->


## How are existing users impacted? What migration steps/scripts do we need?

<!--- Fixes a bug, unblocks installation, removes a component of the stack etc -->
<!--- Requires a DB migration script, etc. -->


## Checklist:

I have:

- [ ] updated the documentation and/or roadmap (if required)
- [ ] added unit or e2e tests
- [ ] provided instructions on how to upgrade
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant