Fix --enable-chart-cleanup option

The current logic to find valid releases is incorrect resulting in zero
valid releases being found and all currently installed chart releases
with the release_prefix being removed.

The data passed to this method is a list of chart groups with the
following format:
[{'data':
  {'chart_group':
    [{'data':
        {'chart_name': 'ingress',
         'release': 'kube-system-ingress'
  ...

This update adapts the code to the expected format of the data provided.

Change-Id: Ib285cdf21283b8ec73d583fb107ba49514a9dda7
Signed-off-by: Robert Church <robert.church@windriver.com>
This commit is contained in:
Robert Church 2019-07-29 01:49:08 -04:00
parent caa75e403e
commit f00cee7149
1 changed files with 6 additions and 5 deletions

View File

@ -277,15 +277,16 @@ class Armada(object):
LOG.debug('Removing temp chart directory: %s', chart_dir)
source.source_cleanup(chart_dir)
def _chart_cleanup(self, prefix, charts, msg):
def _chart_cleanup(self, prefix, chart_groups, msg):
LOG.info('Processing chart cleanup to remove unspecified releases.')
valid_releases = []
for gchart in charts:
for chart in gchart.get(const.KEYWORD_CHARTS, []):
for group in chart_groups:
group_data = group.get(const.KEYWORD_DATA, {})
for chart in group_data.get(const.KEYWORD_CHARTS, []):
chart_data = chart.get(const.KEYWORD_DATA, {})
valid_releases.append(
release_prefixer(prefix,
chart.get('chart', {}).get('release')))
release_prefixer(prefix, chart_data.get('release')))
actual_releases = [x.name for x in self.tiller.list_releases()]
release_diff = list(set(actual_releases) - set(valid_releases))