Projet

Général

Profil

Scénario #29758

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

Ajouté par Thierry Bertrand il y a environ 4 ans. Mis à jour il y a plus de 3 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Début:
20/03/2020
Echéance:
10/04/2020
% réalisé:

100%

Points de scénarios:
1.0
Restant à faire (heures):
0.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Sous-tâches

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

Révisions associées

Révision 80f404f1 (diff)
Ajouté par Emmanuel GARETTE il y a environ 4 ans

ajout du script liste_serveur_zephir (ref #29758)

Révision 23b6db4f (diff)
Ajouté par Emmanuel GARETTE il y a environ 4 ans

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

Historique

#1 Mis à jour par Thierry Bertrand il y a environ 4 ans

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 Mis à jour par Emmanuel GARETTE il y a environ 4 ans

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 Mis à jour par Emmanuel GARETTE il y a environ 4 ans

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 Mis à jour par Thierry Bertrand il y a environ 4 ans

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 Mis à jour par Thierry Bertrand il y a environ 4 ans

  • Echéance mis à 10/04/2020
  • Version cible mis à MTES - Prestation Cadoles - 13 - 15
  • Début mis à 23/03/2020
  • Points de scénarios mis à 1.0

#6 Mis à jour par Thierry Bertrand il y a environ 4 ans

  • Release changé de MTES à EOLE 2.7.1

#7 Mis à jour par Thierry Bertrand il y a environ 4 ans

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 Mis à jour par Thierry Bertrand il y a plus de 3 ans

  • Statut changé de Nouveau à Terminé (Sprint)

Formats disponibles : Atom PDF