summaryrefslogtreecommitdiffstats
path: root/ipa_server/plugins
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2008-10-14 17:46:36 -0400
committerRob Crittenden <rcritten@redhat.com>2008-10-14 21:28:06 -0400
commit1c3f81852cb8337e2305f968be5bd8165997d27e (patch)
treed46ece432b9912982ca909613857351dd28f8b13 /ipa_server/plugins
parentff88652a405c7fd9236a9b1d80dd8955a9ca056d (diff)
downloadfreeipa-1c3f81852cb8337e2305f968be5bd8165997d27e.tar.gz
freeipa-1c3f81852cb8337e2305f968be5bd8165997d27e.tar.xz
freeipa-1c3f81852cb8337e2305f968be5bd8165997d27e.zip
Move some functionality from user-add to the backend ldap create function
Diffstat (limited to 'ipa_server/plugins')
-rw-r--r--ipa_server/plugins/b_ldap.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/ipa_server/plugins/b_ldap.py b/ipa_server/plugins/b_ldap.py
index 69c2aeb58..600f1c86f 100644
--- a/ipa_server/plugins/b_ldap.py
+++ b/ipa_server/plugins/b_ldap.py
@@ -25,7 +25,11 @@ This wraps the python-ldap bindings.
import ldap as _ldap
from ipalib import api
+from ipalib import errors
from ipalib.crud import CrudBackend
+from ipa_server import servercore
+from ipa_server import ipaldap
+import ldap
class ldap(CrudBackend):
@@ -46,6 +50,18 @@ class ldap(CrudBackend):
)
def create(self, **kw):
- return kw
+ if servercore.entry_exists(kw['dn']):
+ raise errors.DuplicateEntry("entry already exists")
+
+ entry = ipaldap.Entry(kw['dn'])
+
+ # dn isn't allowed to be in the entry itself
+ del kw['dn']
+
+ # Fill in our new entry
+ for k in kw:
+ entry.setValues(k, kw[k])
+
+ return servercore.add_entry(entry)
api.register(ldap)