--- 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 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 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: 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 common: type: object properties: additional: type: array items: $ref: '#/definitions/package' keys: type: array items: $ref: '#/definitions/public_key' required: type: object properties: docker: $ref: '#/definitions/package' socat: $ref: '#/definitions/package' required: - docker - socat additionalProperties: false repositories: type: array items: $ref: '#/definitions/apt_source_line' required: - required additionalProperties: false genesis: type: object properties: additional: type: array items: $ref: '#/definitions/package' keys: type: array items: $ref: '#/definitions/public_key' required: type: object properties: docker: $ref: '#/definitions/package' socat: $ref: '#/definitions/package' required: - docker - socat additionalProperties: false repositories: type: array items: $ref: '#/definitions/apt_source_line' required: - required additionalProperties: false join: type: object properties: additional: type: array items: $ref: '#/definitions/package' keys: type: array items: $ref: '#/definitions/public_key' required: type: object properties: docker: $ref: '#/definitions/package' socat: $ref: '#/definitions/package' required: - docker - socat additionalProperties: false repositories: type: array items: $ref: '#/definitions/apt_source_line' required: - required additionalProperties: false validation: type: object properties: pod_logs: type: object properties: image: type: string additionalProperties: false additionalProperties: false required: - images - packages additionalProperties: false