Cylc Rose

Cylc Rose

Cylc Rose is the bridge between Rose suite configurations and Cylc workflows.

Cylc Rose allows cylc install to replace the rose suite-run command (present in Rose versions 2019.01 and earlier). It reads the rose-suite.conf file and:

  • Makes environment and template variables available to Cylc.

  • Installs files.

  • Records information in about the configuration installed in ~/cylc-run/<workflow>/opt/rose-suite-cylc-install.conf

The following Cylc commands will read Rose Suite Configurations:

  • cylc validate

  • cylc graph

  • cylc list

  • cylc config

Rose Config

Attention

Rose configurations for Cylc workflows continue to be referred to as Rose suites.

A fuller description of rose suite config is available here.

Cylc-rose allows you to set environment and template variables in a configuration file called rose-suite.conf. The following sections are permitted in the rose-suite.conf files:

config item

description

opts=A B C

A space limited list of optional configs.

[env]

Variables which the cylc-rose plugin will export to the environment.

[template variables]

Variables which can be used by Jinja2 or Empy in the workflow definition.

[file:destination]

A file from one or more sources to be installed.

Note

For compatibility with Cylc 7 sections [suite.rc:empy] and [suite.rc:jinja2] will be processed, but are deprecated and provided for ease of porting Cylc 7 workflows.

Additional CLI options

You can use command line options to set or override any setting you could put in a rose-suite.conf file: If you have Cylc Rose installed see cylc install --help.

Cylc Install Optional Config

If Cylc-Rose is installed, using cylc install with a Rose Suite will write a record of command line options set in $CYLC_RUN_DIR/workflow_name/opt/rose-suite-cylc-install.conf.

Example

For a workflow with the following definitions in the source directory:

rose-suite.conf

[template variables]
NAME='Mars'

flow.cylc

#!jinja2
[scheduling]
    initial cycle point = 2020
    [[graph]]
        R1 = Hello_{{ NAME }}

[runtime]
    [[Hello_{{ NAME }}]]
        script = True

If you then ran

cylc install

Your final workflow would have the variable NAME inserted:

- Before processing
+ After processing

-           R1 = Hello_{{ NAME }}
+           R1 = Hello_Mars

-       [[Hello_{{ NAME }}]]
+       [[Hello_Mars]]

Rose Stem

Cylc Rose provides a Rose Stem command, if FCM is installed on your system. At Cylc 8 Rose Stem is a wrapper to cylc install rather than rose suite-run.

Rose Stem is a wrapper around the cylc install command which provides some additional Jinja2 variables.

Cylc 8 stores variables set by rose and rose-stem in the optional configuration file ~/cylc-run/my_workflow/opt/rose-suite-cylc-install.conf.

Caution

To reinstall a rose stem suite use cylc reinstall. Cylc can get any options you do not change from the rose-suite-cylc-install.conf` file. Using rose stem a second time will attempt install a new copy of your rose stem suite.