summaryrefslogtreecommitdiffstats
path: root/ipalib/plugins/f_user.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-10-01 15:56:04 -0600
committerJason Gerard DeRose <jderose@redhat.com>2008-10-01 15:56:04 -0600
commite963be1dda58494a80198a8d8a1cec5f2c898ca2 (patch)
tree3d43ac274edde2ba40694dabbfd936fa9f37375f /ipalib/plugins/f_user.py
parentcc93e45e1309d90e1a47c9bc73c785ffe630edfb (diff)
downloadfreeipa.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.py178
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)