Summary

Suite Structure

So far we have covered:

  • Cylc suites.
  • Rose suite configurations.
  • Rosie suites.

The relationship between them is as follows:

graph Example { ranksep = 0 size = "7, 5" node [shape="plaintext", fontcolor="#606060"] edge [style="invis"] subgraph cluster_1 { label = "Cylc Suite" fontsize = "20" fontcolor = "#5050aa" labelloc = "r" "suite.rc" [fontsize="18", fontname="mono", fontcolor="black"] "rcinfo" [label="Defines the workflow\nin terms of tasks\nand dependencies"] "suite.rc" -- "rcinfo" subgraph cluster_2 { label = "Rose Suite Configuration" "rose-suite.conf" [fontsize="18", fontname="mono", fontcolor="black"] "confinfo" [label="Defines Jinja2 variables for\nthe suite.rc and environment\nvariables for use throughout\nthe suite"] "rose-suite.conf" -- "confinfo" subgraph cluster_3 { label = "Rosie Suite" "rose-suite.info" [fontsize="18", fontname="mono", fontcolor="black"] "infoinfo" [label="Contains basic information\nabout the suite used\nby Rosie for searching\nand version control purposes"] "rose-suite.info" -- "infoinfo" } } } }

Cylc suites can have Rose applications. These are stored in an app directory and are configured using a rose-app.conf file.

Suite Commands

We have learned the following Cylc commands:

cylc graph
Draws the suite’s graph.
cylc get-config
Processes the suite.rc file and prints it back out.
cylc validate
Validates the Cylc suite.rc file to check for any obvious errors.
cylc run
Runs a suite.
cylc stop

Stops a suite, in a way that:

--kill
Kills all running/submitted tasks.
--now --now
Leaves all running/submitted tasks running.
cylc restart
Starts a suite, picking up where it left off from the previous run.

We have learned the following Rose commands:

rose app-run
Runs a Rose application.
rose task-run
Runs a Rose application from within a Cylc suite.
rose suite-run
Runs a Rose suite.
rose suite-restart
Runs a Rose suite, picking up where it left off from the previous run.

The Cylc commands do not know about the rose-suite.conf file so for Rose suite configurations you will have to install the suite before using commands such as cylc graph, e.g:

# install the suite on the local host only - don't run it.
rose suite-run --local-install-only

# run cylc graph using the installed version of the suite.
cylc graph <name>

Rose Utilities

Rose contains some utilities to make life easier:

rose date

A utility for parsing, manipulating and formatting date-times which is useful for working with the Cylc cycle point:

$ rose date 2000 --offset '+P1Y1M1D'
2001-02-02T0000Z

$ rose date $CYLC_TASK_CYCLE_POINT --format 'The month is %B.'
The month is April.

See the date-time tutorial for more information.

rose host-select

A utility for selecting a host from a group with the ability to rank choices based on server load or free memory.

Groups are configured using the rose.conf[rose-host-select]group{NAME} setting. For example to define a cluster called “mycluster” containing the hosts “computer1”, “computer2” and “computer3”, you would write:

[rose-host-select]
group{mycluster}=computer1 computer2 computer3

Hosts can then be selected from the cluster on the command line:

$ rose host-select mycluster
computer2

The rose host-select command can by used within Cylc suites to determine which host a task runs on:

[runtime]
    [[foo]]
        script = echo "Hello $(hostname)!"
        [[[remote]]]
            host = rose host-select mycluster

Rose Built-In Applications

Along with Rose utilities there are also Rose built-in applications.

fcm_make
A template for running the fcm make command.
rose_ana
Runs the rose-ana analysis engine.
rose_arch
Provides a generic solution to configure site-specific archiving of suite files.
rose_bunch
For the running of multiple command variants in parallel under a single job.
rose_prune
A framework for housekeeping a cycling suite.

Next Steps

Further Topics
Tutorials going over some of the more specific aspects of Rose not covered in the main tutorial.
Cheat Sheet
A quick breakdown of the commands for running and interacting with suites using Cylc and Rose.
Command Reference
Contains the command-line documentation (also obtainable by calling rose --help).
Rose Configuration
The possible settings which can be used in the different Rose configuration files.
Cylc Suite Design Guide
Contains recommended best practice for the style and structure of Cylc suites.