--- schema: deckhand/DataSchema/v1 metadata: schema: metadata/Control/v1 name: promenade/Genesis/v1 labels: application: promenade data: $schema: http://json-schema.org/schema# definitions: abs_path: type: string pattern: '^/.+$' hostname: type: string pattern: '^[a-z][a-z0-9-]+$' 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' requried: - mode - path oneOf: - type: object required: - content - type: object allOf: - type: object required: - tar_url - tar_path additionalProperties: false image: type: string # XXX add regex ip_address: type: string pattern: '^(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))$' kubernetes_label: type: string # XXX add regex rel_path: type: string # XXX add regex type: object properties: armada: type: object properties: target_manifest: type: string additionalProperties: false apiserver: type: object properties: command_prefix: type: array items: type: string additionalProperties: false files: type: array items: $ref: '#/definitions/file' hostname: $ref: '#/definitions/hostname' domain: type: string ip: $ref: '#/definitions/ip_address' labels: properties: static: type: array items: $ref: '#/definitions/kubernetes_label' dynamic: type: array items: $ref: '#/definitions/kubernetes_label' additionalProperties: false images: type: object properties: armada: $ref: '#/definitions/image' helm: type: object properties: tiller: $ref: '#/definitions/image' required: - tiller additionalProperties: false kubernetes: type: object properties: apiserver: $ref: '#/definitions/image' controller-manager: $ref: '#/definitions/image' etcd: $ref: '#/definitions/image' scheduler: $ref: '#/definitions/image' required: - apiserver - controller-manager - etcd - scheduler additionalProperties: false required: - armada - helm - kubernetes additionalProperties: false required: - hostname - ip - images - labels additionalProperties: false ...