Files
watcher/.zuul.yaml

400 lines
13 KiB
YAML

- 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
# 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:
<<: *tempest_base_vars
devstack_plugins:
watcher: https://opendev.org/openstack/watcher
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-threading
parent: watcher-tempest-prometheus
description: |
Watcher multinode devstack tempest job with Prometheus as datasource and
threading mode enabled in specific services.
vars: &threading_vars
devstack_localrc:
'SYSTEMD_ENV_VARS["watcher-api"]': OS_WATCHER_DISABLE_EVENTLET_PATCHING=true
'SYSTEMD_ENV_VARS["watcher-decision-engine"]': OS_WATCHER_DISABLE_EVENTLET_PATCHING=true
'SYSTEMD_ENV_VARS["watcher-applier"]': OS_WATCHER_DISABLE_EVENTLET_PATCHING=true
devstack_local_conf:
post-config:
$WATCHER_CONF:
DEFAULT:
print_thread_pool_stats: true
group-vars:
subnode: *threading_vars
- job:
name: openstack-tox-py312-threading
parent: openstack-tox-py312
description: |
Run tox with the py3-threading environment.
vars:
tox_envlist: py3-threading
- 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-py312-threading
- watcher-grenade
- watcher-tempest-api-ipv6-only
- watcher-tempest-gnocchi
- python-watcherclient-functional:
files: &watcherclient_functional_files
- ^watcher/api/*
- watcher-tempest-prometheus
- watcher-tempest-prometheus-threading
- watcher-tempest-aetos
gate:
jobs:
- openstack-tox-py312-threading
- watcher-grenade
- watcher-tempest-api-ipv6-only
- watcher-tempest-gnocchi
- python-watcherclient-functional:
files: *watcherclient_functional_files
- watcher-tempest-prometheus
- watcher-tempest-prometheus-threading
- watcher-tempest-aetos
experimental:
jobs:
- watcher-tempest-prometheus-realdata
- watcher-tempest-aetos-realdata
periodic-weekly:
jobs:
- watcher-tempest-prometheus-realdata
- watcher-tempest-aetos-realdata