Skip to content

Commit db06864

Browse files
gais-ameer-rhclaude
authored andcommitted
[DZ-Storage] Add tests for cinderBackups
spec.cinder.template.cinderBackup (singluar) in DZ-Storage DT is replaced with cinderBackups (plural) to deploy multiple cinder backups based on AZ topology. hooks/playbooks/cinder_backups.yaml validates the behaviour of cinderBackups. The playbook tests different scenarios of cinder backup creation and restoring the backups across availability zones. Jira: OSPRH-28342 Signed-off-by: Gais Ameer <gameer@redhat.com> Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent ff0fae9 commit db06864

1 file changed

Lines changed: 198 additions & 0 deletions

File tree

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
---
2+
# Test Cinder backup and restore capabilities across availability zones in dz-storage DT
3+
# Tests three scenarios:
4+
# 1. AZ1 backs up to AZ1 and restores to AZ1
5+
# 2. AZ1 backs up to AZ2 and restores to AZ1
6+
# 3. AZ1 backs up to AZ2 and restores to AZ2
7+
8+
- name: Test Cinder backup and restore across availability zones
9+
hosts: "{{ cifmw_target_host | default('localhost') }}"
10+
vars:
11+
az1: az1
12+
az2: az2
13+
environment:
14+
KUBECONFIG: "{{ cifmw_openshift_kubeconfig | default('/home/' + ansible_user | default('zuul') + '/.kube/config') }}"
15+
PATH: "{{ cifmw_path | default(ansible_env.PATH) }}"
16+
tasks:
17+
# ==================================================================================
18+
# Scenario 1: AZ1 backs up to AZ1 and restores to AZ1
19+
# ==================================================================================
20+
- name: "Scenario 1: Create volume in AZ1"
21+
ansible.builtin.command: >-
22+
oc rsh
23+
-n {{ cifmw_openstack_namespace }}
24+
openstackclient
25+
openstack volume create --size 1 vol-az1 --availability-zone {{ az1 }} -f value -c id
26+
27+
- name: Wait for volume vol-az1 to become available
28+
ansible.builtin.command: >-
29+
oc rsh
30+
-n {{ cifmw_openstack_namespace }}
31+
openstackclient
32+
openstack volume show vol-az1 -f value -c status
33+
register: vol_az1_status
34+
until: "'available' in vol_az1_status.stdout"
35+
retries: 60
36+
delay: 5
37+
38+
- name: "Scenario 1: Create backup for volume in AZ1"
39+
ansible.builtin.command: >-
40+
oc rsh
41+
-n {{ cifmw_openstack_namespace }}
42+
openstackclient
43+
openstack --os-volume-api-version 3.51 volume backup create
44+
--availability-zone {{ az1 }}
45+
--name vol-az1-backup-az1
46+
vol-az1
47+
-f value -c id
48+
49+
- name: Wait for backup vol-az1-backup-az1 to become available
50+
ansible.builtin.command: >-
51+
oc rsh
52+
-n {{ cifmw_openstack_namespace }}
53+
openstackclient
54+
openstack volume backup show vol-az1-backup-az1 -f value -c status
55+
register: vol_az1_backup_az1_status
56+
until: "'available' in vol_az1_backup_az1_status.stdout"
57+
retries: 120
58+
delay: 10
59+
60+
- name: Verify backup vol-az1-backup-az1 is in AZ1
61+
ansible.builtin.command: >-
62+
oc rsh
63+
-n {{ cifmw_openstack_namespace }}
64+
openstackclient
65+
openstack volume backup show vol-az1-backup-az1 -f value -c availability_zone
66+
register: vol_az1_backup_az1_zone
67+
failed_when: "'az1' not in vol_az1_backup_az1_zone.stdout"
68+
69+
- name: "Scenario 1: Restore volume backup to AZ1"
70+
ansible.builtin.command: >-
71+
oc rsh
72+
-n {{ cifmw_openstack_namespace }}
73+
openstackclient
74+
openstack --os-volume-api-version 3.47 volume create
75+
--backup vol-az1-backup-az1
76+
--availability-zone {{ az1 }}
77+
vol-az1-backup-az1-restore-az1
78+
-f value -c id
79+
80+
- name: Wait for restored volume vol-az1-backup-az1-restore-az1 to become available
81+
ansible.builtin.command: >-
82+
oc rsh
83+
-n {{ cifmw_openstack_namespace }}
84+
openstackclient
85+
openstack volume show vol-az1-backup-az1-restore-az1 -f value -c status
86+
register: vol_az1_backup_az1_restore_az1_status
87+
until: "'available' in vol_az1_backup_az1_restore_az1_status.stdout"
88+
retries: 120
89+
delay: 10
90+
91+
- name: Verify restored volume vol-az1-backup-az1-restore-az1 is in AZ1
92+
ansible.builtin.command: >-
93+
oc rsh
94+
-n {{ cifmw_openstack_namespace }}
95+
openstackclient
96+
openstack volume show vol-az1-backup-az1-restore-az1 -f value -c availability_zone
97+
register: vol_az1_backup_az1_restore_az1_zone
98+
failed_when: "'az1' not in vol_az1_backup_az1_restore_az1_zone.stdout"
99+
100+
# ==================================================================================
101+
# Scenario 2: AZ1 backs up to AZ2 and restores to AZ1
102+
# ==================================================================================
103+
- name: "Scenario 2: Create backup for volume in AZ2"
104+
ansible.builtin.command: >-
105+
oc rsh
106+
-n {{ cifmw_openstack_namespace }}
107+
openstackclient
108+
openstack --os-volume-api-version 3.51 volume backup create
109+
--availability-zone {{ az2 }}
110+
--name vol-az1-backup-az2
111+
vol-az1
112+
-f value -c id
113+
114+
- name: Wait for backup vol-az1-backup-az2 to become available
115+
ansible.builtin.command: >-
116+
oc rsh
117+
-n {{ cifmw_openstack_namespace }}
118+
openstackclient
119+
openstack volume backup show vol-az1-backup-az2 -f value -c status
120+
register: vol_az1_backup_az2_status
121+
until: "'available' in vol_az1_backup_az2_status.stdout"
122+
retries: 120
123+
delay: 10
124+
125+
- name: Verify backup vol-az1-backup-az2 is in AZ2
126+
ansible.builtin.command: >-
127+
oc rsh
128+
-n {{ cifmw_openstack_namespace }}
129+
openstackclient
130+
openstack volume backup show vol-az1-backup-az2 -f value -c availability_zone
131+
register: vol_az1_backup_az2_zone
132+
failed_when: "'az2' not in vol_az1_backup_az2_zone.stdout"
133+
134+
- name: "Scenario 2: Restore backup from AZ2 back to AZ1"
135+
ansible.builtin.command: >-
136+
oc rsh
137+
-n {{ cifmw_openstack_namespace }}
138+
openstackclient
139+
openstack --os-volume-api-version 3.47 volume create
140+
--backup vol-az1-backup-az2
141+
--availability-zone {{ az1 }}
142+
vol-az1-backup-az2-restore-az1
143+
-f value -c id
144+
145+
- name: Wait for restored volume vol-az1-backup-az2-restore-az1 to become available
146+
ansible.builtin.command: >-
147+
oc rsh
148+
-n {{ cifmw_openstack_namespace }}
149+
openstackclient
150+
openstack volume show vol-az1-backup-az2-restore-az1 -f value -c status
151+
register: vol_az1_backup_az2_restore_az1_status
152+
until: "'available' in vol_az1_backup_az2_restore_az1_status.stdout"
153+
retries: 120
154+
delay: 10
155+
156+
- name: Verify restored volume vol-az1-backup-az2-restore-az1 is in AZ1
157+
ansible.builtin.command: >-
158+
oc rsh
159+
-n {{ cifmw_openstack_namespace }}
160+
openstackclient
161+
openstack volume show vol-az1-backup-az2-restore-az1 -f value -c availability_zone
162+
register: vol_az1_backup_az2_restore_az1_zone
163+
failed_when: "'az1' not in vol_az1_backup_az2_restore_az1_zone.stdout"
164+
165+
# ==================================================================================
166+
# Scenario 3: AZ1 backs up to AZ2 and restores to AZ2
167+
# ==================================================================================
168+
# Reusing the volume backup vol-az1-backup-az2 created in previous scenario
169+
- name: "Scenario 3: Restore backup from AZ2 to AZ2"
170+
ansible.builtin.command: >-
171+
oc rsh
172+
-n {{ cifmw_openstack_namespace }}
173+
openstackclient
174+
openstack --os-volume-api-version 3.47 volume create
175+
--backup vol-az1-backup-az2
176+
--availability-zone {{ az2 }}
177+
vol-az1-backup-az2-restore-az2
178+
-f value -c id
179+
180+
- name: Wait for restored volume vol-az1-backup-az2-restore-az2 to become available
181+
ansible.builtin.command: >-
182+
oc rsh
183+
-n {{ cifmw_openstack_namespace }}
184+
openstackclient
185+
openstack volume show vol-az1-backup-az2-restore-az2 -f value -c status
186+
register: vol_az1_backup_az2_restore_az2_status
187+
until: "'available' in vol_az1_backup_az2_restore_az2_status.stdout"
188+
retries: 120
189+
delay: 10
190+
191+
- name: Verify restored volume vol-az1-backup-az2-restore-az2 is in AZ2
192+
ansible.builtin.command: >-
193+
oc rsh
194+
-n {{ cifmw_openstack_namespace }}
195+
openstackclient
196+
openstack volume show vol-az1-backup-az2-restore-az2 -f value -c availability_zone
197+
register: vol_az1_backup_az2_restore_az2_zone
198+
failed_when: "'az2' not in vol_az1_backup_az2_restore_az2_zone.stdout"

0 commit comments

Comments
 (0)