deb-mistral/resources/workflows/create_instance.yaml
Nikolay Mahotkin bb5d09b0e3 Create standard workflows and actions
* Standard workflows are creating during sync_db.sh
 * Standard workflows include:
     - std.create_instance
     - std.delete_instance
     (list will be extended in future)
 * Standard actions:
     - std.wait_ssh (needed for std.create_instance)
 * Make it possible to see these workflows from any project (global scope)
 * Small changes in sqlalchemy api and workflows_service

Partially implements blueprint mistral-multitenancy

Change-Id: I8a8ace40949b2b711a292aac94d7e6354d1dff9c
2014-10-10 12:46:40 +04:00

77 lines
1.7 KiB
YAML

---
version: 2.0
std.create_instance:
type: direct
description: |
Creates VM and waits till VM OS is up and running.
input:
- name
- image_id
- flavor_id
- ssh_username
- ssh_password
task-defaults:
on-error:
- delete_vm
output:
ip: $.vm_ip
id: $.vm_id
name: $.name
status: $.status
tasks:
create_vm:
description: Initial request to create a VM.
action: nova.servers_create name={$.name} image={$.image_id} flavor={$.flavor_id}
publish:
vm_id: $.id
on-success:
- search_for_ip
search_for_ip:
description: Gets first free ip from Nova floating IPs.
action: nova.floating_ips_findall instance_id=null
publish:
vm_ip: $[0].ip
on-success:
- wait_vm_active
wait_vm_active:
description: Waits till VM is ACTIVE.
action: nova.servers_find id={$.vm_id} status="ACTIVE"
policies:
retry:
count: 10
delay: 10
publish:
status: $.status
on-success:
- associate_ip
associate_ip:
description: Associate server with one of floating IPs.
action: nova.servers_add_floating_ip server={$.vm_id} address={$.vm_ip}
policies:
wait-after: 5
on-success:
- wait_ssh
wait_ssh:
description: Wait till operating system on the VM is up (SSH command).
action: std.wait_ssh username={$.ssh_username} password={$.ssh_password} host={$.vm_ip}
policies:
retry:
count: 10
delay: 10
delete_vm:
description: Destroy VM.
workflow: std.delete_instance instance_id={$.vm_id}
on-complete:
- fail