diff options
-rw-r--r-- | source4/scripting/python/samba/hostconfig.py | 64 | ||||
-rw-r--r-- | source4/scripting/python/samba/shares.py | 61 | ||||
-rw-r--r-- | source4/scripting/python/samba/tests/hostconfig.py (renamed from source4/scripting/python/samba/tests/shares.py) | 0 | ||||
-rwxr-xr-x | source4/selftest/tests.py | 2 |
4 files changed, 58 insertions, 69 deletions
diff --git a/source4/scripting/python/samba/hostconfig.py b/source4/scripting/python/samba/hostconfig.py index 6eee6cf2b2..3e6dc6b1dd 100644 --- a/source4/scripting/python/samba/hostconfig.py +++ b/source4/scripting/python/samba/hostconfig.py @@ -2,32 +2,82 @@ # Unix SMB/CIFS implementation. # Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008 -# +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # +"""Local host configuration.""" + from samdb import SamDB class Hostconfig(object): - """Aggregate object that contains all information about the configuration + """Aggregate object that contains all information about the configuration of a Samba host.""" - def __init__(self, lp): + def __init__(self, lp): self.lp = lp + def get_shares(self): + return SharesContainer(self.lp) + def get_samdb(self, session_info, credentials): - return SamDB(url=self.lp.get("sam database"), - session_info=session_info, credentials=credentials, + """Access the SamDB host. + + :param session_info: Session info to use + :param credentials: Credentials to access the SamDB with + """ + return SamDB(url=self.lp.get("sam database"), + session_info=session_info, credentials=credentials, lp=self.lp) + +# TODO: Rather than accessing Loadparm directly here, we should really +# have bindings to the param/shares.c and use those. + + +class SharesContainer(object): + """A shares container.""" + + def __init__(self, lp): + self._lp = lp + + def __getitem__(self, name): + if name == "global": + # [global] is not a share + raise KeyError + return Share(self._lp[name]) + + def __len__(self): + if "global" in self._lp.services(): + return len(self._lp)-1 + return len(self._lp) + + def keys(self): + return [name for name in self._lp.services() if name != "global"] + + def __iter__(self): + return iter(self.keys()) + + +class Share(object): + """A file share.""" + + def __init__(self, service): + self._service = service + + def __getitem__(self, name): + return self._service[name] + + def __setitem__(self, name, value): + self._service[name] = value diff --git a/source4/scripting/python/samba/shares.py b/source4/scripting/python/samba/shares.py deleted file mode 100644 index 17780cfd20..0000000000 --- a/source4/scripting/python/samba/shares.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python - -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2009 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# - -"""Share management.""" - - -# TODO: Rather than accessing Loadparm directly here, we should really -# have bindings to the param/shares.c and use those. - - -class SharesContainer(object): - """A shares container.""" - - def __init__(self, lp): - self._lp = lp - - def __getitem__(self, name): - if name == "global": - # [global] is not a share - raise KeyError - return Share(self._lp[name]) - - def __len__(self): - if "global" in self._lp.services(): - return len(self._lp)-1 - return len(self._lp) - - def keys(self): - return [name for name in self._lp.services() if name != "global"] - - def __iter__(self): - return iter(self.keys()) - - -class Share(object): - """A file share.""" - - def __init__(self, service): - self._service = service - - def __getitem__(self, name): - return self._service[name] - - def __setitem__(self, name, value): - self._service[name] = value diff --git a/source4/scripting/python/samba/tests/shares.py b/source4/scripting/python/samba/tests/hostconfig.py index c01e63c798..c01e63c798 100644 --- a/source4/scripting/python/samba/tests/shares.py +++ b/source4/scripting/python/samba/tests/hostconfig.py diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py index 180f089642..bf63c97655 100755 --- a/source4/selftest/tests.py +++ b/source4/selftest/tests.py @@ -477,7 +477,7 @@ planpythontestsuite("dc:local", "samba.tests.dcerpc.bare") planpythontestsuite("dc:local", "samba.tests.dcerpc.unix") planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc") planpythontestsuite("none", "samba.tests.samdb") -planpythontestsuite("none", "samba.tests.shares") +planpythontestsuite("none", "samba.tests.hostconfig") planpythontestsuite("none", "samba.tests.messaging") planpythontestsuite("none", "samba.tests.samba3sam") planpythontestsuite("none", "subunit") |