201 lines
4.9 KiB
YAML
201 lines
4.9 KiB
YAML
---
|
|
schema: deckhand/DataSchema/v1
|
|
metadata:
|
|
schema: metadata/Control/v1
|
|
name: promenade/HostSystem/v1
|
|
labels:
|
|
application: promenade
|
|
data:
|
|
$schema: http://json-schema.org/schema#
|
|
definitions:
|
|
abs_path:
|
|
type: string
|
|
pattern: '^/.+$'
|
|
systemd_unit:
|
|
type: object
|
|
properties:
|
|
enable:
|
|
type: boolean
|
|
disable:
|
|
type: boolean
|
|
start:
|
|
type: boolean
|
|
stop:
|
|
type: boolean
|
|
mask:
|
|
type: boolean
|
|
additionalProperties: false
|
|
apt_source_line:
|
|
type: string
|
|
# XXX add regex
|
|
file:
|
|
properties:
|
|
path:
|
|
$ref: '#/definitions/abs_path'
|
|
content:
|
|
type: string
|
|
mode:
|
|
type: integer
|
|
minimum: 0
|
|
tar_url:
|
|
$ref: '#/definitions/url'
|
|
tar_path:
|
|
$ref: '#/definitions/rel_path'
|
|
docker_image:
|
|
$ref: '#/definitions/url'
|
|
file_path:
|
|
$ref: '#/definitions/abs_path'
|
|
symlink:
|
|
$ref: '#/definitions/abs_path'
|
|
required:
|
|
- mode
|
|
- path
|
|
oneOf:
|
|
- type: object
|
|
required:
|
|
- content
|
|
- type: object
|
|
required:
|
|
- symlink
|
|
- type: object
|
|
allOf:
|
|
- type: object
|
|
required:
|
|
- tar_url
|
|
- tar_path
|
|
- type: object
|
|
allOf:
|
|
- type: object
|
|
required:
|
|
- docker_image
|
|
- file_path
|
|
additionalProperties: false
|
|
image:
|
|
type: string
|
|
# XXX add regex
|
|
package:
|
|
type: string
|
|
# XXX add regex
|
|
public_key:
|
|
type: string
|
|
# XXX add regex
|
|
rel_path:
|
|
type: string
|
|
# XXX add regex
|
|
url:
|
|
type: string
|
|
# XXX add regex
|
|
repos_and_packages:
|
|
type: object
|
|
properties:
|
|
# apt repositories
|
|
repositories:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/apt_source_line'
|
|
# apt repository keys
|
|
keys:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/public_key'
|
|
# required packages
|
|
required:
|
|
type: object
|
|
properties:
|
|
docker:
|
|
$ref: '#/definitions/package'
|
|
runtime:
|
|
$ref: '#/definitions/package'
|
|
socat:
|
|
$ref: '#/definitions/package'
|
|
# a container runtime is required
|
|
# using either docker or runtime key
|
|
oneOf:
|
|
- required:
|
|
- docker
|
|
- required:
|
|
- runtime
|
|
# socat is required
|
|
required:
|
|
- socat
|
|
additionalProperties: false
|
|
# additional packages
|
|
additional:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/package'
|
|
additionalProperties: false
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: object
|
|
items:
|
|
$ref: '#/definitions/file'
|
|
systemd_units:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: '#/definitions/systemd_unit'
|
|
images:
|
|
type: object
|
|
properties:
|
|
# NOTE(mark-burnett): No longer used.
|
|
coredns:
|
|
$ref: '#/definitions/image'
|
|
haproxy:
|
|
$ref: '#/definitions/image'
|
|
helm:
|
|
type: object
|
|
properties:
|
|
helm:
|
|
$ref: '#/definitions/image'
|
|
required:
|
|
- helm
|
|
additionalProperties: false
|
|
monitoring_image:
|
|
$ref: '#/definitions/image'
|
|
required:
|
|
- haproxy
|
|
- helm
|
|
- monitoring_image
|
|
additionalProperties: false
|
|
packages:
|
|
type: object
|
|
properties:
|
|
common:
|
|
type: object
|
|
$ref: '#/definitions/repos_and_packages'
|
|
genesis:
|
|
type: object
|
|
$ref: '#/definitions/repos_and_packages'
|
|
join:
|
|
type: object
|
|
$ref: '#/definitions/repos_and_packages'
|
|
additionalProperties: false
|
|
validation:
|
|
type: object
|
|
properties:
|
|
pod_logs:
|
|
type: object
|
|
properties:
|
|
image:
|
|
type: string
|
|
additionalProperties: false
|
|
additionalProperties: false
|
|
required:
|
|
- images
|
|
- packages
|
|
allOf:
|
|
# ensure that required packages are defined for genesis node
|
|
# (either in .packages.genesis or .packages.common)
|
|
- anyOf:
|
|
- {properties:{packages:{properties:{common:{required:[required]}}}}}
|
|
- {properties:{packages:{properties:{genesis:{required:[required]}}}}}
|
|
# ensure that required packages are defined for join nodes
|
|
# (either in .packages.join or .packages.common)
|
|
- anyOf:
|
|
- {properties:{packages:{properties:{common:{required:[required]}}}}}
|
|
- {properties:{packages:{properties:{join:{required:[required]}}}}}
|
|
additionalProperties: false
|