Rose Design Goals
Rose is a group of utilities and specifications
which aim to provide a common way to manage the
development and running of scientific application
suites in both research and production environments.
Rose was designed to allow users to follow these
principles:
- A suite and the applications it runs should be
driven mainly by configurations that can easily be
understood and modified by a human user as well as
a computer.
- A suite should work with no modifications when
it is run by a different user of the same
site.
- It should require minimum efforts to port a
suite between old and new platforms, between sites,
and between research and production environments.
Where possible, it should be easy to abstract away
unportable site configurations.
- Configurations for driving scientific
applications should be portable between related
suites.
- Configurations for driving a scientific suite
should be version controlled. The results generated
by running such a suite should be easily
identifiable in the archive environment.
- Rose utilities should be driven by well defined
configurations. Any site and/or application
specific logic should be configurable.
- Rose GUI utilities will provide a nice way to
access a set of functionalities, but will not be
the only way to access those functionalities
(unless they are GUI specific).
Rose Components
Rose has the following components:
- Application configuration and runner: Rose
provides a simple and portable configuration driven
application runner to run individual scientific
applications in suite tasks.
- Configuration editor GUI: Rose provides a
powerful metadata driven GUI for viewing, editing,
checking, transforming, etc. suite and application
configurations. The behaviour of the GUI can be
easily modified on the fly by modifying the
metadata associated with the suite and application
configurations.
- Suite engine: Rose uses cylc as the main
engine for running suites.
- Suite installer: Rose provides a configuration
driven installer to install and start a cylc suite.
This can install additional files from locations
such as version control systems and mirror the
suite to any remote platforms where tasks are to be
run. It can also be configured to run the suite on
a remote platform (a resilient server for
instance).
- Common suite utilities: Rose provides various
utilities to allow suites to be written in a common
way. This includes a task runner which makes it
easy to run Rose applications and utilities within
suite tasks, a task hook to notify task failures
and interact with the suite log viewer, plus
utilities for file installation, housekeeping,
archiving, etc.
- Rose Bush: While a suite engine would normally
provide its own monitoring tools to monitor a
running suite, they do not normally cover tasks
that are no longer current and they cannot normally
interact with a stopped suite. Rose Bush is a
simple service for users to browse their suite logs
over HTTP on their intranet.
- Suite storage and discovery: Rose suites are
just files in a directory hierarchy, so they can be
stored anywhere. To avoid chaos, however, Rose
provides a solution to allow suites to be hosted
centrally using a version control system. This
allows suites to be easily identifiable, shared,
compared and retrieved by different users. Each
centrally hosted suite will provide an identity
file, which the system can use to populate a
database. Users can discover relevant suites by
querying the database.