scripts/bcfg2/backup.py
2013-02-08 01:47:16 +01:00

57 lines
2.3 KiB
Python
Executable file

#!/usr/bin/python
import os, sys, time
import Bcfg2.Logger, Bcfg2.Server.Core, Bcfg2.Options
import Bcfg2.Server.Plugins.Metadata, Bcfg2.Server.Plugin
class searchCore(Bcfg2.Server.Core.Core):
# On définit une classe parce qu'il faut mettre quelque chose au-dessus
# de la classe Core si on veut récupérer les informations ...
# C'est nul.
def __init__(self, repo, plgs, struct, gens, passwd, svn,
encoding):
try:
Bcfg2.Server.Core.Core.__init__(self, repo, plgs, struct, gens,
passwd, svn, encoding)
except Bcfg2.Server.Core.CoreInitError, msg:
print "Core load failed because %s" % msg
raise SystemExit(1)
i = 0
while self.fam.Service() or i < 5:
i += 1
def do_search(self, searchgroup):
"""Search for clients belonging to a group"""
clients = []
clist = self.metadata.clients.keys()
clist.sort()
for client in clist:
profile = self.metadata.clients[client]
gdata = [grp for grp in self.metadata.groups[profile][1]]
if searchgroup in gdata:
clients.append(client)
return clients
if __name__ == '__main__':
# Bon ça ce sont les trucs recopiés de bcfg2-info
optinfo = {
'configfile': Bcfg2.Options.CFILE,
'help': Bcfg2.Options.HELP,
}
optinfo.update({'repo': Bcfg2.Options.SERVER_REPOSITORY,
'svn': Bcfg2.Options.SERVER_SVN,
'plugins': Bcfg2.Options.SERVER_PLUGINS,
'structures': Bcfg2.Options.SERVER_STRUCTURES,
'generators': Bcfg2.Options.SERVER_GENERATORS,
'password': Bcfg2.Options.SERVER_PASSWORD,
'event debug': Bcfg2.Options.DEBUG,
'encoding': Bcfg2.Options.ENCODING})
setup = Bcfg2.Options.OptionParser(optinfo)
setup.parse([])
loop = searchCore(setup['repo'], setup['plugins'], setup['structures'],
setup['generators'], setup['password'], '',
setup['encoding'])
# On cherche les clients
clients = loop.do_search('backup-client')
# On génère un truc qui va bien pour ces clients