-
Notifications
You must be signed in to change notification settings - Fork 595
[plugins] maxage and all_logs on all plugins #3681
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
base: main
Are you sure you want to change the base?
Conversation
|
Congratulations! One of the builds has completed. 🍾 You can install the built RPMs by following these steps:
Please note that the RPMs should be used only in a testing environment. |
| if self.get_option('since'): | ||
| since = self.get_option('since') | ||
|
|
||
| # User's plugin option argument takes precedence over plugin passed arg | ||
| maxage = self.get_option('maxage') or maxage | ||
|
|
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.
Shall not we unify the code here? Both manipulations perform the same at the end, the unification would improve clarity of code.
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.
Sorry I don't understand what you mean by "unify the code".
The kdump plugin passes the maxage argument, so this code preserves existing behavior 1. Otherwise this would become a breaking change.
sos/report/__init__.py
Outdated
| report_grp.add_argument("--maxage", action="store", | ||
| dest="maxage", default=None, type=int, | ||
| help="Escapes archived files older (according " | ||
| "to `mktime`) than this many hours. This will " | ||
| "also affect --all-logs (sets the default for " | ||
| "all plugins)") |
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.
Would it be clear for users the option takes values in hours? Esp. if --since is primarily in days (default expected format is a day, optionally time)? Should not we rename it to, I dont know, --maxhours? (that sounds badly to me, I like the --maxage more).
I can easily be wrong here. I really dont know what users' perception would be here.
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 like the suggested change to maxhours, as it has the benefit of including the unit in the name and not force people to look at the description to figure it out.
I'll make the change.
6dd2683 to
afbfafe
Compare
|
I meant that applies same logical change to either or: The first construction is more concise, the second more explicit. I like the first more but 2nd is fully OK for sure. |
| desc='Escapes archived files older (according to `mktime`) ' | ||
| 'than this many hours' | ||
| ), | ||
| 'all_logs': PluginOpt( |
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 recently standardized on using hyphens for plugin options, to match the "top level" options which are all hyphens. So this will need to be all-logs (though the internal dest naming will of course still be all_logs).
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'm new to this, but I assumed looking at the kernel plugin with-timer definition and how it is accessed as with-timer and not with_timer that there is no translation on the PluginOpt.
I looked a bit into the get_option and PluginOpt and didn't find any translation mechanism so I went with the solution that required fewer code changes.
But it is true that it would be weird to call it --all-logs only to have to use all_logs in the plugins.
I'll see if I can use all-logs everywhere.
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.
Done
|
In a quick test, this change works for sos/sos/report/plugins/__init__.py Lines 1544 to 1564 in 7b0d5a4
|
812a081 to
9d19e66
Compare
Current `PluginOpt` code doesn't have the possibility of having a different name for the parameter and the reference used in the code. This would be the equivalent in arg parser to not having a `dest` argument available to us. This patch proposes a change to allow this using a new `PluginOpt` field called `param_name`. This new field will only be used when interfacing with users. In other words, when showing the options to users (eg: `list_plugins`), when parsing the command line arguments (eg: `_set_tunables`), and when reading the config file (this doesn't require code changes because it leverages the normal `_set_tunables` method). Signed-off-by: Gorka Eguileor <geguileo@redhat.com>
9d19e66 to
ab16bbf
Compare
This patch makes 2 options settable globally and per-plugin: `maxhours` and `all-logs`. The `maxhours` option maps to what the code used to call `maxage`, which has also been renamed to `maxhours` to be consistent. Examples: ``` sos report --all-logs --maxhours=1 sos report -k container_log.all-logs=on,container_log.maxhours=1 sos report --all-logs --maxhours=1 \ -k container_log.all-logs=off,container_log.maxhours=2 ``` This adds flexibility to what users want to retrieve. Signed-off-by: Gorka Eguileor <geguileo@redhat.com>
ab16bbf to
8bc2ccb
Compare
Done, I implemented it in what I consider the safest way, and it also adds a missing feature: different variable and user facing parameter name for plugin options. Alternatively the |
|
Sorry for the silence here, cycling around on it now. The Internally, developers just need to know that hyphens become underscores when accessing the associated variables, which is the case for any project using argparse and directly accessing the parsed options. So, we're good with the original intent of the PR - expanding all-logs and maxage/maxhours to all plugins on a potentially individual basis, but we don't need to mess around with internal references to option names. |
|
I am not sure of the sttaus of this PR - are we waiting for a change from author, or for a review? (I plan to review the current PR within a day or two, though it would be great if PR is rebased to current main - there are conflicts..) |
|
I like it. Maybe worth adding a (report_)test? (I can come up with something if preferred) |
This patch makes 2 options settable globally and per-plugin:
maxageandall_logs.Examples:
This adds flexibility to what users want to retrieve.
Please place an 'X' inside each '[]' to confirm you adhere to our Contributor Guidelines