You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2021-06-27 10:49:33

Shaguu
Member
Registered: 2021-06-27
Posts: 7

Utilisation API GLPI v9.5.x

Bonjour ici,

J'utilise les API de GLPI pour créer/clôturer des tickets dans GLPI via Nagios.
Jusqu'à présent j'utilisais la version 9.4.x de GLPI sans problème, mais suite au passage vers la 9.5.4 puis 9.5.5, cela ne fonctionne plus correctement.
Il m'est toujours possible de créer des tickets mais le passage en "résolu" n'est plus effectif.

J'utilise les scripts suivant : Nagios-Event-Handlers-for-GLPI de Derrick Smith (Il semble que je ne puisse pas mettre de lien vers la ressource ?)

Mes faibles compétences en programmation me font penser que le problème se trouve dans cette portion de code :


if ($lasthostproblemid != 0) {
            logging("Manage Host Tickets: Last Problem ID does not equal UP, searching for tickets to close", $logging);
            $search = array(
                'criteria' => array(
                    array(
                        'field' => '12', //Status field
                        'searchtype' => 'equals',
                        'value' => 2 //Search on Open (Assigned) Tickets
                    ),
                    array(
                        'link' => 'AND',
                        'field' => '1', //Title field
                        'searchtype' => 'contains',
                        'value' => "$eventhost is down!" //Search Title
                    )
                )
            );
           
            $tickets = $glpi->search('Ticket', $search);
                if (!empty($tickets['data']->data)){
                logging("Manage Host Tickets: Found tickets to close, closing each ticket", $logging);
                $test = var_dump($tickets);
                ##logging("Tickets are : $test",$logging);
                $post = array('input' => array());
                foreach ($tickets['data']->data as $ticket)
                {
                    $post['input'][] = array('id' => $ticket->{2} , 'status' => 5);
                    $glpi->updateItem('Ticket', $post);
                }
            }
        }

Y a-t-il une modification entre la version 9.4 et 9.5 de GLPI qui explique ce problème ? Si oui, avez-vous une piste afin que je puisse le résoudre ?

Je vous remercie

Offline

#2 2021-06-27 11:41:25

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,287

Re: Utilisation API GLPI v9.5.x

verifiez si vous n'avez pas une règle qui empeche la modification (paramètre du coeur ou d'un plugin):
tache sans description
temps total à 0 pour le ticket
soution obligatoire, type de solution obligatoire
catégorie obligatoire
cycle de vie des tickets  pour le profil utilisé par le client API


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

#3 2021-06-27 20:38:30

keepcool5283
Member
Registered: 2013-10-10
Posts: 158

Re: Utilisation API GLPI v9.5.x

Bonjour;

Le problème est que sur le statut Résolu ou aussi sur d'autres statuts ?

Quelques pistes :

- Est-ce qu'il n'y a pas eu une modification des noms des status tickets ou est-ce qu'il n'y en a pas un qui a été ajouté ou supprimé ?
- Vérifier aussi que le Status 5 correspond bien à Résolu dans votre configuration.
- De mon coté j'ai fais un PUT au lieu d'un POST pour modifier le status.


Apps Android GLPI Management : https://play.google.com/store/apps/deta … fr.dmn.app
Site Web : http://mdu-tech.fr/
GLPI 9.5.5 sur IIS 10 / PHP 8 / MySQL

Offline

#4 2021-06-28 05:37:25

cconard96
Moderator
Registered: 2018-07-31
Posts: 2,807
Website

Re: Utilisation API GLPI v9.5.x

J'ai trouvé les scripts que vous utilisez.  Pouvez-vous fournir un guide rapide sur la façon de les mettre en œuvre afin que je puisse les tester?  Le référentiel GitHub n'a aucune instruction.


GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.

Offline

#5 2021-06-28 10:49:50

Shaguu
Member
Registered: 2021-06-27
Posts: 7

Re: Utilisation API GLPI v9.5.x

LaDenrée wrote:

verifiez si vous n'avez pas une règle qui empeche la modification (paramètre du coeur ou d'un plugin):
tache sans description
temps total à 0 pour le ticket
soution obligatoire, type de solution obligatoire
catégorie obligatoire
cycle de vie des tickets  pour le profil utilisé par le client API

Bonjour à tous,
@LaDenrée : pourriez-vous m'indiquer où se trouvent ces paramètres ?
J'ai corrigé le script pour ajouter une catégorie (qui semblait être obligatoire depuis le passage en 9.5.x mais il s'agit peut-être d'une erreur de ma part). Pour les autres champs, je ne vois rien d'anormal.

@keepcool5283 : Je viens d'effectuer les tests suivants :
- Est-ce qu'il n'y a pas eu une modification des noms des status tickets ou est-ce qu'il n'y en a pas un qui a été ajouté ou supprimé : Pas à ma connaissance et je ne vois rien dans la configuration qui irait dans ce sens.
- Vérifier aussi que le Status 5 correspond bien à Résolu dans votre configuration : Je confirme, le status est bon
- De mon coté j'ai fais un PUT au lieu d'un POST pour modifier le status : J'ai testé les deux méthodes, sans résultats

@cconard96 :
Les scripts incluent les variables suivantes :

## Required ##
$glpi_user                = '';
$glpi_password                = '';
$glpi_apikey                = '';
$glpi_host                = '';
$nagios_host                = '';
$verifypeer                = FALSE; // SETS curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
$logging                = TRUE;
$critical_priority            = 5;
$warning_priority            = 3;

## Optional ##
$glpi_requester_user_id        = '';
$glpi_requester_group_id    = '';
$glpi_watcher_user_id        = '';
$glpi_watcher_group_id        = '';
$glpi_assign_user_id        = '';
$glpi_assign_group_id        = '';

Les variables facultatives sont utilisées pour contrôler la façon dont les nouveaux tickets sont ouverts et si les observateurs initiaux et les propriétaires de tickets sont utilisés. Utilisez ces variables pour contrôler quels groupes ou utilisateurs sont informés des nouveaux tickets et quand les tickets sont fermés.

Après avoir modifié les scripts, copiez-les ainsi que la classe glpi_api dans le répertoire eventhandler de Nagios. Ensuite, modifiez le fichier Nagios Commands.cfg pour inclure les commandes nécessaires.

Lors du lancement du script, voici le résultat :
Ouverture ticket :

php: Manage Host Tickets: Called Script
php: Manage Host Tickets: EventHost = TESTGLPI
php: Manage Host Tickets: HostState = DOWN
php: Manage Host Tickets: HostStateType = HARD
php: Manage Host Tickets: HostAttempts = 3
php: Manage Host Tickets: MaxHostAttempts = 3
php: Manage Host Tickets: HostProblemID = 170165
php: Manage Host Tickets: LastHostProblemID = 170164
php: Manage Host Tickets: Host 'TESTGLPI' is DOWN, checking state
php: Manage Host Tickets: Host State is HARD, checking last problem ID
php: Manage Host Tickets: Last Problem ID is incremented, checking host attempts
php: Manage Host Tickets: Host Attempts equal Max Host Attempts, creating a new ticket

Fermeture ticket :

php: Manage Host Tickets: Called Script
php: Manage Host Tickets: EventHost = TESTGLPI
php: Manage Host Tickets: HostState = UP
php: Manage Host Tickets: HostStateType = HARD
php: Manage Host Tickets: HostAttempts = 1
php: Manage Host Tickets: MaxHostAttempts = 3
php: Manage Host Tickets: HostProblemID = 0
php: Manage Host Tickets: LastHostProblemID = 170165
php: Manage Host Tickets: Host 'TESTGLPI' is UP, checking last problem ID
php: Manage Host Tickets: Last Problem ID does not equal UP, searching for tickets to close
php: Manage Host Tickets: Found tickets to close, closing each ticket

Merci à tous pour votre aide.

Last edited by Shaguu (2021-06-28 16:01:30)

Offline

#6 2021-06-29 03:29:47

cconard96
Moderator
Registered: 2018-07-31
Posts: 2,807
Website

Re: Utilisation API GLPI v9.5.x

Eh bien, je ne peux même pas l'obtenir pour ouvrir des tickets lorsqu'un service tombe en panne et il y a eu des problèmes même en exécutant le script en suivant les instructions sur leur blog.  Je ne pense pas pouvoir t'aider.


GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.

Offline

#7 2021-06-29 18:29:14

Shaguu
Member
Registered: 2021-06-27
Posts: 7

Re: Utilisation API GLPI v9.5.x

@cconard96 Merci tout de même smile

Pour information, j'ai utilisé la fonctionnalité "Impersonate" de GLPI pour me connecter en lieu et place du compte utilisé pour créer les tickets.
J'ai pu le passer en statut "Résolu" via le dropdown puis "Sauver" sans aucune erreur ..
J'imagine que cela indique qu'il ne peut pas s'agir d'un problème de droit ?

En testant davantage le code, je peux récupérer dans un tableau les tickets avec le titre correspondant ("is down!").
J'ai tenté différentes choses sur la partie $glpi->updateItem('Ticket', $post);, à savoir un autre statut mais cela ne change rien.

Est-il possible que l'item "Ticket" ne puisse pas être mis à jour ? sad

Merci encore pour votre aide.

Offline

#8 2021-06-30 02:53:31

cconard96
Moderator
Registered: 2018-07-31
Posts: 2,807
Website

Re: Utilisation API GLPI v9.5.x

Il y a plusieurs problèmes avec le code existant :
Il fait référence à TicketFollowup qui était précédemment obsolète et entièrement supprimé I. 9.5.  Il a été remplacé par ITILFollowup.
Il y avait beaucoup de code redondant qui rendait le débogage difficile.

J'ai commencé à nettoyer le code et j'ai pu faire fonctionner au moins les fonctionnalités minimales.
https://github.com/cconard96/Nagios-Eve … s-for-GLPI

Une différence principale est que mon référentiel met la configuration dans un seul fichier et le "glpi_host" n'est que l'URL de votre GLPI et ne contient pas "/apirest.php".  Par exemple "http://glpi.example.com" ou "http://example.com/glpi".

Je pense que le problème que vous avez rencontré était dû au fait qu'il recherchait uniquement de nouveaux tickets (aucun technicien n'a été affecté), mais au moins pour moi, il a automatiquement affecté l'utilisateur utilisé pour créer les tickets, de sorte que le statut était différent.  Je l'avais modifié pour vérifier tout ticket non fermé (type de recherche "notcontains" et valeur "6").


GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.

Offline

#9 2021-06-30 22:34:15

Shaguu
Member
Registered: 2021-06-27
Posts: 7

Re: Utilisation API GLPI v9.5.x

Bonsoir cconard96,

Encore une fois, merci du temps que tu accordes à mon problème. Malheureusement, je ne suis pas parvenu à faire fonctionner la clôture des tickets mème avec ton code, que ce soit sur les services ou les hôtes.
La seule différence est que le statut doit être à 5 et non pas 6 mais cela ne fonctionne pas davantage …
J’avoue ne pas savoir où chercher pour tenter de résoudre ce problème par mi-même. Je ne parviens pas à obtenir un message d’erreur pour aiguiller mes tentatives. Il y a plusieurs exemples d’utilisations de cURL sur Internet mais mes compétences en la matière ne m’aide pas !

Merci tout de même !

Offline

Board footer

Powered by FluxBB