samba-tool: add subcommand for sites manipulation
authorMatthieu Patou <mat@matws.net>
Wed, 2 Nov 2011 12:32:33 +0000 (13:32 +0100)
committerMatthieu Patou <mat@samba.org>
Wed, 2 Nov 2011 14:14:31 +0000 (15:14 +0100)
Autobuild-User: Matthieu Patou <mat@samba.org>
Autobuild-Date: Wed Nov  2 15:14:32 CET 2011 on sn-devel-104

source4/scripting/python/samba/netcmd/main.py
source4/scripting/python/samba/netcmd/sites.py [new file with mode: 0644]

index 61bbcf16e2aeea3b3f8c309016471145572d1564..3bdbced75bb3cbf7a2bc1d236ad234194d89a8ec 100644 (file)
@@ -32,6 +32,7 @@ from samba.netcmd.group import cmd_group
 from samba.netcmd.ldapcmp import cmd_ldapcmp
 from samba.netcmd.ntacl import cmd_ntacl
 from samba.netcmd.rodc import cmd_rodc
+from samba.netcmd.sites import cmd_sites
 from samba.netcmd.spn import cmd_spn
 from samba.netcmd.testparm import cmd_testparm
 from samba.netcmd.time import cmd_time
@@ -55,6 +56,7 @@ class cmd_sambatool(SuperCommand):
     subcommands["ldapcmp"] = cmd_ldapcmp()
     subcommands["ntacl"] = cmd_ntacl()
     subcommands["rodc"] = cmd_rodc()
+    subcommands["sites"] = cmd_sites()
     subcommands["spn"] = cmd_spn()
     subcommands["testparm"] =  cmd_testparm()
     subcommands["time"] = cmd_time()
diff --git a/source4/scripting/python/samba/netcmd/sites.py b/source4/scripting/python/samba/netcmd/sites.py
new file mode 100644 (file)
index 0000000..a63b524
--- /dev/null
@@ -0,0 +1,96 @@
+
+#!/usr/bin/env python
+#
+# sites management
+#
+# Copyright Matthieu Patou <mat@matws.net> 2011
+#
+# 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/>.
+#
+
+
+
+import os
+from samba import sites
+from samba import Ldb
+from samba.auth import system_session
+from samba.netcmd import (
+    Command,
+    CommandError,
+    SuperCommand
+    )
+
+
+class cmd_sites_create(Command):
+    """Create a new site"""
+
+    synopsis = "%prog <site> [options]"
+
+    takes_args = ["sitename"]
+
+    def run(self, sitename, sambaopts=None, credopts=None, versionopts=None):
+        lp = sambaopts.get_loadparm()
+        creds = credopts.get_credentials(lp, fallback_machine=True)
+        name = "sam.ldb"
+        path = lp.get("private dir")
+        url = os.path.join(path, name)
+        if not os.path.exists(url):
+            raise CommandError("secret database not found at %s " % url)
+        samdb = Ldb(url=url, session_info=system_session(),
+            credentials=creds, lp=lp)
+
+        samdb.transaction_start()
+        ok = sites.create_site(samdb, samdb.get_config_basedn(), sitename)
+        samdb.transaction_commit()
+
+        if not ok:
+            raise CommandError("Error while creating site %s" % sitename)
+
+        self.outf.write("Site %s created !\n" % sitename)
+
+class cmd_sites_delete(Command):
+    """Delete a new site"""
+
+    synopsis = "%prog <site> [options]"
+
+    takes_args = ["sitename"]
+
+    def run(self, sitename, sambaopts=None, credopts=None, versionopts=None):
+        lp = sambaopts.get_loadparm()
+        creds = credopts.get_credentials(lp, fallback_machine=True)
+        name = "sam.ldb"
+        path = lp.get("private dir")
+        url = os.path.join(path, name)
+        if not os.path.exists(url):
+            raise CommandError("secret database not found at %s " % url)
+        samdb = Ldb(url=url, session_info=system_session(),
+            credentials=creds, lp=lp)
+
+        samdb.transaction_start()
+        ok = sites.delete_site(samdb, samdb.get_config_basedn(), sitename)
+        samdb.transaction_commit()
+
+        if not ok:
+            raise CommandError("Error while creating site %s" % sitename)
+
+        self.outf.write("Site %s removed!\n" % sitename)
+
+
+
+class cmd_sites(SuperCommand):
+    """Sites management"""
+
+    subcommands = {}
+    subcommands["create"] = cmd_sites_create()
+    subcommands["remove"] = cmd_sites_delete()