57 lines
2.3 KiB
Python
Executable file
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
|
|
|