diff --git a/python/lsst/ctrl/execute/allocatorParser.py b/python/lsst/ctrl/execute/allocatorParser.py index aec8be1..ca08299 100644 --- a/python/lsst/ctrl/execute/allocatorParser.py +++ b/python/lsst/ctrl/execute/allocatorParser.py @@ -225,6 +225,14 @@ def parseArgs(self, basename) -> argparse.Namespace: default=None, help="target a particular Slurm reservation", ) + parser.add_argument( + "--append-condor", + action="store", + dest="appendcondor", + type=str, + default=None, + help="extra condor configuration to append to the glidein configuration", + ) parser.add_argument( "-d", "--dynamic", diff --git a/python/lsst/ctrl/execute/slurmPlugin.py b/python/lsst/ctrl/execute/slurmPlugin.py index 0109eb4..42364dc 100644 --- a/python/lsst/ctrl/execute/slurmPlugin.py +++ b/python/lsst/ctrl/execute/slurmPlugin.py @@ -267,6 +267,17 @@ def loadSlurm(self, name): else: self.defaults["PACK_BLOCK"] = "Rank = TotalCpus - Cpus" + if self.opts.appendcondor is None: + self.defaults["CONDOR_CONFIG_BLOCK"] = "#" + else: + condorConfigName = ResourcePath(self.opts.appendcondor) + with condorConfigName.open() as f: + lines = f.readlines() + block = "" + for line in lines: + block += line + self.defaults["CONDOR_CONFIG_BLOCK"] = block + # handle dynamic slot block template: # 1) if it isn't specified, just put a comment in its place # 2) if it's specified, but without a filename, use the default diff --git a/tests/test_allocatorParser.py b/tests/test_allocatorParser.py index e34f092..84a34a7 100644 --- a/tests/test_allocatorParser.py +++ b/tests/test_allocatorParser.py @@ -46,6 +46,8 @@ def test1(self): "sdfmilan003", "--nodelist", "sdfmilan004", + "--append-condor", + "testcondorconfig", "-q", "normal", "-O", @@ -63,6 +65,7 @@ def test1(self): self.assertEqual(args.maximumWallClock, "00:30:00") self.assertEqual(args.exclude, "sdfmilan003") self.assertEqual(args.nodelist, "sdfmilan004") + self.assertEqual(args.appendcondor, "testcondorconfig") self.assertEqual(args.queue, "normal") self.assertEqual(args.outputLog, "outlog") self.assertEqual(args.errorLog, "errlog")