fuel-plugin-cinder-gcs/specs/mistral_sample.rst

4.5 KiB
Raw Blame History

Sample Mistral backup workflow

The workflow can be imported to Mistral to perform backups in an automated way.

Problem description

Any backup strategy requires taking backups on regular basis and it's good to have these repeatable actions automated.

Taking a drive backup is often considered as a single action but usually requires taking a snapshot, taking a backup of the snapshot and then deleting the snapshot. So taking a drive backup is actually a workflow.

Mistral is a workflow service for OpenStack cloud.

Creating a workflow for Mistral requires some practice and working workflow example should make it easier to start using Mistral for the backup process automation.

Proposed changes

Provide an example of Mistral workflow for creating backups.

The sample is written in Mistral DSL v2.

The workflow accepts the following input parameters:

  • project_id_list - list of project identifiers. Backup of all volumes of projects from project_id_list will be taken if not provided. Mutually exclusive with volume_id_list. Optional.
  • volume_id_list - list of volume identifiers. Backup of volumes from volume_id_list will be taken. Mutually exclusive with project_id_list. Optional.
  • is_incremental - create an incremental backup or full. Default is false. Optional.
  • report_to - list of e-mail addresses to send reports to Reports are not e-mailed if not provided. Optional.

If neither project_id_list nor volume_id_list are provided then backup of all volumes of all projects will be taken. If both project_id_list and volume_id_list are provided the workflow does not take backups.

create_backups workflow tasks:

  • analyze_input
    • chooses the task to execute next accordingly to input
    • if neither project_id_list nor volume_id_list are provided then run get_all_projects_volumes_list
    • if project_id_list is provided but volume_id_list is not then run get_volumes_list
    • if volume_id_list is provided but project_id_list is not then run create_snapshots task
    • if project_id_list are volume_id_list are provided then report error
  • get_all_projects_volumes_list
    • provides list of volumes to backup
    • runs create_snapshots task
  • get_volumes_list
    • provides list of volumes to backup accordingly to project_id_list
    • runs create_snapshots task
  • create_snapshots
    • creates snapshots of selected volumes
    • runs create_backups task
  • create_backups
    • creates backups using the snapshots
    • runs wait_for_backups_completion task
  • wait_for_backups_completion
    • verifies if the backups are in avalilable state
    • runs delete_snapshots task
  • delete_snapshots
    • deletes snapshots
    • runs send_report task
  • send_report
    • sends report if report_to is provided

Web UI

None

Nailgun

None

Data model

None

REST API

None

Orchestration

None

Fuel Client

None

Fuel Library

None

Limitations

None

Alternatives

A set of separate OpenStack API calls can be invoked by a self written script.

Upgrade impact

None

Security impact

None

Notifications impact

None

End user impact

None

Performance impact

None

Deployment impact

None

Developer impact

None

Infrastructure impact

None

Documentation impact

None

Implementation

Assignee(s)

Primary assignee:

Other contributors:

Project manager:

Quality assurance:

Work Items

  • Prepare development environment
  • Create Mistral workflow
  • Test the workflow

Dependencies

  • Mistral >= 2.0

Testing

TODO

Acceptance criterias

  • The workflow can be imported to Mistral
  • Backups can be created by Mistral
  • A report e-mail is received

References