]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib/smbconf: add delete_parameter method to SMBConf
authorJohn Mulligan <jmulligan@redhat.com>
Mon, 25 Apr 2022 13:59:36 +0000 (09:59 -0400)
committerJeremy Allison <jra@samba.org>
Fri, 6 May 2022 17:16:30 +0000 (17:16 +0000)
Add a delete_parameter method wrapping smbconf_delete_parameter.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
lib/smbconf/pysmbconf.c
python/samba/tests/smbconf.py

index 6219b6b5d3a7754e44df6968c3dcb445ec5d6128..fe5c1558d9868a06afa80786d0ae854d7ed0cca7 100644 (file)
@@ -482,6 +482,24 @@ static PyObject *obj_create_set_share(py_SMBConf_Object * self, PyObject * args)
        Py_RETURN_NONE;
 }
 
+static PyObject *obj_delete_parameter(py_SMBConf_Object * self, PyObject * args)
+{
+       sbcErr err;
+       char *servicename = NULL;
+       char *param_name = NULL;
+
+       if (!PyArg_ParseTuple(args, "ss", &servicename, &param_name)) {
+               return NULL;
+       }
+
+       err = smbconf_delete_parameter(self->conf_ctx, servicename, param_name);
+       if (err != SBC_ERR_OK) {
+               py_raise_SMBConfError(err);
+               return NULL;
+       }
+       Py_RETURN_NONE;
+}
+
 PyDoc_STRVAR(obj_requires_messaging_doc,
 "requires_messaging() -> bool\n"
 "\n"
@@ -539,6 +557,10 @@ PyDoc_STRVAR(obj_create_set_share_doc,
 "create_set_share(str, [(str, str)...]) -> None\n"
 "Create and set the definition of a service.\n");
 
+PyDoc_STRVAR(obj_delete_parameter_doc,
+"delete_parameter(str, str) -> None\n"
+"Delete a single configuration parameter.\n");
+
 static PyMethodDef py_smbconf_obj_methods[] = {
        { "requires_messaging", (PyCFunction) obj_requires_messaging,
         METH_NOARGS, obj_requires_messaging_doc },
@@ -562,6 +584,8 @@ static PyMethodDef py_smbconf_obj_methods[] = {
         METH_VARARGS, obj_set_global_parameter_doc },
        { "delete_share", (PyCFunction) obj_delete_share, METH_VARARGS,
         obj_delete_share_doc },
+       { "delete_parameter", (PyCFunction) obj_delete_parameter, METH_VARARGS,
+        obj_delete_parameter_doc },
        { 0 },
 };
 
index 76b0efd2e481533e3925a7cad4a48f88b643b99e..53912d7a0803a5931c81a8c4f3b8818138c11112 100644 (file)
@@ -210,6 +210,30 @@ class SMBConfTests(samba.tests.TestCase):
             ValueError, sconf.create_set_share, "baz", [("a", "b", "c")]
         )
 
+    def test_delete_parameter(self):
+        sconf = self.s3smbconf.init_reg(None)
+        sconf.drop()
+
+        params = [
+            ("path", "/mnt/baz"),
+            ("browseable", "yes"),
+            ("read only", "no"),
+        ]
+        sconf.create_set_share("baz", params)
+        self.assertEqual(sconf.get_share("baz"), ("baz", params))
+
+        sconf.delete_parameter("baz", "browseable")
+        self.assertEqual(
+            sconf.get_share("baz"),
+            (
+                "baz",
+                [
+                    ("path", "/mnt/baz"),
+                    ("read only", "no"),
+                ],
+            ),
+        )
+
 
 if __name__ == "__main__":
     import unittest