pyglue: added py_samdb_ntds_invocation_id()
authorAndrew Tridgell <tridge@samba.org>
Thu, 25 Feb 2010 07:15:19 +0000 (18:15 +1100)
committerAndrew Tridgell <tridge@samba.org>
Fri, 26 Feb 2010 02:59:17 +0000 (13:59 +1100)
source4/scripting/python/pyglue.c

index 3ae0a0965cda7312ef7cfc3697a41f9d031cad6e..03a39d498e4de8eced76dcce419146e48c269fc0 100644 (file)
@@ -488,6 +488,40 @@ static PyObject *py_dsdb_load_partition_usn(PyObject *self, PyObject *args)
 }
 
 
+
+static PyObject *py_samdb_ntds_invocation_id(PyObject *self, PyObject *args)
+{
+       PyObject *py_ldb, *result;
+       struct ldb_context *ldb;
+       TALLOC_CTX *mem_ctx;
+       const struct GUID *guid;
+
+       mem_ctx = talloc_new(NULL);
+       if (mem_ctx == NULL) {
+               PyErr_NoMemory();
+               return NULL;
+       }
+
+       if (!PyArg_ParseTuple(args, "O", &py_ldb)) {
+               talloc_free(mem_ctx);
+               return NULL;
+       }
+
+       PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+       guid = samdb_ntds_invocation_id(ldb);
+       if (guid == NULL) {
+               PyErr_SetStringError("Failed to find NTDS invocation ID");
+               talloc_free(mem_ctx);
+               return NULL;
+       }
+
+       result = PyString_FromString(GUID_string(mem_ctx, guid));
+       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
@@ -587,6 +621,8 @@ static PyMethodDef py_misc_methods[] = {
                "set debug level" },
        { "dsdb_load_partition_usn", (PyCFunction)py_dsdb_load_partition_usn, METH_VARARGS,
                "get uSNHighest and uSNUrgent from the partition @REPLCHANGED"},
+       { "samdb_ntds_invocation_id", (PyCFunction)py_samdb_ntds_invocation_id, METH_VARARGS,
+               "get the NTDS invocation ID GUID as a string"},
        { "interface_ips", (PyCFunction)py_interface_ips, METH_VARARGS,
                "get interface IP address list"},
        { NULL }