Travaux pratiques : gesttion des données
========================================

Se connecter à https://trac.lal.in2p3.fr/GridSupport/wiki/Tutorial/DataMgt
pour faire les travaux pratiques.

Avant de voir les solutions ci-dessous, essayer d'y arriver par vous-mêmes :

Main Data Management Commands
==============================
Solution Exercises 
==================

1. lcg-infosites --vo vo.ipno.in2p3.fr se
   lcg-infosites --vo dteam se

2. setenv MY_TEST_FILE test_tuto_$USER (csh)
   ou 
   export MY_TEST_FILE=test_tuto_$USER (bash)

   cp /etc/hosts /tmp/${MY_TEST_FILE}
   lcg-cr -v -d ipnsedpm.in2p3.fr file:/tmp/${MY_TEST_FILE} \
   -l /grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
   Si ça ne marche pas, ajouter l'option '--vo vo.ipno.in2p3.fr'
   N.B.: Dans ce cas, pour ne pas avoir à taper le nom de la VO, faire:
   setenv LCG_GFAL_VO vo.ipno.in2p3.fr

3. lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
4. lcg-ls -l lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
5. lcg-lg lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
6. lcg-rep -v -d grid05.lal.in2p3.fr  lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
7. lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
8. lcg-cp :
   * Avec GUID:
     lcg-lg lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
     lcg-cp -v guid:... /tmp/${MY_TEST_FILE}_1 
     (ou file://tmp/${MY_TEST_FILE}_1 ou file:/tmp/${MY_TEST_FILE}_1)
   * Avec LFN:
     lcg-cp -v lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE} /tmp/${MY_TEST_FILE}_2
   * Avec SURL:
     N.B.: le SURL commence par srm  ==>
     lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
     lcg-cp -v srm://... /tmp/${MY_TEST_FILE}_3 

9. lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
   lcg-del -v srm://...
   lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
10.lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
   lcg-del -v srm://...
   lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
11. Faire 2. et 6. 
    lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
    lcg-del -a lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}
    lcg-lr lfn:/grid/vo.ipno.in2p3.fr/${MY_TEST_FILE}

Using File Catalog (pas d'exercice sur le wiki)
=================================================
N.B.: vérifier que la varibale LCG_CATALOG_TYPE=lfc

1) Créez dans le LFC un directory avec votre nom et y créez deux 
   sous-directories data1 et data2
   lfc-mkdir -p /grid/vo.ipno.in2p3.fr/$USER/data1
   lfc-mkdir -p /grid/vo.ipno.in2p3.fr/$USER/data2
   lfc-ls -l /grid/vo.ipno.in2p3.fr/$USER
   ==> Vous retrouvez les directories data1 et data2
2) Avec lcg-cr enregistrer un fichier dans chaque sous-directory data1 et data2
  lcg-cr -v -d ipnsedpm.in2p3.fr file:/etc/hosts \
  -l /grid/vo.ipno.in2p3.fr/$USER/data1/file1.dat
  lcg-cr -v -d ipnsedpm.in2p3.fr file:/etc/hosts \
  -l /grid/vo.ipno.in2p3.fr/$USER/data2/file2.dat
  lfc-ls -lR /grid/vo.ipno.in2p3.fr/$USER

3) Supprimer file1.dat
lcg-del -a lfn:/grid/vo.ipno.in2p3.fr/$USER/data1/file1.dat

4) Usage de la variable LFC_HOME
  Avec LFC_HOME, on peut définir son "home" dans le LFC.

  setenv LFC_HOME /grid/vo.ipno.in2p3.fr/$USER
  (ou export LFC_HOME=/grid/vo.ipno.in2p3.fr/$USER)
  lfc-ls (équivaut ici à 'lfc-ls /grid/vo.ipno.in2p3.fr/$USER')
  Supprimer file2.dat
  lfc-ls data2/file2.dat
5) Supprimer les sous-directories data1 et data2
  lfc-rm -r data1 (avec -f)
  lfc-rm -r data2
  lcg-del -a lfn:data2/file2.dat
  lfc-rm -r data2
  lfc-ls pour vérifier
  N.B.: rfrm refuse d'effacer un répertoire contenant des fichiers. 

Access Data on the Grid from a Job
===================================

Selectionner un CE en fonction des data
---------------------------------------

1. Examiner le fichier InputData.jdl et le script InputData.sh
2. Vérifier avec lfc-ls que le fichier 
   lfn:/grid/vo.lal.in2p3.fr/loomis-toto.txt existe
3. Afficher avec glite-wms-job-list-match la liste des CEs utilisables
   pour ce job
4. Modifier InputData.sh et lancer le job et vérifier qu'il s'est bien passé.
5. Remplacer toto par tutu dans InputData.jdl et afficher avec 
   glite-wms-job-list-match la liste des CEs utilisables. La liste doit etre
   vide.

Automatiser le transfert de fichier vers un SE
-----------------------------------------------

1. Examiner OutputData.jdl et OutputData.sh. Que fait se job ?
2. Modifier le pour qu'il puisse s'exécuter sans erreur ?
3. Vérifier par lfc-ls et lcg-cp que le fichier créé par le job a bien éte
   mis sur le SE.   
Supprimer les fichiers inutiles avec lcg-del /

lcg-utils recursifs
====================
Les lcg-utils ne travaillent que sur un fichier à la fois. Si vous voulez faire
une opération recursive, il faut télécharger 
https://grid.ct.infn.it/twiki/pub/GILDA/Lcg-rec-tools/lcg-rec-tools.tar.gz
Ensuite :

* tar xvf lcg-rec-tools.tar
* cd lcg-rec-tools

Les lcg-rec-tools sont déjà présents sur le UI de l'IPNO

* Exemples (pour s'en inspirer):
  1) copie/enregistrement recursif de /nfs1/scratch/xrootd2 dans
     /grid/dteam/diarra
    lcg-rec-cr --vo dteam -lp /nfs1/scratch/xrootd2 -cp /grid/dteam/diarra \
    -se ipnsedpm.in2p3.fr -v
  2) Suppression recursive de /grid/dteam/diarra/xrootd2
     lcg-rec-del --vo dteam -cp /grid/dteam/diarra/xrootd2 -v
  3) Essayer d'utiliser lcg-rec-cp
