Merge "Fix delete process to apps that have charts disabled"

This commit is contained in:
Zuul 2024-03-07 13:43:22 +00:00 committed by Gerrit Code Review
commit c24d0950bc
3 changed files with 26 additions and 12 deletions

View File

@ -1829,6 +1829,7 @@ APP_FLUXCD_MANIFEST_DIR = 'fluxcd-manifests'
APP_FLUXCD_BASE_PATH = os.path.join(tsc.PLATFORM_PATH, 'fluxcd')
APP_FLUXCD_DATA_PATH = os.path.join(APP_FLUXCD_BASE_PATH, tsc.SW_VERSION)
APP_ROOT_KUSTOMIZE_FILE = 'kustomization.yaml'
APP_ROOT_KUSTOMIZE_ORIG_FILE = 'kustomization-orig.yaml'
APP_HELMREPOSITORY_FILE = "helmrepository.yaml"
APP_BASE_HELMREPOSITORY_FILE = os.path.join("base", APP_HELMREPOSITORY_FILE)
APP_RELEASE_CLEANUP_FILE = 'helmrelease_cleanup.yaml'

View File

@ -1189,10 +1189,7 @@ class AppOperator(object):
LOG.error(e)
raise
def _get_list_of_charts(self, app):
return self._get_list_of_charts_fluxcd(app.sync_fluxcd_manifest)
def _get_list_of_charts_fluxcd(self, manifest):
def _get_list_of_charts(self, app, include_disabled=False):
"""Get the charts information from the manifest directory
The following chart data for each chart in the manifest file
@ -1202,11 +1199,23 @@ class AppOperator(object):
- namespace
- location
- release
:param app: application
:param include_disabled: boolean value to add disabled charts on function return
:return: Array with chart object for each chart present in the application
"""
manifest = app.sync_fluxcd_manifest
helmrepo_path = os.path.join(manifest, "base", "helmrepository.yaml")
if include_disabled:
app_root_kustomize_file = constants.APP_ROOT_KUSTOMIZE_ORIG_FILE
else:
app_root_kustomize_file = constants.APP_ROOT_KUSTOMIZE_FILE
root_kustomization_path = os.path.join(
manifest, constants.APP_ROOT_KUSTOMIZE_FILE)
manifest, app_root_kustomize_file)
for f in (helmrepo_path, root_kustomization_path):
if not os.path.isfile(f):
raise exception.SysinvException(_(
@ -3205,7 +3214,7 @@ class AppOperator(object):
self._plugins.deactivate_plugins(app)
self._dbapi.kube_app_destroy(app.name)
app.charts = self._get_list_of_charts(app)
app.charts = self._get_list_of_charts(app, include_disabled=True)
self._cleanup(app)
self._utils._patch_report_app_dependencies(app.name + '-' + app.version)
# One last check of app alarm, should be no-op unless the

View File

@ -297,19 +297,23 @@ def get_chart_tarball_path(repo_path, chart_name, chart_version):
:param repo_path: Filesystem path to the Helm repository
:param chart_name: Name of the Helm chart
:param chart_version: Version of the Helm chart
:return: string
Full path of the chart tarball in the repository if a
:return: String with full path of the chart tarball in the repository if a
matching chart/version is found. Otherwise returns None.
"""
repo_index_file = os.path.join(repo_path, "index.yaml")
with io.open(repo_index_file, "r", encoding="utf-8") as f:
root_index_yaml = next(yaml.safe_load_all(f))
chart_versions = root_index_yaml["entries"][chart_name]
if chart_name in root_index_yaml["entries"]:
chart_versions = root_index_yaml["entries"][chart_name]
for chart in chart_versions:
if chart["version"] == chart_version and len(chart["urls"]) > 0:
return os.path.join(repo_path, chart["urls"][0])
for chart in chart_versions:
if chart["version"] == chart_version and len(chart["urls"]) > 0:
return os.path.join(repo_path, chart["urls"][0])
else:
LOG.warning("Chart {} not found in {}."
.format(chart_name, repo_index_file))
return None
def index_repo(repo_path):