ReviewLocks

Principe des verrous

Lorsqu'un item est importé depuis une source externe (OCS, Fusion ou autre) : is_dynamic = 1.
Lors de la suppression d'un item importé dynamiquement : is_deleted=1

Si is_deleted=1 et is_dynamic=1 alors la liaison dynamique est verrouillée.
Le déverrouillage repasse is_deleted à 0.

  • Le coeur de GLPI verrouille les liaisons entre objets
  • Les plugins verouillent les champs (pour OCS dans glpi_plugin_ocsinventoryng_ocslinks le champ computer_update).

Impact sur CommonDBTM

Modification de deleteInDB pour ne pas purger un objet dont is_dynamic=1 mais seulement passer is_deleted=1.

Migration

Ajout de champs

Ajout de champs is_deleted & is_dynamic pour les tables (où cela n'existait pas) :
  • glpi_computers
  • glpi_printers
  • glpi_networkequipments
  • glpi_phones
  • glpi_peripherals
  • glpi_computers_items
  • glpi_softwareversions
  • glpi_softwarelicenses
  • glpi_computervirtualmachines
  • glpi_computerdisks

Impact sur glpi_plugin_ocsinventoryng_ocslinks

Suppression des champs suivants :
  • import_vm
  • import_device
  • import_software
  • import_ip
  • import_printer
  • import_peripheral
  • import_monitor
  • import_disk

Suppression des méthodes de modification de format de ces tableaux.
Pour chaque id d'item dans les tableaux, passer is_dynamic=1 et is_deleted=0 pour l'item correspondant.

Stockage des anciens liens verrouillés

Lors de la migration, les anciennes liaisons dynamiques (par les champs) verrouillées ne le seront plus (puisque l'id glpi correspondant n'existera plus dans GLPI).
Afin de garder une trace on peut stocker ces informations dans une table, qui pourrait être utilisée par la suite.

CREATE TABLE IF NOT EXISTS `OCS_glpi_oldlocks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `computers_id` int(11) NOT NULL DEFAULT '0',
  `itemtype` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

Interface de déverrouillage

GUI

Onglet supplémentaire apparaissant pour les objets dont is_dynamic=1 :
  • liste des liaisons verrouillées du coeur
  • hook pour le listage des champs verouillés des plugins
  • sélection pour déverouillage des champs

Ajout d'une classe Lock qui gère les forms de déverouillage des champs.
Le form de déverouillage liste toutes les liaisons dynamiques, et un hook display_locked_fields permet aux plugins d'afficher dans celui-ci leurs propres infos.

Actions massives

Reporter les actions massives sur le déverrouillage des liaisons depuis le plugin GLPI dans le coeur.
Laisser dans le plugin les actions massives de déverouillage des champs