diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-10-01 15:56:04 -0600 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-10-01 15:56:04 -0600 |
commit | e963be1dda58494a80198a8d8a1cec5f2c898ca2 (patch) | |
tree | 3d43ac274edde2ba40694dabbfd936fa9f37375f /ipalib/plugins/f_user.py | |
parent | cc93e45e1309d90e1a47c9bc73c785ffe630edfb (diff) | |
download | freeipa.git-e963be1dda58494a80198a8d8a1cec5f2c898ca2.tar.gz freeipa.git-e963be1dda58494a80198a8d8a1cec5f2c898ca2.tar.xz freeipa.git-e963be1dda58494a80198a8d8a1cec5f2c898ca2.zip |
Renamed plugins/example.py to plugins/f_user.py
Diffstat (limited to 'ipalib/plugins/f_user.py')
-rw-r--r-- | ipalib/plugins/f_user.py | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/ipalib/plugins/f_user.py b/ipalib/plugins/f_user.py new file mode 100644 index 00000000..e4d7dc10 --- /dev/null +++ b/ipalib/plugins/f_user.py @@ -0,0 +1,178 @@ +# Authors: +# Jason Gerard DeRose <jderose@redhat.com> +# +# Copyright (C) 2008 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 2 only +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +""" +Some example plugins. +""" + +from ipalib import frontend +from ipalib import crud +from ipalib.frontend import Param +from ipalib import api + +class user(frontend.Object): + 'User object' + takes_params = ( + 'givenname', + 'sn', + Param('uid', + primary_key=True, + default_from=lambda givenname, sn: givenname[0] + sn, + normalize=lambda value: value.lower(), + ), + Param('krbprincipalname', + default_from=lambda uid: '%s@EXAMPLE.COM' % uid, + ), + Param('homedirectory', + default_from=lambda uid: '/home/%s' % uid, + ) + ) +api.register(user) + + +# Hypothetical functional commands (not associated with any object): +class krbtest(frontend.Command): + 'Test your Kerberos ticket.' +api.register(krbtest) + +class discover(frontend.Command): + 'Discover IPA servers on network.' +api.register(discover) + +# Command to get the idea how plugins will interact with api.env +class envtest(frontend.Command): + 'Show current environment.' + def run(*args, **kw): + print "" + print "Environment variables:" + for var in api.env: + val = api.env[var] + if var is 'servers': + print "" + print " Servers:" + for item in api.env.servers: + print " %s" % item + print "" + else: + print " %s: %s" % (var, val) +api.register(envtest) + +# Register some methods for the 'user' object: +class user_add(crud.Add): + 'Add a new user.' + def execute(self, *args, **kw): + return 1 +api.register(user_add) + +class user_del(crud.Del): + 'Delete an existing user.' +api.register(user_del) + +class user_mod(crud.Mod): + 'Edit an existing user.' +api.register(user_mod) + +class user_find(crud.Find): + 'Search the users.' + def execute(self, *args, **kw): + uid=args[0] + result = servercore.get_sub_entry(servercore.basedn, "uid=%s" % uid, ["*"]) + return result +api.register(user_find) + +class user_show(crud.Get): + 'Examine an existing user.' +api.register(user_show) + + +# Register some properties for the 'user' object: +#class user_givenname(frontend.Property): +# 'User first name' +# required = True +#api.register(user_givenname) + +#class user_sn(frontend.Property): +# 'User last name' +# required = True +#api.register(user_sn) + +#class user_login(frontend.Property): +# 'User login' +# required = True +# default_from = frontend.DefaultFrom( +# lambda first, last: (first[0] + last).lower(), +# 'givenname', 'sn' +# ) +#api.register(user_login) + +#class user_initials(frontend.Property): +# 'User initials' +# required = True +# default_from = frontend.DefaultFrom( +# lambda first, last: first[0] + last[0], +# 'givenname', 'sn' +# ) +#api.register(user_initials) + + +# Register some methods for the 'group' object: +class group_add(frontend.Method): + 'Add a new group.' +api.register(group_add) + +class group_del(frontend.Method): + 'Delete an existing group.' +api.register(group_del) + +class group_mod(frontend.Method): + 'Edit an existing group.' +api.register(group_mod) + +class group_find(frontend.Method): + 'Search the groups.' +api.register(group_find) + + +# Register some methods for the 'service' object +class service_add(frontend.Method): + 'Add a new service.' +api.register(service_add) + +class service_del(frontend.Method): + 'Delete an existing service.' +api.register(service_del) + +class service_mod(frontend.Method): + 'Edit an existing service.' +api.register(service_mod) + +class service_find(frontend.Method): + 'Search the services.' +api.register(service_find) + + +# And to emphasis that the registration order doesn't matter, +# we'll register the objects last: +class group(frontend.Object): + 'Group object' +api.register(group) + +class service(frontend.Object): + 'Service object' +api.register(service) |