bug(deleted jobs) Armada deleting jobs during upgrade

- Additional logging to try to expose bug around deleted jobs
  during an upgrade.
- Cleaner chart diff logging.

Change-Id: I5edfa1857aec417203e73565a39082328e3b677b
This commit is contained in:
Marshall Margenau 2018-04-12 21:47:46 -05:00 committed by Pete Birley
parent 5f82956cfa
commit 60b8a37f47
4 changed files with 26 additions and 20 deletions

View File

@ -181,11 +181,10 @@ class ApplyManifest(CliAction):
for ch in resp[result]: for ch in resp[result]:
if not result == 'diff': if not result == 'diff':
msg = 'Chart {} was {}ed'.format(ch, result) msg = 'Chart {} took action: {}'.format(ch, result)
self.logger.info(msg) self.logger.info(msg)
else: else:
self.logger.info('Chart values diff') self.logger.info('Chart/values diff: %s', ch)
self.logger.info(ch)
def invoke(self): def invoke(self):
if not self.ctx.obj.get('api', False): if not self.ctx.obj.get('api', False):

View File

@ -307,7 +307,6 @@ class Armada(object):
LOG.info("Upgrading release %s", release) LOG.info("Upgrading release %s", release)
# extract the installed chart and installed values from the # extract the installed chart and installed values from the
# latest release so we can compare to the intended state # latest release so we can compare to the intended state
LOG.info("Checking Pre/Post Actions")
apply_chart, apply_values = self.find_release_chart( apply_chart, apply_values = self.find_release_chart(
known_releases, prefix_chart) known_releases, prefix_chart)
@ -329,7 +328,7 @@ class Armada(object):
# values # values
# TODO(alanmeadows) account for .files differences # TODO(alanmeadows) account for .files differences
# once we support those # once we support those
LOG.info('Checking upgrade chart diffs.')
upgrade_diff = self.show_diff( upgrade_diff = self.show_diff(
chart, apply_chart, apply_values, chart, apply_chart, apply_values,
chartbuilder.dump(), values, msg) chartbuilder.dump(), values, msg)
@ -407,6 +406,7 @@ class Armada(object):
# TODO(MarshM) does this need release/labels/namespace? # TODO(MarshM) does this need release/labels/namespace?
# TODO(MarshM) consider the tiller_timeout according to above logic # TODO(MarshM) consider the tiller_timeout according to above logic
LOG.info('Wait after Chartgroup (%s) %ssec', desc, tiller_timeout)
self.tiller.k8s.wait_until_ready( self.tiller.k8s.wait_until_ready(
k8s_wait_attempts=self.k8s_wait_attempts, k8s_wait_attempts=self.k8s_wait_attempts,
k8s_wait_attempt_sleep=self.k8s_wait_attempt_sleep, k8s_wait_attempt_sleep=self.k8s_wait_attempt_sleep,
@ -449,13 +449,14 @@ class Armada(object):
chart_release = chart.get('release', None) chart_release = chart.get('release', None)
if len(chart_diff) > 0: if len(chart_diff) > 0:
LOG.info("Chart Unified Diff (%s)", chart_release)
diff_msg = [] diff_msg = []
for line in chart_diff: for line in chart_diff:
diff_msg.append(line) diff_msg.append(line)
LOG.debug(line)
msg['diff'].append({'chart': diff_msg}) msg['diff'].append({'chart': diff_msg})
pretty_diff = '\n'.join(diff_msg).replace(
'\\n', '\n').replace('\n\n', '\n')
LOG.info("Found diff in chart (%s)", chart_release)
LOG.debug(pretty_diff)
values_diff = list( values_diff = list(
difflib.unified_diff( difflib.unified_diff(
@ -463,12 +464,14 @@ class Armada(object):
yaml.safe_dump(target_values).split('\n'))) yaml.safe_dump(target_values).split('\n')))
if len(values_diff) > 0: if len(values_diff) > 0:
LOG.info("Values Unified Diff (%s)", chart_release)
diff_msg = [] diff_msg = []
for line in values_diff: for line in values_diff:
diff_msg.append(line) diff_msg.append(line)
LOG.debug(line) msg['diff'].append({'values': diff_msg})
msg['diff'].append({'values': diff_msg}) pretty_diff = '\n'.join(diff_msg).replace(
'\\n', '\n').replace('\n\n', '\n')
LOG.info("Found diff in chart values (%s)", chart_release)
LOG.debug(pretty_diff)
result = (len(chart_diff) > 0) or (len(values_diff) > 0) result = (len(chart_diff) > 0) or (len(values_diff) > 0)

View File

@ -251,13 +251,14 @@ class K8s(object):
timeout=deadline_remaining) timeout=deadline_remaining)
if timed_out: if timed_out:
LOG.info('Timed out waiting for pods: %s', unready_pods) LOG.info('Timed out waiting for pods: %s',
sorted(unready_pods))
return False return False
if modified_pods: if modified_pods:
successes = 0 successes = 0
LOG.debug('Continuing to wait, found modified pods: %s', LOG.debug('Continuing to wait, found modified pods: %s',
modified_pods) sorted(modified_pods))
else: else:
successes += 1 successes += 1
LOG.debug('Found no modified pods this attempt. successes=%d', LOG.debug('Found no modified pods this attempt. successes=%d',

View File

@ -177,7 +177,7 @@ class Tiller(object):
metadata=self.metadata) metadata=self.metadata)
for y in release_list: for y in release_list:
LOG.debug('Found release: %s', y.releases) # LOG.debug('Found release: %s', y.releases
releases.extend(y.releases) releases.extend(y.releases)
return releases return releases
@ -283,7 +283,7 @@ class Tiller(object):
latest_release.info.status.code))) latest_release.info.status.code)))
except IndexError: except IndexError:
continue continue
LOG.debug('List of Helm Charts from Latest Releases: %s', charts) # LOG.debug('List of Helm Charts from Latest Releases: %s', charts)
return charts return charts
def update_release(self, chart, release, namespace, def update_release(self, chart, release, namespace,
@ -324,10 +324,12 @@ class Tiller(object):
wait=wait, wait=wait,
timeout=timeout) timeout=timeout)
stub.UpdateRelease( update_msg = stub.UpdateRelease(
release_request, rel_timeout + GRPC_EPSILON, release_request, rel_timeout + GRPC_EPSILON,
metadata=self.metadata) metadata=self.metadata)
return update_msg
except Exception: except Exception:
LOG.exception('Error while updating release %s', release)
status = self.get_release_status(release) status = self.get_release_status(release)
raise ex.ReleaseException(release, status, 'Upgrade') raise ex.ReleaseException(release, status, 'Upgrade')
@ -365,10 +367,12 @@ class Tiller(object):
wait=wait, wait=wait,
timeout=timeout) timeout=timeout)
return stub.InstallRelease( install_msg = stub.InstallRelease(
release_request, rel_timeout + GRPC_EPSILON, release_request, rel_timeout + GRPC_EPSILON,
metadata=self.metadata) metadata=self.metadata)
return install_msg
except Exception: except Exception:
LOG.exception('Error while installing release %s', release)
status = self.get_release_status(release) status = self.get_release_status(release)
raise ex.ReleaseException(release, status, 'Install') raise ex.ReleaseException(release, status, 'Install')
@ -408,6 +412,7 @@ class Tiller(object):
return self.get_release_status(release) return self.get_release_status(release)
except Exception: except Exception:
LOG.exception('Error while testing release %s', release)
status = self.get_release_status(release) status = self.get_release_status(release)
raise ex.ReleaseException(release, status, 'Test') raise ex.ReleaseException(release, status, 'Test')
@ -423,7 +428,6 @@ class Tiller(object):
stub = ReleaseServiceStub(self.channel) stub = ReleaseServiceStub(self.channel)
status_request = GetReleaseStatusRequest( status_request = GetReleaseStatusRequest(
name=release, version=version) name=release, version=version)
LOG.debug('GetReleaseStatusRequest= %s', status_request)
release_status = stub.GetReleaseStatus( release_status = stub.GetReleaseStatus(
status_request, self.timeout, metadata=self.metadata) status_request, self.timeout, metadata=self.metadata)
@ -445,7 +449,6 @@ class Tiller(object):
stub = ReleaseServiceStub(self.channel) stub = ReleaseServiceStub(self.channel)
status_request = GetReleaseContentRequest( status_request = GetReleaseContentRequest(
name=release, version=version) name=release, version=version)
LOG.debug('GetReleaseContentRequest= %s', status_request)
release_content = stub.GetReleaseContent( release_content = stub.GetReleaseContent(
status_request, self.timeout, metadata=self.metadata) status_request, self.timeout, metadata=self.metadata)
@ -466,7 +469,6 @@ class Tiller(object):
LOG.debug('Getting Tiller version, with timeout=%s', self.timeout) LOG.debug('Getting Tiller version, with timeout=%s', self.timeout)
tiller_version = stub.GetVersion( tiller_version = stub.GetVersion(
release_request, self.timeout, metadata=self.metadata) release_request, self.timeout, metadata=self.metadata)
LOG.debug('Got Tiller version response: %s', tiller_version)
tiller_version = getattr(tiller_version.Version, 'sem_ver', None) tiller_version = getattr(tiller_version.Version, 'sem_ver', None)
LOG.debug('Got Tiller version %s', tiller_version) LOG.debug('Got Tiller version %s', tiller_version)
@ -496,6 +498,7 @@ class Tiller(object):
release_request, self.timeout, metadata=self.metadata) release_request, self.timeout, metadata=self.metadata)
except Exception: except Exception:
LOG.exception('Error while uninstalling release %s', release)
status = self.get_release_status(release) status = self.get_release_status(release)
raise ex.ReleaseException(release, status, 'Delete') raise ex.ReleaseException(release, status, 'Delete')