lib/smbconf: add delete_share method to SMBConf
authorJohn Mulligan <jmulligan@redhat.com>
Sun, 24 Apr 2022 14:25:50 +0000 (10:25 -0400)
committerJeremy Allison <jra@samba.org>
Fri, 6 May 2022 17:16:30 +0000 (17:16 +0000)
Add a delete_share method wrapping smbconf_delete_share.

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 d800e0134c43d4cc7fe184d962117e8cfe18c337..bc4035a4468fe5553dac7de34d4f7791116ec737 100644 (file)
@@ -347,6 +347,23 @@ static PyObject *obj_set_global_parameter(py_SMBConf_Object * self,
        Py_RETURN_NONE;
 }
 
+static PyObject *obj_delete_share(py_SMBConf_Object * self, PyObject * args)
+{
+       sbcErr err;
+       char *servicename = NULL;
+
+       if (!PyArg_ParseTuple(args, "s", &servicename)) {
+               return NULL;
+       }
+
+       err = smbconf_delete_share(self->conf_ctx, servicename);
+       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"
@@ -396,6 +413,10 @@ PyDoc_STRVAR(obj_set_global_parameter_doc,
 "Set a global configuration parmeter. Specify the parameter name\n"
 "and parameter value.\n");
 
+PyDoc_STRVAR(obj_delete_share_doc,
+"delete_share(str) -> None\n"
+"Delete a service from the configuration.\n");
+
 static PyMethodDef py_smbconf_obj_methods[] = {
        { "requires_messaging", (PyCFunction) obj_requires_messaging,
         METH_NOARGS, obj_requires_messaging_doc },
@@ -415,6 +436,8 @@ static PyMethodDef py_smbconf_obj_methods[] = {
         obj_set_parameter_doc },
        { "set_global_parameter", (PyCFunction) obj_set_global_parameter,
         METH_VARARGS, obj_set_global_parameter_doc },
+       { "delete_share", (PyCFunction) obj_delete_share, METH_VARARGS,
+        obj_delete_share_doc },
        { 0 },
 };
 
index c81db2916515dc7baeadc10f71b5d63ef1b99dad..f3c945c1ace8746b25b2d8d10d03662a8219dc9b 100644 (file)
@@ -171,6 +171,19 @@ class SMBConfTests(samba.tests.TestCase):
             s1, ("global", [("workgroup", "EXAMPLE"), ("x:custom", "fake")])
         )
 
+    def test_delete_share(self):
+        sconf = self.s3smbconf.init_reg(None)
+        sconf.drop()
+
+        sconf.create_share("alice")
+        sconf.create_share("bob")
+        names = sconf.share_names()
+        self.assertEqual(names, ["alice", "bob"])
+
+        sconf.delete_share("alice")
+        names = sconf.share_names()
+        self.assertEqual(names, ["bob"])
+
 
 if __name__ == "__main__":
     import unittest