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 2020-11-23 08:31:36

fabibus
Member
From: Nantes
Registered: 2008-02-05
Posts: 171

Possibilité d'ajouter des actions automatiques

Bonjour,
Serait il possible d'ajouter des actions automatiques dans GLPI. (personnalisés ou non)
Par exemple :
Purge des logiciels (et version) n'ayant aucune installation ou un nombre inférieur à un nombre à renseigner (possibilité de purge de masse )
Vidage corbeille auto (et choisir les corbeilles à nettoyer (logiciels, ordi, réseau, periphériques,...)
Purge des utilisateurs sans habilitations sans connexion depuis 1 an...

Merci,


Plateforme en exploitation : GLPI 10.0.3 + GLPiinventory 10.0.3sur Fedora 36
PHP 8.1.11 ,Apache/2.4.54, mysql 8

Offline

#2 2020-11-24 16:36:01

gaetan.rouxel
Member
Registered: 2018-08-23
Posts: 13

Re: Possibilité d'ajouter des actions automatiques

Bonjour,

Pour faire cela, il me semble que tu vas devoir passer par un plugin.
A valider par un expert GLPI !

Offline

#3 2020-11-26 17:53:51

servain-m
Member
From: Nantes (France)
Registered: 2019-11-18
Posts: 53

Re: Possibilité d'ajouter des actions automatiques

Je suis également intéressé par une solution à ces questions.


Debian 11 + Apache 2.4.56 + PHP 8.2.15 + MariaDB 10.11.6
GLPI 10.0.12 + manufacturersimports 3.0.5 + datainjection 2.13.4 + pdf 3.0.0 + reports 1.16.0

Offline

#4 2020-11-27 04:37:28

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

Re: Possibilité d'ajouter des actions automatiques

I'm not sure how well the translation for this will be since it is pretty technical so apologies in advance that I am English speaking only and am using an online translator.

Français:
Il est assez facile de coder en dur des actions automatiques personnalisées dans un Plugin personnalisé. Le problème se pose lorsque vous souhaitez disposer d'un plugin qui vous permette de créer des actions de manière dynamique (vous créez en fait tout un moteur de workflow ou un BMS avec une interface graphique).
Simplement, vous voulez commencer avec le plugin vide fourni par l'équipe GLPI et dans votre fonction de hook d'installation, avoir :

CronTask::register('PluginMypluginCron', 'myCronFunctionName', 900, [ // Le 900 est la fréquence de cette action en secondes
    état" => 1, // HANDICAPÉ = 0, EN ATTENTE = 1, EN COURS = 2
    allowmode' => 2, // INTERNAL (GLPI Mode) = 1, EXTERNAL (Cron Mode) = 2, Vous pouvez régler ce paramètre sur 3 pour permettre les deux modes de fonctionnement
    loglifetime" => 30, // Nombre de jours pendant lesquels les journaux sont conservés pour cette action
    commentaire" => "Une brève description de ce que fait cette action"
]) ;

Ensuite, dans une classe, une classe nommée pour votre plugin (remplacez "Myplugin" par le nom du répertoire de votre plugin) ajoutez la fonction nommée dans les paramètres ci-dessus et ajoutez-y votre logique de tâche. La fonction doit accepter un paramètre CronTask qui peut être utilisé pour suivre combien d'actions la fonction effectue. Un exemple tiré de mon plugin Jamf :

public static function cronSyncJamf(CronTask $task)
{
    volume = 0 ;
    $engines = PluginJamfSync::getDeviceSyncEngines() ;

    foreach ($engines as $jamf_class => $engine) {
        $v = $engine::syncAll() ;
        $volume += $v >= 0 ? $v : 0 ;
    }
    $task->addVolume($volume) ;

    retour 1 ;
}

Fondamentalement, il exécute ses actions et suit le nombre total d'appareils synchronisés, puis met à jour le compte dans le paramètre CronTask. Le volume est indiqué lors de l'examen des journaux de cette action dans la colonne Nombre.


English (original):
It is quite easy to hard-code custom automatic actions in a custom Plugin. The issue comes when you want to have a plugin that lets you dynamically create actions (You are basically creating a whole workflow engine or BMS with a graphical interface).
Simply, you want to start with the empty plugin provided by the GLPI team and in your install hook function, have:

CronTask::register('PluginMypluginCron', 'myCronFunctionName', 900, [ // The 900 here is the frequency this action runs in seconds
    'state'        => 1, // DISABLED = 0, WAITING = 1, RUNNING = 2
    'allowmode'    => 2, // INTERNAL (GLPI Mode) = 1, EXTERNAL (Cron Mode) = 2, You can set this to 3 to allow both run modes
    'logslifetime' => 30, // Number of days the logs are kept for this action
    'comment'      => "A short description about what this action does"
]);

Then, in a class a class named for your plugin (Replace "Myplugin" with your plugin's directory name) add the function named in the parameters above and add your task logic there. The function should accept a CronTask parameter which can be used to track how many actions the function takes. An example from my Jamf plugin:

public static function cronSyncJamf(CronTask $task)
{
    $volume = 0;
    $engines = PluginJamfSync::getDeviceSyncEngines();

    foreach ($engines as $jamf_class => $engine) {
        $v = $engine::syncAll();
        $volume += $v >= 0 ? $v : 0;
    }
    $task->addVolume($volume);

    return 1;
}

Basically, it runs its actions and tracks how many devices are synced in total and then updates the count in the CronTask parameter. The volume is shown when reviewing the logs for this action in the Number column.


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

Board footer

Powered by FluxBB