Skip to content

Commit 0903ef7

Browse files
authored
Add periodic job with volume pool metrics tests (#287)
To check volume pool metrics, we need a correct environment configured with a storage backend - in this case ceph. The job takes abet 20 minutes longer than our usual jobs, so it was decided to run it as part of the periodic pipeline instead of running it with each PR in the check pipeline.
1 parent 7e83495 commit 0903ef7

5 files changed

Lines changed: 94 additions & 1 deletion

File tree

.zuul.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,45 @@
127127
required-projects: *required_projects
128128
extra-vars: *functional_autoscaling_extra_vars
129129

130+
- job:
131+
name: functional-periodic-telemetry-with-ceph
132+
parent: podified-multinode-hci-deployment-crc-1comp-backends
133+
dependencies: ["telemetry-openstack-meta-content-provider-master"]
134+
description: |
135+
Deploy OpenStack with Telemetry and Ceph. Run metric-verification with volume pool metric tests
136+
extra-vars: *functional_autoscaling_extra_vars
137+
vars:
138+
patch_observabilityclient: true
139+
cifmw_update_containers: false
140+
telemetry_verify_metrics_metric_sources_to_test:
141+
- ceilometer_compute_agent
142+
- ceilometer_central_agent
143+
- ksm
144+
- node_exporter
145+
- podman_exporter
146+
- rabbitmq
147+
- openstack_network_exporter
148+
- kepler
149+
- mariadb
150+
- volume_pool
151+
cifmw_extras:
152+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/ci-framework'].src_dir }}/scenarios/centos-9/multinode-ci.yml"
153+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/ci-framework'].src_dir }}/scenarios/centos-9/hci_ceph_backends.yml"
154+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/telemetry-operator'].src_dir }}/ci/vars-telemetry-with-ceph.yml"
155+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/infrawatch/feature-verification-tests'].src_dir }}/ci/vars-logging-test.yml"
156+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/telemetry-operator'].src_dir }}/ci/vars-autoscaling-tempest.yml"
157+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/infrawatch/feature-verification-tests'].src_dir }}/ci/vars-functional-test.yml"
158+
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/infrawatch/feature-verification-tests'].src_dir }}/ci/vars-use-master-containers.yml"
159+
irrelevant-files: *irrelevant_files
160+
required-projects: *required_projects
161+
130162
- project:
131163
name: infrawatch/feature-verification-tests
164+
periodic:
165+
jobs:
166+
- telemetry-openstack-meta-content-provider-master:
167+
override-checkout: main
168+
- functional-periodic-telemetry-with-ceph
132169
github-check:
133170
jobs:
134171
- telemetry-openstack-meta-content-provider-master:
@@ -169,3 +206,11 @@
169206
- ci/vars-graphing-test.yml
170207
- ci/run_graphing_test.yml
171208
- ci/report_result.yml
209+
- functional-periodic-telemetry-with-ceph:
210+
files:
211+
# Run this job for changes to the volume_pool_metrics test changes as this is
212+
# the only job, where those tests get executed and for changes to zuul.yaml in
213+
# case the job definition changes.
214+
- roles/telemetry_verify_metrics/tasks/verify_ceilometer_volume_pool_metrics.yml
215+
- .zuul.yaml
216+

roles/telemetry_verify_metrics/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Tests:
3535
Role Variables
3636
--------------
3737
openstack\_cmd - command to access openstack cli. For example: "oc rsh openstackclient openstack"
38-
telemetry\_verify\_metrics\_metric\_sources\_to\_test - List of sources to test. Current set of possible sources: ceilometer\_compute\_agent, ceilometer\_central\_agent, ceilometer\_ipmi_\_agent, node\_exporter, rabbitmq, kepler, openstack_network_exporter
38+
telemetry\_verify\_metrics\_metric\_sources\_to\_test - List of sources to test. Current set of possible sources: ceilometer\_compute\_agent, ceilometer\_central\_agent, ceilometer\_ipmi_\_agent, node\_exporter, rabbitmq, kepler, openstack\_network\_exporter, volume\_pool
3939

4040
Example Playbook
4141
----------------

roles/telemetry_verify_metrics/defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ telemetry_verify_metrics_metric_sources_to_test:
1212
- mariadb
1313
# NOTE: IPMI metrics can only be verified when compute nodes are baremetal
1414
# - ceilometer_ipmi_agent
15+
# NOTE: volume pool metrics can only be verified when a pool with a correct backend is configured
16+
# - volume_pool

roles/telemetry_verify_metrics/tasks/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,9 @@
108108
when: '"kepler_vm" in telemetry_verify_metrics_metric_sources_to_test and "ACTIVE" in kepler_vm_status.stdout'
109109
vars:
110110
metrics_cmd_prefix: "{{ openstack_cmd }} metric show --disable-rbac -c value -f value"
111+
112+
- name: Verify Ceilometer volume pool metrics are being exposed and stored
113+
ansible.builtin.include_tasks:
114+
file: verify_ceilometer_volume_pool_metrics.yml
115+
tags: test
116+
when: '"volume_pool" in telemetry_verify_metrics_metric_sources_to_test'
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
- name: Verify ceilometer scrapeconfig exists
2+
ansible.builtin.include_role:
3+
name: common
4+
vars:
5+
common_cr_list:
6+
- kind: scrapeconfigs.monitoring.rhobs
7+
name: telemetry-ceilometer
8+
9+
- name: Verify ceilometer central agent is running
10+
ansible.builtin.include_role:
11+
name: common
12+
vars:
13+
common_pod_status_str: "Running"
14+
common_pod_nspace: openstack
15+
common_pod_list:
16+
- ceilometer-0
17+
18+
- name: |
19+
TEST Use openstack CLI to verify a cinder volume is configured
20+
ansible.builtin.shell: |
21+
{{ openstack_cmd }} volume backend pool list
22+
register: result
23+
until: result.rc == 0 and result.stdout_lines | length > 0
24+
changed_when: false
25+
26+
- name: |
27+
TEST Use openstack observabilityclient to verify ceilometer volume pool metrics are stored in prometheus
28+
vars:
29+
volume_pool_metrics:
30+
- ceilometer_volume_provider_pool_capacity_allocated
31+
- ceilometer_volume_provider_pool_capacity_free
32+
- ceilometer_volume_provider_pool_capacity_total
33+
ansible.builtin.shell: |
34+
{{ openstack_cmd }} metric show {{ item }}
35+
register: result
36+
delay: 30
37+
retries: 10
38+
until: result.rc == 0 and item in result.stdout
39+
changed_when: false
40+
loop: "{{ volume_pool_metrics }}"

0 commit comments

Comments
 (0)