nixos/taskserver/helper: Improve CLI subcommands

Try to match the subcommands to act more like the subcommands from the
taskd binary and also add a subcommand to list groups.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>

aszlig e2383b84 ce095402

+55 -20
+45 -10
nixos/modules/services/misc/taskserver/helper-tool.py
··· 441 ctx.fail(msg.format(path)) 442 443 444 - @cli.command("list-users") 445 @click.argument("organisation", type=ORGANISATION) 446 def list_users(organisation): 447 """ ··· 452 sys.stdout.write(user.name + "\n") 453 454 455 - @cli.command("list-orgs") 456 def list_orgs(): 457 """ 458 List available organisations ··· 462 sys.stdout.write(org.name + "\n") 463 464 465 - @cli.command("get-uuid") 466 @click.argument("organisation", type=ORGANISATION) 467 @click.argument("user") 468 def get_uuid(organisation, user): ··· 478 sys.stdout.write(user.key + "\n") 479 480 481 - @cli.command("export-user") 482 @click.argument("organisation", type=ORGANISATION) 483 @click.argument("user") 484 def export_user(organisation, user): ··· 496 sys.stdout.write(userobj.export()) 497 498 499 - @cli.command("add-org") 500 @click.argument("name") 501 def add_org(name): 502 """ ··· 510 mark_imperative(name) 511 512 513 - @cli.command("del-org") 514 @click.argument("name") 515 def del_org(name): 516 """ ··· 526 click.echo(msg.format(name), err=True) 527 528 529 - @cli.command("add-user") 530 @click.argument("organisation", type=ORGANISATION) 531 @click.argument("user") 532 def add_user(organisation, user): ··· 545 mark_imperative(organisation.name, "users", userobj.key) 546 547 548 - @cli.command("del-user") 549 @click.argument("organisation", type=ORGANISATION) 550 @click.argument("user") 551 def del_user(organisation, user): ··· 561 click.echo(msg.format(user), err=True) 562 563 564 - @cli.command("add-group") 565 @click.argument("organisation", type=ORGANISATION) 566 @click.argument("group") 567 def add_group(organisation, group): ··· 576 mark_imperative(organisation.name, "groups", groupobj.name) 577 578 579 - @cli.command("del-group") 580 @click.argument("organisation", type=ORGANISATION) 581 @click.argument("group") 582 def del_group(organisation, group):
··· 441 ctx.fail(msg.format(path)) 442 443 444 + @cli.group("org") 445 + def org_cli(): 446 + """ 447 + Manage organisations 448 + """ 449 + pass 450 + 451 + 452 + @cli.group("user") 453 + def user_cli(): 454 + """ 455 + Manage users 456 + """ 457 + pass 458 + 459 + 460 + @cli.group("group") 461 + def group_cli(): 462 + """ 463 + Manage groups 464 + """ 465 + pass 466 + 467 + 468 + @user_cli.command("list") 469 @click.argument("organisation", type=ORGANISATION) 470 def list_users(organisation): 471 """ ··· 476 sys.stdout.write(user.name + "\n") 477 478 479 + @group_cli.command("list") 480 + @click.argument("organisation", type=ORGANISATION) 481 + def list_groups(organisation): 482 + """ 483 + List all users belonging to the specified organisation. 484 + """ 485 + label("The following users exists for {}:".format(organisation.name)) 486 + for group in organisation.groups.values(): 487 + sys.stdout.write(group.name + "\n") 488 + 489 + 490 + @org_cli.command("list") 491 def list_orgs(): 492 """ 493 List available organisations ··· 497 sys.stdout.write(org.name + "\n") 498 499 500 + @user_cli.command("getkey") 501 @click.argument("organisation", type=ORGANISATION) 502 @click.argument("user") 503 def get_uuid(organisation, user): ··· 513 sys.stdout.write(user.key + "\n") 514 515 516 + @user_cli.command("export") 517 @click.argument("organisation", type=ORGANISATION) 518 @click.argument("user") 519 def export_user(organisation, user): ··· 531 sys.stdout.write(userobj.export()) 532 533 534 + @org_cli.command("add") 535 @click.argument("name") 536 def add_org(name): 537 """ ··· 545 mark_imperative(name) 546 547 548 + @org_cli.command("remove") 549 @click.argument("name") 550 def del_org(name): 551 """ ··· 561 click.echo(msg.format(name), err=True) 562 563 564 + @user_cli.command("add") 565 @click.argument("organisation", type=ORGANISATION) 566 @click.argument("user") 567 def add_user(organisation, user): ··· 580 mark_imperative(organisation.name, "users", userobj.key) 581 582 583 + @user_cli.command("remove") 584 @click.argument("organisation", type=ORGANISATION) 585 @click.argument("user") 586 def del_user(organisation, user): ··· 596 click.echo(msg.format(user), err=True) 597 598 599 + @group_cli.command("add") 600 @click.argument("organisation", type=ORGANISATION) 601 @click.argument("group") 602 def add_group(organisation, group): ··· 611 mark_imperative(organisation.name, "groups", groupobj.name) 612 613 614 + @group_cli.command("remove") 615 @click.argument("organisation", type=ORGANISATION) 616 @click.argument("group") 617 def del_group(organisation, group):
+10 -10
nixos/tests/taskserver.nix
··· 44 ); 45 46 my $exportinfo = $server->succeed( 47 - "nixos-taskserver export-user $org $user" 48 ); 49 50 $exportinfo =~ s/'/'\\'''/g; ··· 74 75 sub readdImperativeUser { 76 $server->nest("(re-)add imperative user bar", sub { 77 - $server->execute("nixos-taskserver del-org imperativeOrg"); 78 $server->succeed( 79 - "nixos-taskserver add-org imperativeOrg", 80 - "nixos-taskserver add-user imperativeOrg bar" 81 ); 82 setupClientsFor "imperativeOrg", "bar"; 83 }); ··· 109 $server->waitForUnit("taskserver.service"); 110 111 $server->succeed( 112 - "nixos-taskserver list-users testOrganisation | grep -qxF alice", 113 - "nixos-taskserver list-users testOrganisation | grep -qxF foo", 114 - "nixos-taskserver list-users anotherOrganisation | grep -qxF bob" 115 ); 116 117 $server->waitForOpenPort(${portStr}); ··· 125 126 testSync $_ for ("alice", "bob", "foo"); 127 128 - $server->fail("nixos-taskserver add-user imperativeOrg bar"); 129 readdImperativeUser; 130 131 testSync "bar"; ··· 133 subtest "checking certificate revocation of user bar", sub { 134 $client1->succeed(checkClientCert "bar"); 135 136 - $server->succeed("nixos-taskserver del-user imperativeOrg bar"); 137 restartServer; 138 139 $client1->fail(checkClientCert "bar"); ··· 147 subtest "checking certificate revocation of org imperativeOrg", sub { 148 $client1->succeed(checkClientCert "bar"); 149 150 - $server->succeed("nixos-taskserver del-org imperativeOrg"); 151 restartServer; 152 153 $client1->fail(checkClientCert "bar");
··· 44 ); 45 46 my $exportinfo = $server->succeed( 47 + "nixos-taskserver user export $org $user" 48 ); 49 50 $exportinfo =~ s/'/'\\'''/g; ··· 74 75 sub readdImperativeUser { 76 $server->nest("(re-)add imperative user bar", sub { 77 + $server->execute("nixos-taskserver org remove imperativeOrg"); 78 $server->succeed( 79 + "nixos-taskserver org add imperativeOrg", 80 + "nixos-taskserver user add imperativeOrg bar" 81 ); 82 setupClientsFor "imperativeOrg", "bar"; 83 }); ··· 109 $server->waitForUnit("taskserver.service"); 110 111 $server->succeed( 112 + "nixos-taskserver user list testOrganisation | grep -qxF alice", 113 + "nixos-taskserver user list testOrganisation | grep -qxF foo", 114 + "nixos-taskserver user list anotherOrganisation | grep -qxF bob" 115 ); 116 117 $server->waitForOpenPort(${portStr}); ··· 125 126 testSync $_ for ("alice", "bob", "foo"); 127 128 + $server->fail("nixos-taskserver user add imperativeOrg bar"); 129 readdImperativeUser; 130 131 testSync "bar"; ··· 133 subtest "checking certificate revocation of user bar", sub { 134 $client1->succeed(checkClientCert "bar"); 135 136 + $server->succeed("nixos-taskserver user remove imperativeOrg bar"); 137 restartServer; 138 139 $client1->fail(checkClientCert "bar"); ··· 147 subtest "checking certificate revocation of org imperativeOrg", sub { 148 $client1->succeed(checkClientCert "bar"); 149 150 + $server->succeed("nixos-taskserver org remove imperativeOrg"); 151 restartServer; 152 153 $client1->fail(checkClientCert "bar");