Project

General

Profile

Scénario #29758

script d'affichage ou d'export d'infos serveurs zephir

Added by Thierry Bertrand over 2 years ago. Updated about 2 years ago.

Status:
Terminé (Sprint)
Priority:
Normal
Assigned To:
-
Category:
-
Start date:
03/20/2020
Due date:
04/10/2020
% Done:

100%

Story points:
1.0
Remaining (hours):
0.00 hour
Velocity based estimate:
Release:
Release relationship:
Auto

Subtasks

Tâche #29760: Proposer le scriptFerméEmmanuel GARETTE

Associated revisions

Revision 80f404f1 (diff)
Added by Emmanuel GARETTE over 2 years ago

ajout du script liste_serveur_zephir (ref #29758)

Revision 23b6db4f (diff)
Added by Emmanuel GARETTE over 2 years ago

pouvoir choisir le nom du fichier a exporter dans liste_serveur_zephir (ref #29758)

History

#1 Updated by Thierry Bertrand over 2 years ago

Sur Zephir, lorsqu'on se trouve sur la page d'état d'un serveur, on peut voir l'information "adresse IP du serveur ayant contacté zephir dernièrement"
Cette information est stockée en bdd sous serveurs.ip_publique

Il faudrait créer un script exécutable sous zephir permettant de lister et/ou d'exporter une liste d'adresse IP de serveurs correspondant à une version d'eole donnée, un module donné, une variante donnée.

Par exemple :
saisissez votre login
saisissez votre mdp
=> liste des versions supportées par le zephir
choisissez votre version
=> liste des modules dans cette version
choisissez votre module
=> liste des variantes dans ce module
choisissez votre variante
=> affiche ip - nom -rne des serveurs concernés
voulez vous exporter ?
oui
=> fichier de valeurs séparées par :

#2 Updated by Emmanuel GARETTE over 2 years ago

from zephir.backend.lib_backend import CxPool
cx_pool = CxPool()
cu = cx_pool.create()
cu.execute("""select libelle,id from modules""")
infos = {}
variante_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)]
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)]
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 = input('> ')
variante = variante_infos[variantes[idx]]
print
cu.execute('select 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]))

#3 Updated by Emmanuel GARETTE over 2 years ago

Version avec l'exportation :

from zephir.backend.lib_backend import CxPool
cx_pool = CxPool()
cu = cx_pool.create()
cu.execute("""select libelle,id from modules""")
infos = {}
variante_infos = {}
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)]
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)]
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 = input('> ')
variante = variante_infos[variantes[idx]]
print
cu.execute('select 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_infos.append((server[0], server[1], server[2]))
if server_infos:
    print
    print("Voulez l'exporter sous forme de CSV ?")
    print('0: oui')
    print('1: non')
    idx = input('> ')
    if idx == 0:
        with open('exportation.csv', 'w') as fh:
            fh.write('ip;rne;nom')
            for server_info in server_infos:
                ip, rne, nom = server_info
                if ip is None:
                    ip = ''
                fh.write("{};{};{}\n".format(ip, rne, nom))
        print('Exporter dans le fichier exportation.csv')

#4 Updated by Thierry Bertrand over 2 years ago

2 ajouts :
pourrait-on choisir le nom du fichier d'export en mettant une val par defaut à exportation-{version}-{module}-{variante} ?
pouvoir choisir toutes les variantes d'un module donné ?

#5 Updated by Thierry Bertrand over 2 years ago

  • Due date set to 04/10/2020
  • Target version set to MTES - Prestation Cadoles - 13 - 15
  • Start date set to 03/23/2020
  • Story points set to 1.0

#6 Updated by Thierry Bertrand over 2 years ago

  • Release changed from MTES to EOLE 2.7.1

#7 Updated by Thierry Bertrand over 2 years ago

L'information d'id du serveur est aussi une donnée intéressante. Il faudrait l'ajouter.

Pour un traitement automatisé des fichiers généralisés, il serait bien de ne pas inclure la 1ere ligne des fichiers.

#8 Updated by Thierry Bertrand about 2 years ago

  • Status changed from Nouveau to Terminé (Sprint)

Also available in: Atom PDF