Add function to retrieve a short list of attributes to make ipa-adddelegation

easier to use.
This commit is contained in:
Rob Crittenden
2008-01-04 16:39:41 -05:00
parent dd28d4e6f6
commit 1c4e4b3e14
6 changed files with 49 additions and 5 deletions

View File

@@ -45,6 +45,8 @@ def parse_options():
help="The source group name") help="The source group name")
parser.add_option("-t", "--target", dest="target", parser.add_option("-t", "--target", dest="target",
help="The target group name") help="The target group name")
parser.add_option("-l", "--list", dest="list", action="store_true",
help="List common attributes (this is not an exhaustive list)")
parser.add_option("--usage", action="store_true", parser.add_option("--usage", action="store_true",
help="Program usage") help="Program usage")
@@ -57,6 +59,14 @@ def main():
options, args = parse_options() options, args = parse_options()
if options.list:
client = ipaclient.IPAClient()
list = client.get_all_attrs()
for x in list:
print x
return 0
if len(args) != 2: if len(args) != 2:
print "args is %s" % len(args) print "args is %s" % len(args)
usage() usage()

View File

@@ -27,24 +27,28 @@ ipa\-adddelegation [\fIOPTION\fR]... \fIname\fR
.SH "DESCRIPTION" .SH "DESCRIPTION"
Adds a delegation named \fIname\fR. Adds a delegation named \fIname\fR.
A delegation is used to grant access to certain attributes from one group to another. A delegation is used to grant write access to certain attributes from one group to another.
For example, a secretary group may be granted access to modify the phone attribute of all users in a manager's group. For example, a secretary group may be granted write access to modify the phone attribute of all users in a manager's group.
.SH "OPTIONS" .SH "OPTIONS"
.TP .TP
\fB\-a\fR, \fB\-\-attributes\fR=\fIATTRIBUTES\fR \fB\-a\fR, \fB\-\-attributes\fR=\fIATTRIBUTES\fR
A comma\-separated list of the the \f[SM]attributes\fR that may be written by the source group. A comma\-separated list of the the \f[SM]attributes\fR that may be written by the source group.
.TP
\fB\-l\fR
Provide a list of common attribute names. This is not an exhaustive list.
.TP .TP
\fB\-s\fR, \fB\-\-source\fR=\fISOURCE\fR \fB\-s\fR, \fB\-\-source\fR=\fISOURCE\fR
The name of the group that is being granted write permission. The name of the group that is being granted write permission.
.TP .TP
\fB\-t\fR, \fB\-\-target\fR=\fITARGET\fR \fB\-t\fR, \fB\-\-target\fR=\fITARGET\fR
The name of the group that will be written to. The name of the group that will be written to.
.PP .PP
All arguments are mandatory. All arguments are mandatory.
.SH "EXAMPLES"
.TP
ipa\-adddelegation \-a telephonenumber,facsimiletelephonenumber,mobile \-s secretaries \-t everyone phones
Create a delegation named phones that will let anyone in the secretaries group edit the phone numbers of anyone in the group everyone.
.SH "EXIT STATUS" .SH "EXIT STATUS"
0 if the delegation was added successfully 0 if the delegation was added successfully

View File

@@ -321,6 +321,13 @@ class IPAClient:
return self.transport.attrs_to_labels(attrs) return self.transport.attrs_to_labels(attrs)
def get_all_attrs(self):
"""We have a list of hardcoded attributes -> readable labels. Return
that complete list if someone wants it.
"""
return self.transport.get_all_attrs()
def group_members(self, groupdn, attr_list): def group_members(self, groupdn, attr_list):
"""Do a memberOf search of groupdn and return the attributes in """Do a memberOf search of groupdn and return the attributes in
attr_list (an empty list returns everything).""" attr_list (an empty list returns everything)."""

View File

@@ -579,6 +579,21 @@ class RPCClient:
return ipautil.unwrap_binary_data(result) return ipautil.unwrap_binary_data(result)
def get_all_attrs(self, opts=None):
"""We have a list of hardcoded attributes -> readable labels. Return
that complete list if someone wants it.
"""
server = self.setup_server()
try:
result = server.get_all_attrs()
except xmlrpclib.Fault, fault:
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
except socket.error, (value, msg):
raise xmlrpclib.Fault(value, msg)
return ipautil.unwrap_binary_data(result)
def group_members(self, groupdn, attr_list=None): def group_members(self, groupdn, attr_list=None):
"""Do a memberOf search of groupdn and return the attributes in """Do a memberOf search of groupdn and return the attributes in
attr_list (an empty list returns everything).""" attr_list (an empty list returns everything)."""

View File

@@ -1625,6 +1625,13 @@ class IPAServer:
return label_list return label_list
def get_all_attrs(self, opts=None):
"""We have a list of hardcoded attributes -> readable labels. Return
that complete list if someone wants it.
"""
return attrs.attr_label_list
def group_members(self, groupdn, attr_list, opts=None): def group_members(self, groupdn, attr_list, opts=None):
"""Do a memberOf search of groupdn and return the attributes in """Do a memberOf search of groupdn and return the attributes in
attr_list (an empty list returns everything).""" attr_list (an empty list returns everything)."""

View File

@@ -358,6 +358,7 @@ def handler(req, profiling=False):
h.register_function(f.update_group) h.register_function(f.update_group)
h.register_function(f.delete_group) h.register_function(f.delete_group)
h.register_function(f.attrs_to_labels) h.register_function(f.attrs_to_labels)
h.register_function(f.get_all_attrs)
h.register_function(f.group_members) h.register_function(f.group_members)
h.register_function(f.get_ipa_config) h.register_function(f.get_ipa_config)
h.register_function(f.update_ipa_config) h.register_function(f.update_ipa_config)