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/>.
#
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 ,
2015-09-16 14:17:25 +12:00
SuperCommand ,
Option ,
2011-11-02 13:32:33 +01:00
)
class cmd_sites_create ( Command ) :
2012-10-08 12:32:58 +02:00
""" Create a new 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 ,
}
2015-09-16 14:17:25 +12:00
takes_options = [
Option ( " -H " , " --URL " , help = " LDB URL for database or target server " ,
type = str , metavar = " URL " , dest = " H " ) ,
]
def run ( self , sitename , H = None , sambaopts = None , credopts = None ,
versionopts = None ) :
2011-11-02 13:32:33 +01:00
lp = sambaopts . get_loadparm ( )
creds = credopts . get_credentials ( lp , fallback_machine = True )
2015-09-16 14:17:25 +12:00
samdb = SamDB ( url = H , session_info = system_session ( ) ,
2011-11-02 20:24:20 +01:00
credentials = creds , lp = lp )
2011-11-02 13:32:33 +01:00
samdb . transaction_start ( )
2011-11-02 20:24:20 +01:00
try :
2015-09-17 18:30:28 +12:00
sites . create_site ( samdb , samdb . get_config_basedn ( ) , sitename )
2011-11-02 20:24:20 +01:00
samdb . transaction_commit ( )
except sites . SiteAlreadyExistsException , e :
samdb . transaction_cancel ( )
2015-09-17 18:30:28 +12:00
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 )
2015-09-17 18:30:28 +12:00
2011-11-02 13:32:33 +01:00
class cmd_sites_delete ( Command ) :
2012-10-08 12:32:58 +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 ,
}
2015-09-16 14:17:25 +12:00
takes_options = [
Option ( " -H " , " --URL " , help = " LDB URL for database or target server " ,
type = str , metavar = " URL " , dest = " H " ) ,
]
def run ( self , sitename , H = None , sambaopts = None , credopts = None ,
versionopts = None ) :
2011-11-02 13:32:33 +01:00
lp = sambaopts . get_loadparm ( )
creds = credopts . get_credentials ( lp , fallback_machine = True )
2015-09-16 14:17:25 +12:00
samdb = SamDB ( url = H , 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 :
2015-09-17 18:30:28 +12:00
sites . delete_site ( samdb , samdb . get_config_basedn ( ) , sitename )
2011-11-02 20:24:20 +01:00
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 ) :
2012-10-09 11:53:21 +02:00
""" Sites management. """
2011-11-02 13:32:33 +01:00
subcommands = { }
subcommands [ " create " ] = cmd_sites_create ( )
subcommands [ " remove " ] = cmd_sites_delete ( )