The branch, master has been updated
       via  55aeb68... s4-python: Move dsdb_convert_schema_to_openldap to dsdb.
       via  2a67eda... s4-python: Move set_opaque_integer -> dsdb.
       via  ccd954f... s4-python: Avoid importing glue directly.
       via  aed295b... s4-python: Remove convenience macro PyErr_SetStringError.
       via  8afd52a... s4-python: Move samdb_server_site_name to dsdb module.
       via  31a517e... s4-python: Move dsdb constants to a separate python 
module.
      from  e5b33be... s4-python: Remove remaining constants.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 55aeb682ba157dc02d838381d1b5d9db166beaeb
Author: Jelmer Vernooij <jel...@samba.org>
Date:   Sun Apr 4 00:42:52 2010 +0200

    s4-python: Move dsdb_convert_schema_to_openldap to dsdb.

commit 2a67eda98f88f132443bc2b81ca2686bcc1775a6
Author: Jelmer Vernooij <jel...@samba.org>
Date:   Sun Apr 4 00:40:01 2010 +0200

    s4-python: Move set_opaque_integer -> dsdb.

commit ccd954f2a7534cc27afd17b23e2fc838e10cf6b3
Author: Jelmer Vernooij <jel...@samba.org>
Date:   Sun Apr 4 00:30:34 2010 +0200

    s4-python: Avoid importing glue directly.

commit aed295b97e649ef7db4300cc400bc2bd9b1a03b0
Author: Jelmer Vernooij <jel...@samba.org>
Date:   Sun Apr 4 00:22:29 2010 +0200

    s4-python: Remove convenience macro PyErr_SetStringError.
    
    This macro assumed that all errors were runtime errors.

commit 8afd52a6418125100a5e8a6a4312c0460e57ac88
Author: Jelmer Vernooij <jel...@samba.org>
Date:   Sun Apr 4 00:21:09 2010 +0200

    s4-python: Move samdb_server_site_name to dsdb module.

commit 31a517e1721fc0080473b376cd59c090cfab6456
Author: Jelmer Vernooij <jel...@samba.org>
Date:   Sun Apr 4 00:14:23 2010 +0200

    s4-python: Move dsdb constants to a separate python module.

-----------------------------------------------------------------------

Summary of changes:
 source4/auth/credentials/pycredentials.c           |    2 +-
 source4/dsdb/config.mk                             |    6 +
 source4/dsdb/pydsdb.c                              |  212 ++++++++++++++++++++
 source4/lib/ldb/tests/python/ldap.py               |    7 +-
 source4/lib/ldb/tests/python/ldap_schema.py        |   37 +---
 source4/lib/ldb/tests/python/sec_descriptor.py     |    6 +-
 source4/lib/ldb/tests/python/urgent_replication.py |    6 +-
 source4/libcli/util/pyerrors.h                     |    3 -
 source4/scripting/python/pyglue.c                  |  162 +---------------
 source4/scripting/python/samba/__init__.py         |   55 +----
 .../scripting/python/samba/netcmd/domainlevel.py   |    2 +-
 source4/scripting/python/samba/provision.py        |   21 +-
 source4/scripting/python/samba/samdb.py            |    5 +-
 source4/scripting/python/samba/upgradehelpers.py   |    3 +-
 source4/setup/provision                            |    7 +-
 15 files changed, 266 insertions(+), 268 deletions(-)
 create mode 100644 source4/dsdb/pydsdb.c


Changeset truncated at 500 lines:

diff --git a/source4/auth/credentials/pycredentials.c 
b/source4/auth/credentials/pycredentials.c
index f5e8029..cd578a5 100644
--- a/source4/auth/credentials/pycredentials.c
+++ b/source4/auth/credentials/pycredentials.c
@@ -272,7 +272,7 @@ static PyObject *py_creds_get_named_ccache(py_talloc_Object 
*self, PyObject *arg
                return PyCredentialCacheContainer_from_ccache_container(ccc);
        }
 
-       PyErr_SetStringError(error_string);
+       PyErr_SetString(PyExc_RuntimeError, error_string);
 
        talloc_free(event_ctx);
        return NULL;
diff --git a/source4/dsdb/config.mk b/source4/dsdb/config.mk
index 356f732..69b7227 100644
--- a/source4/dsdb/config.mk
+++ b/source4/dsdb/config.mk
@@ -106,3 +106,9 @@ PRIVATE_DEPENDENCIES = \
 
 DNS_UPDATE_SRV_OBJ_FILES = $(addprefix $(dsdbsrcdir)/dns/, \
                dns_update.o)
+
+[PYTHON::python_dsdb]
+LIBRARY_REALNAME = samba/dsdb.$(SHLIBEXT)
+PRIVATE_DEPENDENCIES = SAMDB
+
+python_dsdb_OBJ_FILES = $(dsdbsrcdir)/pydsdb.o
diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
new file mode 100644
index 0000000..6e3e50a
--- /dev/null
+++ b/source4/dsdb/pydsdb.c
@@ -0,0 +1,212 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Copyright (C) Jelmer Vernooij <jel...@samba.org> 2007-2010
+   Copyright (C) Matthias Dieter Wallnöfer          2009
+   
+   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; either version 3 of the License, or
+   (at your option) any later version.
+   
+   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, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <Python.h>
+#include "includes.h"
+#include "dsdb/samdb/samdb.h"
+#include "lib/ldb/pyldb.h"
+
+/* FIXME: These should be in a header file somewhere, once we finish moving
+ * away from SWIG .. */
+#define PyErr_LDB_OR_RAISE(py_ldb, ldb) \
+/*     if (!PyLdb_Check(py_ldb)) { \
+               PyErr_SetString(py_ldb_get_exception(), "Ldb connection object 
required"); \
+               return NULL; \
+       } */\
+       ldb = PyLdb_AsLdbContext(py_ldb);
+
+static PyObject *py_samdb_server_site_name(PyObject *self, PyObject *args)
+{
+       PyObject *py_ldb, *result;
+       struct ldb_context *ldb;
+       const char *site;
+       TALLOC_CTX *mem_ctx;
+
+       if (!PyArg_ParseTuple(args, "O", &py_ldb))
+               return NULL;
+
+       PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+       mem_ctx = talloc_new(NULL);
+
+       site = samdb_server_site_name(ldb, mem_ctx);
+       if (site == NULL) {
+               PyErr_SetString(PyExc_RuntimeError, "Failed to find server 
site");
+               talloc_free(mem_ctx);
+               return NULL;
+       }
+
+       result = PyString_FromString(site);
+       talloc_free(mem_ctx);
+       return result;
+}
+
+/* XXX: This function really should be in pyldb.c */
+static PyObject *py_dsdb_set_opaque_integer(PyObject *self, PyObject *args)
+{
+       PyObject *py_ldb;
+       int value;
+       int *old_val, *new_val;
+       char *py_opaque_name, *opaque_name_talloc;
+       struct ldb_context *ldb;
+       TALLOC_CTX *tmp_ctx;
+
+       if (!PyArg_ParseTuple(args, "Osi", &py_ldb, &py_opaque_name, &value))
+               return NULL;
+
+       PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+       /* see if we have a cached copy */
+       old_val = (int *)ldb_get_opaque(ldb, py_opaque_name);
+       /* XXX: We shouldn't just blindly assume that the value that is 
+        * already present has the size of an int and is not shared 
+        * with other code that may rely on it not changing. 
+        * JRV 20100403 */
+
+       if (old_val) {
+               *old_val = value;
+               Py_RETURN_NONE;
+       } 
+
+       tmp_ctx = talloc_new(ldb);
+       if (tmp_ctx == NULL) {
+               PyErr_NoMemory();
+               return NULL;
+       }
+       
+       new_val = talloc(tmp_ctx, int);
+       if (new_val == NULL) {
+               talloc_free(tmp_ctx);
+               PyErr_NoMemory();
+               return NULL;
+       }
+       
+       opaque_name_talloc = talloc_strdup(tmp_ctx, py_opaque_name);
+       if (opaque_name_talloc == NULL) {
+               talloc_free(tmp_ctx);
+               PyErr_NoMemory();
+               return NULL;
+       }
+       
+       *new_val = value;
+
+       /* cache the domain_sid in the ldb */
+       if (ldb_set_opaque(ldb, opaque_name_talloc, new_val) != LDB_SUCCESS) {
+               talloc_free(tmp_ctx);
+               PyErr_SetString(PyExc_RuntimeError,
+                                       "Failed to set opaque integer into the 
ldb");
+               return NULL;
+       }
+
+       talloc_steal(ldb, new_val);
+       talloc_steal(ldb, opaque_name_talloc);
+       talloc_free(tmp_ctx);
+
+       Py_RETURN_NONE;
+}
+
+static PyObject *py_dsdb_convert_schema_to_openldap(PyObject *self,
+                                                                               
                        PyObject *args)
+{
+       char *target_str, *mapping;
+       PyObject *py_ldb;
+       struct ldb_context *ldb;
+       PyObject *ret;
+       char *retstr;
+
+       if (!PyArg_ParseTuple(args, "Oss", &py_ldb, &target_str, &mapping))
+               return NULL;
+
+       PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+       retstr = dsdb_convert_schema_to_openldap(ldb, target_str, mapping);
+       if (retstr == NULL) {
+               PyErr_SetString(PyExc_RuntimeError,
+                                               
"dsdb_convert_schema_to_openldap failed");
+               return NULL;
+       } 
+
+       ret = PyString_FromString(retstr);
+       talloc_free(retstr);
+       return ret;
+}
+
+static PyMethodDef py_dsdb_methods[] = {
+       { "samdb_server_site_name", (PyCFunction)py_samdb_server_site_name,
+               METH_VARARGS, "Get the server site name as a string"},
+       { "dsdb_set_opaque_integer", (PyCFunction)py_dsdb_set_opaque_integer,
+               METH_VARARGS, NULL },
+       { "dsdb_convert_schema_to_openldap",
+               (PyCFunction)py_dsdb_convert_schema_to_openldap, METH_VARARGS, 
+               "dsdb_convert_schema_to_openldap(ldb, target_str, mapping) -> 
str\n"
+               "Create an OpenLDAP schema from a schema." },
+       { NULL }
+};
+
+void initdsdb(void)
+{
+       PyObject *m;
+
+       m = Py_InitModule3("dsdb", py_dsdb_methods, 
+                          "Python bindings for the directory service 
databases.");
+       if (m == NULL)
+               return;
+
+       /* "userAccountControl" flags */
+       PyModule_AddObject(m, "UF_NORMAL_ACCOUNT", 
PyInt_FromLong(UF_NORMAL_ACCOUNT));
+       PyModule_AddObject(m, "UF_TEMP_DUPLICATE_ACCOUNT", 
PyInt_FromLong(UF_TEMP_DUPLICATE_ACCOUNT));
+       PyModule_AddObject(m, "UF_SERVER_TRUST_ACCOUNT", 
PyInt_FromLong(UF_SERVER_TRUST_ACCOUNT));
+       PyModule_AddObject(m, "UF_WORKSTATION_TRUST_ACCOUNT", 
PyInt_FromLong(UF_WORKSTATION_TRUST_ACCOUNT));
+       PyModule_AddObject(m, "UF_INTERDOMAIN_TRUST_ACCOUNT", 
PyInt_FromLong(UF_INTERDOMAIN_TRUST_ACCOUNT));
+       PyModule_AddObject(m, "UF_PASSWD_NOTREQD", 
PyInt_FromLong(UF_PASSWD_NOTREQD));
+       PyModule_AddObject(m, "UF_ACCOUNTDISABLE", 
PyInt_FromLong(UF_ACCOUNTDISABLE));
+
+       /* "groupType" flags */
+       PyModule_AddObject(m, "GTYPE_SECURITY_BUILTIN_LOCAL_GROUP", 
PyInt_FromLong(GTYPE_SECURITY_BUILTIN_LOCAL_GROUP));
+       PyModule_AddObject(m, "GTYPE_SECURITY_GLOBAL_GROUP", 
PyInt_FromLong(GTYPE_SECURITY_GLOBAL_GROUP));
+       PyModule_AddObject(m, "GTYPE_SECURITY_DOMAIN_LOCAL_GROUP", 
PyInt_FromLong(GTYPE_SECURITY_DOMAIN_LOCAL_GROUP));
+       PyModule_AddObject(m, "GTYPE_SECURITY_UNIVERSAL_GROUP", 
PyInt_FromLong(GTYPE_SECURITY_UNIVERSAL_GROUP));
+       PyModule_AddObject(m, "GTYPE_DISTRIBUTION_GLOBAL_GROUP", 
PyInt_FromLong(GTYPE_DISTRIBUTION_GLOBAL_GROUP));
+       PyModule_AddObject(m, "GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP", 
PyInt_FromLong(GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP));
+       PyModule_AddObject(m, "GTYPE_DISTRIBUTION_UNIVERSAL_GROUP", 
PyInt_FromLong(GTYPE_DISTRIBUTION_UNIVERSAL_GROUP));
+
+       /* "sAMAccountType" flags */
+       PyModule_AddObject(m, "ATYPE_NORMAL_ACCOUNT", 
PyInt_FromLong(ATYPE_NORMAL_ACCOUNT));
+       PyModule_AddObject(m, "ATYPE_WORKSTATION_TRUST", 
PyInt_FromLong(ATYPE_WORKSTATION_TRUST));
+       PyModule_AddObject(m, "ATYPE_INTERDOMAIN_TRUST", 
PyInt_FromLong(ATYPE_INTERDOMAIN_TRUST));
+       PyModule_AddObject(m, "ATYPE_SECURITY_GLOBAL_GROUP", 
PyInt_FromLong(ATYPE_SECURITY_GLOBAL_GROUP));
+       PyModule_AddObject(m, "ATYPE_SECURITY_LOCAL_GROUP", 
PyInt_FromLong(ATYPE_SECURITY_LOCAL_GROUP));
+       PyModule_AddObject(m, "ATYPE_SECURITY_UNIVERSAL_GROUP", 
PyInt_FromLong(ATYPE_SECURITY_UNIVERSAL_GROUP));
+       PyModule_AddObject(m, "ATYPE_DISTRIBUTION_GLOBAL_GROUP", 
PyInt_FromLong(ATYPE_DISTRIBUTION_GLOBAL_GROUP));
+       PyModule_AddObject(m, "ATYPE_DISTRIBUTION_LOCAL_GROUP", 
PyInt_FromLong(ATYPE_DISTRIBUTION_LOCAL_GROUP));
+       PyModule_AddObject(m, "ATYPE_DISTRIBUTION_UNIVERSAL_GROUP", 
PyInt_FromLong(ATYPE_DISTRIBUTION_UNIVERSAL_GROUP));
+
+       /* "domainFunctionality", "forestFunctionality" flags in the rootDSE */
+       PyModule_AddObject(m, "DS_DOMAIN_FUNCTION_2000", 
PyInt_FromLong(DS_DOMAIN_FUNCTION_2000));
+       PyModule_AddObject(m, "DS_DOMAIN_FUNCTION_2003_MIXED", 
PyInt_FromLong(DS_DOMAIN_FUNCTION_2003_MIXED));
+       PyModule_AddObject(m, "DS_DOMAIN_FUNCTION_2003", 
PyInt_FromLong(DS_DOMAIN_FUNCTION_2003));
+       PyModule_AddObject(m, "DS_DOMAIN_FUNCTION_2008", 
PyInt_FromLong(DS_DOMAIN_FUNCTION_2008));
+       PyModule_AddObject(m, "DS_DOMAIN_FUNCTION_2008_R2", 
PyInt_FromLong(DS_DOMAIN_FUNCTION_2008_R2));
+
+       /* "domainControllerFunctionality" flags in the rootDSE */
+       PyModule_AddObject(m, "DS_DC_FUNCTION_2000", 
PyInt_FromLong(DS_DC_FUNCTION_2000));
+       PyModule_AddObject(m, "DS_DC_FUNCTION_2003", 
PyInt_FromLong(DS_DC_FUNCTION_2003));
+       PyModule_AddObject(m, "DS_DC_FUNCTION_2008", 
PyInt_FromLong(DS_DC_FUNCTION_2008));
+       PyModule_AddObject(m, "DS_DC_FUNCTION_2008_R2", 
PyInt_FromLong(DS_DC_FUNCTION_2008_R2));
+}
diff --git a/source4/lib/ldb/tests/python/ldap.py 
b/source4/lib/ldb/tests/python/ldap.py
index 4f35ead..aa1febd 100755
--- a/source4/lib/ldb/tests/python/ldap.py
+++ b/source4/lib/ldb/tests/python/ldap.py
@@ -24,10 +24,9 @@ from ldb import ERR_UNDEFINED_ATTRIBUTE_TYPE
 from ldb import Message, MessageElement, Dn
 from ldb import FLAG_MOD_ADD, FLAG_MOD_REPLACE, FLAG_MOD_DELETE
 from samba import Ldb
-from samba import UF_NORMAL_ACCOUNT
-from samba import UF_WORKSTATION_TRUST_ACCOUNT
-from samba import UF_PASSWD_NOTREQD, UF_ACCOUNTDISABLE
-from samba import ATYPE_NORMAL_ACCOUNT, ATYPE_WORKSTATION_TRUST
+from samba.dsdb import (UF_NORMAL_ACCOUNT, UF_WORKSTATION_TRUST_ACCOUNT, 
+    UF_PASSWD_NOTREQD, UF_ACCOUNTDISABLE, ATYPE_NORMAL_ACCOUNT,
+    ATYPE_WORKSTATION_TRUST)
 
 from subunit.run import SubunitTestRunner
 import unittest
diff --git a/source4/lib/ldb/tests/python/ldap_schema.py 
b/source4/lib/ldb/tests/python/ldap_schema.py
index 4ed1d1c..932ef46 100755
--- a/source4/lib/ldb/tests/python/ldap_schema.py
+++ b/source4/lib/ldb/tests/python/ldap_schema.py
@@ -2,12 +2,10 @@
 # -*- coding: utf-8 -*-
 # This is a port of the original in testprogs/ejs/ldap.js
 
-import getopt
 import optparse
 import sys
 import time
 import random
-import base64
 import os
 
 sys.path.append("bin/python")
@@ -15,41 +13,18 @@ sys.path.append("bin/python")
 import samba.getopt as options
 
 from samba.auth import system_session
-from ldb import SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE, LdbError
-from ldb import ERR_NO_SUCH_OBJECT, ERR_ATTRIBUTE_OR_VALUE_EXISTS
-from ldb import ERR_ENTRY_ALREADY_EXISTS, ERR_UNWILLING_TO_PERFORM
-from ldb import ERR_NOT_ALLOWED_ON_NON_LEAF, ERR_OTHER, ERR_INVALID_DN_SYNTAX
-from ldb import ERR_NO_SUCH_ATTRIBUTE, ERR_INSUFFICIENT_ACCESS_RIGHTS
-from ldb import ERR_OBJECT_CLASS_VIOLATION, ERR_NOT_ALLOWED_ON_RDN
-from ldb import ERR_NAMING_VIOLATION, ERR_CONSTRAINT_VIOLATION
-from ldb import ERR_UNDEFINED_ATTRIBUTE_TYPE
+from ldb import SCOPE_ONELEVEL, SCOPE_BASE, LdbError
+from ldb import ERR_NO_SUCH_OBJECT
+from ldb import ERR_UNWILLING_TO_PERFORM
+from ldb import ERR_CONSTRAINT_VIOLATION
 from ldb import Message, MessageElement, Dn
-from ldb import FLAG_MOD_ADD, FLAG_MOD_REPLACE, FLAG_MOD_DELETE
+from ldb import FLAG_MOD_REPLACE
 from samba import Ldb
-from samba import UF_NORMAL_ACCOUNT, UF_TEMP_DUPLICATE_ACCOUNT
-from samba import UF_SERVER_TRUST_ACCOUNT, UF_WORKSTATION_TRUST_ACCOUNT
-from samba import UF_INTERDOMAIN_TRUST_ACCOUNT
-from samba import UF_PASSWD_NOTREQD, UF_ACCOUNTDISABLE
-from samba import GTYPE_SECURITY_BUILTIN_LOCAL_GROUP
-from samba import GTYPE_SECURITY_GLOBAL_GROUP, 
GTYPE_SECURITY_DOMAIN_LOCAL_GROUP
-from samba import GTYPE_SECURITY_UNIVERSAL_GROUP
-from samba import GTYPE_DISTRIBUTION_GLOBAL_GROUP
-from samba import GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP
-from samba import GTYPE_DISTRIBUTION_UNIVERSAL_GROUP
-from samba import ATYPE_NORMAL_ACCOUNT, ATYPE_WORKSTATION_TRUST
-from samba import ATYPE_SECURITY_GLOBAL_GROUP, ATYPE_SECURITY_LOCAL_GROUP
-from samba import ATYPE_SECURITY_UNIVERSAL_GROUP
-from samba import ATYPE_DISTRIBUTION_GLOBAL_GROUP
-from samba import ATYPE_DISTRIBUTION_LOCAL_GROUP
-from samba import ATYPE_DISTRIBUTION_UNIVERSAL_GROUP
-from samba import DS_DC_FUNCTION_2003
+from samba.dsdb import DS_DC_FUNCTION_2003
 
 from subunit.run import SubunitTestRunner
 import unittest
 
-from samba.ndr import ndr_pack, ndr_unpack
-from samba.dcerpc import security
-
 parser = optparse.OptionParser("ldap [options] <host>")
 sambaopts = options.SambaOptions(parser)
 parser.add_option_group(sambaopts)
diff --git a/source4/lib/ldb/tests/python/sec_descriptor.py 
b/source4/lib/ldb/tests/python/sec_descriptor.py
index 8b2a879..30f82e6 100755
--- a/source4/lib/ldb/tests/python/sec_descriptor.py
+++ b/source4/lib/ldb/tests/python/sec_descriptor.py
@@ -13,15 +13,15 @@ sys.path.append("bin/python")
 import samba.getopt as options
 
 # Some error messages that are being tested
-from ldb import SCOPE_SUBTREE, SCOPE_BASE, LdbError
-from ldb import ERR_NO_SUCH_OBJECT
+from ldb import SCOPE_SUBTREE, SCOPE_BASE, LdbError, ERR_NO_SUCH_OBJECT
 
 # For running the test unit
 from samba.ndr import ndr_pack, ndr_unpack
 from samba.dcerpc import security
 
+from samba import Ldb
 from samba.auth import system_session
-from samba import Ldb, DS_DOMAIN_FUNCTION_2008
+from samba.dsdb import DS_DOMAIN_FUNCTION_2008
 from samba.dcerpc.security import (
     SECINFO_OWNER, SECINFO_GROUP, SECINFO_DACL, SECINFO_SACL)
 from subunit.run import SubunitTestRunner
diff --git a/source4/lib/ldb/tests/python/urgent_replication.py 
b/source4/lib/ldb/tests/python/urgent_replication.py
index 28b3a5f..86d6d65 100755
--- a/source4/lib/ldb/tests/python/urgent_replication.py
+++ b/source4/lib/ldb/tests/python/urgent_replication.py
@@ -13,10 +13,8 @@ sys.path.append("../lib/testtools")
 import samba.getopt as options
 
 from samba.auth import system_session
-from ldb import SCOPE_BASE, LdbError
-from ldb import ERR_NO_SUCH_OBJECT
-from ldb import Message, MessageElement, Dn
-from ldb import FLAG_MOD_REPLACE
+from ldb import (SCOPE_BASE, LdbError, ERR_NO_SUCH_OBJECT, Message,
+    MessageElement, Dn, FLAG_MOD_REPLACE)
 from samba import Ldb
 from samba import glue
 
diff --git a/source4/libcli/util/pyerrors.h b/source4/libcli/util/pyerrors.h
index 3fd2a7c..4c526c6 100644
--- a/source4/libcli/util/pyerrors.h
+++ b/source4/libcli/util/pyerrors.h
@@ -26,9 +26,6 @@
 
 #define PyErr_FromString(str) Py_BuildValue("(s)", discard_const_p(char, str))
 
-#define PyErr_SetStringError(str) \
-        PyErr_SetObject(PyExc_RuntimeError, PyErr_FromString(str))
-
 #define PyErr_SetWERROR(err) \
        PyErr_SetObject(PyExc_RuntimeError, PyErr_FromWERROR(err))
 
diff --git a/source4/scripting/python/pyglue.c 
b/source4/scripting/python/pyglue.c
index 37d75cd..b75d7d3 100644
--- a/source4/scripting/python/pyglue.c
+++ b/source4/scripting/python/pyglue.c
@@ -277,63 +277,6 @@ static PyObject *py_dsdb_set_ntds_invocation_id(PyObject 
*self, PyObject *args)
        Py_RETURN_NONE;
 }
 
-static PyObject *py_dsdb_set_opaque_integer(PyObject *self, PyObject *args)
-{
-       PyObject *py_ldb;
-       int value;
-       int *old_val, *new_val;
-       char *py_opaque_name, *opaque_name_talloc;
-       struct ldb_context *ldb;
-       TALLOC_CTX *tmp_ctx;
-
-       if (!PyArg_ParseTuple(args, "Osi", &py_ldb, &py_opaque_name, &value))
-               return NULL;
-
-       PyErr_LDB_OR_RAISE(py_ldb, ldb);
-
-       /* see if we have a cached copy */
-       old_val = (int *)ldb_get_opaque(ldb, 
-                                       py_opaque_name);
-
-       if (old_val) {
-               *old_val = value;
-               Py_RETURN_NONE;
-       } 
-
-       tmp_ctx = talloc_new(ldb);
-       if (tmp_ctx == NULL) {
-               goto failed;
-       }
-       
-       new_val = talloc(tmp_ctx, int);
-       if (!new_val) {
-               goto failed;
-       }
-       
-       opaque_name_talloc = talloc_strdup(tmp_ctx, py_opaque_name);
-       if (!opaque_name_talloc) {
-               goto failed;
-       }
-       
-       *new_val = value;
-
-       /* cache the domain_sid in the ldb */
-       if (ldb_set_opaque(ldb, opaque_name_talloc, new_val) != LDB_SUCCESS) {
-               goto failed;
-       }
-
-       talloc_steal(ldb, new_val);
-       talloc_steal(ldb, opaque_name_talloc);
-       talloc_free(tmp_ctx);
-
-       Py_RETURN_NONE;
-
-failed:
-       talloc_free(tmp_ctx);
-       PyErr_SetString(PyExc_RuntimeError, "Failed to set opaque integer into 
the ldb!\n");
-       return NULL;
-}
-
 static PyObject *py_dsdb_set_global_schema(PyObject *self, PyObject *args)
 {
        PyObject *py_ldb;
@@ -368,29 +311,6 @@ static PyObject *py_dsdb_set_schema_from_ldif(PyObject 
*self, PyObject *args)
        Py_RETURN_NONE;
 }
 
-static PyObject *py_dsdb_convert_schema_to_openldap(PyObject *self, PyObject 
*args)
-{
-       char *target_str, *mapping;
-       PyObject *py_ldb;
-       struct ldb_context *ldb;
-       PyObject *ret;
-       char *retstr;
-
-       if (!PyArg_ParseTuple(args, "Oss", &py_ldb, &target_str, &mapping))
-               return NULL;
-
-       PyErr_LDB_OR_RAISE(py_ldb, ldb);
-
-       retstr = dsdb_convert_schema_to_openldap(ldb, target_str, mapping);
-       if (!retstr) {
-               PyErr_SetString(PyExc_RuntimeError, 
"dsdb_convert_schema_to_openldap failed");
-               return NULL;
-       } 
-       ret = PyString_FromString(retstr);
-       talloc_free(retstr);
-       return ret;
-}
-
 static PyObject *py_dsdb_write_prefixes_from_schema_to_ldb(PyObject *self, 
PyObject *args)
 {
        PyObject *py_ldb;
@@ -486,11 +406,8 @@ static PyObject *py_dsdb_load_partition_usn(PyObject 
*self, PyObject *args)
 
 
        return result;
-
 }
 
-
-
 static PyObject *py_samdb_ntds_invocation_id(PyObject *self, PyObject *args)
 {
        PyObject *py_ldb, *result;
@@ -513,7 +430,7 @@ static PyObject *py_samdb_ntds_invocation_id(PyObject 
*self, PyObject *args)
 
        guid = samdb_ntds_invocation_id(ldb);
        if (guid == NULL) {
-               PyErr_SetStringError("Failed to find NTDS invocation ID");
+               PyErr_SetString(PyExc_RuntimeError, "Failed to find NTDS 
invocation ID");
                talloc_free(mem_ctx);
                return NULL;


-- 
Samba Shared Repository

Reply via email to