source: trunk/libIGCM/AA_move-and-rename @ 1040

Last change on this file since 1040 was 1031, checked in by sdipsl, 10 years ago

See #187 RebuildFromArchive is deprecated

  • Property svn:keywords set to Revision Author Date
File size: 16.1 KB
Line 
1#!/bin/ksh
2
3#**************************************************************
4# Author: Martial Mancip
5# Contact: Martial.Mancip__at__ipsl.jussieu.fr
6# $Revision::                                          $ Revision of last commit
7# $Author::                                            $ Author of last commit
8# $Date::                                              $ Date of last commit
9# IPSL (2006)
10#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
11#
12#**************************************************************
13
14#D- Task type (computing or post-processing)
15TaskType=post-processing
16
17# Change SpaceName/ExperimentName/JobName names and path for a simulation during the run.
18# !! Be careful that the job is suspended before using this script !!
19# You may call this script with those four variables already defined, or modify directly
20# default values under here :
21
22# New Name Space of this experience
23NEW_SpaceName=${NEW_SpaceName:=DEVT}
24
25# New Expericence class of the run
26NEW_ExperimentName=${NEW_ExperimentName:=NEWExperimentName}
27
28# New JobName of the run
29NEW_JobName=${NEW_JobName:=NEWJobName}
30
31SUBMIT_DIR=${SUBMIT_DIR:=my_path_to_my_SUBMIT_DIR}
32
33# verbosity
34Verbosity=3
35
36########################################################################
37
38# Path to modipsl
39MODIPSL=${MODIPSL:=::modipsl::}
40
41#D- Path to libIGCM
42#D- Default : value from AA_job if any
43# WARNING For StandAlone use : To run this script on some machine (ulam and cesium)
44# WARNING you must check MirrorlibIGCM variable in sys library.
45# WARNING If this variable is true, you must use libIGCM_POST path instead
46# WARNING of your running libIGCM directory.
47libIGCM=${libIGCM:=::modipsl::/libIGCM}
48
49DEBUG_sys=false
50DEBUG_debug=false
51
52########################################################################
53
54. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh
55. ${libIGCM}/libIGCM_card/libIGCM_card.ksh
56. ${libIGCM}/libIGCM_date/libIGCM_date.ksh
57#-------
58. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh
59. ${libIGCM}/libIGCM_config/libIGCM_config.ksh
60#-------
61( ${DEBUG_debug} ) && IGCM_debug_Check
62( ${DEBUG_debug} ) && IGCM_card_Check
63( ${DEBUG_debug} ) && IGCM_date_Check
64
65########################################################################
66# define local functions
67
68# Function to replace OLD JobName in file
69
70function REPLACE_sed
71{
72  IGCM_debug_PushStack "REPLACE_sed"
73  typeset RET
74
75  FILEIN=${1}
76  FILEOUT=$( basename ${FILEIN} )
77
78  sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" \
79  ${1} > ${RUN_DIR_PATH}/${FILEOUT}
80  RET=$?
81
82  touch --reference=${1} ${RUN_DIR_PATH}/${FILEOUT}
83  IGCM_sys_Mv ${RUN_DIR_PATH}/${FILEOUT} ${2}
84  chmod --reference=${1} ${2}/${FILEOUT}
85
86  IGCM_sys_Rm -f ${1}
87
88  IGCM_debug_Print 3 "REPLACE_sed : ${1} ${2}"
89
90  IGCM_debug_PopStack "REPLACE_sed"
91  return $RET
92}
93
94function MOVE_and_RENAME_files
95{
96  IGCM_debug_PushStack "MOVE_and_RENAME_files"
97
98  typeset VAR_files FILE_OUT file i RET
99
100  VAR_files=${1}
101  eval VAR1=\${${VAR_files[0]}}
102
103  if [ X$( echo ${NEW_R_SAVE} | grep ${config_UserChoices_JobName} ) != X ]; then
104    set +A FILE_OUT -- $( eval echo \${${VAR_files}[*]} | sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" )
105    ((i=0))
106    for file in ${FILE_OUT[@]} ; do
107      FILE_OUT[$i]=$( dirname $file )/$( echo $( basename $file ) | sed -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" )
108      (( i = i + 1 ))
109    done
110  else
111    set +A FILE_OUT -- $( eval echo \${${VAR_files}[*]} | sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" )
112  fi
113  IGCM_debug_Print 3 "MOVE_and_RENAME_files all : ${VAR1}"
114  IGCM_debug_Print 3 "    to     ${FILE_OUT}."
115
116  (( ifile = 0 ))
117  for file_o in ${FILE_OUT[@]} ; do
118    eval IGCM_sys_Mv \${${VAR_files}[${ifile}]} ${file_o}
119    RET=$?
120    (( ifile = ifile + 1 ))
121  done
122
123  IGCM_debug_PopStack "MOVE_and_RENAME_files"
124  return $RET
125}
126
127function MY_DODS_Cp
128{
129  IGCM_debug_PushStack "MY_DODS_Cp"
130
131  typeset old_JobName old_R_DODS
132  IGCM_sys_Cd ${NEW_R_SAVE}
133  old_JobName=${config_UserChoices_JobName}
134  old_R_DODS=${R_DODS}
135  old_R_SAVE=${R_SAVE}
136
137  config_UserChoices_JobName=${NEW_JobName}
138  R_DODS=${NEW_R_DODS}
139  R_SAVE=${NEW_R_SAVE}
140
141  IGCM_sys_Dods_Cp ${1}
142  IGCM_debug_Print 3 "MY_DODS_Cp : ${config_UserChoices_JobName}/${1}"
143  IGCM_sys_Cd ${RUN_DIR_PATH}
144
145  config_UserChoices_JobName=${old_JobName}
146  R_DODS=${old_R_DODS}
147  R_SAVE=${old_R_SAVE}
148
149  IGCM_debug_PopStack "MY_DODS_Cp"
150}
151
152function MY_DODS_Rm
153{
154  IGCM_debug_PushStack "MY_DODS_Rm"
155  DEBUG_debug=false
156
157  IGCM_sys_Cd ${R_SAVE}
158  IGCM_sys_Dods_Rm ${1}
159  IGCM_debug_Print 3 "MY_DODS_Rm : ${config_UserChoices_JobName}/${1}"
160  IGCM_sys_Cd ${RUN_DIR_PATH}
161
162  IGCM_debug_PopStack "MY_DODS_Rm"
163}
164########################################################################
165
166if [ ! -d ${SUBMIT_DIR} ]; then
167  IGCM_debug_Print 1 "No ${SUBMIT_DIR}, we stop here"
168  exit 1
169fi
170
171# We temporary change ${run_Configuration_PeriodState} to
172if [ -f ${SUBMIT_DIR}/run.card ] ; then
173  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState
174  if ( [ ${run_Configuration_PeriodState} != "Start" ] && [ ${run_Configuration_PeriodState} != "Running" ] && [ ${run_Configuration_PeriodState} != "OnQueue" ] && [ ${run_Configuration_PeriodState} != "Continue" ] ) ; then
175    old_run_Configuration_PeriodState=${run_Configuration_PeriodState}
176    IGCM_debug_PrintVariables 2 old_run_Configuration_PeriodState
177    IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState "OnQueue"
178  fi
179fi
180
181IGCM_config_Initialize
182
183if [ -f ${SUBMIT_DIR}/run.card ] ; then
184  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateBegin
185  IGCM_debug_PrintVariables 2 run_Configuration_PeriodDateBegin
186  if [ X${old_run_Configuration_PeriodState} != X"Completed" ] ; then
187    DateEnd=$( IGCM_date_AddDaysToGregorianDate $( IGCM_date_ConvertFormatToGregorian ${PeriodDateBegin} ) -1 )
188  else
189    DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} )
190  fi
191else
192  DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} )
193fi
194
195IGCM_debug_Print 1 ""
196IGCM_debug_Print 1 "DateEnd for MoveJob_Checker : " ${DateEnd}
197IGCM_date_GetYearMonth ${DateEnd}   YearEnd   MonthEnd
198IGCM_debug_Print 1 "YearEnd MonthEnd for TimeSeries_Checker : " ${YearEnd} ${MonthEnd}
199IGCM_debug_Print 1 ""
200
201#set -vx
202
203#====================================================
204#DEFINE NEW_R_SAVE
205if [ X${config_UserChoices_SpaceName} != X ] ; then
206  NEW_SAVE=${config_UserChoices_TagName}/${NEW_SpaceName}
207else
208  NEW_SAVE=${config_UserChoices_TagName}
209fi
210if [ X${config_UserChoices_ExperimentName} != X ] ; then
211  NEW_SAVE=${NEW_SAVE}/${NEW_ExperimentName}
212fi
213
214NEW_R_SAVE=${R_OUT}/${NEW_SAVE}/${NEW_JobName}
215
216IGCM_debug_Print 1 "Move ${R_SAVE} to ${NEW_R_SAVE}"
217if [ -d ${NEW_R_SAVE} ] ; then
218  IGCM_debug_Print 1 "ERROR : ${NEW_R_SAVE} directory already exist !"
219  IGCM_debug_Print 1 "We won't try to  We stop here."
220  exit 1
221fi
222IGCM_sys_MkdirArchive ${NEW_R_SAVE}
223
224# ------------------------------------------------------------------
225# Test if all was right before proceeding further
226# ------------------------------------------------------------------
227IGCM_debug_Verif_Exit_Post
228
229#DEFINE NEW_R_DODS
230NEW_R_DODS=${NEW_SAVE}/${NEW_JobName}
231
232# Define NEW_REBUILD_DIR
233if [ -d ${REBUILD_DIR} ] ; then 
234  NEW_REBUILD_DIR=${BIG_DIR}/${config_UserChoices_TagName}/${NEW_JobName}
235  IGCM_sys_MkdirWork ${NEW_REBUILD_DIR}
236fi
237
238#====================================================
239# SAVE LOCAL WORKING DIR
240IGCM_sys_Cd ${RUN_DIR_PATH}
241
242#====================================================
243#Exe
244IGCM_debug_Print 1 "Move Exe"
245set +A listfiles -- $( find ${R_SAVE}/Exe -type f )
246
247IGCM_sys_MkdirArchive ${NEW_R_SAVE}/Exe
248MOVE_and_RENAME_files "listfiles"
249
250#====================================================
251#Out
252IGCM_debug_Print 1 "Move Out"
253OutinDir=${R_SAVE}/Out
254OutNEWDir=${NEW_R_SAVE}/Out
255IGCM_sys_MkdirArchive ${OutNEWDir}
256
257# Change JobName and copy run.card
258if [ -f ${OutinDir}/run.card ] ; then
259  sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \
260    ${OutinDir}/run.card > ${RUN_DIR_PATH}/run.card
261  RET=$?
262  if [ ${RET} = 0 ] ; then
263    IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${OutNEWDir}
264    IGCM_sys_Rm -f ${OutinDir}/run.card
265  fi
266fi
267
268# Just copy historical run.card
269unset listfiles
270set +A listfiles -- $( find ${OutinDir} -type f -name "run.card\.[0-9]*\.[0-9]*" )
271if [ ${#listfiles[*]} -gt 0 ] ; then
272  IGCM_sys_Cp ${listfiles[*]} ${OutNEWDir}
273  RET=$?
274  if [ ${RET} = 0 ] ; then
275    IGCM_sys_Rm -f ${listfiles[*]}
276  fi
277fi
278
279# Move and Rename OLD Script_Output
280unset listfiles
281set +A listfiles -- $( find ${OutinDir} -type f -name "Script_Output_*\.[0-9]*\.[0-9]*" )
282MOVE_and_RENAME_files "listfiles"
283
284# Move and Rename OLD Executable Output
285unset listfiles
286set +A listfiles -- $( find ${OutinDir} -type f -name "*_out_execution" )
287MOVE_and_RENAME_files "listfiles"
288
289#====================================================
290IGCM_debug_Print 1 "For components"
291IGCM_debug_Print 1 "=============="
292
293#====================================================
294#Output
295# loop over components and frequencies
296IGCM_debug_Print 1 "Move Output"
297for comp in ${config_ListOfComponents[*]} ; do
298  IGCM_debug_Print 2 "------------------"
299  IGCM_debug_Print 2 "for component ${comp}"
300
301  unset FREQDIR
302  set +A FREQDIR -- $( find ${R_SAVE}/${comp}/Output -type d -not -name "*Output" )
303
304  IGCM_debug_Print 3 "List of WriteFrequencies : ${FREQDIR[*]}"
305
306  for ThisfreqDir in ${FREQDIR[*]} ; do
307    freq=$( basename ${ThisfreqDir} )
308    IGCM_debug_Print 2 "${freq}."
309
310    NEW_freqDir=${NEW_R_SAVE}/${comp}/Output/${freq}
311    IGCM_sys_MkdirArchive ${NEW_freqDir}
312
313    unset listfiles
314    set +A listfiles -- $( find ${ThisfreqDir} -type f )
315
316    MOVE_and_RENAME_files "listfiles"
317  done
318
319  unset COMPFILES
320  set +A COMPFILES -- $( find ${R_SAVE}/${comp}/Output -type f )
321
322  if [ ${#COMPFILES[*]} -gt 0 ] ; then
323    IGCM_debug_Print 2 "simple Output FILES : ${COMPFILES[*]}."
324
325    MOVE_and_RENAME_files "COMPFILES"
326  fi
327done
328
329#====================================================
330#Restart
331# loop over components
332IGCM_debug_Print 1 "Move Restart"
333for comp in ${config_ListOfComponents[*]} ; do
334  IGCM_debug_Print 2 "------------------"
335  IGCM_debug_Print 2 "for component ${comp}"
336
337  ThisRestDir=${R_SAVE}/${comp}/Restart
338  NEW_RestDir=${NEW_R_SAVE}/${comp}/Restart
339  IGCM_sys_MkdirArchive ${NEW_RestDir}
340
341  unset listfiles
342  set +A listfiles -- $( find ${ThisRestDir} -type f )
343
344  MOVE_and_RENAME_files "listfiles"
345done
346
347#====================================================
348#DEBUG
349# Move and Rename OLD Executable Output
350# loop over components
351IGCM_debug_Print 1 "Move Debug"
352for comp in ${config_ListOfComponents[*]} ; do
353  IGCM_debug_Print 2 "------------------"
354  IGCM_debug_Print 2 "for component ${comp}"
355
356  ThisDebugDir=${R_SAVE}/${comp}/Debug
357  NEW_DebugDir=${NEW_R_SAVE}/${comp}/Debug
358  IGCM_sys_MkdirArchive ${NEW_DebugDir}
359
360  unset listfiles
361  set +A listfiles -- $( find ${ThisDebugDir} -type f )
362
363  MOVE_and_RENAME_files "listfiles"
364done
365
366#====================================================
367#POST
368# loop over components and frequencies
369IGCM_debug_Print 1 "Move Analyse"
370for comp in ${config_ListOfComponents[*]} ; do
371  IGCM_debug_Print 2 "------------------"
372  IGCM_debug_Print 2 "for component ${comp}"
373
374  if [ -d ${R_SAVE}/${comp}/Analyse ] ; then
375    unset TSDIR
376    set +A TSDIR -- $( find ${R_SAVE}/${comp}/Analyse -name "TS_*" -type d )
377
378    for ThisTSDir in ${TSDIR[*]} ; do
379      TS_Dir=$( basename ${ThisTSDir} )
380      IGCM_debug_Print 2 "${TS_Dir}."
381
382      NEW_TSDir=${NEW_R_SAVE}/${comp}/Analyse/${TS_Dir}
383      IGCM_sys_MkdirArchive ${NEW_TSDir}
384
385      MY_DODS_Rm ${comp}/Analyse/${TS_Dir}
386
387      unset listfiles
388      set +A listfiles -- $( find ${ThisTSDir} -type f )
389
390      MOVE_and_RENAME_files "listfiles"
391
392      MY_DODS_Cp ${comp}/Analyse/${TS_Dir}
393    done
394
395    ThisSEDir=${R_SAVE}/${comp}/Analyse/SE
396    IGCM_sys_TestDirArchive ${ThisSEDir}
397    if [ $? = 0 ] ; then
398      IGCM_debug_Print 2 "SE."
399      NEW_SEDir=${NEW_R_SAVE}/${comp}/Analyse/SE
400      IGCM_sys_MkdirArchive ${NEW_SEDir}
401
402      MY_DODS_Rm ${comp}/Analyse/SE
403
404      unset listfiles
405      set +A listfiles -- $( find ${ThisSEDir} -type f )
406
407      MOVE_and_RENAME_files "listfiles"
408
409      MY_DODS_Cp ${comp}/Analyse/SE
410    fi
411
412    MY_DODS_Rm ${comp}/Analyse
413    MY_DODS_Rm ${comp}
414  else
415    IGCM_debug_Print 2 "nothing to do without Analyse."
416  fi
417
418done
419
420#====================================================
421#GRAPHS
422IGCM_debug_Print 1 "Move ATLAS"
423R_ATLAS=ATLAS
424IGCM_sys_TestDirArchive ${R_SAVE}/${R_ATLAS}
425if [ $? = 0 ] ; then
426  # REPLACE_sed ${NEW_R_SAVE}/${R_ATLAS}/*/*/index.html ${NEW_R_SAVE}/${R_ATLAS}
427
428  MY_DODS_Rm ${R_ATLAS}
429
430  IGCM_sys_Mv ${R_SAVE}/${R_ATLAS} ${NEW_R_SAVE}/${R_ATLAS}
431
432  MY_DODS_Cp ${R_ATLAS}
433fi
434
435IGCM_debug_Print 1 "Move MONITORING"
436R_MONITORING=MONITORING
437IGCM_sys_TestDirArchive ${R_SAVE}/${R_MONITORING}
438if [ $? = 0 ] ; then
439  IGCM_sys_MkdirArchive ${NEW_R_SAVE}/${R_MONITORING}
440  REPLACE_sed ${R_SAVE}/${R_MONITORING}/index.html ${NEW_R_SAVE}/${R_MONITORING}
441  sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \
442  ${R_SAVE}/${R_MONITORING}/run.card > ${RUN_DIR_PATH}/run.card
443  IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${NEW_R_SAVE}/${R_MONITORING}
444  RET=$?
445  if [ ${RET} = 0 ] ; then
446    IGCM_sys_Rm -f ${R_SAVE}/${R_MONITORING}/run.card
447  fi
448  REPLACE_sed ${R_SAVE}/${R_MONITORING}/config.card ${NEW_R_SAVE}/${R_MONITORING}
449  IGCM_sys_Cp -rp ${R_SAVE}/${R_MONITORING} ${NEW_R_SAVE}
450
451  MY_DODS_Rm ${R_MONITORING}
452  IGCM_sys_Rm -rf ${R_SAVE}/${R_MONITORING}
453
454  MY_DODS_Cp ${R_MONITORING}
455fi
456
457
458#====================================================
459#REBUILD
460
461if [ -d ${REBUILD_DIR} ] ; then
462
463  IGCM_debug_Print 1 "Move REBUILD"
464  set +A LISTREBUILDS -- $( find ${REBUILD_DIR} -type d  -not -name "*${config_UserChoices_JobName}" -a -not -name "*TMP" )
465
466  for ThisREBDir in ${LISTREBUILDS[*]} ; do
467    rebdir=$( basename ${ThisREBDir} )
468    IGCM_debug_Print 2 "${rebdir}."
469    IGCM_sys_MkdirWork ${NEW_REBUILD_DIR}/${rebdir}
470    REPLACE_sed ${REBUILD_DIR}/${rebdir}/rebuild.ksh ${NEW_REBUILD_DIR}/${rebdir}
471    IGCM_sys_Mv -f ${REBUILD_DIR}/${rebdir}/* ${NEW_REBUILD_DIR}/${rebdir}/
472  done
473fi
474
475#====================================================
476#List OLD R_SAVE and Ask for erase it !
477
478IGCM_debug_Print 1 "ls of SAVE DIR :"
479ls --color -lR ${R_SAVE}
480
481echo "\033[1;31mPlease verify that ALL OLD DIRECTORY LISTED IS COMPLETLY EMPTY !"
482echo "\033[1;32mIf It is NOT EMPTY, you can TRY AGAIN this script."
483echo "\033[1;31mDo you REALLY want to erase all this directory ?"
484echo -n " Your answer (y/n) : \033[m"
485if [ X${reponse} = X ] ; then
486  read reponse
487fi
488case ${reponse} in
489
490  oui|OUI|o|y|yes|YES)
491    echo "OK. It will be erased."
492    IGCM_sys_Rm -Rf ${R_SAVE}
493    echo "done."
494    ;;
495  non|NON|n|no|NO)
496    echo "Nothing to do !"
497    ;;
498esac
499
500
501#############################################################################################################
502# Edit config.card, run.card and Job_${NewJobName}
503
504IGCM_debug_Print 1 "edit config.card"
505if [ X${config_UserChoices_SpaceName} != X ] ; then
506  IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices SpaceName ${NEW_SpaceName}
507fi
508if [ X${config_UserChoices_ExperimentName} != X ] ; then
509  IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices ExperimentName ${NEW_ExperimentName}
510fi
511IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices JobName ${NEW_JobName}
512
513if [ -f ${SUBMIT_DIR}/run.card ] ; then
514  IGCM_debug_Print 1 "edit run.card"
515  sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \
516  ${SUBMIT_DIR}/run.card > ${RUN_DIR_PATH}/run.card
517  IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${SUBMIT_DIR}/run.card
518
519  if [ X${old_run_Configuration_PeriodState} != X ] ; then
520    IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState ${old_run_Configuration_PeriodState}
521  fi
522fi
523
524if [ -f ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} ] ; then
525  IGCM_debug_Print 1 "edit Job_${NEW_JobName}"
526  sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" \
527  ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} > ${SUBMIT_DIR}/Job_${NEW_JobName}
528  chmod --reference=${SUBMIT_DIR}/Job_${config_UserChoices_JobName} ${SUBMIT_DIR}/Job_${NEW_JobName}
529  ls -la ${SUBMIT_DIR}/Job_${NEW_JobName}
530fi
Note: See TracBrowser for help on using the repository browser.