fusioninventory / fusioninventory-for-glpi

FusionInventory plugin for GLPI
http://www.FusionInventory.org/
GNU Affero General Public License v3.0
361 stars 148 forks source link

manufacturer non renseigné sur moniteur en MAJ par fusion #1999

Open ghost opened 7 years ago

ghost commented 7 years ago

Bonjour. Tout d'abord, nous avons la version 0.90+1.4 de fusion, et j'ai lu le message https://github.com/fusioninventory/fusi … sues/1900, mais je ne sais pas si nous sommes concernés. Lors de l'inventaire des PC/écran, fusion inventory passe en MAJ via le serial sur tous les écrans et crée les écrans s'ils n'existent pas. Tous les champs fonctionnent bien sauf le fabriquant. -->Pour tous les écrans "créés", le fabriquant est bien renseigné -->Pour tous les écrans "mis à jour", le fabriquant n'est pas renseigné. Pourtant le fichier de remontée d'inventaire sur le PC indique bien le manufacturers_id pour chaque moniteur. Actuellement en base de données, la plupart des écrans dans la table glpi_monitors ont un manufacturers_id à 0. Il n'y a pas de locks dans glpi_plugin_fusioninventory_locks pour les moniteurs. Nous ne savons donc pas d'où ca peut venir. Auriez vous une idée? Merci d'avance.

ddurieux commented 7 years ago

Give the XML part of the computer inventory, it's <MONITORS>

ghost commented 7 years ago

Bonjour.

Mon UC a deux écrans E222W. Etonament, l'écran pour lequel le fabriquant ne se met pas à jour (serial 04206649NB) est deux fois dans le XML (monitors.txt) Je vous ai aussi mis en PJ le JSON dans lequel on voit bien qu'une fois le "04206649NB"

Cordialement.

Computer-472_json.txt

monitors_xml.txt

ghost commented 7 years ago

Bonjour.

Par contre, je remarque que peut etre à tord, les UC qui ont fait l'objet d'une opération de reprise (donc non créées automatiquement par GLPI) ont un is_dynamic à false. Même en passant à true, ca ne change rien.

Cdt.

ghost commented 7 years ago

Bonjour.

J'ai fais quelques test en local en important mon XML de prod.

Je n'ai laissé que les 3 règles suivantes 2016-12-15_12h41_51

Lors de l'import du XML, je remarque que Fusion crée 2 nouveaux écrans, mais ne modifie jamais mon écran avec l'identifiant 1. Je me demande donc si fusions fais des mises à jour d'écran... 2016-12-15_12h46_08

pourtant, la règle a l'air de fonctionner : image

Cordialement

g-bougard commented 7 years ago

Hi @johannsan the double XML entry will be fixed on the agent side with v2.3.19. Actually we only have a RC for windows with the fix and if it's your computer platform, you can give it a try (see FIA4W Installer v2.3.19-teclib-rc7).

ghost commented 7 years ago

Bonjour. Si je ne laisse qu'une balise MONITORS dans le XML, Fusion inventory ne passe pas dans la regle d'update, mais crée tout de même un nouvel écran. Cela ne doit pas etre le probleme.

ghost commented 7 years ago

Bonjour. Y-a-t-il donc une raison qu'aucune donnée du monitor (hormis le lien avec le PC) ne soit mise à jour lors de l'inventaire?

ddurieux commented 7 years ago

Non pas de raison :(

ghost commented 7 years ago

Et y-a-t-il des display que je peux mettre dans une classe php particulière qui me permettrait de savoir pourquoi les mises à jours ne se font pas? (et que les créations se font bien)

ddurieux commented 7 years ago

regardes les fichiers :

ddurieux commented 7 years ago

J'ai fais un test ce matin et mon écran se crée bien avec le fabricant

ghost commented 7 years ago

Mon problème n'est pas en création, mais en mise à jour.

Tous les écrans sont déjà en base avec nom et sérial. et aucune mise à jour se déclenche.

J'essaie de mettre des logs ce matin.

ddurieux commented 7 years ago

ah, regarde dans l'onglet 'verrou (champs)' du moniteur si le champ fabricant est coché

ghost commented 7 years ago

Bonjour.

Je viens donc de faire le test suivant en local (avec un XML récupéré de production, et en ne laissant qu'un écran), pour la mise à jour (car bien évidement, s'il n'y a pas d'écran dans GLPI, il est créé correctement).

Donc, dans GLPI : Un écran avec :

J'ai effacé l'ensemble des données dans la tables "glpi_plugin_fusioninventory_locks" car il n'y a pas d'écran pour visualiser les verrous fusion sur les écrans (ce qu'il y a sur les pages d'UC).

Pour le test, j'ai laissé les règles par défaut.

Dans le XML à importer :

<LASTLOGGEDUSER>TEST-LASTLOGGEDUSER</LASTLOGGEDUSER>
<MONITORS>
  <BASE64>AP///////wA4o3dnAQEBAQ4UAQMILx546jbFpFVMnCUSUFS/74CBwIFAgYCLwJUAkECzAHFPITmQMGIaJ0AYsDZA2igRAAAcAAAA/QA4Sx9TEQAKICAgICAgAAAA/ABFMjIyVwogICAgICAgAAAA/wAwNDIwNjY0OU5CCiAgAJo=</BASE64>
  <CAPTION>E222W</CAPTION>
  <DESCRIPTION>14/2010</DESCRIPTION>
  <MANUFACTURER>NEC Corporation</MANUFACTURER>
  <SERIAL>04206649NB</SERIAL>
</MONITORS>

Lors de l'import XML, cet écran est correctement connecté à l'UC, l'usager est mis à jour : 2016-12-28 09:28 glpi (2) (2) Usager Changement de toto-LASTLOGGEDUSER à TEST-LASTLOGGEDUSER 4535 2016-12-28 09:28 glpi (2) (2) Nom Changement de E222Wfsddfsdf à E222W par contre, le fabriquant n'est pas mis à jour.

A la fin de "inc/formatconvert.class.php" var_dump($a_inventory['monitor']); array (size=1) 0 => array (size=4) 'name' => string 'E222W' (length=5) 'manufacturers_id' => string 'NEC Corporation' (length=15) 'serial' => string '04206649NB' (length=10) 'is_dynamic' => int 1

Je continue....

ghost commented 7 years ago

Dans inventorycomputerlib.class.php, je vois l'endroit où on fait

$a_monitors[] = $monitor->add($arrays);

mais je ne vois pas où se passerait l'update... pourtant, ca doit se faire quelque part??

ghost commented 7 years ago

Comment puis-je aller plus loin pour savoir pourquoi l'update ne fait pas de mise à jour du manufacturer?

Cordialement

ghost commented 7 years ago

Auriez vous une réponse à apporter pour avoir un inventaire correct (update) ou devons nous tout mettre à jour manuellement ?

ghost commented 7 years ago

Auriez vous une réponse à apporter pour avoir un inventaire correct (update) ou devons nous tout mettre à jour manuellement ?