summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/dsdb/pydsdb.c38
-rw-r--r--source4/scripting/python/pyglue.c29
-rw-r--r--source4/scripting/python/samba/__init__.py3
3 files changed, 40 insertions, 30 deletions
diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
index b365744e42..248bc1a07a 100644
--- a/source4/dsdb/pydsdb.c
+++ b/source4/dsdb/pydsdb.c
@@ -20,8 +20,46 @@
#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 = talloc_new(NULL);
+
+ if (!PyArg_ParseTuple(args, "O", &py_ldb)) {
+ talloc_free(mem_ctx);
+ return NULL;
+ }
+
+ PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+ 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;
+}
static PyMethodDef py_dsdb_methods[] = {
+ { "server_site_name", (PyCFunction)py_samdb_server_site_name, METH_VARARGS,
+ "get the server site name as a string"},
{ NULL }
};
diff --git a/source4/scripting/python/pyglue.c b/source4/scripting/python/pyglue.c
index 08fc648d36..5fa02b367d 100644
--- a/source4/scripting/python/pyglue.c
+++ b/source4/scripting/python/pyglue.c
@@ -557,33 +557,6 @@ static PyObject *py_samdb_ntds_objectGUID(PyObject *self, PyObject *args)
}
-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 = talloc_new(NULL);
-
- if (!PyArg_ParseTuple(args, "O", &py_ldb)) {
- talloc_free(mem_ctx);
- return NULL;
- }
-
- PyErr_LDB_OR_RAISE(py_ldb, ldb);
-
- site = samdb_server_site_name(ldb, mem_ctx);
- if (site == NULL) {
- PyErr_SetStringError("Failed to find server site");
- talloc_free(mem_ctx);
- return NULL;
- }
-
- result = PyString_FromString(site);
- talloc_free(mem_ctx);
- return result;
-}
-
-
/*
return the list of interface IPs we have configured
takes an loadparm context, returns a list of IPs in string form
@@ -689,8 +662,6 @@ static PyMethodDef py_misc_methods[] = {
"get the NTDS invocation ID GUID as a string"},
{ "samdb_ntds_objectGUID", (PyCFunction)py_samdb_ntds_objectGUID, METH_VARARGS,
"get the NTDS objectGUID as a string"},
- { "samdb_server_site_name", (PyCFunction)py_samdb_server_site_name, METH_VARARGS,
- "get the server site name as a string"},
{ "interface_ips", (PyCFunction)py_interface_ips, METH_VARARGS,
"get interface IP address list"},
{ NULL }
diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py
index 73c0ba6f12..7299e11392 100644
--- a/source4/scripting/python/samba/__init__.py
+++ b/source4/scripting/python/samba/__init__.py
@@ -42,6 +42,7 @@ else:
import ldb
+import dsdb
import glue
class Ldb(ldb.Ldb):
@@ -310,7 +311,7 @@ class Ldb(ldb.Ldb):
def server_site_name(self):
"Get the server site name"
- return glue.samdb_server_site_name(self)
+ return dsdb.samdb_server_site_name(self)
def set_opaque_integer(self, name, value):
"""Set an integer as an opaque (a flag or other value) value on the database