Move preinstalled workflows to mistral-extra
* These workflows are openstack workflow so they should be in mistral-extra where all the openstack actions are. * Use an entry point to get all the paths for the workflows.py, This way other projects can have there own pre installed workflows. Depends-On: https://review.opendev.org/#/c/709963/ Change-Id: I379dc5ca40c2055122508daae7a638c21c840254
This commit is contained in:
@@ -0,0 +1,88 @@
|
|||||||
|
---
|
||||||
|
version: '2.0'
|
||||||
|
|
||||||
|
create_instance:
|
||||||
|
type: direct
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Creates VM and waits till VM OS is up and running.
|
||||||
|
|
||||||
|
input:
|
||||||
|
- name
|
||||||
|
- image_id
|
||||||
|
- flavor_id
|
||||||
|
- ssh_username: null
|
||||||
|
- ssh_password: null
|
||||||
|
|
||||||
|
# Name of previously created keypair to inject into the instance.
|
||||||
|
# Either ssh credentials or keypair must be provided.
|
||||||
|
- key_name: null
|
||||||
|
|
||||||
|
# Security_groups: A list of security group names
|
||||||
|
- security_groups: null
|
||||||
|
|
||||||
|
# An ordered list of nics to be added to this server, with information about connected networks, fixed IPs, port etc.
|
||||||
|
# Example: nics: [{"net-id": "27aa8c1c-d6b8-4474-b7f7-6cdcf63ac856"}]
|
||||||
|
- nics: null
|
||||||
|
|
||||||
|
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 %>
|
||||||
|
input:
|
||||||
|
key_name: <% $.key_name %>
|
||||||
|
security_groups: <% $.security_groups %>
|
||||||
|
nics: <% $.nics %>
|
||||||
|
publish:
|
||||||
|
vm_id: <% task(create_vm).result.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: <% task(search_for_ip).result[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"
|
||||||
|
retry:
|
||||||
|
count: 10
|
||||||
|
delay: 10
|
||||||
|
publish:
|
||||||
|
status: <% task(wait_vm_active).result.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 %>
|
||||||
|
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 %>
|
||||||
|
retry:
|
||||||
|
count: 10
|
||||||
|
delay: 10
|
||||||
|
|
||||||
|
delete_vm:
|
||||||
|
description: Destroy VM.
|
||||||
|
workflow: delete_instance instance_id=<% $.vm_id %>
|
||||||
|
on-complete:
|
||||||
|
- fail
|
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
version: "2.0"
|
||||||
|
|
||||||
|
delete_instance:
|
||||||
|
type: direct
|
||||||
|
|
||||||
|
input:
|
||||||
|
- instance_id
|
||||||
|
|
||||||
|
description: Deletes VM.
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
delete_vm:
|
||||||
|
description: Destroy VM.
|
||||||
|
action: nova.servers_delete server=<% $.instance_id %>
|
||||||
|
wait-after: 10
|
||||||
|
on-success:
|
||||||
|
- find_given_vm
|
||||||
|
|
||||||
|
find_given_vm:
|
||||||
|
description: Checks that VM is already deleted.
|
||||||
|
action: nova.servers_find id=<% $.instance_id %>
|
||||||
|
on-error:
|
||||||
|
- succeed
|
||||||
|
|
21
mistral_extra/workflows.py
Normal file
21
mistral_extra/workflows.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Copyright 2020 - Nokia Corporation
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from mistral_lib import utils
|
||||||
|
|
||||||
|
PRE_INSTALLED_WF_PATH = 'resources/openstack/workflows'
|
||||||
|
|
||||||
|
|
||||||
|
def get_preinstalled_workflows():
|
||||||
|
return utils.get_file_list(PRE_INSTALLED_WF_PATH, package='mistral_extra')
|
@@ -26,6 +26,9 @@ packages =
|
|||||||
mistral.generators =
|
mistral.generators =
|
||||||
generators = mistral_extra.actions.generator_factory:all_generators
|
generators = mistral_extra.actions.generator_factory:all_generators
|
||||||
|
|
||||||
|
mistral.preinstalled_workflows =
|
||||||
|
workflows = mistral_extra.workflows:get_preinstalled_workflows
|
||||||
|
|
||||||
[build_sphinx]
|
[build_sphinx]
|
||||||
source-dir = doc/source
|
source-dir = doc/source
|
||||||
build-dir = doc/build
|
build-dir = doc/build
|
||||||
|
Reference in New Issue
Block a user