diff --git a/scripts/zephir/del_servers_group.py b/scripts/zephir/del_servers_group.py index 816e6bc..3779264 100644 --- a/scripts/zephir/del_servers_group.py +++ b/scripts/zephir/del_servers_group.py @@ -2,11 +2,8 @@ # -*- coding: utf-8 -*- import sys, getpass, socket -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: from zephir.zephir_conf.zephir_conf import adresse_zephir @@ -64,20 +61,25 @@ 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) - liste_serveurs = groups[group_id][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 + 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 : ret = proxy.serveurs.del_serveur(id_serv) if ret[1]: @@ -87,6 +89,61 @@ def main(): print_orange('Erreur : ' + str(ret[1])) sys.exit(1) +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): """lecture d'un login/passwd pour l'application zephir """