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 17:46:36 -0400
commit30664cde88b70f478d75a768426db5f655c5f867 (patch)
tree16f277bcd99f8e6ad2810c2386a0126b9f569c20 /ipa_server/plugins
parent9788800aa41146551baee6d36314a20203fd9d20 (diff)
downloadfreeipa-30664cde88b70f478d75a768426db5f655c5f867.tar.gz
freeipa-30664cde88b70f478d75a768426db5f655c5f867.tar.xz
freeipa-30664cde88b70f478d75a768426db5f655c5f867.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)