diff options
Diffstat (limited to 'config/pdf/idf-pod1.schema.yaml')
-rw-r--r-- | config/pdf/idf-pod1.schema.yaml | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/config/pdf/idf-pod1.schema.yaml b/config/pdf/idf-pod1.schema.yaml new file mode 100644 index 00000000..a1108a00 --- /dev/null +++ b/config/pdf/idf-pod1.schema.yaml @@ -0,0 +1,229 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +$schema: 'http://json-schema.org/schema#' +$id: 'https://github.com/opnfv/pharos/blob/master/config/pdf/pod1.yaml' + +definitions: + net_config: + v0.1: + # NOTE: I hope this is going away soon, so I won't model it yet + type: 'object' + compass: + v0.1: + type: 'object' + # NOTE: To be properly modeled by Compass4NFV maintainers + daisy: + v0.1: + type: 'object' + # NOTE: To be properly modeled by Daisy maintainers + fuel: + v0.1: + type: 'object' + properties: + jumphost: + type: 'object' + properties: + bridges: + type: 'object' + properties: + admin: + type: ['string', 'null'] + mgmt: + type: ['string', 'null'] + private: + type: ['string', 'null'] + public: + type: ['string', 'null'] + required: ['admin', 'mgmt', 'private', 'public'] + additionalProperties: false + trunks: + type: 'object' + properties: + mgmt: + type: 'boolean' + required: ['mgmt'] + additionalProperties: false + required: ['bridges'] + additionalProperties: false + maas: + type: 'object' + properties: + timeout_comissioning: + type: 'number' + timeout_deploying: + type: 'number' + required: ['timeout_comissioning', 'timeout_deploying'] + additionalProperties: false + network: + type: 'object' + properties: + ntp_strata_host1: + type: 'string' + ntp_strata_host2: + type: 'string' + node: + type: 'array' + items: + type: 'object' + properties: + interfaces: + type: 'array' + items: + type: ['string', 'null'] + busaddr: + type: 'array' + items: + type: ['string', 'null'] + required: ['interfaces', 'busaddr'] + additionalProperties: false + required: ['node'] + additionalProperties: false + reclass: # Optional + type: 'object' + properties: + node: + type: 'array' + items: + type: 'object' + properties: + compute_params: + type: 'object' + properties: + common: # Optional + type: 'object' + properties: &compute_params_common_properties + nova_cpu_pinning: # Optional + type: 'string' + compute_hugepages_size: + type: 'string' + enum: ['2M', '1G'] + compute_hugepages_count: + type: 'number' + compute_hugepages_mount: + type: 'string' + compute_kernel_isolcpu: # Optional + type: 'string' + compute_ovs_pmd_cpu_mask: # Optional + type: ['string', 'number'] + compute_ovs_memory_channels: # Optional + type: ['string', 'number'] + required: ['compute_hugepages_size', 'compute_hugepages_count', + 'compute_hugepages_mount'] + additionalProperties: false + dpdk: # Optional + type: 'object' + properties: + <<: *compute_params_common_properties + compute_dpdk_driver: + type: 'string' + compute_ovs_dpdk_socket_mem: + type: ['string', 'number'] + compute_ovs_dpdk_lcore_mask: + type: ['string', 'number'] + dpdk0_driver: + type: 'string' + dpdk0_n_rxq: + type: 'number' + required: ['compute_dpdk_driver', 'dpdk0_driver', 'dpdk0_n_rxq', + 'compute_ovs_dpdk_socket_mem', + 'compute_ovs_dpdk_lcore_mask'] + additionalProperties: false + additionalProperties: false + required: ['compute_params'] + additionalProperties: false + required: ['node'] + additionalProperties: false + required: ['jumphost', 'network'] + additionalProperties: false + osa: + v0.1: + type: 'object' + properties: + nodes_roles: + type: 'object' + groups: + type: 'object' + hostnames: + type: 'object' + network: + type: 'object' + required: ['nodes_roles', 'groups', 'hostnames', 'network'] + additionalProperties: false + kubespray: + v0.1: + type: ['object', 'null'] + # NOTE: To be properly modeled by XCI maintainers + +############################################################################## +# Top-level structure: +# - define all possible top-level and second-level keys, without enforcing a +# schema for second-level, just so we can disallow additional properties; +# - require 'version' and allow dynamically generated 'version_x.y' key; +properties: + idf: + properties: + # version_x.y keys are auto-added by `validate_schema.py` based on 'version' + version_0.1: + type: 'boolean' + version: + type: 'number' + enum: [0.1] + installer: + type: 'array' + items: + type: 'string' + enum: ['apex', 'compass4nfv', 'daisy', 'fuel', 'joid', 'osa', 'kubespray'] + net_config: + type: 'object' + compass: + type: 'object' + daisy: + type: 'object' + fuel: + type: 'object' + osa: + type: ['object', 'null'] + kubespray: + type: ['object', 'null'] + required: ['version'] + additionalProperties: false + ############################################################################ + # Schema versioning + # - based on dynamically added 'version_x.y', require additional IDF blocks + # and validate them against the proper schema version; + dependencies: + version_0.1: + properties: + net_config: + $ref: '#/definitions/net_config/v0.1' + compass: + $ref: '#/definitions/compass/v0.1' + daisy: + $ref: '#/definitions/daisy/v0.1' + fuel: + $ref: '#/definitions/fuel/v0.1' + osa: + $ref: '#/definitions/osa/v0.1' + kubespray: + $ref: '#/definitions/kubespray/v0.1' + fuel: + required: ['net_config'] + daisy: + required: ['net_config'] + osa: + required: ['net_config'] + kubespray: + required: ['net_config'] + xci: + type: 'object' + # NOTE: To be properly modeled by XCI maintainers + +# Do not allow any properties not defined here. This lets us catch typos. +additionalProperties: false +required: ['idf'] |