1
2
3
4
5
6
7
8
9
10
11
12 import Ganga.Utility.logging
13
14 log = Ganga.Utility.logging.getLogger(name='Ganga.Utility.migrate41to42')
15
16 from Ganga.GPI import *
17
19
20 jobsv41ready = []
21 jobsv41notready = []
22
23
24 for j in jobs:
25
26 v41,ready = _CheckForV41(j)
27 if v41:
28 if ready:
29 jobsv41ready.append(j.id)
30 else:
31 jobsv41notready.append(j.id)
32
33
34 if len(jobsv41ready):
35 log.warning("Job(s) %s were created in (uncompatible) version 4.1 "%jobsv41ready)
36 log.warning("To convert them to version 4.2: JobConvertToV42(jobid)")
37 log.warning("JobConvertToV42() convert all(v4.1) jobs")
38 if len(jobsv41notready):
39 log.warning("Job(s) %s were created in (compatible) version 4.1, but not ready for conversion"%jobsv41notready)
40 log.warning("Wait for completion or stop them")
41
43
44 v41=False
45 ready = True
46 for i in range(len(j.subjobs)):
47 sj = j.subjobs[i]
48 if sj.id==j.id*100000+i+1:
49 v41=True
50 if not sj.status in ('completed','failed','killed'):
51 ready=False
52
53 return (v41,ready)
54
55
57 'repository migration utility (4.1->4.2)'
58 if jobid==None:
59 for j in jobs:
60 JobConvertToV42(j.id)
61 else:
62 j = jobs[jobid]
63
64 try:
65 jid = j.id
66 except AttributeError:
67 log.warning("No such job: %d"%jobid)
68 return
69
70 v41,ready = _CheckForV41(j)
71 if v41 and ready:
72 log.info("Converting job %d from v4.1 to v4.2"%jobid)
73 _ConvertToV42(j)
74
75
77
78 import os
79
80 for i in range(len(j.subjobs)):
81
82 sj = j.subjobs[i]
83 path = os.path.normpath(sj.inputdir)
84 path = os.path.dirname(path)
85 path = os.path.normpath(path)
86 d,f = os.path.split(path)
87 newpath = os.path.join(d,str(j.id))
88 newpath = os.path.join(newpath,str(i))
89
90 try:
91 os.rename(path,newpath)
92 log.info("%s --> %s"%(path,newpath))
93 except OSError:
94 log.warning("Can't move %s to %s"%(path,newpath))
95
96 sj._impl.id=i
97 sj._impl.inputdir=os.path.join(newpath,"input")+os.sep
98 sj._impl.outputdir=os.path.join(newpath,"output")+os.sep
99
100 j._impl._commit()
101