diff --git a/scripts/zephir/del_servers_group.py b/scripts/zephir/del_servers_group.py index 3779264..b587aa2 100644 --- a/scripts/zephir/del_servers_group.py +++ b/scripts/zephir/del_servers_group.py @@ -76,8 +76,6 @@ def main(): if not group_id in groups: print_red('Groupe inconnu') group_id = None - elif not group_id in groups: - print_red('Le groupe "{}" est inconnu'.format(group_id)) sys.exit(1) liste_serveurs = groups[group_id][1] for id_serv in liste_serveurs : diff --git a/scripts/zephir/exec_script_group.py b/scripts/zephir/exec_script_group.py index f5e05cc..da83119 100644 --- a/scripts/zephir/exec_script_group.py +++ b/scripts/zephir/exec_script_group.py @@ -6,6 +6,8 @@ from pyeole.ihm import print_line from pyeole.ansiprint import print_orange, print_red from creole.client import CreoleClient from collections import OrderedDict +from zephir.backend.lib_backend import CxPool + try: @@ -72,26 +74,29 @@ def main(): print('Liste des groupes :') for grp_id, group_infos in groups.items(): print(' - ' + str(grp_id) + ' : ' + group_infos[0]) + print( ' - N : Créer un nouveau groupe') while group_id is None: tmp_group_id = flushed_input("Numéro du groupe : ") - try: - group_id = int(tmp_group_id) - except Exception as err: - print(err) - continue - if not group_id in groups: - print_red('Groupe inconnu') - group_id = None - elif not group_id in groups: - print_red('Le groupe "{}" est inconnu'.format(group_id)) - sys.exit(1) - + if tmp_group_id == 'N': + group_id = 'N' + liste_serveurs = make_group() + else: + try: + group_id = int(tmp_group_id) + except Exception as err: + print(err) + continue + if not group_id in groups: + print_red('Groupe inconnu') + group_id = None + sys.exit(1) + liste_serveurs = groups[group_id][1] if script is None: script = flushed_input("Script à executer : ") if params is None: params = flushed_input("Paramètres : ") - liste_serveurs = groups[group_id][1] + ret = proxy.uucp.exec_script(liste_serveurs, script, params) @@ -101,6 +106,60 @@ def main(): print('Script {} {} exécuté sur les serveurs {}'.format(script, params, liste_serveurs)) +def make_group(): + cx_pool = CxPool() + cu = cx_pool.create() + cu.execute("""select libelle,id from modules""") + infos = {} + variante_infos = {} + filename = 'exportation' + server_infos = [] + for module_name in cu.fetchall(): + module, version = module_name[0].rsplit('-', 1) + infos.setdefault(version, {})[module] = module_name[1] + + versions = infos.keys() + versions.sort() + print('Choix de la version :') + for idx, version in enumerate(versions): + print('{}: {}'.format(idx, version)) + idx = input('> ') + version = versions[int(idx)] + filename += '-' + version + print + print('Choix du module :') + modules = infos[version].keys() + modules.sort() + for idx, module in enumerate(modules): + print('{}: {}'.format(idx, module)) + idx = input('> ') + module = modules[int(idx)] + filename += '-' + module + print + cu.execute("select libelle,id from variantes where module = " + str(infos[version][module])) + for variante_obj in cu.fetchall(): + variante_infos[variante_obj[0]] = variante_obj[1] + print('Choix de la variante :') + variantes = variante_infos.keys() + variantes.sort() + for idx, variante in enumerate(variantes): + print('{}: {}'.format(idx, variante)) + idx_all = idx + 1 + print('{}: toutes les variantes'.format(idx_all)) + idx = input('> ') + if idx == idx_all: + variantes = variante_infos.values() + else: + filename += '-' + variantes[idx] + variantes = [variante_infos[variantes[idx]]] + print + for variante in variantes: + cu.execute('select id,ip_publique,rne,libelle from serveurs where variante=' + str(variante)) + print("Liste des serveurs : ") + for server in cu.fetchall(): + print('{} - {} - {} - {}'.format(server[0], server[1], server[2], server[3])) + server_infos.append(server[0]) + return server_infos def get_pwd(addr, port):