1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-13 16:23:50 +03:00

lib/smbconf: add create_share method to SMBConf

Add a create_share method wrapping smbconf_create_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>
This commit is contained in:
John Mulligan
2022-04-24 08:10:36 -04:00
committed by Jeremy Allison
parent 67807a642a
commit eb84f67e80
2 changed files with 34 additions and 0 deletions

View File

@@ -279,6 +279,23 @@ static PyObject *obj_get_config(py_SMBConf_Object * self,
return svclist; return svclist;
} }
static PyObject *obj_create_share(py_SMBConf_Object * self, PyObject * args)
{
sbcErr err;
char *servicename = NULL;
if (!PyArg_ParseTuple(args, "s", &servicename)) {
return NULL;
}
err = smbconf_create_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, PyDoc_STRVAR(obj_requires_messaging_doc,
"requires_messaging() -> bool\n" "requires_messaging() -> bool\n"
"\n" "\n"
@@ -309,6 +326,11 @@ PyDoc_STRVAR(obj_get_config_doc,
"configuration. Each tuple in the list is the same as described\n" "configuration. Each tuple in the list is the same as described\n"
"for get_share().\n"); "for get_share().\n");
PyDoc_STRVAR(obj_create_share_doc,
"create_share(name: str) -> None\n"
"Create a new empty share in the configuration. The share\n"
"name must not exist or an error will be raised.\n");
static PyMethodDef py_smbconf_obj_methods[] = { static PyMethodDef py_smbconf_obj_methods[] = {
{ "requires_messaging", (PyCFunction) obj_requires_messaging, { "requires_messaging", (PyCFunction) obj_requires_messaging,
METH_NOARGS, obj_requires_messaging_doc }, METH_NOARGS, obj_requires_messaging_doc },
@@ -320,6 +342,8 @@ static PyMethodDef py_smbconf_obj_methods[] = {
obj_get_share_doc }, obj_get_share_doc },
{ "get_config", (PyCFunction) obj_get_config, METH_NOARGS, { "get_config", (PyCFunction) obj_get_config, METH_NOARGS,
obj_get_config_doc }, obj_get_config_doc },
{ "create_share", (PyCFunction) obj_create_share, METH_VARARGS,
obj_create_share_doc },
{ 0 }, { 0 },
}; };

View File

@@ -129,6 +129,16 @@ class SMBConfTests(samba.tests.TestCase):
sconf = self.s3smbconf.init(f"file:{self.example_conf_default}") sconf = self.s3smbconf.init(f"file:{self.example_conf_default}")
self.assertFalse(sconf.is_writeable()) self.assertFalse(sconf.is_writeable())
def test_create_share(self):
sconf = self.s3smbconf.init_reg(None)
sconf.create_share("alice")
sconf.create_share("bob")
names = sconf.share_names()
self.assertEqual(names, ["alice", "bob"])
self.assertRaises(
self.smbconf.SMBConfError, sconf.create_share, "alice"
)
if __name__ == "__main__": if __name__ == "__main__":
import unittest import unittest