Pages enfant
  • Notes pour une migration 4.0 vers 4.3 ...

Vous regardez une version antérieure (v. /wiki/pages/viewpage.action?pageId=481329160) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 12) afficher la version suivante »

Migration du package

Si vous avez des modifications de code, vous pouvez faire un pull (merge) de votre esup-uportal pour récupérer la 4.2 - vous aurez alors forcément des conflits à résoudre.

Dans la majorité des cas, il sera cependant plus simple de repartir d'une version esup-uportal 4.2 fraiche.

L'implémentation du thème étant complètement refondue (university -> respondr), vous devrez réimplementer complètement vos ajustements graphiques.

Le fichier de configuration principal filters/esup.properties est par contre "très" semblable et vous pouvez le reprendre complètement a priori.

L'intégration du driver correspondant à la base de données choisi (postgresql par exemple) se fait maintenant non plus dans le pom.xml principal mais dans uportal-db/pom.xml.

 

Migration des données

Le changement de thème en respondr est l'occasion de revoir votre ENT. Comme conseillé sur les documentations Jasig https://wiki.jasig.org/display/UPM41/Database+Changes et https://wiki.jasig.org/display/UPM42/Upgrade+Data+Import il semble préférable de repartir d'une base vierge (initdb).

Suivant l'importance (en quantité) des données (nombre de portlets définis, de groupes ...) il peut être intéressant de récupérer tout de même les anciennes données dans votre nouvel ENT.

Les documentations Jasig (pages données ci-dessus) doivent vous aider à faire cela. Nous allons ici tenter de donner quelques informations également vous facilitant cette tâche.

Mode opératoire

L'idée est de conserver un ENT dans l'ancienne version - nos tests ont été faits ici avec un esup-uportal en version 4.0  (version uportal-4.0.15-esup-2 dans nos tests).

Depuis cet ancien ENT, on va procéder à des exports de données.

On procédera aux imports sur le nouvel ENT (4.2).

Entre deux, on devra parfois modifier la structure des fichiers pour les passer d'une structure de 4.0 à une structure de 4.2 - on utilisera pour ce faire des commandes bash ou scripts python.

Groupes PAGS

On récupère les groupes PAGS de notre 4.0 en récupérant simplement le fichier uportal-war/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml

Les groupes PAGS sont maintenant stockés en base de données, on peut les importer via une commande ant data-import, mais il faut pour ce faire disposer d'un fichier XML PAGS par groupe.

Cf la doc Jasig derrière le lien suivant https://wiki.jasig.org/pages/viewpage.action?pageId=65274412 , la structure du xml a de plus quelque peu changé, il faut donc retravailler vos blocs xml en plus de les découper.

Si vous avez beaucoup de groupes, il est intéressant de procéder à cette restructuration par scripts - comme ici : 

#!/usr/bin/env python                                                                                                                                                                                                                       
# -*- coding: utf-8 -*-    
                                                                                      
import libxml2, sys

doc = libxml2.parseFile("PAGSGroupStoreConfig.xml")
mapId2Name = {
    'desktop_device_access':'Desktop Device Access',
    'mobile_device_access':'Mobile Device Access',
    'respondr_theme_users':'Respondr Theme Users'
}

for n in doc.xpathEval("//group"):
    mapId2Name[n.xpathEval("group-key")[0].getContent()] = n.xpathEval("group-name")[0].getContent()

for n in doc.xpathEval("//group"):
    n.setName('pags-group')
    n.setProp('script', 'classpath://org/jasig/portal/io/import-pags-group_v4-1.crn')

for n in doc.xpathEval("//member-key"):
    n.setName('member-name')
    n.setContent(mapId2Name[n.getContent()])

for n in doc.xpathEval("//group-name"):
    n.setName('name')

for n in doc.xpathEval("//group-description"):
    n.setName('description')

for n in doc.xpathEval("//group-key"):
    n.unlinkNode()

for group in doc.xpathEval("//pags-group"):
    name = group.xpathEval("name")[0].getContent()
    f = open( name + '.pags-group.xml','w')
    group.saveTo(f)
 

 

Puis on réimporte les groupes PAGS ainsi :

ant data-import -Ddir=/tmp/ent42/pags

 

 

group key / name

Notez bien que le group-key a disparu, il ne reste plus que le (group) name !

Cela peut avoir une forte incidence sur les configurations (descripteurs xml, configs en BD comme pour CalendarPortlet, ....) des portlets - notamment les configurations dans lesquelles on spécifie des identifiants de groupes : en effet vous ne pouvez plus identifier un groupe par (exemple) pags.member-univ-rouen mais par son nom directement uniquement ("Université de Rouen" par exemple).

Aussi pour esup-filemanager par exemple (c'est valable pour plein d'auters portlets !), dans le fichier drives.xml vous devrez éventuellement changer les identifiants des groupes - exemple :

<property name="group" value="pags.univ-rouen" /> pourra devenir <property name="group" value="Université de Rouen" />

 

 

Groupes locaux

On récupère les groupes locaux depuis la 4.0 via la commande ant data-export -Ddir=/tmp/ent42 -Dtype=group-membership

On peut alors les réimporter directement depuis la 4.2 ant data-import -Ddir=/tmp/ent42/group-membership

Nouveaux groupes dans uPortal4.2

Les opérations de récupération des groupes fonctionnent bien et peuvent être utiles (dans certaines conditions, comme dit ci-dessus) mais elles ont l'inconvénient de ne pas prendre en compte les nouveaux groupes amenés par uPortal 4.2.

Et ces groupes peuvent s'avérer nécessaire pour pouvoir bénéficier pleinement des nouvelles fonctionnalités comme les tenants par exemple.

Ainsi vous devrez (via des export/import depuis l'IHM) redéfinir certains groupes pour mixer vos groupes spécifiques et les groupes issus de 4.2.

Ainsi le groupe "Everyone" contient les groupes "Tenants" et "Tenant Administrators" par exemple qui n'étaient pas présents avant la 4.2.

"PAGS Root" contient quant à lui le groupe "Respondr Theme Users".

Définitions de portlets

On récupère les définitions de portle depuis la 4.0 via la commande ant data-export -Ddir=/tmp/ent42 -Dtype=portlet-definition

On peut alors les réimporter directement depuis la 4.2 ant data-import -Ddir=/tmp/ent42/portlet-definition

Les définitions de portlets peuvent requérir les groupes (et notamment les groupes pags), d'où le fait d'importer les groupes PAGS avant.

Définition des fragments

Vous pouvez enfin récupérer les fragment-definition en récupérant également avant les user type "lo" (layout owner).

On note cependant qu'on a après cela une erreur du type : 

Could not fetch object for cache entry with key "UserViewKey [ownerId=member-univ-rouen-lo, locale=fr_FR]".

Erreur du même type que pour la migration de données 3.5->4.0. Même symptôme, même "remède" ... : 

insert into "up_user_layout" select '1', user_id, 'default layout', '1' from up_user where user_id not in (select user_id from up_user_layout);

 

Ensuite, et en cas d'erreur du type

No INIT_STRUCT_ID in UP_USER_LAYOUT for USER_ID: 14 and LAYOUT_ID: 1

Il faudra alors ajuster de la sorte :

update up_user set user_dflt_usr_id=10 where user_dflt_usr_id=14;

où 10 est le user_id de l'utilisateur ayant pour user_name "defaultTemplateUser"

 

/* à voir ....

La récupération des fragment-layout posera par contre certainement problèmes ; notamment si des erreurs d'export/import ont pu avoir lieu sur certains éléments ; ce qui fut le cas dans nos tests. Aussi le mieux ici est de rééditer l'ensemble des fragments via l'IHM. 
Opération fastidieuse mais qui peut éventuellement être opérée de manière collaborative, en déléguant par exemple la gestion de certains fragments à des utilisateurs non administrateurs du portail, mais administrateurs de tenants par exemple.

*/


 

 

 

 

 

 

  • Aucune étiquette