Difference between revisions of "Mistral/DSL"
(→YAML example:) |
(→Full YAML example:) |
||
Line 109: | Line 109: | ||
=== Full YAML example: === | === Full YAML example: === | ||
− | + | Services: | |
− | + | MyRest: | |
− | type: | + | type: REST_API |
parameters: | parameters: | ||
− | baseUrl: | + | baseUrl: http://some_host |
actions: | actions: | ||
create-vm: | create-vm: | ||
parameters: | parameters: | ||
− | url: | + | url: /service/action/execute |
− | method: | + | method: GET |
task-parameters: | task-parameters: | ||
flavor_id: | flavor_id: | ||
image_id: | image_id: | ||
− | + | ||
− | + | backup-vm: | |
+ | parameters: | ||
+ | url: url_for_backup | ||
+ | method: GET | ||
+ | task-parameters: | ||
+ | server_id: | ||
+ | |||
+ | attach-volume: | ||
+ | parameters: | ||
+ | url: url_for_attach | ||
+ | method: GET | ||
+ | task-parameters: | ||
+ | size: | ||
+ | mnt_path: | ||
+ | |||
+ | format-volume: | ||
+ | parameters: | ||
+ | url: url_for_format | ||
+ | method: GET | ||
+ | task-parameters: | ||
+ | volume_id: | ||
+ | server_id: | ||
+ | |||
Workflow: | Workflow: | ||
tasks: | tasks: | ||
create-vms: | create-vms: | ||
− | action: | + | action: MyRest:create-vm |
+ | parameters: | ||
+ | image_id: 1234 | ||
+ | flavor_id: 42 | ||
+ | |||
+ | attach-volumes: | ||
+ | dependsOn: [create-vms] | ||
+ | action: MyRest:attach-volume | ||
parameters: | parameters: | ||
− | + | size: | |
− | + | mnt_path: | |
− | attach-volumes: | + | |
− | + | format-volumes: | |
+ | dependsOn: [attach-volumes] | ||
+ | action: MyRest:format-volume | ||
+ | parameters: | ||
+ | server_id: | ||
+ | |||
backup-vms: | backup-vms: | ||
− | action: | + | dependsOn: [create-vms] |
+ | action: MyRest:backup-vm | ||
parameters: | parameters: | ||
− | + | server_id: | |
− | + | ||
− | events: | + | events: |
− | + | create-vms: | |
type: periodic | type: periodic | ||
− | tasks: | + | tasks: create-vms |
parameters: | parameters: | ||
− | cron-pattern: | + | cron-pattern: "*/5 * * * *" |
Revision as of 12:46, 13 January 2014
Contents
Mistral DSL specification
Version 0.1
Main objects
- Service
- Action
- Workflow
- Task
- Event
Service
Provides some specific functionality. For example, Nova service provides functionality for VMs management in OpenStack.
Attributes
- name - string without space, mandatory attribute
- type - currently we support the following types: RESTAPI, OPENSTACKSERVICE, OSLO_RPC, this is a mandatory attribute
- parameters - dictionary depending on type of the service, this parameter can be optional. For example for REST API it should contain url of the service, method of authentication etc.
- actions - list of actions provided by this service
YAML example:
Service: name: Nova type: REST_API parameters: key:value actions: create-vm: ...... delete-vm: .....
Action
A function provided by services. For example Nova service provides the following actions: create-vm, shutdown-vm
Attributes
name - string without space, mandatory attribute parameters - dictionary, which structured is defined by service type. For REST service it contains url and method. task-parameters - dictionary containing parameters which should or could be specified in task
YAML example:
create-vm: parameters: url: servers task-parameters: name: optional: False
Workflow
Attributes
name - string without space, mandatory attribute tasks - list of task in this workflow, each task represent some step in worflow events - list of events in workflow, e.g. timer or periodic events
YAML example:
Workflow: tasks: create-vms: ..... attache-volumes: .....
Task
Represents a step in workflow, for example attaching volume
Attributes
- name - string without space, mandatory attribute
- action - name of action to perform
- dependsOn - list of tasks which should be execute before this tasks, this is optional parameter
- parameters - list of parameters
YAML example:
create-vms: action: Nova:create-vm parameters: image_id: 1234 flavor_id: 42
Events
By event it is possible to invoke specific task.
Attributes
name - string without space, mandatory attribute type - can be PERIODIC, TIMER, CEILOMETER_ALARM tasks - list of tasks which should be execute on event parameters - list of parameters, defined by task
YAML example:
backup-vm: type: periodic tasks: [create_backup, delete_old_backup] parameters: time: 1 0 * * *
Full YAML example:
Services: MyRest: type: REST_API parameters: baseUrl: http://some_host actions: create-vm: parameters: url: /service/action/execute method: GET task-parameters: flavor_id: image_id:
backup-vm: parameters: url: url_for_backup method: GET task-parameters: server_id:
attach-volume: parameters: url: url_for_attach method: GET task-parameters: size: mnt_path:
format-volume: parameters: url: url_for_format method: GET task-parameters: volume_id: server_id:
Workflow: tasks: create-vms: action: MyRest:create-vm parameters: image_id: 1234 flavor_id: 42
attach-volumes: dependsOn: [create-vms] action: MyRest:attach-volume parameters: size: mnt_path:
format-volumes: dependsOn: [attach-volumes] action: MyRest:format-volume parameters: server_id:
backup-vms: dependsOn: [create-vms] action: MyRest:backup-vm parameters: server_id:
events: create-vms: type: periodic tasks: create-vms parameters: cron-pattern: "*/5 * * * *"