]> git.proxmox.com Git - pve-access-control.git/blob - PVE/CLI/pveum.pm
pveum: add list commands
[pve-access-control.git] / PVE / CLI / pveum.pm
1 package PVE::CLI::pveum;
2
3 use strict;
4 use warnings;
5
6 use PVE::RPCEnvironment;
7 use PVE::API2::User;
8 use PVE::API2::Group;
9 use PVE::API2::Role;
10 use PVE::API2::ACL;
11 use PVE::API2::AccessControl;
12 use PVE::CLIFormatter;
13 use PVE::CLIHandler;
14 use PVE::PTY;
15 use PVE::RESTHandler;
16
17 use base qw(PVE::CLIHandler);
18
19 sub setup_environment {
20 PVE::RPCEnvironment->setup_default_cli_env();
21 }
22
23 sub param_mapping {
24 my ($name) = @_;
25
26 my $mapping = {
27 'change_password' => [
28 PVE::CLIHandler::get_standard_mapping('pve-password'),
29 ],
30 'create_ticket' => [
31 PVE::CLIHandler::get_standard_mapping('pve-password', {
32 func => sub {
33 # do not accept values given on cmdline
34 return PVE::PTY::read_password('Enter password: ');
35 },
36 }),
37 ]
38 };
39
40 return $mapping->{$name};
41 }
42
43 my $print_api_result = sub {
44 my ($data, $schema, $options) = @_;
45 PVE::CLIFormatter::print_api_result($data, $schema, undef, $options);
46 };
47
48 our $cmddef = {
49 user => {
50 add => [ 'PVE::API2::User', 'create_user', ['userid'] ],
51 modify => [ 'PVE::API2::User', 'update_user', ['userid'] ],
52 delete => [ 'PVE::API2::User', 'delete_user', ['userid'] ],
53 list => [ 'PVE::API2::User', 'index', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
54 },
55 group => {
56 add => [ 'PVE::API2::Group', 'create_group', ['groupid'] ],
57 modify => [ 'PVE::API2::Group', 'update_group', ['groupid'] ],
58 delete => [ 'PVE::API2::Group', 'delete_group', ['groupid'] ],
59 list => [ 'PVE::API2::Group', 'index', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
60 },
61 role => {
62 add => [ 'PVE::API2::Role', 'create_role', ['roleid'] ],
63 modify => [ 'PVE::API2::Role', 'update_role', ['roleid'] ],
64 delete => [ 'PVE::API2::Role', 'delete_role', ['roleid'] ],
65 list => [ 'PVE::API2::Role', 'index', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
66 },
67 acl => {
68 modify => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 0 }],
69 delete => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 1 }],
70 list => [ 'PVE::API2::ACL', 'read_acl', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
71 },
72 ticket => [ 'PVE::API2::AccessControl', 'create_ticket', ['username'], undef,
73 sub {
74 my ($res) = @_;
75 print "$res->{ticket}\n";
76 }],
77
78 passwd => [ 'PVE::API2::AccessControl', 'change_password', ['userid'] ],
79
80 useradd => { alias => 'user add' },
81 usermod => { alias => 'user modify' },
82 userdel => { alias => 'user delete' },
83
84 groupadd => { alias => 'group add' },
85 groupmod => { alias => 'group modify' },
86 groupdel => { alias => 'group delete' },
87
88 roleadd => { alias => 'role add' },
89 rolemod => { alias => 'role modify' },
90 roledel => { alias => 'role delete' },
91
92 aclmod => { alias => 'acl modify' },
93 acldel => { alias => 'acl delete' },
94 };
95
96 1;