summaryrefslogtreecommitdiff
path: root/source4/scripting/python/samba/hostconfig.py
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-11-28 13:39:12 +0100
committerJelmer Vernooij <jelmer@samba.org>2010-11-28 17:23:27 +0100
commitca495e67b2c2c8b50e16c5bcfcafdc5c2ae5bc72 (patch)
treec7f62b3b01b9590e805e25465fc0ce248c4e0a08 /source4/scripting/python/samba/hostconfig.py
parent979d298b0d6e5692f606a5bfe21a64d1ecce5613 (diff)
downloadsamba-ca495e67b2c2c8b50e16c5bcfcafdc5c2ae5bc72.tar.gz
samba-ca495e67b2c2c8b50e16c5bcfcafdc5c2ae5bc72.tar.bz2
samba-ca495e67b2c2c8b50e16c5bcfcafdc5c2ae5bc72.zip
samba.hostconfig: Move samba.shares into samba.hostconfig.
Diffstat (limited to 'source4/scripting/python/samba/hostconfig.py')
-rw-r--r--source4/scripting/python/samba/hostconfig.py64
1 files changed, 57 insertions, 7 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