-
Notifications
You must be signed in to change notification settings - Fork 180
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
Improve appstreams context selection #9372
base: master
Are you sure you want to change the base?
Improve appstreams context selection #9372
Conversation
Thanks, @parlt91 looks good. I am going to test it with some corner cases before approving though. |
Signed-off-by: Pascal Arlt <[email protected]>
Signed-off-by: Pascal Arlt <[email protected]>
2597aad
to
fcd9765
Compare
👋 Hello! Thanks for contributing to our project. If you are unsure the failing tests are related to your code, you can check the "reference jobs". These are jobs that run on a scheduled time with code from master. If they fail for the same reason as your build, it means the tests or the infrastructure are broken. If they do not fail, but yours do, it means it is related to your code. Reference tests: KNOWN ISSUES Sometimes the build can fail when pulling new jar files from download.opensuse.org . This is a known limitation. Given this happens rarely, when it does, all you need to do is rerun the test. Sorry for the inconvenience. For more tips on troubleshooting, see the troubleshooting guide. Happy hacking! |
Suggested tests to cover this Pull Request
|
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 still no Rocky 8 update available since the last time, so I cannot see if context values change, but I tested everything else and it works as expected.
In the rare case that a context value changes with a module update, (RH-like 8 only) we might still have problems suggesting the correct package for install. There's no easy fix for that, but at least the workaround would be to install such packages from the CLI directly. Hopefully, we won't encounter this in real life.
Thanks for the fix 👍
@@ -92,6 +92,26 @@ def _get_module_info(module_names): | |||
return [] | |||
|
|||
module_info_output = result.stdout.splitlines() | |||
active_modules = [] |
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.
We should also change this: https://github.com/uyuni-project/uyuni/pull/9372/files#diff-0afe89c35f776dab892a3a79e2f20c5db733ec5c7c2002251a6b205145e7bf43L86 as now the function get the info for active modules only.
Also, before starting parsing the output, I would add an example output to understand better what the loop is trying parse/achieve.
while True: | ||
start = next( | ||
(i for i, e in enumerate(module_info_output) | ||
if "[a]" in e), -1 | ||
) | ||
if start != -1 and module_info_output[start].startswith("Stream"): | ||
end = next( | ||
(i for i, e in enumerate(module_info_output[start:-1]) | ||
if e.startswith("Name")), -1 | ||
) | ||
if end != -1: | ||
active_modules+=module_info_output[start-1:end+start] | ||
module_info_output = module_info_output[end+start:-1] | ||
else: | ||
active_modules+=module_info_output[start-1:end] | ||
module_info_output=active_modules | ||
break | ||
else: | ||
break |
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.
I would probably rather prefer to iterate module_info_output
outside of a while True
loop, for example, iterating module_info_output
line-by-line (if that makes sense), and then filtering and collecting only the content of active modules we want.
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.
I am not sure what you mean here. Could you give me an example snippet? I wouldn't know how to do this without a loop since there can be multiple active modules.
(i for i, e in enumerate(module_info_output[start:-1]) | ||
if e.startswith("Name")), -1 | ||
) | ||
if end != -1: | ||
active_modules+=module_info_output[start-1:end+start] | ||
module_info_output = module_info_output[end+start:-1] | ||
else: | ||
active_modules+=module_info_output[start-1:end] | ||
module_info_output=active_modules |
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.
Styling nitpick:
(i for i, e in enumerate(module_info_output[start:-1]) | |
if e.startswith("Name")), -1 | |
) | |
if end != -1: | |
active_modules+=module_info_output[start-1:end+start] | |
module_info_output = module_info_output[end+start:-1] | |
else: | |
active_modules+=module_info_output[start-1:end] | |
module_info_output=active_modules | |
(i for i, e in enumerate(module_info_output[start : -1]) | |
if e.startswith("Name")), -1 | |
) | |
if end != -1: | |
active_modules += module_info_output[start - 1 : end + start] | |
module_info_output = module_info_output[end + start : -1] | |
else: | |
active_modules += module_info_output[start - 1 : end] | |
module_info_output = active_modules |
What does this PR change?
Fix an issue where parsing appstream modules would from clients would parse all modules not just active ones.
GUI diff
No difference.
Documentation
No documentation needed: Bugfix
DONE
Test coverage
No tests: Bugfix
DONE
Links
Issue(s): https://github.com/SUSE/spacewalk/issues/25484
Changelogs
Make sure the changelogs entries you are adding are compliant with https://github.com/uyuni-project/uyuni/wiki/Contributing#changelogs and https://github.com/uyuni-project/uyuni/wiki/Contributing#uyuni-projectuyuni-repository
If you don't need a changelog check, please mark this checkbox:
If you uncheck the checkbox after the PR is created, you will need to re-run
changelog_test
(see below)Re-run a test
If you need to re-run a test, please mark the related checkbox, it will be unchecked automatically once it has re-run:
Before you merge
Check How to branch and merge properly!