Écrit par

Associate professor at Igor Sikorsky Kyiv Polytechnic Institute
Article Iryna Mykhailova · Mars 23 4m read

Gestionnaire de configuration IRIS - Une extension de navigateur open-source pour faciliter la comparaison entre différentes instances IRIS/Cache identiques !

Le problème

Combien de fois avons-nous migré une instance IRIS vers une autre machine, voire vers une autre version, pour nous rendre compte quelques jours plus tard que nous avions oublié cette configuration SSL pourtant critique pour le bon fonctionnement d’un Business Operation ? Ou peut-être des identifiants, ou encore une classe isolée dans son propre package ?

La solution

La solution la plus simple consiste à créer une checklist¹. Une liste des éléments à migrer. Mais les checklists dans des documents Word sont souvent oubliées, voire ignorées. C’est un principe de base en management : si vous voulez que les gens suivent des processus, vous pouvez :

  1. Les y contraindre en surveillant leurs actions ;
  2. Verrouiller systématiquement une activité derrière un processus (comme utiliser des pipelines pour déployer du code et exiger des tests automatisés pour valider une PR) ;
  3. Rendre le processus plus simple et plus pratique que l’action manuelle. Ainsi, les gens auront envie de l’utiliser. (C’est l’objectif ici)

Un script Python aurait été tout aussi simple. Mais les gens peuvent oublier où se trouve leur script, ou où le télécharger. Les nouvelles versions devraient être téléchargées à nouveau par tous les utilisateurs. Une classe ou une tâche IRIS semble également idéale, jusqu’à ce que l’on réalise que parfois on migre vers un serveur sur un autre réseau, et qu’une instance ne peut pas accéder à l’autre.

C’est pourquoi j’ai choisi une extension de navigateur. Une fois installée, elle est toujours accessible en un clic, même si vous ne l’utilisez pas pendant des mois. Les mises à jour sont installées automatiquement. Même si vous changez de navigateur ou perdez l’extension, son installation depuis le store reste à portée de clic. Et étant donné que vous aurez toujours besoin d’accéder au portail d’administration des deux serveurs (pas forcément en même temps si vous devez changer de VPN, par exemple), l’extension pourra toujours accéder aux deux serveurs.

> ¹La solution complexe (et meilleure) consisterait à automatiser entièrement le processus de migration. Cependant, avec les différentes versions d’IRIS/Cache, cela devient beaucoup plus compliqué.

Que compare-t-il exactement ?

Au moment de la rédaction, l’outil compare 8 configurations %SYS et 5 pour chaque namespace. L’implémentation étant très simple, il est facile d’ajouter de nouvelles configurations à exporter.

Portée Entité
%SYS Namespaces
%SYS Tâches
%SYS Applications Web
%SYS Connexions SQL
%SYS Utilisateurs
%SYS Rôles
%SYS Ressources
%SYS SSL
Namespaces Classes
Namespaces Globals
Namespaces Identifiants
Namespaces Éléments de production
Namespaces Tables de correspondance

Comment l’utiliser ?

J’ai essayé de le rendre aussi simple que possible :

  1. Installez l’extension pour votre navigateur. Actuellement, Chrome et Firefox sont pris en charge.
  2. Ouvrez le portail d’administration de l’instance source.
  3. Cliquez sur « Save Server Data ».

  4. Ajoutez vos identifiants, puis cliquez sur « Install and Continue ». (nécessaire uniquement lors de la première configuration d’une instance)

Ici, j’utilise l’utilisateur _SYSTEM uniquement à des fins de démonstration. Vous devez utiliser le même utilisateur que celui utilisé pour vous connecter au portail.

  1. Ouvrez le portail d’administration de l’instance cible.
  2. Cliquez sur « Compare to saved server ».

  3. Ajoutez vos identifiants, puis cliquez sur « Install and Continue ». (nécessaire uniquement lors de la première configuration d’une instance)
  4. Consultez les résultats.

Comment cela fonctionne-t-il ?

> N’oubliez pas que vous pouvez consulter tous les détails dans le dépôt GitHub !

La fonctionnalité principale repose sur une seule classe ObjectScript. Elle contient :

  • Une méthode principale appelée par l’application web pour retourner un JSON complet ;
  • Une méthode pour récupérer chaque configuration et la renvoyer sous forme d’objet dynamique ;
  • Une méthode de configuration qui crée l’application web de manière programmatique, destinée à être appelée comme une procédure stockée via le point d’accès /api/atelier/query.

Voici les requêtes actuellement utilisées pour chaque entité :

Entité Requête
Namespaces SELECT * FROM Config.Namespaces_List()
Tâches SELECT * FROM %SYS.Task WHERE Type = 2
Applications Web SELECT * FROM Security.Applications WHERE Type = 2
Connexions SQL SELECT * FROM %Library.sys_SQLConnection
Utilisateurs SELECT * FROM Security.Users
Rôles SELECT * FROM Security.Roles
Ressources SELECT * FROM Security.Resources
SSL SELECT * FROM Security.SSLConfigs
Classes SELECT * FROM %Library.RoutineMgr_StudioOpenDialog('*.cls',1,1,0,1,0,0) WHERE Name NOT LIKE 'Ens.%' AND Name NOT LIKE 'EnsLib.%' AND Name NOT LIKE 'EnsPortal.%' AND Name NOT LIKE 'CSPX.%' AND Name NOT LIKE 'HS.%' AND Name NOT LIKE 'HSMOD.%' AND Name NOT LIKE 'SchemaMap.%' AND Name NOT LIKE 'WebTerminal.%'
Globals SELECT * FROM %SYS.GlobalQuery_NameSpaceList()
Identifiants SELECT * FROM Ens_Config.Credentials
Éléments de production SELECT * FROM Ens_Config.Item WHERE Production = ?
Tables de correspondance SELECT * FROM Ens_Util.LookupTable

Conclusion

Il s’agit d’un projet en cours de développement, et tous les retours sont les bienvenus. N’hésitez pas à laisser un commentaire ou à créer une issue sur le dépôt GitHub.

Si vous souhaitez contribuer activement, créez votre propre fork et proposez des pull requests. Si vous souhaitez vous impliquer davantage, contactez-moi pour être ajouté comme contributeur direct au dépôt.

TL;DR

J’ai créé une extension de navigateur open source pour exporter et comparer les configurations entre différentes instances IRIS/HS. Vous pouvez consulter le code ici, et l’installer sur Chrome ou sur Firefox.