!zghijEASpYQWYFzriI:nixos.org

Hydra

378 Members
109 Servers

Load older messages


SenderMessageTime
15 Nov 2022
@aciceri:nixos.devaciceriSomeone knows if there is a way to configure which jobsets a user can restart?10:39:01
@aciceri:nixos.devaciceriOr more generally permissions management for for single jobsets10:39:54
@aciceri:nixos.devaciceriOr even by project10:41:02
@janne.hess:helsinki-systems.dedas_jI only know of the db table, I'm not aware of config in the frontend10:41:24
@aciceri:nixos.devaciceriDo you mean that the table has a schema that captures these informations?10:42:00
@aciceri:nixos.devaciceriI mean permissions per jobsets10:42:14
@janne.hess:helsinki-systems.dedas_j
hydra=# table projectmembers ;
 project | username
---------+----------
(0 rows)
10:42:35
@janne.hess:helsinki-systems.dedas_jthat's the best I know10:42:45
@aciceri:nixos.devaciceridoes this mean that the a user cannot have different permissions o10:44:53
@aciceri:nixos.devaciceri * does this mean that the a user cannot have different permissions for different projects?10:45:02
@aciceri:nixos.devaciceri * does this mean that the an user cannot have different permissions for different projects?10:45:10
@janne.hess:helsinki-systems.dedas_jI have no idea tbh10:45:29
@aciceri:nixos.devaciceri Frankly I'm only interested into the restart-jobs role, I would like to have the same user able to restart jobs from jobsets from a project but not from another project 10:46:28
@aciceri:nixos.devaciceriI would like to manage these users (and which which jobsets they can restart) declaratively using an module option10:50:33
@linus:schreibt.jetzt@linus:schreibt.jetzt
sub mayRestartJobs {
    my ($c, $project) = @_;
    return
        $c->user_exists &&
        (isAdmin($c) ||
         hasRestartJobsRole($c) ||
         isProjectOwner($c, $project));
}
10:54:01
@linus:schreibt.jetzt@linus:schreibt.jetztThat's the entire logic Hydra uses to determine whether a user can restart jobs.10:54:16
@aciceri:nixos.devaciceri
In reply to @janne.hess:helsinki-systems.de
hydra=# table projectmembers ;
 project | username
---------+----------
(0 rows)
suppose there is only a row which puts in relation 'alice' to project and suppose that alice has the restart-jobs role. What happens when another project is created (without writing a new row in projectmembers I mean)? alice is able to restart jobs from this other project?
10:54:24
@linus:schreibt.jetzt@linus:schreibt.jetzt (/src/lib/Hydra/Helper/CatalystUtils.pm) 10:54:52
@aciceri:nixos.devaciceri
In reply to @linus:schreibt.jetzt
sub mayRestartJobs {
    my ($c, $project) = @_;
    return
        $c->user_exists &&
        (isAdmin($c) ||
         hasRestartJobsRole($c) ||
         isProjectOwner($c, $project));
}
uhhh this is really helpful, thanks
10:55:10
@linus:schreibt.jetzt@linus:schreibt.jetztso apparently project membership has no effect on whether users can restart jobs, lol10:55:36
@linus:schreibt.jetzt@linus:schreibt.jetzt wait no actually project membership is project ownership 10:56:27
@linus:schreibt.jetzt@linus:schreibt.jetztI think10:56:33
@aciceri:nixos.devaciceri isProjectOwner doesn't use the projectmembers table? 10:56:37
@linus:schreibt.jetzt@linus:schreibt.jetzt
sub isProjectOwner {
    my ($c, $project) = @_;
    return
        $c->user_exists &&
        (isAdmin($c) ||
         $c->user->username eq $project->owner->username ||
         defined $c->model('DB::ProjectMembers')->find({ project => $project, userName => $c->user->username }));
}
10:56:39
@linus:schreibt.jetzt@linus:schreibt.jetztyeah10:56:41
@aciceri:nixos.devaciceriperfect! Then this is doable somehow10:57:37
@aciceri:nixos.devaciceriI just need to move everything to different projects now10:58:18
@aciceri:nixos.devaciceriNot sure I'll do, just wanted to know it made sense10:58:40
@linus:schreibt.jetzt@linus:schreibt.jetzt as for declarative management of a hydra instance, may I suggest the terraform provider (maintained by my employer but I've been using it since before I worked there :D ) 10:58:47
@linus:schreibt.jetzt@linus:schreibt.jetzt ma27 has some nice wrapping code that makes it more pleasant to use with terranix 10:59:32

Show newer messages


Back to Room ListRoom Version: 6