tripleo-common/workbooks/swift.yaml
Steven Hardy f1640a11de Add utility workflow to verify if an object exists
This will be used to check if e.g plan-environment.yaml exists
in a plan container.

Change-Id: Iabb5a7fecd0d6889f3cd65188396e23a23874648
2018-07-03 15:46:27 +01:00

80 lines
2.3 KiB
YAML

---
version: '2.0'
name: tripleo.swift.v1
description: TripleO Swift Utility Workflows
workflows:
container_exists:
description: >-
Verify if a Swift container exists
Given the name of a Swift container this workflow will verify if it
already exists. The workflow will ERROR if it doesn't and end in
SUCCESS if it does.
If create_container: true is passed in, then the container will be
created if it doesn't exist. In this case, if the workflow fails the
container failed to create.
input:
- container
- headers: {}
- create_container: false
tags:
- tripleo-common-managed
tasks:
# We use the "prefix" input to only list the containers starting with
# the container name we want to find. There is no way to do an exact
# match, but this will greatly reduce the possible number of results.
get_containers:
action: swiftservice.list
input:
options:
prefix: <% $.container %>
publish:
container_exists: <% bool(task().result) and $.container in task().result[0].listing.name %>
create_input: <% $.headers and {"container" => $.container, "headers" => $.headers} or {"container" => $.container} %>
on-success:
- succeed: <% $.container_exists %>
- fail: <% not $.create_container and not $.container_exists %>
- create_container: <% $.create_container and not $.container_exists %>
create_container:
action: swift.put_container
input: <% $.create_input %>
object_exists:
description: >-
Verify if a Swift object exists
Given the name of a Swift container and object this workflow will
verify if it already exists. The workflow will ERROR if it doesn't
and end in SUCCESS if it does.
input:
- container
- object
tags:
- tripleo-common-managed
tasks:
get_objects:
action: swift.get_container
input:
container: <% $.container %>
prefix: <% $.object %>
publish:
object_exists: <% bool(task().result) and $.object in task().result[1].select($.name) %>
on-success:
- succeed: <% $.object_exists %>
- fail: <% not $.object_exists %>