Reporting for other maintainers (~Packit users) #12234
Labels
No labels
announcement
anubis
authentication
aws
backlog
blocked
bodhi
ci
cloud
communishift
copr
database
day-to-day
dc-move
deprecated
dev
discourse
dns
downloads
easyfix
epel
firmitas
forgejo_migration
Gain
High
Gain
Low
Gain
Medium
gitlab
greenwave
hardware
help wanted
high-trouble
koji
koschei
lists
low-trouble
medium-trouble
mirrorlists
monitoring
Needs investigation
odcs
OpenShift
ops
outage
packager_workflow_blocker
pagure
permissions
Priority
Needs Review
Priority
Next Meeting
Priority
🔥 URGENT 🔥
Priority
Waiting on Assignee
Priority
Waiting on External
Priority
Waiting on Reporter
rabbitmq
release-monitoring
releng
request-for-resources
s390x
security
SMTP
sprint-0
sprint-1
src.fp.o
staging
unfreeze
waiverdb
websites-general
wiki
Backlog Status
Needs Review
Backlog Status
Ready
chore
documentation
points
01
points
02
points
03
points
05
points
08
points
13
Priority
High
Priority
Low
Priority
Medium
Sprint Status
Blocked
Sprint Status
Done
Sprint Status
In Progress
Sprint Status
Review
Sprint Status
To Do
Technical Debt
Work Item
Bug
Work Item
Epic
Work Item
Spike
Work Item
Task
Work Item
User Story
No milestone
No project
No assignees
7 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
infra/tickets#12234
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hello,
since more and more people use Packit for Fedora automation, we are hitting a problem with notifications being missed because Packit is the one to do the action and not the maintainers themselves. This is currently the main flaw of the whole automation so we are discussing in a Packit team how to improve this.
But this might not relate only to Packit users but anyone in need of notification for events triggered by someone else (i.e. co-maintainer).
There might be various approaches to this and I hope it's good to discuss this with you.
Describe what you would like us to do:
I would like to agree on an approach so the work on a fix can start.
When do you need this to be done by? (YYYY/MM/DD)
I would like to see the agreement let's say by the end of October. The real work deadlines highly depend on the chosen solution.
If you think it's better to join any of your meetings or create a separate brainstorming session or a discussion thread, I am happy to be present or set this up.
Thanks a lot in advance!
František (from the Packit team)
PS : I've already created an issue for Bodhi about a specific instance of this problem but this is probably better to discuss in general.
Looks like you are looking for the "proxy user" feature in some services (second bullet)?
Koji has a feature called "proxy user". With this feature one user (the proxy, eg. Packit) can act on behalf of another user, eg. create a build for a packager.
Likewise, waiverdb has the same feature - a proxy user can create waivers on behalf of someone else.
Other services may have it too, I don't remember off the top of my head.
Which services exactly you would expect to have this "proxy user" feature?
Metadata Update from @phsmoura:
I think option 3 is the easiest. A Fedora Message as two properties that can be of interest here:
agent_name: the FAS username of the person who caused the actionusernames: a list of FAS usernames of people affected by the actionFMN will, by default, notify everybody in
usernamesexcept the person inagent_name(unless they selected "Notify me of my own actions").Reference: https://fedora-messaging.readthedocs.io/en/stable/user-guide/messages.html#useful-accessors
So I would suggest using the
usernamesproperty in Packit's message schemas to send out notifications to people interested in the Packit action that just occurred, such as package maintainers.If the action was caused by a specific user (e.g when a new release is published), then I think it makes sense to put their FAS username in
agent_name, so they won't be notified of their own actions unless requested. If the action was caused by Packit itself (e.g when a build has completed), then I would putpackit(orNoneif packit doesn't have a FAS account) inagent_name.Thanks @mizdebsk for your response. Yes, "proxy user" is a good term for this.
And it's good to know that such a thing already exists in some services. I'll take a look. Thanks for the suggestion.
Currently, we mainly communicate with dist-git, Koji and Bodhi. (With dist-git, it's not necessary. )
@mizdebsk , can you please point me to the code/docs to check how this works? I am struggling to find it..;(
Otherwise, how does authentication work, can anyone freely impersonate anyone else? Or, is there any approval process?
Hello @abompard and thanks for another good pointer!
How can the message-bus message be transformed into a user notification?
Currently, Packit does not send any messages to the bus (we just listen).
So, we should either create our own messages (mostly a duplicate of existing ones from Koji/Bodhi/..), or help with somehow adding the "missing info" to the existing messages from Koji/Bodhi.
In case of Koji, see
koji list-api:The proxy authenticates to Koji HUB with its own credentials, but during login passes "proxyuser" parameter indicating that the proxy is acting on behalf of someone else.
(The sslLogin method name may be misleading, but it is actually used in Krb auth too.)
Code example: https://pagure.io/fm-orchestrator/c/df594da8a5b28bc5eba5ba89c7661a1381904b10
(It was removed because back then MBS was using SSL auth, but packagers were switched to Krb auth. Nowdays everything should work with Krb.)
Koji hub has configuration option that limits who can be a proxy. Once configured, given proxy user can act on behalf of all other users.
Examples of existing use cases of proxy user that are implemented:
Thanks @mizdebsk for the examples, these are quite similar to our use case. We would just use the main maintainer (or let the user choose).
If Packit can get this permission, I think that's another reason to have a separate instance and/or FAS account to handle Fedora automation.
So, where are we here? Whats next actions and done by whom?
Thanks @kevin for the reminder.
I hope we've improved the situation for Packit users to suggest and document how to configure notifications: https://packit.dev/docs/fedora-releases-guide/fedora-notifications
This works quite well and I like that this is not a Packit-specific feature so everyone can do the same. (I.e. people being notified about activities of co-maintainers)
But I still worry this is not ideal since it's not done by default.
So, I can see these options:
I would rather avoid version 3 and am worried version 1 could take too much work.
Does anyone have any other ideas? Am I missing something more straightforward? I hope if we agree on the way forward we can move on to the specific tasks...
Hey, sorry this dropped off the radar. ;(
I personally think option 4 is best, but then which suboption I have no idea.
@abompard can you chime in from a FMN implementation standpoint? Is there any way to do those things?
Yeah I think option 4 would be doable, we could provide a way to build a URL that people could click on to add the rule. I just need to think of a way to avoid duplicates (even though multiple matching rules only generate one notification per incoming message).
I'm adding my vote for option 4.
Somebody just needs time to implement this.
Hi! Thanks all for providing feedback here so far. This topic was brought up again recently by Packit users so it would be great if we could prepare some actions items here. I think the conclusion seems to be the option 4.
@abompard, you're suggesting sub-option 4a, correct? That would still require Packit to notify users and then for users to click through, log in, and confirm. The other sub-options (4b/4c - automatic rule creation) would achieve better results from a UX perspective, but Packit would need to be able to create FMN rules on behalf of users via API. Do you think that's something FMN could support? Or is 4a the only feasible path?
So, this has sat for a while sadly. ;(
I guess next steps are code in FMN to do any of those option 4 things?