lsst-ctrl-execute 29.2025.1400__tar.gz → 29.2025.2100__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/PKG-INFO +1 -1
  2. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/allocatorParser.py +18 -0
  3. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/slurmPlugin.py +10 -0
  4. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_allocatorParser.py +6 -0
  5. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/build.yaml +0 -0
  6. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/formatting.yaml +0 -0
  7. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/rebase_checker.yaml +0 -0
  8. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/.gitignore +0 -0
  9. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/.pre-commit-config.yaml +0 -0
  10. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/SConstruct +0 -0
  11. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/etc/configs/gordon_config.py +0 -0
  12. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/etc/configs/lsst_config.py +0 -0
  13. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/etc/scripts/generateDag.py +0 -0
  14. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/pyproject.toml +0 -0
  15. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/__init__.py +0 -0
  16. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/__init__.py +0 -0
  17. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/__init__.py +0 -0
  18. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/allocationConfig.py +0 -0
  19. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/allocator.py +0 -0
  20. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/condorConfig.py +0 -0
  21. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/condorInfoConfig.py +0 -0
  22. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/envString.py +0 -0
  23. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/findPackageFile.py +0 -0
  24. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/allocateNodes.py +0 -0
  25. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/dagIdInfo.py +0 -0
  26. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/qdelete.py +0 -0
  27. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/qstatus.py +0 -0
  28. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/namedClassFactory.py +0 -0
  29. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/pbsPlugin.py +0 -0
  30. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/qCommand.py +0 -0
  31. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/seqFile.py +0 -0
  32. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/templateWriter.py +0 -0
  33. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/setup.cfg +0 -0
  34. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/README +0 -0
  35. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/SConscript +0 -0
  36. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_allocationConfig.py +0 -0
  37. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_condorConfig.py +0 -0
  38. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_condorInfoConfig.py +0 -0
  39. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_dagIdInfo.py +0 -0
  40. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_findPackageFile.py +0 -0
  41. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_seqFile.py +0 -0
  42. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_slurmPlugin.py +0 -0
  43. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/test_templateWriter.py +0 -0
  44. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/allocator-info1.py +0 -0
  45. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_allocation.py +0 -0
  46. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_allocation_slurm.py +0 -0
  47. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_asserts.py +0 -0
  48. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor.py +0 -0
  49. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condorInfo.py +0 -0
  50. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor_getenv.py +0 -0
  51. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor_setups.py +0 -0
  52. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor_slurm.py +0 -0
  53. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_execconfig.py +0 -0
  54. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_pegasus.py +0 -0
  55. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.pbs.template +0 -0
  56. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.pbs.txt +0 -0
  57. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.slurm.template +0 -0
  58. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.slurm.txt +0 -0
  59. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/glidein_condor_config.template +0 -0
  60. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/glidein_condor_config.txt +0 -0
  61. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/templateWriter.template +0 -0
  62. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/templateWriter.txt +0 -0
  63. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/test.diamond.dag +0 -0
  64. {lsst_ctrl_execute-29.2025.1400 → lsst_ctrl_execute-29.2025.2100}/ups/ctrl_execute.table +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-execute
3
- Version: 29.2025.1400
3
+ Version: 29.2025.2100
4
4
  Summary: Utilities for executing and managing workloads.
5
5
  Project-URL: Homepage, https://github.com/lsst/ctrl_execute
6
6
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
@@ -178,6 +178,24 @@ class AllocatorParser:
178
178
  dest="packnodes",
179
179
  help="encourage nodes to pack jobs rather than spread",
180
180
  )
181
+ parser.add_argument(
182
+ "--exclude",
183
+ action="store",
184
+ default=None,
185
+ dest="exclude",
186
+ help="machine name(s) to exclude Slurm jobs from",
187
+ type=str,
188
+ required=False,
189
+ )
190
+ parser.add_argument(
191
+ "--nodelist",
192
+ action="store",
193
+ default=None,
194
+ dest="nodelist",
195
+ help="machine name(s) to target Slurm jobs toward",
196
+ type=str,
197
+ required=False,
198
+ )
181
199
  parser.add_argument(
182
200
  "--exclusive",
183
201
  action="store_true",
@@ -214,6 +214,16 @@ class SlurmPlugin(Allocator):
214
214
  else:
215
215
  self.defaults["RESERVATION"] = ""
216
216
 
217
+ if self.opts.exclude is not None:
218
+ self.defaults["EXCLUDE"] = f"#SBATCH --exclude {self.opts.exclude}"
219
+ else:
220
+ self.defaults["EXCLUDE"] = ""
221
+
222
+ if self.opts.nodelist is not None:
223
+ self.defaults["NODELIST"] = f"#SBATCH --nodelist {self.opts.nodelist}"
224
+ else:
225
+ self.defaults["NODELIST"] = ""
226
+
217
227
  if self.opts.exclusive is not None:
218
228
  self.defaults["EXCLUSIVE"] = "#SBATCH --exclusive"
219
229
  else:
@@ -42,6 +42,10 @@ class TestAllocatorParser(lsst.utils.tests.TestCase):
42
42
  "12",
43
43
  "-m",
44
44
  "00:30:00",
45
+ "--exclude",
46
+ "sdfmilan003",
47
+ "--nodelist",
48
+ "sdfmilan004",
45
49
  "-q",
46
50
  "normal",
47
51
  "-O",
@@ -57,6 +61,8 @@ class TestAllocatorParser(lsst.utils.tests.TestCase):
57
61
  self.assertEqual(args.nodeCount, 64)
58
62
  self.assertEqual(args.cpus, 12)
59
63
  self.assertEqual(args.maximumWallClock, "00:30:00")
64
+ self.assertEqual(args.exclude, "sdfmilan003")
65
+ self.assertEqual(args.nodelist, "sdfmilan004")
60
66
  self.assertEqual(args.queue, "normal")
61
67
  self.assertEqual(args.outputLog, "outlog")
62
68
  self.assertEqual(args.errorLog, "errlog")