Skip to content

Commit f2bfb12

Browse files
authored
Merge pull request #257 from Robin-Van-de-Merghel/robin-add-dirac-platform
Transform configure architecture command to avoid using `dirac-platform` command
2 parents b5735b5 + 2eeb346 commit f2bfb12

4 files changed

Lines changed: 70 additions & 5 deletions

File tree

.github/workflows/integration.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ jobs:
121121
- jenkins-mp.cern.ch
122122
- jenkins-mp-pool.cern.ch
123123
- jenkins-mp-pool-singularity.cern.ch
124+
- jenkins-revised.cern.ch
124125

125126
steps:
126127
- uses: actions/checkout@v4
@@ -266,6 +267,7 @@ jobs:
266267
- jenkins-mp-full.cern.ch
267268
- jenkins-mp-pool-full.cern.ch
268269
- jenkins-mp-pool-singularity-full.cern.ch
270+
- jenkins-revised.cern.ch
269271

270272
steps:
271273
- uses: actions/checkout@v4

Pilot/pilotCommands.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def __init__(self, pilotParams):
2828
import sys
2929
import time
3030
import traceback
31+
import subprocess
3132
from collections import Counter
3233

3334
############################
@@ -870,6 +871,63 @@ def execute(self):
870871

871872
return localArchitecture
872873

874+
class ConfigureArchitectureWithoutCLI(CommandBase):
875+
"""This command determines the platform.
876+
Separated from the ConfigureDIRAC command for easier extensibility.
877+
"""
878+
def getPlatformString(self):
879+
# Modified to return our desired platform string, R. Graciani
880+
platformTuple = (platform.system(), platform.machine())
881+
if platformTuple[0] == "Linux":
882+
platformTuple += ("-".join(platform.libc_ver()),)
883+
elif platformTuple[0] == "Darwin":
884+
platformTuple += (".".join(platform.mac_ver()[0].split(".")[:2]),)
885+
else:
886+
platformTuple += platform.release()
887+
888+
platformString = "%s_%s_%s" % platformTuple
889+
890+
return platformString
891+
892+
@logFinalizer
893+
def execute(self):
894+
"""This is a simple command to get the platform, and add it to the configuration
895+
896+
The architecture script, as well as its options can be replaced in a pilot extension
897+
"""
898+
899+
try:
900+
localArchitecture = self.getPlatformString()
901+
except Exception as e:
902+
self.log.error("Configuration error [ERROR %s]" % str(e))
903+
self.exitWithError(1)
904+
905+
906+
cfg = ["-FDMH"] # force update, skip CA checks, skip CA download, skip VOMS
907+
if self.pp.useServerCertificate:
908+
cfg.append("--UseServerCertificate")
909+
if self.pp.localConfigFile:
910+
cfg.append("-O %s" % self.pp.localConfigFile) # our target file for pilots
911+
cfg.extend(["--cfg", self.pp.localConfigFile]) # this file is also an input
912+
if self.pp.debugFlag:
913+
cfg.append("-ddd")
914+
915+
# real options added here
916+
localArchitecture = localArchitecture.strip().split("\n")[-1].strip()
917+
cfg.append('-S "%s"' % self.pp.setup)
918+
cfg.append("-o /LocalSite/Architecture=%s" % localArchitecture)
919+
920+
# add the local platform as determined by the platform module
921+
cfg.append("-o /LocalSite/Platform=%s" % platform.machine())
922+
923+
configureCmd = "%s %s" % (self.pp.configureScript, " ".join(cfg))
924+
retCode, _configureOutData = self.executeAndGetOutput(configureCmd, self.pp.installEnv)
925+
if retCode:
926+
self.log.error("Configuration error [ERROR %d]" % retCode)
927+
self.exitWithError(retCode)
928+
929+
return localArchitecture
930+
873931

874932
class ConfigureCPURequirements(CommandBase):
875933
"""This command determines the CPU requirements. Needs to be executed after ConfigureSite"""

Pilot/pilotTools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ def exitWithError(self, errorCode):
832832

833833
self.log.info("List of child processes of current PID:")
834834
retCode, _outData = self.executeAndGetOutput(
835-
"ps --forest -o pid,%%cpu,%%mem,tty,stat,time,cmd --ppid %d" % os.getpid()
835+
"ps --forest -o pid,%%cpu,%%mem,tty,stat,time,cmd -g %d" % os.getpid()
836836
)
837837
if retCode:
838838
self.log.error("Failed to issue ps [ERROR %d] " % retCode)

tests/CI/pilot_newSchema.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@
8181
"jenkins-lhcb-dd.cern.ch": {
8282
"Site": "VAR_JENKINS_SITE",
8383
"GridCEType": "LHCbDD"
84-
}
84+
},
85+
"jenkins-revised.cern.ch": {
86+
"Site": "VAR_JENKINS_SITE",
87+
"GridCEType": "TEST-REVISED-COMMANDS"
88+
}
8589
},
8690
"Defaults": {
8791
"Pilot": {
@@ -92,8 +96,9 @@
9296
"TEST-FULL": "CheckWorkerNode, InstallDIRAC, ConfigureBasics, RegisterPilot, CheckCECapabilities, CheckWNCapabilities, ConfigureSite, ConfigureArchitecture, ConfigureCPURequirements, LaunchAgent",
9397
"LHCb": "CheckWorkerNode, LHCbInstallDIRAC, LHCbConfigureBasics, RegisterPilot, CheckCECapabilities, LHCbAddCVMFSTags, CheckWNCapabilities, ConfigureSite, LHCbConfigureArchitecture, ConfigureCPURequirements",
9498
"LHCbD": "CheckWorkerNode, InstallDIRAC, LHCbConfigureBasics, RegisterPilot, CheckCECapabilities, LHCbAddCVMFSTags, CheckWNCapabilities, ConfigureSite, LHCbConfigureArchitecture, ConfigureCPURequirements",
95-
"LHCbDD": "CheckWorkerNode, InstallDIRAC, ConfigureBasics, RegisterPilot, CheckCECapabilities, LHCbAddCVMFSTags, CheckWNCapabilities, ConfigureSite, LHCbConfigureArchitecture, ConfigureCPURequirements"
96-
}
99+
"LHCbDD": "CheckWorkerNode, InstallDIRAC, ConfigureBasics, RegisterPilot, CheckCECapabilities, LHCbAddCVMFSTags, CheckWNCapabilities, ConfigureSite, LHCbConfigureArchitecture, ConfigureCPURequirements",
100+
"TEST-REVISED-COMMANDS": "CheckWorkerNode, InstallDIRAC, ConfigureBasics, RegisterPilot, CheckCECapabilities, CheckWNCapabilities, ConfigureSite, ConfigureArchitectureWithoutCLI, ConfigureCPURequirements"
101+
}
97102
}
98103
},
99104
"gridpp": {
@@ -149,4 +154,4 @@
149154
"ConfigurationServers": [
150155
"VAR_CS"
151156
]
152-
}
157+
}

0 commit comments

Comments
 (0)