Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changes.d/6952.fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed `cylc broadcast` failing when cancelling `[events]` settings.
19 changes: 13 additions & 6 deletions cylc/flow/cfgspec/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -2043,14 +2043,21 @@ def get_script_common_text(this: str, example: Optional[str] = None):
''')


def upg(cfg, descr):
def upg(cfg, descr, for_cancel_broadcast=False):
"""Upgrade old workflow configuration.

NOTE: We are silencing deprecation (and only deprecation) warnings
when in Cylc 7 compat mode to help support Cylc 7/8 compatible workflows
(which would loose Cylc 7 compatibility if users were to follow the
warnings and upgrade the syntax).

Args:
for_cancel_broadcast:
If True, extra validation steps which inspect configuration values
will be skipped. This is used for "cylc broadcast --cancel" where
the values are not known.
See https://github.com/cylc/cylc-flow/issues/6950.

"""
u = upgrader(cfg, descr)

Expand Down Expand Up @@ -2255,11 +2262,11 @@ def upg(cfg, descr):
)
u.upgrade()

upgrade_graph_section(cfg, descr)
upgrade_param_env_templates(cfg, descr)

warn_about_depr_platform(cfg)
warn_about_depr_event_handler_tmpl(cfg)
if not for_cancel_broadcast:
upgrade_graph_section(cfg, descr)
upgrade_param_env_templates(cfg, descr)
warn_about_depr_platform(cfg)
warn_about_depr_event_handler_tmpl(cfg)

return u

Expand Down
10 changes: 7 additions & 3 deletions cylc/flow/scripts/broadcast.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ def get_padding(settings, level=0, padding=0):
return padding


def get_rdict(left, right=None):
def get_rdict(left, right=None, for_cancel_broadcast=False):
"""Check+transform left=right into a nested dict.

left can be key, [key], [key1]key2, [key1][key2], [key1][key2]key3, etc.
Expand All @@ -193,7 +193,11 @@ def get_rdict(left, right=None):
# item = right
cur_dict[tail.strip()] = right
tail = None
upg({'runtime': {'__MANY__': rdict}}, 'test')
upg(
{'runtime': {'__MANY__': rdict}},
'test',
for_cancel_broadcast=for_cancel_broadcast,
)
# Perform validation, but don't coerce the original (deepcopy).
cylc_config_validate(deepcopy(rdict), SPEC['runtime']['__MANY__'])
return rdict
Expand Down Expand Up @@ -433,7 +437,7 @@ async def run(options: 'Values', workflow_id):
raise InputError(
"--cancel=[SEC]ITEM does not take a value")
option_item = option_item.strip()
setting = get_rdict(option_item)
setting = get_rdict(option_item, for_cancel_broadcast=True)
settings.append(setting)
files_to_settings(settings, options.cancel_files, options.cancel)
mutation_kwargs['variables'].update(
Expand Down
Loading