lsst-ctrl-bps-panda 29.2025.4400__py3-none-any.whl → 29.2025.4500__py3-none-any.whl

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.
@@ -42,3 +42,4 @@ PANDA_DEFAULT_MAX_COPY_WORKERS = 10
42
42
  PANDA_DEFAULT_MAX_PAYLOADS_PER_PANDA_JOB = 10
43
43
  PANDA_DEFAULT_ORDER_ID_MAP_FILE = "panda_order_id_map.json"
44
44
  PANDA_DEFAULT_NAME_LENGTH = 4000
45
+ PANDA_DEFAULT_MAX_REQUEST_LENGTH = 400000000 # 400M
@@ -15,8 +15,13 @@ import sys
15
15
 
16
16
  from lsst.ctrl.bps.constants import DEFAULT_MEM_FMT, DEFAULT_MEM_UNIT
17
17
  from lsst.ctrl.bps.drivers import prepare_driver
18
- from lsst.ctrl.bps.panda.constants import PANDA_DEFAULT_MAX_COPY_WORKERS
19
- from lsst.ctrl.bps.panda.utils import copy_files_for_distribution, download_extract_archive, get_idds_client
18
+ from lsst.ctrl.bps.panda.constants import PANDA_DEFAULT_MAX_COPY_WORKERS, PANDA_DEFAULT_MAX_REQUEST_LENGTH
19
+ from lsst.ctrl.bps.panda.utils import (
20
+ copy_files_for_distribution,
21
+ download_extract_archive,
22
+ get_idds_client,
23
+ get_idds_result,
24
+ )
20
25
  from lsst.resources import ResourcePath
21
26
  from lsst.utils.timer import time_this
22
27
 
@@ -90,6 +95,23 @@ file_distribution_uri = ResourcePath(config["fileDistributionEndPoint"], forceDi
90
95
  copy_files_for_distribution(bps_workflow.files_to_pre_stage, file_distribution_uri, max_copy_workers)
91
96
 
92
97
  idds_client = get_idds_client(config)
98
+
99
+ # split workflow into steps if the workflow is hughe
100
+ _, max_request_length = config.search("maxRequestLength", opt={"default": PANDA_DEFAULT_MAX_REQUEST_LENGTH})
101
+ workflow_steps = idds_workflow.split_workflow_to_steps(
102
+ request_cache=config["submitPath"], max_request_length=max_request_length
103
+ )
104
+ print(f"workflow_steps: {workflow_steps}")
105
+ for wf_step in workflow_steps:
106
+ ret_step = idds_client.submit(wf_step, username=None, use_dataset_name=False)
107
+ status, result_step, error = get_idds_result(ret_step)
108
+ if status and result_step == 0:
109
+ msg = f"iDDS client manager successfully uploaded workflow step: {wf_step.step_name}"
110
+ print(msg)
111
+ else:
112
+ msg = f"iDDS client manager failed to submit workflow step {wf_step.step_name}: {ret_step}"
113
+ raise RuntimeError(msg)
114
+
93
115
  ret = idds_client.update_build_request(request_id, signature, idds_workflow)
94
116
  print(f"update_build_request returns: {ret}")
95
117
  sys.exit(ret[0])
@@ -45,7 +45,10 @@ from lsst.ctrl.bps import (
45
45
  WmsRunReport,
46
46
  WmsStates,
47
47
  )
48
- from lsst.ctrl.bps.panda.constants import PANDA_DEFAULT_MAX_COPY_WORKERS
48
+ from lsst.ctrl.bps.panda.constants import (
49
+ PANDA_DEFAULT_MAX_COPY_WORKERS,
50
+ PANDA_DEFAULT_MAX_REQUEST_LENGTH,
51
+ )
49
52
  from lsst.ctrl.bps.panda.utils import (
50
53
  add_final_idds_work,
51
54
  add_idds_work,
@@ -111,6 +114,9 @@ class PanDAService(BaseWmsService):
111
114
  return idds_build_workflow
112
115
 
113
116
  else:
117
+ _, max_request_length = self.config.search(
118
+ "maxRequestLength", opt={"default": PANDA_DEFAULT_MAX_REQUEST_LENGTH}
119
+ )
114
120
  _, max_copy_workers = self.config.search(
115
121
  "maxCopyWorkers", opt={"default": PANDA_DEFAULT_MAX_COPY_WORKERS}
116
122
  )
@@ -122,6 +128,7 @@ class PanDAService(BaseWmsService):
122
128
  if not protocol_pattern.match(file_distribution_uri):
123
129
  file_distribution_uri = "file://" + file_distribution_uri
124
130
 
131
+ idds_client = get_idds_client(self.config)
125
132
  submit_cmd = workflow.run_attrs.get("bps_iscustom", False)
126
133
  if not submit_cmd:
127
134
  copy_files_for_distribution(
@@ -130,7 +137,23 @@ class PanDAService(BaseWmsService):
130
137
  max_copy_workers,
131
138
  )
132
139
 
133
- idds_client = get_idds_client(self.config)
140
+ idds_wf = workflow.idds_client_workflow
141
+ workflow_steps = idds_wf.split_workflow_to_steps(
142
+ request_cache=self.config["submitPath"], max_request_length=max_request_length
143
+ )
144
+ for wf_step in workflow_steps:
145
+ ret_step = idds_client.submit(wf_step, username=None, use_dataset_name=False)
146
+ status, result_step, error = get_idds_result(ret_step)
147
+ if status and result_step == 0:
148
+ msg = f"iDDS client manager successfully uploaded workflow step: {wf_step.step_name}"
149
+ _LOG.info(msg)
150
+ else:
151
+ msg = (
152
+ f"iDDS client manager failed to submit workflow step {wf_step.step_name}: "
153
+ f"{ret_step}"
154
+ )
155
+ raise RuntimeError(msg)
156
+
134
157
  ret = idds_client.submit(workflow.idds_client_workflow, username=None, use_dataset_name=False)
135
158
  _LOG.debug("iDDS client manager submit returned = %s", ret)
136
159
 
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "29.2025.4400"
2
+ __version__ = "29.2025.4500"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-bps-panda
3
- Version: 29.2025.4400
3
+ Version: 29.2025.4500
4
4
  Summary: PanDA plugin for lsst-ctrl-bps.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License-Expression: BSD-3-Clause OR GPL-3.0-or-later
@@ -1,12 +1,12 @@
1
1
  lsst/ctrl/bps/panda/__init__.py,sha256=oApEOBGMuIv98uQvcDf6DLVvrbD6_8p9o0m2YPTenPY,1351
2
2
  lsst/ctrl/bps/panda/cmd_line_embedder.py,sha256=_gyqWQQxM8ZtZzQbWlOdgjfgrotrwV3sFvwWXxe-jfQ,6778
3
- lsst/ctrl/bps/panda/constants.py,sha256=hhV1CDHW9G-Z6z2wGaAc41EMlJ-yn2NN3A8psDyjTkw,1907
3
+ lsst/ctrl/bps/panda/constants.py,sha256=C8DBJT-jIDF-byBSH5rcefLFkqDNC2DRxMhxmSk-GyI,1960
4
4
  lsst/ctrl/bps/panda/panda_auth_drivers.py,sha256=LoD-tP990ELmVks3Vxv76jm4a8j3h3cNRTNX2XtFGHk,3163
5
5
  lsst/ctrl/bps/panda/panda_auth_utils.py,sha256=kJnevhvjvUegbXfAyiVcoxinONsc_TJqfK4neTmcN5k,8544
6
6
  lsst/ctrl/bps/panda/panda_exceptions.py,sha256=HcOKWMuG79c16Y9j7IJbp990k4DBQ54e7haY1Fsl6XQ,629
7
- lsst/ctrl/bps/panda/panda_service.py,sha256=tdqAs2ny1FvgULD876heR3rhaIHKCW707aFGlyaJYf8,19308
7
+ lsst/ctrl/bps/panda/panda_service.py,sha256=wQySP0wLppjgvVmgqUk0FHXLIt4hBaCZR0lnuBl6jgc,20450
8
8
  lsst/ctrl/bps/panda/utils.py,sha256=fwTMtFHldV8aN8LLqobf0ekkqEfCpUc_7xmKxe7YFaI,44999
9
- lsst/ctrl/bps/panda/version.py,sha256=c_EQrzHIElqjF0MSUCohtezaryfBlqz_McPyAghglVk,55
9
+ lsst/ctrl/bps/panda/version.py,sha256=ec8d6sw9aRuINU5Qs4LjOV9LhqSISytoOfEoRYO2XzU,55
10
10
  lsst/ctrl/bps/panda/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  lsst/ctrl/bps/panda/cli/panda_auth.py,sha256=i54ati_HoKSlyslQRBl7QpX1w5z8MjSfHHMpT43ZeXQ,2055
12
12
  lsst/ctrl/bps/panda/cli/cmd/__init__.py,sha256=QNhn-2QmXHKVUgwmtuX7wnDv3qOUuU_30juuM_2AGaE,1413
@@ -17,14 +17,14 @@ lsst/ctrl/bps/panda/conf_example/test_idf.yaml,sha256=P-FLBEmKZ2o0QiR6w8GZ9AAAOP
17
17
  lsst/ctrl/bps/panda/conf_example/test_sdf.yaml,sha256=e7C8df1h59KA3vBCm_qD1Xmcm20fSFPw307bXDhFB44,487
18
18
  lsst/ctrl/bps/panda/conf_example/test_usdf.yaml,sha256=WIbXCJZDaG7zYUHt7U96MUjUsPRdHlk8C0Rg00nsPjs,390
19
19
  lsst/ctrl/bps/panda/edgenode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- lsst/ctrl/bps/panda/edgenode/build_cmd_line_decoder.py,sha256=CjB_ESDKLK67QPlcZHWoJzfaqgC733ih_iIQrwYkiUo,3067
20
+ lsst/ctrl/bps/panda/edgenode/build_cmd_line_decoder.py,sha256=Sx7S-jnnyl4IBXWk19B1kcx6cdQGz4RwJDgqQvTwot8,3945
21
21
  lsst/ctrl/bps/panda/edgenode/cmd_line_decoder.py,sha256=cqPeJLA7KfB7KnPTR-ykyEoHQ-_YE17h8_EfnqWA5eA,14616
22
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/licenses/COPYRIGHT,sha256=5ATATZSyXxMNKoJuCJdATg4YNm56ubTwU_hDbShxIWw,116
23
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
24
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
25
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
26
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/METADATA,sha256=Du1WrzxsCN-B-8oDQN89Bcq7AEsIswImWfY4LXPZb8U,2398
27
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
29
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
30
- lsst_ctrl_bps_panda-29.2025.4400.dist-info/RECORD,,
22
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/licenses/COPYRIGHT,sha256=5ATATZSyXxMNKoJuCJdATg4YNm56ubTwU_hDbShxIWw,116
23
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
24
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
25
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
26
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/METADATA,sha256=6feTjMpArcmDON4z5zsTc68-G9dvRjxu7-o3ikRo6Ew,2398
27
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
29
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
30
+ lsst_ctrl_bps_panda-29.2025.4500.dist-info/RECORD,,