lsst-ctrl-execute 29.2025.1000__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.
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/PKG-INFO +1 -1
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/allocator.py +8 -7
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/allocatorParser.py +18 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/slurmPlugin.py +14 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_allocatorParser.py +6 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_slurmPlugin.py +20 -0
- lsst_ctrl_execute-29.2025.2100/tests/testfiles/config_execconfig.py +6 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/build.yaml +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/formatting.yaml +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/rebase_checker.yaml +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.gitignore +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.pre-commit-config.yaml +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/SConstruct +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/etc/configs/gordon_config.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/etc/configs/lsst_config.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/etc/scripts/generateDag.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/pyproject.toml +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/__init__.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/__init__.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/__init__.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/allocationConfig.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/condorConfig.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/condorInfoConfig.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/envString.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/findPackageFile.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/allocateNodes.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/dagIdInfo.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/qdelete.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/libexec/qstatus.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/namedClassFactory.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/pbsPlugin.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/qCommand.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/seqFile.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/execute/templateWriter.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/setup.cfg +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/README +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/SConscript +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_allocationConfig.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_condorConfig.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_condorInfoConfig.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_dagIdInfo.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_findPackageFile.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_seqFile.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_templateWriter.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/allocator-info1.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_allocation.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_allocation_slurm.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_asserts.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condorInfo.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor_getenv.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor_setups.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor_slurm.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_pegasus.py +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.pbs.template +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.pbs.txt +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.slurm.template +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.slurm.txt +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/glidein_condor_config.template +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/glidein_condor_config.txt +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/templateWriter.template +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/templateWriter.txt +0 -0
- {lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/test.diamond.dag +0 -0
- {lsst_ctrl_execute-29.2025.1000 → 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.
|
|
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>
|
|
@@ -30,9 +30,7 @@ from datetime import datetime
|
|
|
30
30
|
from string import Template
|
|
31
31
|
|
|
32
32
|
from lsst.ctrl.execute.allocationConfig import AllocationConfig
|
|
33
|
-
from lsst.ctrl.execute.condorConfig import CondorConfig
|
|
34
33
|
from lsst.ctrl.execute.condorInfoConfig import CondorInfoConfig
|
|
35
|
-
from lsst.ctrl.execute.findPackageFile import find_package_file
|
|
36
34
|
from lsst.ctrl.execute.templateWriter import TemplateWriter
|
|
37
35
|
from lsst.resources import ResourcePath, ResourcePathExpression
|
|
38
36
|
|
|
@@ -79,10 +77,6 @@ class Allocator:
|
|
|
79
77
|
|
|
80
78
|
self.platform = platform
|
|
81
79
|
|
|
82
|
-
execConfigName = find_package_file("execConfig.py", platform=platform)
|
|
83
|
-
execConfig = CondorConfig()
|
|
84
|
-
execConfig.loadFromStream(execConfigName.read())
|
|
85
|
-
|
|
86
80
|
# Look up the user's name and home and scratch directory in the
|
|
87
81
|
# $HOME/.lsst/condor-info.py file
|
|
88
82
|
user_name = None
|
|
@@ -115,7 +109,7 @@ class Allocator:
|
|
|
115
109
|
self.commandLineDefaults["COLLECTOR"] = self.opts.collector
|
|
116
110
|
self.commandLineDefaults["CPORT"] = self.opts.collectorport
|
|
117
111
|
if self.opts.exclusive:
|
|
118
|
-
self.commandLineDefaults["CPUS"] =
|
|
112
|
+
self.commandLineDefaults["CPUS"] = self.configuration.platform.peakcpus
|
|
119
113
|
else:
|
|
120
114
|
self.commandLineDefaults["CPUS"] = self.opts.cpus
|
|
121
115
|
self.commandLineDefaults["WALL_CLOCK"] = self.opts.maximumWallClock
|
|
@@ -123,6 +117,7 @@ class Allocator:
|
|
|
123
117
|
self.commandLineDefaults["MEMPERCORE"] = 4096
|
|
124
118
|
self.commandLineDefaults["ALLOWEDAUTO"] = 500
|
|
125
119
|
self.commandLineDefaults["AUTOCPUS"] = 16
|
|
120
|
+
self.commandLineDefaults["MINAUTOCPUS"] = 15
|
|
126
121
|
self.commandLineDefaults["QUEUE"] = self.opts.queue
|
|
127
122
|
self.load()
|
|
128
123
|
|
|
@@ -361,6 +356,12 @@ class Allocator:
|
|
|
361
356
|
else:
|
|
362
357
|
return self.getParameter("AUTOCPUS")
|
|
363
358
|
|
|
359
|
+
def getMinAutoCPUs(self):
|
|
360
|
+
"""Minimum Size of standard glideins for allocateNodes auto
|
|
361
|
+
@return the value of minAutoCPUs
|
|
362
|
+
"""
|
|
363
|
+
return self.getParameter("MINAUTOCPUS")
|
|
364
|
+
|
|
364
365
|
def getWallClock(self):
|
|
365
366
|
"""Accessor for WALL_CLOCK
|
|
366
367
|
@return the value of WALL_CLOCK
|
|
@@ -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:
|
|
@@ -291,7 +301,11 @@ class SlurmPlugin(Allocator):
|
|
|
291
301
|
"""Determine and submit the glideins needed from job pressure."""
|
|
292
302
|
|
|
293
303
|
verbose = self.isVerbose()
|
|
304
|
+
cpus = self.getCPUs()
|
|
294
305
|
autoCPUs = self.getAutoCPUs()
|
|
306
|
+
minAutoCPUs = self.getMinAutoCPUs()
|
|
307
|
+
if cpus >= minAutoCPUs:
|
|
308
|
+
autoCPUs = cpus
|
|
295
309
|
memoryPerCore = self.getMemoryPerCore()
|
|
296
310
|
memoryLimit = autoCPUs * memoryPerCore
|
|
297
311
|
auser = self.getUserName()
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_allocatorParser.py
RENAMED
|
@@ -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")
|
|
@@ -26,6 +26,7 @@ import sys
|
|
|
26
26
|
import unittest
|
|
27
27
|
|
|
28
28
|
import lsst.utils.tests
|
|
29
|
+
from lsst.ctrl.execute.allocator import Allocator
|
|
29
30
|
from lsst.ctrl.execute.allocatorParser import AllocatorParser
|
|
30
31
|
from lsst.ctrl.execute.condorConfig import CondorConfig
|
|
31
32
|
from lsst.ctrl.execute.namedClassFactory import NamedClassFactory
|
|
@@ -77,6 +78,25 @@ class SlurmPluginTest(lsst.utils.tests.TestCase):
|
|
|
77
78
|
self.assertTrue(self.config)
|
|
78
79
|
self.assertTrue(condor_info_file)
|
|
79
80
|
|
|
81
|
+
platform = "test1"
|
|
82
|
+
configuration = CondorConfig()
|
|
83
|
+
p1 = os.path.join("tests/testfiles", "config_execconfig.py")
|
|
84
|
+
execConfigName = p1
|
|
85
|
+
configuration.load(execConfigName)
|
|
86
|
+
scheduler: Allocator = schedulerClass(platform, args, configuration, condor_info_file)
|
|
87
|
+
self.assertTrue(scheduler)
|
|
88
|
+
|
|
89
|
+
autocpus = scheduler.getAutoCPUs()
|
|
90
|
+
minautocpus = scheduler.getMinAutoCPUs()
|
|
91
|
+
cpus = scheduler.getCPUs()
|
|
92
|
+
nodes = scheduler.getNodes()
|
|
93
|
+
wallclock = scheduler.getWallClock()
|
|
94
|
+
self.assertEqual(autocpus, 16)
|
|
95
|
+
self.assertEqual(minautocpus, 15)
|
|
96
|
+
self.assertEqual(cpus, 12)
|
|
97
|
+
self.assertEqual(nodes, 64)
|
|
98
|
+
self.assertEqual(wallclock, "00:30:00")
|
|
99
|
+
|
|
80
100
|
|
|
81
101
|
if __name__ == "__main__":
|
|
82
102
|
lsst.utils.tests.init()
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/build.yaml
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/.github/workflows/formatting.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/etc/configs/gordon_config.py
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/etc/configs/lsst_config.py
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/etc/scripts/generateDag.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/python/lsst/ctrl/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_allocationConfig.py
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_condorConfig.py
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_condorInfoConfig.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_findPackageFile.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/test_templateWriter.py
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/allocator-info1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_asserts.py
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_condor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/config_pegasus.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.pbs.txt
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/generic.slurm.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/templateWriter.txt
RENAMED
|
File without changes
|
{lsst_ctrl_execute-29.2025.1000 → lsst_ctrl_execute-29.2025.2100}/tests/testfiles/test.diamond.dag
RENAMED
|
File without changes
|
|
File without changes
|