Skip to content

Refactor to allow resource-agnostic validation#248

Open
QuanMPhm wants to merge 1 commit intonerc-project:mainfrom
QuanMPhm:239/agnostic_validate
Open

Refactor to allow resource-agnostic validation#248
QuanMPhm wants to merge 1 commit intonerc-project:mainfrom
QuanMPhm:239/agnostic_validate

Conversation

@QuanMPhm
Copy link
Copy Markdown
Contributor

@QuanMPhm QuanMPhm commented Sep 15, 2025

Closes #239. This PR consists of the last commit. Built on top of #245. More details in the commit message.

@knikolla @jtriley I have a small bug in how error handling is done when the object storage quota is missing. Just want to confirm that my change is desirable.

@QuanMPhm QuanMPhm changed the title 239/agnostic validate Refactor to allow resource-agnostic validation Sep 15, 2025
Copy link
Copy Markdown
Collaborator

@knikolla knikolla left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good start, but not going as far as I would like in terms of making it "resource-agnostic", as you still have a lot of if resource_name in OPENSHIFT|OPENSTACK.

Try thinking about a way to push those resource-specific functions inside the respective allocators and creating a new function in the base Allocator that serves as the abstraction.

See my comment about validate project exist.

@QuanMPhm
Copy link
Copy Markdown
Contributor Author

Note-to-self: The branch name for the original solution (before time of this comment) is 239/agnostic_validate_first

@QuanMPhm QuanMPhm force-pushed the 239/agnostic_validate branch from 9153d7b to a86da68 Compare November 11, 2025 19:33
@QuanMPhm QuanMPhm requested a review from knikolla November 11, 2025 19:33
@QuanMPhm QuanMPhm force-pushed the 239/agnostic_validate branch 2 times, most recently from 40883e2 to 129234b Compare November 11, 2025 20:08
@QuanMPhm
Copy link
Copy Markdown
Contributor Author

QuanMPhm commented Nov 11, 2025

@knikolla I've cleaned house on validate_allocations.py. Hopefully this is closer to your vision. I haven't included tests for idempotency yet. For the sake of not making this PR too complicated, I believe that should be done in a subsequent PR?

@knikolla
Copy link
Copy Markdown
Collaborator

@QuanMPhm can you resolve conflicts (and update to new quota system if necessary). I would like to have this be part of next month's update.

@QuanMPhm QuanMPhm force-pushed the 239/agnostic_validate branch from 129234b to a0ba80d Compare March 20, 2026 13:57
@QuanMPhm
Copy link
Copy Markdown
Contributor Author

@knikolla I have resolved all conflicts. This is ready to review

current_value = quota.get(quota_key, None)
current_value = parse_quota_value(current_value, attr)

self.check_and_apply_quota_attr(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this going to trigger a delete and set quota for each quota attribute that is out of date?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. The check_and_apply_quota_attr() (defined in base.py) will have the same quota validation logic as the current validate_allocation command. Out-of-date quotas will trigger a call to set_quota, which deletes and sets the quotas

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but in this implementation the call to set quota is made for each allocation attribute, rather than setting a flag for failed_validation which calls set_quota once at the end and setting all the quotas and avoiding unnecessary deletions and recreations.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes. I noticed that inefficiency too with the validation code. I'll refactor that

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@knikolla the quota validation function has been refactored

@knikolla
Copy link
Copy Markdown
Collaborator

I did a quick first pass, I like this approach much more. Will do a second pass early tomorrow morning.

Quota validation will now behave the same for both resource types.
OpenStack's particular use of default quotas is reflected in a new
test in `openstack/test_allocation.py`

OpenStack integration code is slightly changed to
better handle missing object storage quotas

Much of the validation logic has been pushed into
`base.py`, `openshift.py`, and `openstack.py`
@QuanMPhm QuanMPhm force-pushed the 239/agnostic_validate branch from a0ba80d to a22bf80 Compare March 31, 2026 19:18
@QuanMPhm QuanMPhm requested a review from knikolla March 31, 2026 19:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor validate_allocations to be resource-agnostic

2 participants