Parse the metadata of all application bundles under the helm application
folder and save to the kube_app_bundle table. This is done during sysinv
startup and when a new ostree commit is deployed.
The auto update logic was changed to enable retrieving metadata from
the database for all available bundles of a given app and compute which
bundle should be used to carry out the upgrade.
The bundle choice is done based on the minimum and maximum Kubernetes
versions supported by the application. If multiple bundles fit that
criteria then the application with the highest version number is chosen.
The 65-k8s-app-upgrade.sh script also takes into account multiple
bundles during the platform upgrade activation step, prioritizing
lowest versions available to ensure compatibility with the Kubernetes
version carried over from the N release. A follow-up change will improve
this mechanism to discover specific app versions.
When platform patches are applied and the ostree is changed then the
content of the helm application folder is reevaluated and the database
updated accordingly if there are new or removed bundles.
Test plan:
PASS: build-pkgs -a & build-image
PASS: Fresh AIO-SX install.
PASS: Fresh AIO-DX install.
PASS: Manually place multiple tarballs of one application with
different versions under /usr/local/share/applications/helm/
and check if the app is updated correctly.
PASS: Build a reboot required patch that removes the istio
bundle and adds a new metrics-server version.
Apply the reboot required patch.
Check if istio was removed from the kube_app_bundle table.
Check if the metrics-server previous version was removed from the
kube_app_bundle table.
Check if the metrics-server new version was added to the
kube_app_bundle table.
Check if metrics-server was updated to the new version added
to the database.
PASS: Build a no reboot required patch that does not restart
sysinv, removes the istio bundle and adds a new metrics-server
version.
Apply the no reboot required patch.
Check if istio was removed from the kube_app_bundle table.
Check if the metrics-server previous version was removed from the
kube_app_bundle table.
Check if the metrics-server new version was added to the
kube_app_bundle table.
Check if metrics-server was updated to the new version added
to the database.
PASS: Build a no reboot required patch that restarts sysinv,
removes the istio bundle and adds a new metrics-server version.
Apply the no reboot required patch.
Check if istio was removed from the kube_app_bundle table.
Check if the metrics-server previous version was removed from the
kube_app_bundle table.
Check if the metrics-server new version was added to the
kube_app_bundle table and was updated.
Check if metrics-server was updated to the new version added
to the database.
PASS: Install power-metrics on stx-8.
Run platform upgrade from stx-8 placing two different versions of
metrics-server under /usr/local/share/applications/helm/.
Check if default apps and metrics-server were properly updated
during upgrade-activate step.
Check if power-metrics was auto updated after upgrade-complete
step.
Story: 2010929
Task: 49097
Change-Id: I46f7cb6ebc59ad49157e9044a4937a406313671e
Signed-off-by: Igor Soares <Igor.PiresSoares@windriver.com>