-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy path.zuul.yaml
More file actions
416 lines (402 loc) · 13.6 KB
/
.zuul.yaml
File metadata and controls
416 lines (402 loc) · 13.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
- nodeset:
name: openstack-three-node-noble
nodes:
- name: controller
label: ubuntu-noble
- name: compute1
label: ubuntu-noble
- name: compute2
label: ubuntu-noble
groups:
# Node where tests are executed and test results collected
- name: tempest
nodes:
- controller
# Nodes running the compute service
- name: compute
nodes:
- controller
- compute1
- compute2
# Nodes that are not the controller
- name: subnode
nodes:
- compute1
- compute2
# Switch node for multinode networking setup
- name: switch
nodes:
- controller
# Peer nodes for multinode networking setup
- name: peers
nodes:
- compute1
- compute2
- job:
name: watcher-tempest-gnocchi
parent: watcher-tempest-base-two-node
description: |
Watcher multinode devstack tempest job with Gnocchi as datasource. This
job uses fake metrics injection and does not requires ceilometer-acompute
to be enabled.
vars:
devstack_localrc:
GNOCCHI_ARCHIVE_POLICY_TEMPEST: "ceilometer-low-rate"
CEILOMETER_PIPELINE_INTERVAL: 15
- job:
name: watcher-tempest-base
parent: devstack-tempest
description: |
Watcher single node devstack tempest base job template.
abstract: true
timeout: 7200
required-projects: &tempest_base_required_projects
- openstack/ceilometer
- openstack/python-openstackclient
- openstack/python-watcherclient
- openstack/watcher
- openstack/watcher-tempest-plugin
- openstack/tempest
irrelevant-files: &irrelevant_files
- ^(test-|)requirements.txt$
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^watcher/hacking/.*$
- ^watcher/tests/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^tools/.*$
- ^tox.ini$
vars: &tempest_base_vars
configure_swap_size: 8192
devstack_plugins:
ceilometer: https://opendev.org/openstack/ceilometer
watcher: https://opendev.org/openstack/watcher
devstack_services:
watcher-api: true
watcher-decision-engine: true
watcher-applier: true
tempest: true
s-account: false
s-container: false
s-object: false
s-proxy: false
ceilometer-acentral: true
ceilometer-anotification: true
# ceilometer-acompute disabled by default since most jobs use fake data
ceilometer-acompute: false
tempest_plugins:
- watcher-tempest-plugin
devstack_localrc:
CEILOMETER_PIPELINE_INTERVAL: 15
CEILOMETER_ALARM_THRESHOLD: 6000000000
devstack_local_conf:
post-config:
$WATCHER_CONF: &watcher_conf_base
watcher_cluster_data_model_collectors.compute:
period: 120
watcher_cluster_data_model_collectors.baremetal:
period: 120
watcher_cluster_data_model_collectors.storage:
period: 120
compute_model:
enable_extended_attributes: true
nova_client:
api_version: "2.96"
nova:
migration_max_retries: 120
migration_interval: 1
$CINDER_CONF:
oslo_messaging_notifications:
driver: messagingv2
test-config:
$TEMPEST_CONFIG:
compute:
min_compute_nodes: 2
min_microversion: 2.56
max_microversion: 2.96
placement:
min_microversion: 1.29
telemetry:
disable_ssl_certificate_validation: true
ceilometer_polling_interval: 15
# tempest variables
tempest_concurrency: 1
# Run only API tests
tempest_test_regex: watcher_tempest_plugin.tests.api
tox_envlist: all
zuul_copy_output:
/etc/hosts: logs
- job:
name: watcher-tempest-base-two-node
parent: watcher-tempest-base
nodeset: openstack-two-node-noble
abstract: true
description: |
Watcher multinode devstack tempest job base template.
vars:
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
compute-feature-enabled:
live_migration: true
block_migration_for_live_migration: true
optimize:
run_extended_attributes_tests: true
run_continuous_audit_tests: true
run_zone_migration_extra_tests: true
run_zone_migration_storage_tests: true
# tempest variables
tempest_test_regex: watcher_tempest_plugin.tests\.(api|scenario)
# excluding tests with tag "real_load"
tempest_exclude_regex: .*\[.*\breal_load\b.*\].*
group-vars:
subnode:
devstack_plugins:
ceilometer: https://opendev.org/openstack/ceilometer
watcher: https://opendev.org/openstack/watcher
devstack_services:
# Not needed for jobs with fake metrics injection
ceilometer-acompute: false
ceilometer-acentral: false
ceilometer-anotification: false
c-bak: false
gnocchi-api: false
gnocchi-metricd: false
rabbit: false
mysql: false
watcher-api: false
watcher-applier: false
watcher-decision-engine: true
devstack_localrc:
CEILOMETER_BACKENDS: "none"
devstack_local_conf:
post-config:
$CINDER_CONF:
# enable notifications in compute node, by default they are only
# configured in the controller
oslo_messaging_notifications:
driver: messagingv2
$WATCHER_CONF: *watcher_conf_base
- job:
name: watcher-tempest-api-ipv6-only
parent: devstack-tempest-ipv6
description: |
Watcher single node devstack tempest job for IPv6-only deployment.
required-projects: *tempest_base_required_projects
vars: *tempest_base_vars
irrelevant-files: *irrelevant_files
- job:
name: watcher-grenade
parent: grenade
required-projects: *tempest_base_required_projects
vars: &grenade_vars
<<: *tempest_base_vars
tempest_test_regex: watcher_tempest_plugin.tests\.(api|scenario)
devstack_plugins:
watcher: https://opendev.org/openstack/watcher
irrelevant-files: *irrelevant_files
- job:
name: watcher-grenade-skip-level-always
description: |
Grenade job that skips the previous release, validating that projects
can support upgrades from N-2 to N release. It will always upgrade
to the current branch. For example: If N-2 is 2025.1 release then N
would be 2026.1.
parent: grenade-skip-level-always
required-projects: *tempest_base_required_projects
vars: *grenade_vars
irrelevant-files: *irrelevant_files
- job:
name: watcher-tempest-prometheus
parent: watcher-tempest-base-two-node
description: |
Watcher multinode devstack tempest job with Prometheus as datasource.
This job uses fake metrics injection and does not require ceilometer-acompute
and node_exporter to be enabled.
pre-run:
- playbooks/generate_prometheus_config.yml
required-projects:
- openstack/aodh
- openstack-k8s-operators/sg-core
- openstack/devstack-plugin-prometheus
vars:
devstack_plugins:
aodh: https://opendev.org/openstack/aodh
sg-core: https://github.com/openstack-k8s-operators/sg-core
devstack-plugin-prometheus: https://opendev.org/openstack/devstack-plugin-prometheus
devstack_services:
prometheus: true
# Node exporter service is disable since job uses fake metrics injection
node_exporter: false
devstack_localrc:
CEILOMETER_BACKENDS: "sg-core"
PROMETHEUS_CONFIG_FILE: "/home/zuul/prometheus.yml"
devstack_local_conf:
post-config:
$WATCHER_CONF: &watcher_conf_prom
watcher_datasources:
datasources: prometheus
prometheus_client:
host: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
port: 9090
test-config:
$TEMPEST_CONFIG:
service_available:
sg_core: true
telemetry_services:
metric_backends: prometheus
optimize:
datasource: prometheus
zuul_copy_output:
/etc/prometheus/prometheus.yml: logs
group-vars:
subnode:
devstack_plugins:
devstack-plugin-prometheus: https://opendev.org/openstack/devstack-plugin-prometheus
devstack_services:
sg-core: false
prometheus: false
node_exporter: false
devstack_local_conf:
post-config:
$WATCHER_CONF: *watcher_conf_prom
- job:
name: watcher-tempest-aetos
parent: watcher-tempest-prometheus
description: |
Watcher multinode devstack tempest job with Aetos reverse-proxy for
Prometheus, using Keystone authentication instead of direct Prometheus access.
This job uses fake metrics injection and does not require ceilometer-acompute
and node_exporter to be enabled.
required-projects:
- openstack/python-observabilityclient
- openstack/aetos
vars: &aetos_vars
devstack_plugins:
aetos: https://opendev.org/openstack/aetos
devstack_local_conf:
post-config:
$WATCHER_CONF:
watcher_datasources:
datasources: aetos
aetos_client:
interface: public
region_name: RegionOne
fqdn_label: fqdn
instance_uuid_label: resource
- job:
name: watcher-tempest-prometheus-realdata
parent: watcher-tempest-prometheus
nodeset: openstack-three-node-noble
description: |
Watcher multinode devstack tempest job with Prometheus as datasource and
real workload data. This job is executed on a three-node setup to have
pure controller and compute nodes and avoid resource competition.
vars: &realdata_vars
devstack_services:
ceilometer-acompute: false
node_exporter: false
n-cpu: false
devstack_localrc:
NODE_EXPORTER_COLLECTOR_EXCLUDE: ""
CEILOMETER_PIPELINE_INTERVAL: 15
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
optimize:
datasource: ""
real_workload_period: 480 # 8 minutes
# All tests inside watcher_tempest_plugin.tests.scenario with tag "real_load"
tempest_test_regex: (^watcher_tempest_plugin.tests.scenario)(.*\[.*\breal_load\b.*\].*)
tempest_exclude_regex: ""
group-vars: &realdata_group_vars
subnode:
devstack_services:
ceilometer-acompute: true
node_exporter: true
n-cpu: true
devstack_localrc:
CEILOMETER_PIPELINE_INTERVAL: 15
- job:
name: watcher-tempest-prometheus-eventlet
parent: watcher-tempest-prometheus
description: |
Watcher multinode devstack tempest job with Prometheus as datasource and
eventlet mode enabled in specific services.
vars: &eventlet_vars
devstack_localrc:
'SYSTEMD_ENV_VARS["watcher-api"]': OS_WATCHER_DISABLE_EVENTLET_PATCHING=false
'SYSTEMD_ENV_VARS["watcher-decision-engine"]': OS_WATCHER_DISABLE_EVENTLET_PATCHING=false
'SYSTEMD_ENV_VARS["watcher-applier"]': OS_WATCHER_DISABLE_EVENTLET_PATCHING=false
devstack_local_conf:
post-config:
$WATCHER_CONF:
DEFAULT:
print_thread_pool_stats: true
group-vars:
subnode: *eventlet_vars
- job:
name: openstack-tox-py313-eventlet
parent: openstack-tox-py313
description: |
Run tox with the py3-eventlet environment.
vars:
tox_envlist: py3-eventlet
- job:
name: watcher-tempest-aetos-realdata
parent: watcher-tempest-aetos
nodeset: openstack-three-node-noble
description: |
Watcher multinode devstack tempest job with Aetos reverse-proxy and real
workload data. This job is executed on a three-node setup to have
pure controller and compute nodes and avoid resource competition.
vars: *realdata_vars
group-vars: *realdata_group_vars
# TODO(dviroel): Remove this job when we update other projects that depend on
# its definition.
- job:
name: watcher-tempest-functional
parent: watcher-tempest-base
- project:
queue: watcher
templates:
- check-requirements
- openstack-cover-jobs
- openstack-python3-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3
check:
jobs:
- openstack-tox-py313-eventlet
- watcher-grenade
- watcher-grenade-skip-level-always
- watcher-tempest-api-ipv6-only
- watcher-tempest-gnocchi
- python-watcherclient-functional:
files: &watcherclient_functional_files
- ^watcher/api/*
- watcher-tempest-prometheus
- watcher-tempest-prometheus-eventlet
- watcher-tempest-aetos
gate:
jobs:
- openstack-tox-py313-eventlet
- watcher-grenade
- watcher-grenade-skip-level-always
- watcher-tempest-api-ipv6-only
- watcher-tempest-gnocchi
- python-watcherclient-functional:
files: *watcherclient_functional_files
- watcher-tempest-prometheus
- watcher-tempest-prometheus-eventlet
- watcher-tempest-aetos
experimental:
jobs:
- watcher-tempest-prometheus-realdata
- watcher-tempest-aetos-realdata
periodic-weekly:
jobs:
- watcher-tempest-prometheus-realdata
- watcher-tempest-aetos-realdata