User populated images not present after SX upgrade

After a SX upgrade any custom images pushed to registry.local are lost.
Pods using those images will remain in ImagePullBackOff until the images
are pushed manually. This change will restore those images during the SX
upgrade.

Change-Id: I3f902f8c0095cb6da014895f6aee55a3a057e616
Partial-Bug: 1886152
Signed-off-by: David Sullivan <david.sullivan@windriver.com>
This commit is contained in:
David Sullivan 2020-08-04 14:45:17 -04:00
parent b8e84bb5d0
commit 5d802971b9
6 changed files with 70 additions and 11 deletions

View File

@ -35,3 +35,9 @@ override_files_dir: "{{ lookup('env', 'HOME') }}"
# If this option is not specified this playbook will attempt to find the file on the host under # If this option is not specified this playbook will attempt to find the file on the host under
# /opt/platform-backup/ # /opt/platform-backup/
upgrade_data_file: upgrade_data_file:
# The full path and filename of the upgrade_images_data file.
# eg /opt/platform-backup/upgrade_images_data_2020-07-16T215224_a75eec9a-c27b-4878-8df9-9e76ac9f1bc3.tgz
# If this option is not specified this playbook will attempt to find the file on the host under
# /opt/platform-backup/
upgrade_images_data_file:

View File

@ -603,13 +603,3 @@
file: file:
path: "{{ ansible_remote_tmp }}" path: "{{ ansible_remote_tmp }}"
state: absent state: absent
# Unlock controller-0 for subcloud upgrades
# # Retry for 5 mins as the first unlock can require a call to update_sriov_config
- name: Unlock host
shell: source /etc/platform/openrc; system host-unlock controller-0
retries: 10
delay: 30
register: result
until: result.rc == 0
when: migrate_platform_data is defined and migrate_platform_data and distributed_cloud_role == 'subcloud'

View File

@ -32,7 +32,7 @@
"{{ image_list_query.stdout_lines | join(',') }}" "{{ image_list_query.stdout_lines | join(',') }}"
when: image_list_query.stdout_lines|length > 0 when: image_list_query.stdout_lines|length > 0
when: file_result.stat.exists when: file_result.stat.exists and file_result.stat.size > 0
when: docker_images_backup is defined when: docker_images_backup is defined

View File

@ -89,6 +89,49 @@
when: upgrade_data_file is defined and upgrade_data_file is not none when: upgrade_data_file is defined and upgrade_data_file is not none
- block:
# The upgrade image data file will be placed under the default_upgrade_data_dir during upgrade-start
# The name is formatted upgrade_images_data_<date_time>_<software_upgrade_uuid>.tgz
# The file extension will be .tgz.zero if no images were present during the backup
- name: Find upgrade_images_data tar file
find:
paths: "{{ upgrade_data_dir }}"
patterns:
- 'upgrade_images_data*.tgz'
- 'upgrade_images_data*.tgz.zero'
register: upgrade_images_find_output
- name: Check presence of upgrade_images_data
fail:
msg: >
"Could not find upgrade_images_data file in {{ upgrade_data_dir }}."
when: upgrade_images_find_output.matched == 0
- name: Set upgrade_images_data value
set_fact:
docker_images_backup: "{{ latest_upgrade_images_data.path }}"
vars:
latest_upgrade_images_data: "{{ upgrade_images_find_output.files | sort(attribute='ctime', reverse=True) | first }}"
when: upgrade_images_data_file is not defined or upgrade_images_data_file is none
- block:
- name: Check for upgrade_images_data on host
stat:
path: "{{ upgrade_images_data_file }}"
register: host_upgrade_images_data_file
- name: Fail if the upgrade_images_data file is not found
fail:
msg: "Upgrade data file '{{ upgrade_images_data_file }}' not found."
when: not host_upgrade_images_data_file.stat.exists
- name: Set upgrade_images_data value
set_fact:
docker_images_backup: "{{ upgrade_images_data_file }}"
when: upgrade_images_data_file is defined and upgrade_images_data_file is not none
- name: Ensure temporary data path is present - name: Ensure temporary data path is present
file: file:
path: "{{ temp_upgrade_platform_path }}" path: "{{ temp_upgrade_platform_path }}"

View File

@ -0,0 +1,18 @@
---
#
# Copyright (c) 2020 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# ROLE DESCRIPTION:
# This role will unlock the host when required
#
# Unlock controller-0 for subcloud upgrades
# Retry for 5 mins as the first unlock can require a call to update_sriov_config
- name: Unlock host
shell: source /etc/platform/openrc; system host-unlock controller-0
retries: 10
delay: 30
register: result
until: result.rc == 0
when: distributed_cloud_role == 'subcloud'

View File

@ -25,3 +25,5 @@
roles: roles:
- { role: restore-platform/restore-more-data, become: yes } - { role: restore-platform/restore-more-data, become: yes }
- { role: restore-user-images/restore-local-registry-images, become: yes }
- upgrade-platform/unlock-host