You are not logged in.
Bonjour,
Je viens de prendre le contrôle d'un GLPI un peu à l'abandon. Il a 12 ans et n'avait pas eu de MAJ depuis 2017. J'ai maintenant une instance de test mise à jour en 10.0.5 et je cherche à faire du ménage. Il y a plus de 185 000 logiciels sur cette instance ; je voudrais tous les supprimer. (puis installer un dictionnaire de logiciels et ne remonter que ce qui m'intéresse vraiment, ceci sera peut-être pour une autre question.)
Voilà mon code (simplifié) actuellement, pour les détruire par paquet de 100
#! /usr/bin/env python3
import glpi_api
glpi=glpi_api.GLPI('https://monglpi/apirest.php', None, 'ma clé d'api utilisateur....')
all=glpi.get_all_items('Software', range='0-400000', is_deleted=False, get_hateoas=False)
step=100
n=0
max=len(all)
while n < max:
ids=list(map(lambda x: {'id': x['id']}, all[n:n+step]))
glpi.delete('Software', *ids , force_purge=True)
n+=step
La variante suivante n'est pas plus rapide...
...
step=100
while True:
all=glpi.get_all_items('Software', range='0-199', is_deleted=False, get_hateoas=False)
max=len(all)
if max < 1:
break
n=0
while n < max:
ids=list(map(lambda x: {'id': x['id']}, all[n:n+step]))
glpi.delete('Software', *ids , force_purge=True)
n+=step
Le problème est que cette procédure dure des heures, véritablement. Si tout se passe bien, la suppression se fera en plus de 7 heures. or c'est une instance de test et je devrai refaire la même chose lors du passage en prod de l'instance actuelle qui continue de vivre sa vie pour le moment.
Est-il possible d'accélérer le traitement ? Si oui, comment ?
Est-il possible de taper directement dans la base SQL et comment ? (oui c'est le mal absolu, mais parfois...)
Christophe
Last edited by krstzf (2023-01-13 10:55:50)
Offline
Bonjour,
Il me semble qu'il y a des lignes de commande pour faire le ménage :
Offline
Bonjour,
Merci pour la suggestion. Malheureusement, cette commande n'est destinée qu'à remettre un peu d'ordre lorsqu'il y a des incohérences, elle ne supprime pas tous les logiciels.
J'ai fait quelques tests, et finalement le plus simple pour moi a été le plus sale également. Taper directement dans la base de données.
begin;
truncate glpi_softwares;
truncate glpi_softwarecategories;
truncate glpi_softwarelicenses;
truncate glpi_softwareversions;
commit;
Offline