Skip to content

Commit 42c3892

Browse files
authored
Merge branch 'master' into test_operator_changes
2 parents 775762f + c796a11 commit 42c3892

File tree

9 files changed

+169
-2
lines changed

9 files changed

+169
-2
lines changed

.zuul.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
- kepler
146146
- mariadb
147147
- volume_pool
148+
- ovn
148149
cifmw_extras:
149150
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/ci-framework'].src_dir }}/scenarios/centos-9/multinode-ci.yml"
150151
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/ci-framework'].src_dir }}/scenarios/centos-9/hci_ceph_backends.yml"

ci/run_autoscaling_tests.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,22 @@
7777
- name: "Run Telemetry Autoscaling tests"
7878
ansible.builtin.import_role:
7979
name: telemetry_autoscaling
80+
vars:
81+
telemetry_autoscaling_cleanup: false
8082
ignore_errors: true
8183

8284
- name: "Run Telemetry Verify Metrics tests"
8385
ansible.builtin.import_role:
8486
name: telemetry_verify_metrics
8587
ignore_errors: true
88+
89+
always:
90+
- name: "Run Telemetry Autoscaling cleanup"
91+
ansible.builtin.include_role:
92+
name: telemetry_autoscaling
93+
tasks_from: post_teardown
94+
95+
- name: Delete test_0 VM
96+
ansible.builtin.shell:
97+
cmd: |
98+
{{ openstack_cmd }} server delete test_0

roles/telemetry_autoscaling/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ The following resources are required in the OpenStack cloud
1212
* a flavor called m1.small
1313
* an image called cirros
1414

15+
Role Variables
16+
--------------
17+
* `telemetry_autoscaling_cleanup` (default: `true`) - Controls whether the autoscaling stack
18+
cleanup task runs at the end of the role. Set to `false` to skip cleanup during the main role
19+
execution, allowing cleanup to be deferred to a later task (e.g., in a block's `always`
20+
section to ensure cleanup runs even on failure).
21+
1522
Tests:
1623
------
1724
* Verify overcloud deployment for autoscaling

roles/telemetry_autoscaling/defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
openstack_cmd: "openstack"
44
stack_name: vnf
55
metrics_backend: gnocchi
6+
telemetry_autoscaling_cleanup: true

roles/telemetry_autoscaling/tasks/main.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
tags: test
3838

3939
- name: Run the cleanup task
40-
ansible.builtin.include_tasks:
40+
ansible.builtin.include_tasks:
4141
file: post_teardown.yml
42+
when: telemetry_autoscaling_cleanup | bool
4243
tags: cleanup

roles/telemetry_verify_metrics/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ Tests:
3131
- Use openstack observabilityclient to verify OpenstackNetworkExporter metrics are stored in Prometheus
3232
- Verify Kepler metrics are being exposed and stored
3333
- Use openstack observabilityclient to verify Kepler metrics are stored in Prometheus
34+
- Verify OVN metrics are being exposed and stored
35+
- Use openstack observabilityclient to verify OVN metrics are stored in Prometheus
3436

3537
Role Variables
3638
--------------
3739
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, volume\_pool
40+
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, ovn
3941

4042
Example Playbook
4143
----------------

roles/telemetry_verify_metrics/defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ telemetry_verify_metrics_metric_sources_to_test:
1010
- openstack_network_exporter
1111
- ceilometer_prom_exporter
1212
- mariadb
13+
- ovn
1314
# NOTE: IPMI metrics can only be verified when compute nodes are baremetal
1415
# - ceilometer_ipmi_agent
1516
# NOTE: volume pool metrics can only be verified when a pool with a correct backend is configured

roles/telemetry_verify_metrics/tasks/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,9 @@
113113
file: verify_ceilometer_volume_pool_metrics.yml
114114
tags: test
115115
when: '"volume_pool" in telemetry_verify_metrics_metric_sources_to_test'
116+
117+
- name: Verify OVN metrics are being exposed and stored
118+
ansible.builtin.include_tasks:
119+
file: verify_ovn_metrics.yml
120+
tags: test
121+
when: '"ovn" in telemetry_verify_metrics_metric_sources_to_test'
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
- name: Get ovn-northd metric services
2+
ansible.builtin.shell: |
3+
oc get svc -l service=ovn-northd,metrics=enabled -o name -n openstack
4+
register: ovn_northd_metric
5+
changed_when: false
6+
7+
- name: Verify ovn-northd scrapeconfig exists
8+
ansible.builtin.include_role:
9+
name: common
10+
vars:
11+
common_cr_list:
12+
- kind: scrapeconfigs.monitoring.rhobs
13+
name: telemetry-ovn-northd
14+
when: ovn_northd_metric.stdout != ""
15+
16+
- name: |
17+
TEST Use openstack observabilityclient to verify ovn-northd metrics are stored in prometheus
18+
vars:
19+
ovn_northd_metrics:
20+
- ovn_northd_status
21+
- ovn_northd_pstream_open_total
22+
- ovn_northd_stream_open_total
23+
- ovn_northd_txn_incomplete_total
24+
- ovn_northd_txn_success_total
25+
- ovn_northd_txn_unchanged_total
26+
ansible.builtin.shell: |
27+
{{ openstack_cmd }} metric show --disable-rbac {{ item }}
28+
register: result
29+
delay: 30
30+
retries: 10
31+
changed_when: false
32+
until: result.rc == 0 and item in result.stdout
33+
loop: "{{ ovn_northd_metrics }}"
34+
when: ovn_northd_metric.stdout != ""
35+
36+
- name: Get ovn-controller metric services
37+
ansible.builtin.shell: |
38+
oc get svc -l service=ovn-controller-metrics,metrics=enabled -o name -n openstack
39+
register: ovn_controller_metric
40+
changed_when: false
41+
42+
- name: Verify ovn-controller scrapeconfig exists
43+
ansible.builtin.include_role:
44+
name: common
45+
vars:
46+
common_cr_list:
47+
- kind: scrapeconfigs.monitoring.rhobs
48+
name: telemetry-ovn-controller
49+
when: ovn_controller_metric.stdout != ""
50+
51+
- name: |
52+
TEST Use openstack observabilityclient to verify ovn controller metrics are stored in prometheus
53+
vars:
54+
ovn_controller_base_metrics:
55+
- ovnc_rconn_queued
56+
- ovnc_txn_incomplete
57+
- ovnc_bridge_mappings
58+
- ovnc_encap_ip
59+
- ovnc_encap_type
60+
- ovnc_sb_connection_method
61+
- ovs_build_info
62+
- ovs_dpdk_initialized
63+
- ovs_bridge_flow_count
64+
- ovs_bridge_port_count
65+
- ovs_datapath_flows_total
66+
- ovs_datapath_lookup_hits_total
67+
- ovs_datapath_lookup_missed_total
68+
- ovs_datapath_lookup_lost_total
69+
- ovs_memory_handlers_total
70+
- ovs_memory_ports_total
71+
- ovs_memory_revalidators_total
72+
- ovs_memory_rules_total
73+
ovn_controller_traffic_metrics:
74+
- ovnc_router_port_traffic_pkts
75+
- ovnc_router_port_traffic_bytes
76+
ovn_controller_metrics: >-
77+
{{
78+
ovn_controller_base_metrics +
79+
(ovn_controller_traffic_metrics if test_ovn_router_traffic_metrics | default(false) else [])
80+
}}
81+
ansible.builtin.shell: |
82+
{{ openstack_cmd }} metric show --disable-rbac {{ item }}
83+
register: result
84+
delay: 30
85+
retries: 10
86+
changed_when: false
87+
until: result.rc == 0 and item in result.stdout and ":1981" in result.stdout
88+
loop: "{{ ovn_controller_metrics }}"
89+
when: ovn_controller_metric.stdout != ""
90+
91+
- name: Get RAFT metric services
92+
ansible.builtin.shell: |
93+
oc get svc -n openstack -o name \
94+
-l 'service in (ovsdbserver-nb, ovsdbserver-sb)',metrics=enabled
95+
register: ovn_raft_metric
96+
changed_when: false
97+
98+
- name: Verify RAFT scrapeconfig exists
99+
ansible.builtin.include_role:
100+
name: common
101+
vars:
102+
common_cr_list:
103+
- kind: scrapeconfigs.monitoring.rhobs
104+
name: telemetry-ovsdbserver-nb
105+
- kind: scrapeconfigs.monitoring.rhobs
106+
name: telemetry-ovsdbserver-sb
107+
when: ovn_raft_metric.stdout != ""
108+
109+
- name: |
110+
TEST Use openstack observabilityclient to verify RAFT metrics are stored in prometheus
111+
vars:
112+
ovn_raft_metrics:
113+
- ovn_raft_cluster_election_timer
114+
- ovn_raft_cluster_id
115+
- ovn_raft_cluster_server_id
116+
- ovn_raft_cluster_server_role
117+
- ovn_raft_cluster_server_status
118+
- ovn_raft_cluster_server_vote
119+
- ovn_raft_cluster_term
120+
- ovn_raft_cluster_leader
121+
- ovn_raft_cluster_inbound_connections_total
122+
- ovn_raft_cluster_outbound_connections_total
123+
- ovn_raft_log_entry_index
124+
- ovn_raft_cluster_log_index_next
125+
- ovn_raft_cluster_log_not_committed
126+
- ovn_raft_cluster_log_not_applied
127+
ansible.builtin.shell: |
128+
{{ openstack_cmd }} metric show --disable-rbac {{ item }}
129+
register: result
130+
delay: 30
131+
retries: 10
132+
changed_when: false
133+
until: result.rc == 0 and item in result.stdout and ":1981" in result.stdout
134+
loop: "{{ ovn_raft_metrics }}"
135+
when: ovn_raft_metric.stdout != ""

0 commit comments

Comments
 (0)