armada/swagger/swaggerV3-api.yaml
Sean Eagan ae690ef828 Expose helm's upgrade/rollback force and recreate pods flags
This exposes helm's force and recreate pods flags for upgrade and
rollback.  It exposes in the chart manifest an options field underneath
the upgrade field to hold options to pass through to helm, and
initializes it with these two flags.  Since rollback is currently a
standalone operation which does not consume manifests, these flags are
directly exposed as api and cli arguments there.

Change-Id: If65c1e97d437d9cf9d5838111fd485c80c76aa1d
2018-06-13 11:28:20 -05:00

632 lines
18 KiB
YAML

openapi: 3.0.0
info:
title: Armada
version: 0.1.6
description: |
Armada provides operators a way to deploy or upgrade collections of helm
charts using a single command.
contact:
name: Armada Github Repository
url: https://github.com/openstack/airship-armada
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
paths:
/versions:
get:
tags:
- Versions
description: Returns list of all supported versions of Armada.
operationId: getVersions
responses:
'200':
$ref: "#/components/responses/response-get-versions"
options:
tags:
- Versions
operationId: optVersions
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/health:
get:
tags:
- Health
description: Returns the health of the system. [TODO]
operationId: getHealth
parameters:
- $ref: "#/components/parameters/x-auth-token"
responses:
'204':
description: Indicates the system is healthy. This is currently the default return.
'503':
description: Indicates the system is not healthy. This is not explicitly returned.
options:
tags:
- Health
operationId: optHealth
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/releases:
get:
tags:
- Releases
description: Returns list of Tiller releases
operationId: getReleases
parameters:
- $ref: "#/components/parameters/x-auth-token"
- $ref: "#/components/parameters/tiller-host"
- $ref: "#/components/parameters/tiller-port"
- $ref: "#/components/parameters/tiller-namespace"
responses:
'200':
$ref: "#/components/responses/response-get-releases"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
'500':
$ref: "#/components/responses/err-server-error"
options:
tags:
- Releases
operationId: optReleases
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/status:
get:
tags:
- Status
description: Returns the status of Tiller
operationId: getStatus
parameters:
- $ref: "#/components/parameters/x-auth-token"
- $ref: "#/components/parameters/tiller-host"
- $ref: "#/components/parameters/tiller-port"
- $ref: "#/components/parameters/tiller-namespace"
responses:
'200':
$ref: "#/components/responses/response-get-status"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
'500':
$ref: "#/components/responses/err-server-error"
options:
tags:
- Status
operationId: optStatus
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/apply:
post:
tags:
- Apply
description: Install or upgrade using an Armada manifest
operationId: postApplyManifest
parameters:
- $ref: "#/components/parameters/x-auth-token"
- $ref: "#/components/parameters/tiller-host"
- $ref: "#/components/parameters/tiller-port"
- $ref: "#/components/parameters/tiller-namespace"
- $ref: "#/components/parameters/target-manifest"
- $ref: "#/components/parameters/disable-update-pre"
- $ref: "#/components/parameters/disable-update-post"
- $ref: "#/components/parameters/enable-chart-cleanup"
- $ref: "#/components/parameters/dry-run"
- $ref: "#/components/parameters/wait"
- $ref: "#/components/parameters/timeout"
requestBody:
$ref: "#/components/requestBodies/apply-body"
responses:
'200':
$ref: "#/components/responses/response-post-apply"
'400':
$ref: "#/components/responses/err-bad-request"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
'415':
$ref: "#/components/responses/err-unsupported-media-type"
'500':
$ref: "#/components/responses/err-server-error"
options:
tags:
- Apply
operationId: optApply
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/tests:
post:
tags:
- Tests
description: Test manifest releases
operationId: postTests
parameters:
- $ref: "#/components/parameters/x-auth-token"
- $ref: "#/components/parameters/tiller-host"
- $ref: "#/components/parameters/tiller-port"
- $ref: "#/components/parameters/tiller-namespace"
- $ref: "#/components/parameters/target-manifest"
requestBody:
$ref: "#/components/requestBodies/manifest-body"
responses:
'200':
$ref: "#/components/responses/response-post-tests"
'400':
$ref: "#/components/responses/err-bad-request"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
'500':
$ref: "#/components/responses/err-server-error"
options:
tags:
- Tests
operationId: optTests
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/test/{release_name}:
post:
tags:
- Tests
description: Test specified release name
operationId: postTestReleaseName
parameters:
- $ref: "#/components/parameters/release-name"
- $ref: "#/components/parameters/x-auth-token"
- $ref: "#/components/parameters/tiller-host"
- $ref: "#/components/parameters/tiller-port"
- $ref: "#/components/parameters/tiller-namespace"
responses:
'200':
$ref: "#/components/responses/response-post-test-release"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
'500':
$ref: "#/components/responses/err-server-error"
options:
tags:
- Tests
operationId: optTestReleaseName
parameters:
- $ref: "#/components/parameters/release-name"
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/rollback/{release_name}:
post:
tags:
- Rollback
description: Rollback the specified release name
operationId: postRollbackReleaseName
parameters:
- $ref: "#/components/parameters/release-name"
- $ref: "#/components/parameters/release-version"
- $ref: "#/components/parameters/x-auth-token"
- $ref: "#/components/parameters/tiller-host"
- $ref: "#/components/parameters/tiller-port"
- $ref: "#/components/parameters/tiller-namespace"
- $ref: "#/components/parameters/dry-run"
- $ref: "#/components/parameters/wait"
- $ref: "#/components/parameters/timeout"
- $ref: "#/components/parameters/force"
- $ref: "#/components/parameters/recreate-pods"
responses:
'200':
$ref: "#/components/responses/response-post-rollback-release"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
'500':
$ref: "#/components/responses/err-server-error"
options:
tags:
- Rollback
operationId: optRollbackReleaseName
parameters:
- $ref: "#/components/parameters/release-name"
responses:
'200':
$ref: "#/components/responses/response-options"
/api/v1.0/validatedesign:
post:
tags:
- Validate Design
description: Validate a design
operationId: postValidateDesign
parameters:
- $ref: "#/components/parameters/x-auth-token"
requestBody:
$ref: "#/components/requestBodies/manifest-body"
responses:
'200':
$ref: "#/components/responses/response-post-validatedesign"
'400':
$ref: "#/components/responses/err-bad-request"
'401':
$ref: "#/components/responses/err-no-auth"
'403':
$ref: "#/components/responses/err-forbidden"
options:
tags:
- Validate Design
operationId: optValidateDesign
responses:
'200':
$ref: "#/components/responses/response-options"
components:
parameters:
x-auth-token:
in: header
name: X-Auth-Token
required: false
description: A Keystone fernet bearer token used for authentication and authorization
schema:
type: string
release-name:
in: path
name: release_name
required: true
description: Name of the release to be acted upon
schema:
type: string
release-version:
in: query
name: version
required: false
description: "Version number of release to rollback to. 0 represents the previous version. Default: `0`"
schema:
type: integer
tiller-host:
in: query
name: tiller_host
required: false
description: Hostname of the Tiller server
schema:
type: string
tiller-port:
in: query
name: tiller_port
required: false
schema:
type: integer
description: "Port number of the Tiller server. Default: the value of `CONF.tiller_port`"
tiller-namespace:
in: query
name: tiller_namespace
required: false
schema:
type: string
description: "Tiller namespace. Default: Value of `CONF.tiller_namespace`"
target-manifest:
in: query
name: target_manifest
required: false
schema:
type: string
description: Specifies the manifest to target if there are multiple manifests
disable-update-pre:
in: query
name: disable_update_pre
required: false
schema:
type: boolean
disable-update-post:
in: query
name: disable_update_post
required: false
schema:
type: boolean
enable-chart-cleanup:
in: query
name: enable_chart_cleanup
required: false
description: Flag to allow for chart cleanup
schema:
type: boolean
dry-run:
in: query
name: dry_run
required: false
description: Flag to simulate an install if set to True
schema:
type: boolean
timeout:
in: query
name: timeout
required: false
description: "Specifies time in seconds Tiller should wait for charts to deploy until timing out. Default: 3600"
schema:
type: integer
wait:
in: query
name: wait
required: false
description: Specifies whether Tiller should wait until all charts are deployed
schema:
type: boolean
force:
in: query
name: force
required: false
description: Specifies whether to force resource update through
delete/recreate if needed.
schema:
type: boolean
default: false
recreate-pods:
in: query
name: recreate_pods
required: false
description: Specifies whether to restart pods for the resource if
applicable.
schema:
type: boolean
default: false
requestBodies:
apply-body:
required: true
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/manifest-json"
- $ref: "#/components/schemas/manifest-refs"
application/x-yaml:
schema:
$ref: "#/components/schemas/manifest-yaml"
manifest-body:
description: A manifest JSON or YAML object representation of a manifest
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/manifest-json"
application/x-yaml:
schema:
$ref: "#/components/schemas/manifest-yaml"
responses:
# HTTP error responses
err-bad-request:
description: 400 Bad request
err-no-auth:
description: 401 Not authorized
err-forbidden:
description: 403 Forbidden
err-not-found:
description: 404 Not found
err-not-allowed:
description: 405 Method not allowed
err-unsupported-media-type:
description: |
415 Unsupported Media Type
Mime type needs to be application/json or application/x-yaml.
err-server-error:
description: 500 Internal Server Error
response-options:
description: Empty response with `Allow` header indicating possible action(s)
headers:
Allow:
schema:
type: string
example:
Allow: GET,POST,DELETE
# API responses
response-post-apply:
description: Response of application of an Armada manifest
content:
application/json:
schema:
$ref: "#/components/schemas/result-apply"
response-post-rollback-release:
description: Response of a rollback of a specified release name
content:
application/json:
schema:
$ref: "#/components/schemas/result-rollback"
response-post-test-release:
description: Response of a test of a specified release name
content:
application/json:
schema:
$ref: "#/components/schemas/result-test"
response-post-validatedesign:
description: Response of a validation check
content:
application/json:
schema:
$ref: "#/components/schemas/base-response"
response-post-tests:
description: Response of all tests
content:
application/json:
schema:
$ref: "#/components/schemas/base-response"
response-get-releases:
description: Response of all namespaces and releases contained within
content:
application/json:
schema:
$ref: "#/components/schemas/releases"
response-get-versions:
description: Response of getting Armada versions
content:
application/json:
schema:
$ref: "#/components/schemas/versions"
response-get-status:
description: Response of Tiller statuses
content:
application/json:
schema:
$ref: "#/components/schemas/status"
schemas:
base-response:
type: object
properties:
kind:
type: string
apiVersion:
type: string
reason:
type: string
metadata:
$ref: "#/components/schemas/metadata"
details:
$ref: "#/components/schemas/detail"
status:
type: string
message:
type: string
code:
type: integer
example:
kind: Status
apiVersion: v1.0
reason: Validation
metadata: {}
details: []
status: Success
message: <Success message>
code: 200
detail:
type: object
properties:
errorCount:
type: integer
messageList:
type: array
items:
type: string
metadata:
type: object
additionalProperties:
type: string
releases:
type: object
additionalProperties:
type: array
items:
type: string
example:
namespace-one:
- release-A
- release-B
namespace-two:
- other-release-X
- other-release-Y
result-apply:
type: object
properties:
message:
type: object
properties:
install:
type: array
items:
type: string
upgrade:
type: array
items:
type: string
diff:
type: object
additionalProperties:
type: string
example:
install:
- release-A
- release-B
upgrade:
- release-C
- release-D
diff:
key1: val1
key2: val2
result-rollback:
type: object
properties:
message:
type: string
example:
message: "Rollback of release xyz complete"
result-test:
type: object
properties:
message:
type: string
result:
type: string
example:
message: "MESSAGE: No test found"
result: "FAILED: <reason>"
status:
type: object
properties:
tiller:
type: object
properties:
state:
type: boolean
version:
type: string
example:
tiller:
state: True
version: 0.1.0
version:
type: object
properties:
path:
type: string
status:
type: string
versions:
type: object
additionalProperties:
$ref: "#/components/schemas/version"
example:
v1.0:
path: /api/v1.0
status: stable
manifest-json:
type: object
example:
schema: armada/ChartGroup/v1
metadata:
schema: metadata/Document/v1
nname: someName
data:
description: Simple Service
sequenced: false
chart_group:
- group1
- group2
manifest-yaml:
type: object
manifest-refs:
type: object
properties:
hrefs:
oneOf:
- $ref: "#/components/schemas/manifest-json"
- $ref: "#/components/schemas/manifest-yaml"
overrides:
type: object
additionalProperties:
type: string