Skip to content

Commit cb98d78

Browse files
committed
WIP Add new job to run minor update
Signed-off-by: rabi <[email protected]>
1 parent 84c46b6 commit cb98d78

File tree

3 files changed

+242
-0
lines changed

3 files changed

+242
-0
lines changed
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
---
2+
- name: "Run ci/playbooks/edpm_baremetal_deployment_minor_update/run.yml"
3+
hosts: "{{ cifmw_zuul_target_host | default('all') }}"
4+
gather_facts: true
5+
tasks:
6+
- name: Filter out host if needed
7+
when:
8+
- cifmw_zuul_target_host is defined
9+
- cifmw_zuul_target_host != 'all'
10+
- inventory_hostname != cifmw_zuul_target_host
11+
ansible.builtin.meta: end_host
12+
13+
- name: Check for edpm-ansible.yml file
14+
ansible.builtin.stat:
15+
path: "{{ ansible_user_dir }}/ci-framework-data/artifacts/edpm-ansible.yml"
16+
register: edpm_file
17+
18+
- name: Check if new ssh keypair exists
19+
ansible.builtin.include_role:
20+
name: recognize_ssh_keypair
21+
22+
- name: Add crc node in local inventory
23+
ansible.builtin.add_host:
24+
name: crc
25+
ansible_ssh_private_key_file: "{{ ansible_user_dir }}/.crc/machines/crc/{{ crc_ssh_keypair }}"
26+
ansible_ssh_user: core
27+
ansible_host: api.crc.testing
28+
29+
- name: Ensure we know ssh hosts
30+
ansible.builtin.shell:
31+
cmd: "ssh-keyscan {{ hostvars[item].ansible_host }} >> ~/.ssh/known_hosts"
32+
loop: "{{ hostvars.keys() | reject('equalto', 'localhost') }}"
33+
34+
- name: Inject CRC in zuul_inventory
35+
block:
36+
- name: Load zuul_inventory
37+
register: _inventory
38+
ansible.builtin.slurp:
39+
path: "{{ ansible_user_dir }}/ci-framework-data/artifacts/zuul_inventory.yml"
40+
41+
- name: Inject CRC in zuul_inventory.yml
42+
vars:
43+
_crc:
44+
all:
45+
hosts:
46+
crc: "{{ dict(hostvars.crc) }}"
47+
_updated: >-
48+
{{
49+
_inventory.content | b64decode | from_yaml | combine(_crc, recursive=true)
50+
}}
51+
ansible.builtin.copy:
52+
dest: "{{ ansible_user_dir }}/ci-framework-data/artifacts/zuul_inventory.yml"
53+
content: "{{ _updated | to_nice_yaml }}"
54+
mode: "0644"
55+
56+
- name: Set default pre-update tag if not provided
57+
ansible.builtin.set_fact:
58+
cifmw_minor_update_pre_update_tag: "{{ cifmw_minor_update_pre_update_tag | default('18.0-fr4-latest') }}"
59+
60+
- name: Get pre-update index image digest from tag
61+
ansible.builtin.shell: >-
62+
skopeo inspect
63+
docker://quay.io/openstack-k8s-operators/openstack-operator-index:{{ cifmw_minor_update_pre_update_tag }}
64+
| jq -r '.Digest'
65+
register: fr4_digest_result
66+
changed_when: false
67+
failed_when: fr4_digest_result.rc != 0
68+
69+
- name: Set FR4 index image using digest from tag
70+
ansible.builtin.set_fact:
71+
cifmw_minor_update_fr4_index_image: >-
72+
quay.io/openstack-k8s-operators/openstack-operator-index@{{ fr4_digest_result.stdout | trim }}
73+
74+
- name: Get PR index image from content provider or use default
75+
ansible.builtin.set_fact:
76+
cifmw_minor_update_pr_index_image: >-
77+
{{
78+
cifmw_operator_build_output.operators['openstack-operator'].image_catalog
79+
if (cifmw_operator_build_output is defined and
80+
cifmw_operator_build_output.operators is defined and
81+
'openstack-operator' in cifmw_operator_build_output.operators)
82+
else cifmw_minor_update_fr4_index_image
83+
}}
84+
85+
- name: Override operator build output with FR4 index image for Phase 1
86+
ansible.builtin.set_fact:
87+
cifmw_operator_build_output_fr4: >-
88+
{{
89+
{
90+
'operators': {
91+
'openstack-operator': {
92+
'image_catalog': cifmw_minor_update_fr4_index_image
93+
}
94+
}
95+
}
96+
}}
97+
98+
- name: Phase 1 - Deploy with FR4 index image using deploy-edpm.yml
99+
block:
100+
- name: Write FR4 operator build output to temporary file
101+
ansible.builtin.copy:
102+
dest: "{{ ansible_user_dir }}/ci-framework-data/artifacts/operator_build_output_fr4.yml"
103+
content: "{{ cifmw_operator_build_output_fr4 | to_nice_yaml }}"
104+
mode: "0644"
105+
106+
- name: Perform Podified and EDPM deployment on compute nodes with virtual baremetal (FR4)
107+
ansible.builtin.command:
108+
chdir: "{{ ansible_user_dir }}/src/github.com/openstack-k8s-operators/ci-framework"
109+
cmd: >-
110+
ansible-playbook deploy-edpm.yml
111+
-i "{{ ansible_user_dir }}/ci-framework-data/artifacts/zuul_inventory.yml"
112+
-e @group_vars/all.yml
113+
-e @scenarios/centos-9/base.yml
114+
-e @scenarios/centos-9/edpm_baremetal_deployment_ci.yml
115+
{%- if edpm_file.stat.exists %}
116+
-e @{{ ansible_user_dir }}/ci-framework-data/artifacts/edpm-ansible.yml
117+
{%- endif %}
118+
{%- if cifmw_extras is defined %}
119+
{%- for extra_var in cifmw_extras %}
120+
-e "{{ extra_var }}"
121+
{%- endfor %}
122+
{%- endif %}
123+
-e "@{{ ansible_user_dir }}/ci-framework-data/artifacts/parameters/zuul-params.yml"
124+
-e "@{{ ansible_user_dir }}/ci-framework-data/artifacts/operator_build_output_fr4.yml"
125+
126+
- name: Load install_yamls environment from parameters file
127+
ansible.builtin.include_vars:
128+
file: "{{ ansible_user_dir }}/ci-framework-data/artifacts/parameters/install-yamls-params.yml"
129+
when: cifmw_install_yamls_environment is not defined
130+
131+
- name: Set install_yamls environment for PR update phase
132+
ansible.builtin.set_fact:
133+
cifmw_minor_update_pr_env: >-
134+
{{
135+
(cifmw_install_yamls_environment | default({})) |
136+
combine({'PATH': cifmw_path}) |
137+
combine({'OPENSTACK_IMG': cifmw_minor_update_pr_index_image})
138+
}}
139+
140+
- name: Phase 2 - Update with PR index image
141+
block:
142+
- name: Run make openstack_cleanup
143+
vars:
144+
make_openstack_cleanup_env: "{{ cifmw_minor_update_pr_env }}"
145+
make_openstack_cleanup_dryrun: false
146+
ansible.builtin.include_role:
147+
name: 'install_yamls_makes'
148+
tasks_from: 'make_openstack_cleanup'
149+
ignore_errors: true # Continue even if cleanup fails
150+
151+
- name: Run make openstack_wait (PR)
152+
vars:
153+
make_openstack_wait_env: "{{ cifmw_minor_update_pr_env }}"
154+
make_openstack_wait_dryrun: false
155+
ansible.builtin.include_role:
156+
name: 'install_yamls_makes'
157+
tasks_from: 'make_openstack_wait'
158+
159+
- name: Run make openstack_init (PR)
160+
vars:
161+
make_openstack_init_env: "{{ cifmw_minor_update_pr_env }}"
162+
make_openstack_init_dryrun: false
163+
ansible.builtin.include_role:
164+
name: 'install_yamls_makes'
165+
tasks_from: 'make_openstack_init'
166+
167+
- name: Get target version from OpenStackVersion CR
168+
kubernetes.core.k8s_info:
169+
kubeconfig: "{{ cifmw_openshift_kubeconfig }}"
170+
api_key: "{{ cifmw_openshift_token | default(omit) }}"
171+
context: "{{ cifmw_openshift_context | default(omit) }}"
172+
api_version: core.openstack.org/v1beta1
173+
kind: OpenStackVersion
174+
namespace: "{{ cifmw_install_yamls_defaults['NAMESPACE'] | default('openstack') }}"
175+
register: openstackversion_info
176+
retries: 10
177+
delay: 5
178+
until: >
179+
openstackversion_info.resources is defined and
180+
openstackversion_info.resources | length > 0 and
181+
(
182+
(openstackversion_info.resources[0].spec.targetVersion is defined) or
183+
(openstackversion_info.resources[0].status.availableVersion is defined)
184+
)
185+
186+
- name: Set target version from OpenStackVersion CR
187+
ansible.builtin.set_fact:
188+
cifmw_minor_update_target_version: >-
189+
{{
190+
openstackversion_info.resources[0].spec.targetVersion
191+
if (openstackversion_info.resources[0].spec.targetVersion is defined)
192+
else openstackversion_info.resources[0].status.availableVersion
193+
}}
194+
195+
- name: Run make openstack_update_run with OPENSTACK_VERSION from OpenStackVersion CR
196+
vars:
197+
make_openstack_update_run_env: "{{ cifmw_minor_update_pr_env }}"
198+
make_openstack_update_run_params:
199+
OPENSTACK_VERSION: "{{ cifmw_minor_update_target_version }}"
200+
make_openstack_update_run_dryrun: false
201+
ansible.builtin.include_role:
202+
name: 'install_yamls_makes'
203+
tasks_from: 'make_openstack_update_run'
204+
205+
- name: Verify deployed version matches target version
206+
kubernetes.core.k8s_info:
207+
kubeconfig: "{{ cifmw_openshift_kubeconfig }}"
208+
api_key: "{{ cifmw_openshift_token | default(omit) }}"
209+
context: "{{ cifmw_openshift_context | default(omit) }}"
210+
api_version: core.openstack.org/v1beta1
211+
kind: OpenStackVersion
212+
namespace: "{{ cifmw_install_yamls_defaults['NAMESPACE'] | default('openstack') }}"
213+
register: openstackversion_verify_info
214+
until: >
215+
openstackversion_verify_info.resources is defined and
216+
openstackversion_verify_info.resources | length > 0 and
217+
openstackversion_verify_info.resources[0].status.deployedVersion is defined and
218+
openstackversion_verify_info.resources[0].status.deployedVersion == cifmw_minor_update_target_version
219+
retries: 5
220+
delay: 2
221+
222+
- name: Display update verification result
223+
ansible.builtin.debug:
224+
msg: >-
225+
Update verification successful: Target version {{ cifmw_minor_update_target_version }}
226+
matches deployed version {{ openstackversion_verify_info.resources[0].status.deployedVersion }}

zuul.d/edpm.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,21 @@
3939
cifmw_edpm_deploy_baremetal_bootc: true
4040
cifmw_update_containers: true
4141

42+
# Virtual Baremetal job with CRC for minor update testing.
43+
# First deploys with FR4 index image, then updates with PR index image.
44+
- job:
45+
name: cifmw-crc-podified-edpm-baremetal-minor-update
46+
nodeset: centos-9-crc-2-48-0-6xlarge
47+
parent: cifmw-base-crc-openstack
48+
run: ci/playbooks/edpm_baremetal_deployment_minor_update/run.yml
49+
dependencies:
50+
- openstack-k8s-operators-content-provider
51+
vars:
52+
crc_parameters: "--memory 32000 --disk-size 240 --cpus 12"
53+
cifmw_manage_secrets_pullsecret_content: '{}'
54+
cifmw_rhol_crc_binary_folder: "/usr/local/bin"
55+
cifmw_minor_update_pre_update_tag: "18.0-fr4-latest"
56+
4257
# Podified galera job
4358
- job:
4459
name: cifmw-crc-podified-galera-deployment

zuul.d/project-templates.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
- cifmw-molecule
6060
- podified-multinode-edpm-deployment-crc: *content_provider
6161
- cifmw-crc-podified-edpm-baremetal: *content_provider
62+
- cifmw-crc-podified-edpm-baremetal-minor-update: *content_provider
6263
- podified-multinode-hci-deployment-crc: *content_provider
6364
- cifmw-multinode-tempest: *content_provider
6465
- cifmw-pod-zuul-files

0 commit comments

Comments
 (0)