Skip to content
This repository was archived by the owner on Feb 23, 2023. It is now read-only.

Commit 49c35d2

Browse files
author
Andrei Tsaregorodtsev
authored
Merge pull request #84 from atsareg/py3-fixes
[v1r3] Python3 related fixes
2 parents b0b5d57 + a0e0374 commit 49c35d2

5 files changed

Lines changed: 39 additions & 32 deletions

File tree

src/COMDIRAC/Interfaces/scripts/dchmod.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,9 @@ def main():
5858
import DIRAC
5959
from DIRAC import gLogger
6060
from COMDIRAC.Interfaces import DSession
61-
from COMDIRAC.Interfaces import DCatalog
6261
from COMDIRAC.Interfaces import pathFromArgument
6362

6463
session = DSession()
65-
catalog = DCatalog()
6664

6765
if len(args) < 2:
6866
print("Error: not enough arguments provided\n%s:" % Script.scriptName)
@@ -81,7 +79,7 @@ def main():
8179

8280
for lfn in lfns:
8381
try:
84-
pathDict = {lfn: eval("0" + mode)}
82+
pathDict = {lfn: int(mode, base=8)}
8583
result = fc.changePathMode(pathDict, params.recursive)
8684
if not result["OK"]:
8785
gLogger.error("Error:", result["Message"])

src/COMDIRAC/Interfaces/scripts/dkill.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ def main():
6767
exitCode = 0
6868

6969
from DIRAC.WorkloadManagementSystem.Client.WMSClient import WMSClient
70-
from DIRAC.Core.DISET.RPCClient import RPCClient
70+
from DIRAC.WorkloadManagementSystem.Client.JobMonitoringClient import (
71+
JobMonitoringClient,
72+
)
7173

7274
wmsClient = WMSClient()
7375

@@ -79,7 +81,7 @@ def main():
7981
if result["OK"]:
8082
userName = result["Value"]
8183

82-
monitoring = RPCClient("WorkloadManagement/JobMonitoring")
84+
monitoring = JobMonitoringClient()
8385
result = monitoring.getJobs({"Owner": userName})
8486
if not result["OK"]:
8587
print("ERROR:", result["Message"])

src/COMDIRAC/Interfaces/scripts/dlogging.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,16 @@ def main():
4646

4747
args = Script.getPositionalArgs()
4848

49-
from DIRAC.Core.DISET.RPCClient import RPCClient
49+
from DIRAC.WorkloadManagementSystem.Client.JobMonitoringClient import (
50+
JobMonitoringClient,
51+
)
5052
from COMDIRAC.Interfaces.Utilities.DCommands import ArrayFormatter
5153

5254
exitCode = 0
5355

5456
jobs = map(int, args)
5557

56-
monitoring = RPCClient("WorkloadManagement/JobMonitoring")
58+
monitoring = JobMonitoringClient()
5759
af = ArrayFormatter(params.getFmt())
5860
headers = ["Status", "MinorStatus", "ApplicationStatus", "Time", "Source"]
5961
errors = []

src/COMDIRAC/Interfaces/scripts/dstat.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
from __future__ import division
88
from __future__ import print_function
99

10-
__RCSID__ = "$Id$"
11-
1210
from signal import signal, SIGPIPE, SIG_DFL
1311
import six
1412

1513
from COMDIRAC.Interfaces import ConfigCache
1614
from DIRAC.Core.Utilities.DIRACScript import DIRACScript as Script
17-
from DIRAC import S_OK
15+
from DIRAC import S_OK, S_ERROR
1816
from DIRAC.Core.Utilities.Time import toString, date, day
19-
17+
from DIRAC.WorkloadManagementSystem.Client.JobMonitoringClient import (
18+
JobMonitoringClient,
19+
)
2020
from COMDIRAC.Interfaces.Utilities.DCommands import ArrayFormatter
2121

2222
# TODO: how to import job states from JobDB in client installation (lacks MySQLdb module)?
@@ -46,20 +46,18 @@ def selectJobs(owner, date, jobGroup, jobName):
4646
if jobName:
4747
conditions["JobName"] = jobName
4848

49-
monitoring = RPCClient("WorkloadManagement/JobMonitoring")
49+
monitoring = JobMonitoringClient()
5050
result = monitoring.getJobs(conditions, date)
51-
5251
return result
5352

5453

5554
def getJobSummary(jobs):
5655
if not jobs:
5756
return S_OK({})
58-
monitoring = RPCClient("WorkloadManagement/JobMonitoring")
57+
monitoring = JobMonitoringClient()
5958
result = monitoring.getJobsSummary(jobs)
6059
if not result["OK"]:
6160
return result
62-
6361
if isinstance(result["Value"], six.string_types):
6462
try:
6563
jobSummary = eval(result["Value"])
@@ -98,7 +96,7 @@ class Params(object):
9896
def __init__(self):
9997
self.__session = None
10098
self.user = None
101-
self.status = map(lambda e: e.lower(), set(JOB_STATES) - set(JOB_FINAL_STATES))
99+
self.status = [e.lower() for e in set(JOB_STATES) - set(JOB_FINAL_STATES)]
102100
self.fmt = "pretty"
103101
self.jobDate = 10
104102
self.fields = DEFAULT_DISPLAY_COLUMNS
@@ -125,7 +123,7 @@ def setStatus(self, arg=None):
125123
return S_OK()
126124

127125
def setStatusAll(self, arg=None):
128-
self.status = map(lambda e: e.lower(), JOB_STATES)
126+
self.status = [e.lower() for e in JOB_STATES]
129127
return S_OK()
130128

131129
def getStatus(self):
@@ -227,9 +225,7 @@ def main():
227225
args = Script.getPositionalArgs()
228226

229227
import DIRAC
230-
from DIRAC import S_OK, S_ERROR
231228
from DIRAC import exit as DIRACExit
232-
from DIRAC.Core.DISET.RPCClient import RPCClient
233229
from COMDIRAC.Interfaces import DSession
234230

235231
session = DSession()
@@ -299,9 +295,9 @@ def main():
299295
if "all" in statuses:
300296
summaries = result["Value"]
301297
else:
302-
for j, s in result["Value"].items():
303-
if s["Status"].lower() in statuses:
304-
summaries[j] = s
298+
for j in result["Value"]:
299+
if result["Value"][j]["Status"].lower() in statuses:
300+
summaries[j] = result["Value"][j]
305301

306302
for s in summaries.values():
307303
s["JobID"] = int(s["JobID"])

src/COMDIRAC/Interfaces/scripts/dsub.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,31 @@
1818
from DIRAC import S_OK
1919
from DIRAC import exit as DIRACexit
2020
from COMDIRAC.Interfaces import ConfigCache
21+
from COMDIRAC.Interfaces import pathFromArgument
2122
from DIRAC.Core.Utilities.DIRACScript import DIRACScript as Script
23+
from DIRAC.Core.Utilities.ClassAd.ClassAdLight import ClassAd
24+
25+
classAdJob = None
2226

2327

2428
def parseScriptLinesJDLDirectives(lines):
25-
ret = {}
29+
result = {}
2630

2731
for l in lines:
2832
if l.startswith("#JDL "):
2933
c = l[5:]
3034
d, v = c.split("=", 1)
31-
ret[d.strip()] = v.strip()
32-
return ret
35+
result[d.strip()] = v.strip()
36+
return result
3337

3438

3539
def parseScriptJDLDirectives(fn):
36-
f = open(fn, "r")
37-
lines = f.readlines()
38-
f.close()
40+
with open(fn, "r") as f:
41+
try:
42+
lines = f.readlines()
43+
except UnicodeDecodeError:
44+
# This is a binary executable, no JDL instructions there
45+
return {}
3946

4047
return parseScriptLinesJDLDirectives(lines)
4148

@@ -49,6 +56,9 @@ def classAdAppendToOutputSandbox(classAd, f):
4956

5057

5158
def classAdAppendToSandbox(classAd, f, sbName):
59+
60+
global classAdJob
61+
5262
sb = []
5363
if classAd.isAttributeList(sbName):
5464
sb = classAd.getListFromExpression(sbName)
@@ -328,6 +338,9 @@ def pnumber(start, stop, step, factor):
328338

329339
@Script()
330340
def main():
341+
342+
global classAdJob
343+
331344
params = Params()
332345

333346
Script.setUsageMessage(
@@ -405,11 +418,7 @@ def main():
405418
cmd = args[0]
406419
cmdArgs = args[1:]
407420

408-
from DIRAC.Core.Utilities.ClassAd.ClassAdLight import ClassAd
409-
410421
from COMDIRAC.Interfaces import DSession
411-
from COMDIRAC.Interfaces import pathFromArgument
412-
413422
from DIRAC.Interfaces.API.Dirac import Dirac
414423

415424
session = DSession()

0 commit comments

Comments
 (0)