-
Notifications
You must be signed in to change notification settings - Fork 3
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
fix: purge any cephfs storage classes installed by ops.manifest #38
Merged
addyess
merged 1 commit into
main
from
bug/lp2098004/purge-cephfs-sc-without-knowning-names
Feb 11, 2025
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
ops >= 1.2.0 | ||
ops.manifest >= 1.1.3, < 2.0 | ||
ops.manifest >= 1.5.0, < 2.0 | ||
jinja2 | ||
pyyaml | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's something I don't understand in this dunder method. Why do we need to create an empty sc when we are purging? Could there be any leftover sc, or is this just an edge case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Manifest
objects can supportManipulations
. These are enacted by calling the Manipulation.The types of manipulations are defined in the project
In this case. The
CephStorageClass
manipulation is anAddition
. It is a set of objects added to the existing static manifests in the upstream yaml files.ops.manifest
will call this manipulation to create the lightkube resource definition for the storage class.Normally, for INSTALLING resources, this is straight forward to create these additions.
ops.manifest
knows the resources it should add. But in thepurging
situation, it's a bit different. We want to make sure thatops.manifest
can delete all the objects this manifest may have added.What's worse, is we don't REALLY know the name of the storage classes when we're purging. The state information necessary to generate the list of storage class names is gone (it was the cephfs filesystem listings).
But
ops.manifest
would have labelled each kubernetes resource with some metadata labels to indicate which manifest placed it into the cluster. In this case, if any storage class is created, it will have two labels associated with it:What this
__call__
is returning is a single list ofStorageClasses
with no names.when
ops.manifest
builds its list of resources, it will query the cluster looking for all the StorageClasses with these matching labels and then delete those resources if they were found