diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-04-04 00:21:09 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-04-04 00:21:09 +0200 |
commit | 8afd52a6418125100a5e8a6a4312c0460e57ac88 (patch) | |
tree | 926dfbb6722f792a1f5239f8ef41dbf8ed72b8f9 | |
parent | 31a517e1721fc0080473b376cd59c090cfab6456 (diff) | |
download | samba-8afd52a6418125100a5e8a6a4312c0460e57ac88.tar.gz samba-8afd52a6418125100a5e8a6a4312c0460e57ac88.tar.bz2 samba-8afd52a6418125100a5e8a6a4312c0460e57ac88.zip |
s4-python: Move samdb_server_site_name to dsdb module.
-rw-r--r-- | source4/dsdb/pydsdb.c | 38 | ||||
-rw-r--r-- | source4/scripting/python/pyglue.c | 29 | ||||
-rw-r--r-- | source4/scripting/python/samba/__init__.py | 3 |
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 |