arm-pod10: Increase MaaS deploy timeout
[pharos.git] / config / pdf / idf-pod1.schema.yaml
1 ##############################################################################
2 # Copyright (c) 2018 Enea AB and others.
3 # All rights reserved. This program and the accompanying materials
4 # are made available under the terms of the Apache License, Version 2.0
5 # which accompanies this distribution, and is available at
6 # http://www.apache.org/licenses/LICENSE-2.0
7 ##############################################################################
8 ---
9 $schema: 'http://json-schema.org/schema#'
10 $id: 'https://github.com/opnfv/pharos/blob/master/config/pdf/pod1.yaml'
11
12 definitions:
13   net_config:
14     v0.1:
15       # NOTE: I hope this is going away soon, so I won't model it yet
16       type: 'object'
17   compass:
18     v0.1:
19       type: 'object'
20       # NOTE: To be properly modeled by Compass4NFV maintainers
21   daisy:
22     v0.1:
23       type: 'object'
24       # NOTE: To be properly modeled by Daisy maintainers
25   fuel:
26     v0.1:
27       type: 'object'
28       properties:
29         jumphost:
30           type: 'object'
31           properties:
32             bridges:
33               type: 'object'
34               properties:
35                 admin:
36                   type: ['string', 'null']
37                 mgmt:
38                   type: ['string', 'null']
39                 private:
40                   type: ['string', 'null']
41                 public:
42                   type: ['string', 'null']
43               required: ['admin', 'mgmt', 'private', 'public']
44               additionalProperties: false
45             trunks:
46               type: 'object'
47               properties:
48                 mgmt:
49                   type: 'boolean'
50               required: ['mgmt']
51               additionalProperties: false
52           required: ['bridges']
53           additionalProperties: false
54         maas:
55           type: 'object'
56           properties:
57             timeout_comissioning:
58               type: 'number'
59             timeout_deploying:
60               type: 'number'
61           required: ['timeout_comissioning', 'timeout_deploying']
62           additionalProperties: false
63         network:
64           type: 'object'
65           properties:
66             interface_mtu:
67               type: 'number'
68             ntp_strata_host1:
69               type: 'string'
70             ntp_strata_host2:
71               type: 'string'
72             node:
73               type: 'array'
74               items:
75                 type: 'object'
76                 properties:
77                   interfaces:
78                     type: 'array'
79                     items:
80                       type: ['string', 'null']
81                   busaddr:
82                     type: 'array'
83                     items:
84                       type: ['string', 'null']
85                 required: ['interfaces', 'busaddr']
86                 additionalProperties: false
87           required: ['node']
88           additionalProperties: false
89         reclass:  # Optional
90           type: 'object'
91           properties:
92             node:
93               type: 'array'
94               items:
95                 type: 'object'
96                 properties:
97                   compute_params:
98                     type: 'object'
99                     properties:
100                       common:  # Optional
101                         type: 'object'
102                         properties: &compute_params_common_properties
103                           nova_cpu_pinning:  # Optional
104                             type: 'string'
105                           compute_hugepages_size:
106                             type: 'string'
107                             enum: ['2M', '1G']
108                           compute_hugepages_count:
109                             type: 'number'
110                           compute_hugepages_mount:
111                             type: 'string'
112                           compute_kernel_isolcpu:  # Optional
113                             type: 'string'
114                           compute_ovs_pmd_cpu_mask:  # Optional
115                             type: ['string', 'number']
116                           compute_ovs_memory_channels:  # Optional
117                             type: ['string', 'number']
118                         required: ['compute_hugepages_size', 'compute_hugepages_count',
119                                    'compute_hugepages_mount']
120                         additionalProperties: false
121                       dpdk:  # Optional
122                         type: 'object'
123                         properties:
124                           <<: *compute_params_common_properties
125                           compute_dpdk_driver:
126                             type: 'string'
127                           compute_ovs_dpdk_socket_mem:
128                             type: ['string', 'number']
129                           compute_ovs_dpdk_lcore_mask:
130                             type: ['string', 'number']
131                           dpdk0_driver:
132                             type: 'string'
133                           dpdk0_n_rxq:
134                             type: 'number'
135                         required: ['compute_dpdk_driver', 'dpdk0_driver', 'dpdk0_n_rxq',
136                                    'compute_ovs_dpdk_socket_mem',
137                                    'compute_ovs_dpdk_lcore_mask']
138                         additionalProperties: false
139                     additionalProperties: false
140                 required: ['compute_params']
141                 additionalProperties: false
142           required: ['node']
143           additionalProperties: false
144       required: ['jumphost', 'network']
145       additionalProperties: false
146   osa:
147     v0.1:
148       type: 'object'
149       properties:
150         nodes_roles:
151           type: 'object'
152         groups:
153           type: 'object'
154         hostnames:
155           type: 'object'
156         network:
157           type: 'object'
158       required: ['nodes_roles', 'groups', 'hostnames', 'network']
159       additionalProperties: false
160   kubespray:
161     v0.1:
162       type: ['object', 'null']
163       # NOTE: To be properly modeled by XCI maintainers
164
165 ##############################################################################
166 # Top-level structure:
167 # - define all possible top-level and second-level keys, without enforcing a
168 #   schema for second-level, just so we can disallow additional properties;
169 # - require 'version' and allow dynamically generated 'version_x.y' key;
170 properties:
171   idf:
172     properties:
173       # version_x.y keys are auto-added by `validate_schema.py` based on 'version'
174       version_0.1:
175         type: 'boolean'
176       version:
177         type: 'number'
178         enum: [0.1]
179       installer:
180         type: 'array'
181         items:
182           type: 'string'
183           enum: ['apex', 'compass4nfv', 'daisy', 'fuel', 'joid', 'osa', 'kubespray']
184       net_config:
185         type: 'object'
186       compass:
187         type: 'object'
188       daisy:
189         type: 'object'
190       fuel:
191         type: 'object'
192       osa:
193         type: ['object', 'null']
194       kubespray:
195         type: ['object', 'null']
196     required: ['version']
197     additionalProperties: false
198     ############################################################################
199     # Schema versioning
200     # - based on dynamically added 'version_x.y', require additional IDF blocks
201     #   and validate them against the proper schema version;
202     dependencies:
203       version_0.1:
204         properties:
205           net_config:
206             $ref: '#/definitions/net_config/v0.1'
207           compass:
208             $ref: '#/definitions/compass/v0.1'
209           daisy:
210             $ref: '#/definitions/daisy/v0.1'
211           fuel:
212             $ref: '#/definitions/fuel/v0.1'
213           osa:
214             $ref: '#/definitions/osa/v0.1'
215           kubespray:
216             $ref: '#/definitions/kubespray/v0.1'
217       fuel:
218         required: ['net_config']
219       daisy:
220         required: ['net_config']
221       osa:
222         required: ['net_config']
223       kubespray:
224         required: ['net_config']
225   xci:
226     type: 'object'
227     # NOTE: To be properly modeled by XCI maintainers
228
229 # Do not allow any properties not defined here. This lets us catch typos.
230 additionalProperties: false
231 required: ['idf']