From 071f1d371579b9be5a7a95c6530c8e5581d65f0d Mon Sep 17 00:00:00 2001 From: rummadis Date: Thu, 20 Mar 2025 04:30:59 -0400 Subject: [PATCH] Fix software metadata sync for sys controller/subcloud Previously, software sync relied solely on the subcloud's SW_VERSION, causing issues when the system controller and subcloud ran different software versions (e.g., stx 11.0 and stx10.0). This led to incorrect software metadata sync, as the ostree_feed_repo_dir path was constructed using the subcloud's version, resulting in mismatched paths and unnecessary synchronization. This change: 1.Ignores the software sync if system controller is stx11 and greater and subcloud with stx10 2.Ensures software sync only occurs when both the system controller and the subcloud run the same software version. This prevents unintended sync when versions differ, ensuring metadata is only transferred when appropriate. Disabling sync-patch-metadata as it no longer used from stx-11 Test Plan: PASS N-1 subcloud deployment should not show incorrect patch as installed after system controller upgrade PASS Verify subcloud add and install from SystemController with stx 10 patch level applied PASS Verify N subcloud add, in upgraded system controller PASS No alarm found Closes-Bug: 2103692 Change-Id: I3213ad335a43ac3b746c79d3b9545eb4742dae8e Signed-off-by: rummadis --- playbookconfig/src/playbooks/install.yml | 2 +- .../tasks/main.yml | 37 ++++++++++++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/playbookconfig/src/playbooks/install.yml b/playbookconfig/src/playbooks/install.yml index 397197d8e..cba1c774b 100644 --- a/playbookconfig/src/playbooks/install.yml +++ b/playbookconfig/src/playbooks/install.yml @@ -17,7 +17,7 @@ wait_for_timeout: "{{ wait_for_timeout | default(3600) }}" job_retry_delay: "{{ 120 | random }}" host_to_check: "{{ ansible_host }}" - sync_patch_metadata: "{{ sync_patch_metadata | default(true) }}" + sync_patch_metadata: "{{ sync_patch_metadata | default(false) }}" sync_software_metadata: "{{ sync_software_metadata | default(true) }}" - name: Run RVMC script to insert boot image and power on host diff --git a/playbookconfig/src/playbooks/roles/common/install-sync-software-metadata/tasks/main.yml b/playbookconfig/src/playbooks/roles/common/install-sync-software-metadata/tasks/main.yml index 5222b9db4..5f8e29cd4 100644 --- a/playbookconfig/src/playbooks/roles/common/install-sync-software-metadata/tasks/main.yml +++ b/playbookconfig/src/playbooks/roles/common/install-sync-software-metadata/tasks/main.yml @@ -1,6 +1,6 @@ --- # -# Copyright (c) 2024 Wind River Systems, Inc. +# Copyright (c) 2024-2025 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -10,14 +10,20 @@ # system controller and subcloud are at the same ostree commit. # +- name: Retrieve system controller software version number + shell: source /etc/build.info; echo $SW_VERSION + register: system_controller_sw_version + delegate_to: localhost + - name: Retrieve software version number shell: source /etc/build.info; echo $SW_VERSION - register: sw_version + register: subcloud_sw_version - name: Set software metadata synchronization facts set_fact: software_sync_required: false - ostree_feed_repo_dir: /var/www/pages/feed/rel-{{ sw_version.stdout }}/ostree_repo + system_controller_ostree_feed_repo_dir: /var/www/pages/feed/rel-{{ system_controller_sw_version.stdout }}/ostree_repo + subcloud_ostree_feed_repo_dir: /var/www/pages/feed/rel-{{ subcloud_sw_version.stdout }}/ostree_repo ostree_sysroot_repo_dir: /sysroot/ostree/repo ostree_rev: starlingx software_dir: /opt/software @@ -26,24 +32,35 @@ - block: - name: Gather system controller ostree commit - command: ostree --repo={{ ostree_feed_repo_dir }} rev-parse {{ ostree_rev }} + command: ostree --repo={{ system_controller_ostree_feed_repo_dir }} rev-parse {{ ostree_rev }} register: ostree_commit_system_controller delegate_to: localhost - name: Gather subcloud ostree commit - command: ostree --repo={{ ostree_feed_repo_dir }} rev-parse {{ ostree_rev }} + command: ostree --repo={{ subcloud_ostree_feed_repo_dir }} rev-parse {{ ostree_rev }} register: ostree_commit_subcloud - name: Gather system controller updates list - shell: software list | grep {{ sw_version.stdout }} | grep -E '(available|deployed|committed)' + shell: | + software list | \ + grep "{{ system_controller_sw_version.stdout }}" | \ + grep -E '(available|deployed|committed)' | \ + awk '{$1=$1};1' | \ + tr -d '[:space:]' register: system_controller_software_list failed_when: false delegate_to: localhost - name: Gather subcloud software list - shell: software list | grep {{ sw_version.stdout }} | grep -E '(available|deployed|committed)' + shell: | + software list | \ + grep "{{ subcloud_sw_version.stdout }}" | \ + grep -E '(available|deployed|committed)' | \ + awk '{$1=$1};1' | \ + tr -d '[:space:]' register: subcloud_software_list failed_when: false + become: true - name: Decide if software metadata synchronization is required # Conditions: @@ -59,7 +76,7 @@ - debug: msg: - "Software sync required: {{ software_sync_required }}" - - "ostree revision from {{ ostree_feed_repo_dir }}:" + - "ostree revision from {{ system_controller_ostree_feed_repo_dir }}:" - "system controller: {{ ostree_commit_system_controller.stdout }}" - "subcloud: {{ ostree_commit_subcloud.stdout }}" - "Software list:" @@ -108,7 +125,7 @@ until: software_transfer.rc == 0 - name: Delete patch metadata files not belonging to the current - software version ({{ sw_version.stdout }}) + software version ({{ subcloud_sw_version.stdout }}) vars: paths_to_delete: - "{{ software_dir }}/metadata/unavailable" @@ -145,4 +162,4 @@ when: software_sync_required - when: sync_software_metadata and sw_version.stdout is version('24.09', '>=') + when: sync_software_metadata and subcloud_sw_version.stdout is version('24.09', '>=')