2011-11-02 13:32:33 +01:00
# 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
2011-11-02 20:24:20 +01:00
from samba . samdb import SamDB
2012-02-07 17:30:22 +11:00
import samba . getopt as options
2011-11-02 13:32:33 +01:00
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 " ]
2012-02-07 17:30:22 +11:00
takes_optiongroups = {
" sambaopts " : options . SambaOptions ,
" versionopts " : options . VersionOptions ,
" credopts " : options . CredentialsOptions ,
}
2011-11-02 13:32:33 +01:00
def run ( self , sitename , sambaopts = None , credopts = None , versionopts = None ) :
lp = sambaopts . get_loadparm ( )
creds = credopts . get_credentials ( lp , fallback_machine = True )
2011-11-02 20:24:20 +01:00
url = lp . private_path ( " sam.ldb " )
2011-11-02 13:32:33 +01:00
if not os . path . exists ( url ) :
raise CommandError ( " secret database not found at %s " % url )
2011-11-02 20:24:20 +01:00
samdb = SamDB ( url = url , session_info = system_session ( ) ,
credentials = creds , lp = lp )
2011-11-02 13:32:33 +01:00
samdb . transaction_start ( )
2011-11-02 20:24:20 +01:00
try :
ok = sites . create_site ( samdb , samdb . get_config_basedn ( ) , sitename )
samdb . transaction_commit ( )
except sites . SiteAlreadyExistsException , e :
samdb . transaction_cancel ( )
raise CommandError ( " Error while creating site %s , error: %s " % ( sitename , str ( e ) ) )
2011-11-02 13:32:33 +01:00
self . outf . write ( " Site %s created ! \n " % sitename )
class cmd_sites_delete ( Command ) :
2012-10-08 09:47:37 +02:00
""" Delete an existing site """
2011-11-02 13:32:33 +01:00
synopsis = " % prog <site> [options] "
takes_args = [ " sitename " ]
2012-02-07 17:30:22 +11:00
takes_optiongroups = {
" sambaopts " : options . SambaOptions ,
" versionopts " : options . VersionOptions ,
" credopts " : options . CredentialsOptions ,
}
2011-11-02 13:32:33 +01:00
def run ( self , sitename , sambaopts = None , credopts = None , versionopts = None ) :
lp = sambaopts . get_loadparm ( )
creds = credopts . get_credentials ( lp , fallback_machine = True )
2011-11-02 20:24:20 +01:00
url = lp . private_path ( " sam.ldb " )
2011-11-02 13:32:33 +01:00
if not os . path . exists ( url ) :
raise CommandError ( " secret database not found at %s " % url )
2011-11-02 20:24:20 +01:00
samdb = SamDB ( url = url , session_info = system_session ( ) ,
2011-11-02 13:32:33 +01:00
credentials = creds , lp = lp )
samdb . transaction_start ( )
2011-11-02 20:24:20 +01:00
try :
ok = sites . delete_site ( samdb , samdb . get_config_basedn ( ) , sitename )
samdb . transaction_commit ( )
except sites . SiteException , e :
samdb . transaction_cancel ( )
2012-09-16 14:18:39 +02:00
raise CommandError (
" Error while removing site %s , error: %s " % ( sitename , str ( e ) ) )
2011-11-02 13:32:33 +01:00
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 ( )