pveum: implement bash completion hooks

This commit is contained in:
Dietmar Maurer 2015-10-01 17:22:09 +02:00
parent e69dbe105d
commit 3e5bfdf60f
4 changed files with 54 additions and 8 deletions

View File

@ -235,10 +235,13 @@ __PACKAGE__->register_method ({
description => "User name",
type => 'string',
maxLength => 64,
completion => \&PVE::AccessControl::complete_username,
},
realm => get_standard_option('realm', {
description => "You can optionally pass the realm using this parameter. Normally the realm is simply added to the username <username>\@<relam>.",
optional => 1}),
optional => 1,
completion => \&PVE::AccessControl::complete_realm,
}),
password => {
description => "The secret password. This can also be a valid ticket.",
type => 'string',
@ -325,7 +328,9 @@ __PACKAGE__->register_method ({
parameters => {
additionalProperties => 0,
properties => {
userid => get_standard_option('userid'),
userid => get_standard_option('userid', {
completion => \&PVE::AccessControl::complete_username,
}),
password => {
description => "The new password.",
type => 'string',

View File

@ -107,7 +107,10 @@ __PACKAGE__->register_method ({
parameters => {
additionalProperties => 0,
properties => {
groupid => { type => 'string', format => 'pve-groupid' },
groupid => {
type => 'string', format => 'pve-groupid',
completion => \&PVE::AccessControl::complete_group,
},
comment => { type => 'string', optional => 1 },
},
},
@ -195,7 +198,10 @@ __PACKAGE__->register_method ({
parameters => {
additionalProperties => 0,
properties => {
groupid => { type => 'string' , format => 'pve-groupid' },
groupid => {
type => 'string' , format => 'pve-groupid',
completion => \&PVE::AccessControl::complete_group,
},
}
},
returns => { type => 'null' },

View File

@ -119,7 +119,11 @@ __PACKAGE__->register_method ({
minLength => 5,
maxLength => 64
},
groups => { type => 'string', optional => 1, format => 'pve-groupid-list'},
groups => {
type => 'string', format => 'pve-groupid-list',
optional => 1,
completion => \&PVE::AccessControl::complete_group,
},
firstname => { type => 'string', optional => 1 },
lastname => { type => 'string', optional => 1 },
email => { type => 'string', optional => 1, format => 'email-opt' },
@ -238,8 +242,14 @@ __PACKAGE__->register_method ({
parameters => {
additionalProperties => 0,
properties => {
userid => get_standard_option('userid'),
groups => { type => 'string', optional => 1, format => 'pve-groupid-list' },
userid => get_standard_option('userid', {
completion => \&PVE::AccessControl::complete_username,
}),
groups => {
type => 'string', format => 'pve-groupid-list',
optional => 1,
completion => \&PVE::AccessControl::complete_group,
},
append => {
type => 'boolean',
optional => 1,
@ -325,7 +335,9 @@ __PACKAGE__->register_method ({
parameters => {
additionalProperties => 0,
properties => {
userid => get_standard_option('userid'),
userid => get_standard_option('userid', {
completion => \&PVE::AccessControl::complete_username,
}),
}
},
returns => { type => 'null' },

View File

@ -1294,4 +1294,27 @@ sub oath_verify_otp {
die "oath auth failed\n" if !$found;
}
# bash completion helpers
sub complete_username {
my $user_cfg = cfs_read_file('user.cfg');
return [ keys %{$user_cfg->{users}} ];
}
sub complete_group {
my $user_cfg = cfs_read_file('user.cfg');
return [ keys %{$user_cfg->{groups}} ];
}
sub complete_realm {
my $domain_cfg = cfs_read_file('domains.cfg');
return [ keys %{$domain_cfg->{ids}} ];
}
1;